1743 lines
97 KiB
Text
1743 lines
97 KiB
Text
|
||
*start|スタート
|
||
[cm]
|
||
|
||
[loadplugin module=layerExDraw.dll]
|
||
[loadplugin module=layerExImage.dll]
|
||
[loadplugin module=layerExBTOA.dll]
|
||
[loadplugin module=wuvorbis.dll]
|
||
[loadplugin module=gamepad.dll]
|
||
;[loadplugin module=extrans.dll]
|
||
|
||
;バージョンナンバー
|
||
[eval exp="tf.version = 'Ver. 2.03'"]
|
||
|
||
[iscript]
|
||
|
||
KAGLoadScript("Initialize2.tjs");
|
||
|
||
var locale = System.readRegValue("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Nls\\Language\\Default");
|
||
var isJapaneseEnvironment = (locale=="0411");
|
||
|
||
// if(sf.language===void || sf.language==''){
|
||
// // 初回起動時、ロケールを判定してみる
|
||
// if(locale == "0411"){
|
||
sf.language = En; // 日本語
|
||
// }else if(locale == "0404" || locale == "0C04" || locale == "0c04"){
|
||
// sf.language = Tw; // 台湾・香港→繁体字
|
||
// }else if(locale == "0804" || locale == "1004"){
|
||
// sf.language = Cn; // 中国・シンガポール→簡体字
|
||
// }else{
|
||
// sf.language = En; // その他 英語
|
||
// }
|
||
// }
|
||
|
||
// if(sf.R18 === void) sf.R18 = false;
|
||
// if(isExistR18Patch){
|
||
// if(sf.isExistR18Patch === void){
|
||
// sf.isExistR18Patch = true;
|
||
// sf.R18 = true;
|
||
// }
|
||
// }else{
|
||
// sf.R18 = false;
|
||
// }
|
||
sf.R18 = true;
|
||
|
||
if(System.desktopHeight < kag.height || System.desktopWidth < kag.width){
|
||
kag.setZoom(kag.smallWidth,kag.scWidth);
|
||
kag.innerWidth = kag.smallWidth;
|
||
kag.innerHeight = kag.smallHeight;
|
||
kag.smallModeMenu.checked = kag.smallMode = true;
|
||
if(sf.notFirstBoot===void && System.desktopHeight > (kag.smallHeight + 30)){
|
||
kag.top = (System.desktopHeight - kag.height) / 2;
|
||
kag.left = (System.desktopWidth - kag.width ) / 2;
|
||
}
|
||
}
|
||
|
||
if(kag.left < -400) kag.left = 10;
|
||
if(kag.top < -20) kag.top = 0;
|
||
|
||
|
||
if(sf.keyMoveCursor===void) sf.keyMoveCursor = true;
|
||
if(sf.keyMoveNumPad===void) sf.keyMoveNumPad = false;
|
||
if(sf.keyMoveWASD===void) sf.keyMoveWASD = false;
|
||
|
||
//キー設定
|
||
if(sf.keyUp===void) sf.keyUp = [[VK_UP], [VK_UP2]];
|
||
if(sf.keyRight===void) sf.keyRight = [[VK_RIGHT], [VK_RIGHT2]];
|
||
if(sf.keyDown===void) sf.keyDown = [[VK_DOWN], [VK_DOWN2]];
|
||
if(sf.keyLeft===void) sf.keyLeft = [[VK_LEFT], [VK_LEFT2]];
|
||
|
||
if(sf.keyUpRight===void) sf.keyUpRight = [[], []];
|
||
if(sf.keyDownRight===void) sf.keyDownRight = [[], []];
|
||
if(sf.keyDownLeft===void) sf.keyDownLeft = [[], []];
|
||
if(sf.keyUpLeft===void) sf.keyUpLeft = [[], []];
|
||
|
||
|
||
if(sf.keySpecial===void) sf.keySpecial = [[VK_C, VK_PAD3], [VK_PAD2_3]];
|
||
if(sf.keyEscAttack===void) sf.keyEscAttack = [[VK_C, VK_PAD3], [VK_PAD2_3]];
|
||
if(sf.keyAttack===void) sf.keyAttack = [[VK_X, VK_PAD1], [VK_PAD2_1]];
|
||
if(sf.keyJump===void) sf.keyJump = [[VK_Z, VK_PAD2], [VK_PAD2_2]];
|
||
if(sf.keyPause===void) sf.keyPause = [[VK_ESCAPE, VK_PAD4, VK_PAUSE], [VK_PAD2_4]];
|
||
|
||
if(sf.keySwitch===void) sf.keySwitch = [[VK_SPACE, VK_PAD11], [VK_PAD2_11]];
|
||
if(sf.keyLeaveIt===void) sf.keyLeaveIt = [[VK_CONTROL], [void]];
|
||
|
||
if(sf.keyOk===void) sf.keyOk = [[VK_X, VK_PAD1], [VK_PAD2_1]];
|
||
if(sf.keyCancel===void) sf.keyCancel = [[VK_Z, VK_PAD2], [VK_PAD2_2]];
|
||
if(sf.keyNext===void) sf.keyNext = [[VK_0, VK_PAD6], [VK_PAD2_6]];
|
||
if(sf.keyPrev===void) sf.keyPrev = [[VK_9, VK_PAD5], [VK_PAD2_5]];
|
||
|
||
if(sf.keyBC===void) sf.keyBC = [[ , ], [void]];
|
||
|
||
@if(!kirikiriz)
|
||
System.setArgument("-fsmethod","cds");
|
||
System.setArgument("-gsplit","yes");
|
||
|
||
// if(sf.usedb === void){
|
||
tf.arg = System.getArgument("-nodb");
|
||
if(tf.arg === void){
|
||
System.setArgument("-usedb","yes");
|
||
System.setArgument("-waitvsync","yes");
|
||
}
|
||
|
||
// if(sf.dbstyle !== void){
|
||
// System.setArgument('-dbstyle', sf.dbstyle);
|
||
// }
|
||
@endif
|
||
@if(kirikiriz)
|
||
// System.setArgument("-waitvsync","yes");
|
||
System.setArgument("-joypad ","dinput");
|
||
System.setArgument("-gsplit","no");
|
||
System.setArgument("-fsres","auto");
|
||
System.setArgument("-fszoom","inner");
|
||
System.setArgument("-ignoretouch","true");
|
||
kag.waitVSync = true;
|
||
@endif
|
||
|
||
var app = new GdiPlus.Appearance();
|
||
|
||
function putText(x, y, l, str, color=0xffffff, size, align="l"){
|
||
var sBuf = l.font.height;
|
||
if(size !== void) l.font.height = 20;
|
||
var w;
|
||
switch(align){
|
||
case "l":
|
||
w = 0;
|
||
break;
|
||
case "c":
|
||
w = l.font.getTextWidth(string(str)) \ 2;
|
||
break;
|
||
case "r":
|
||
w = l.font.getTextWidth(string(str));
|
||
break;
|
||
}
|
||
l.drawText(x-w-2, y, str, 0x000000, 255, true, 255, 0x000000, 4);
|
||
l.drawText(x-w+2, y, str, 0x000000, 255, true, 255, 0x000000, 4);
|
||
l.drawText(x-w, y-2, str, 0x000000, 255, true, 255, 0x000000, 4);
|
||
l.drawText(x-w, y+2, str, 0x000000, 255, true, 255, 0x000000, 4);
|
||
l.drawText(x-w, y, str, color, 255, true, 255, 0x000000);
|
||
l.font.height = sBuf;
|
||
}
|
||
|
||
|
||
if(sf.adjTimerInterval === void) sf.adjTimerInterval = 33.334;
|
||
|
||
// スクリーンモード(1:通常 2:高画質 3:最高画質)
|
||
if(sf.screenMode === void) sf.screenMode = 2;
|
||
if(sf.HScreenMode === void) sf.HScreenMode = 2;
|
||
|
||
[endscript]
|
||
|
||
[if exp="typeof(global.Toast) == 'undefined'"]
|
||
|
||
[eval exp="kag.addPlugin(global.bao = new BeltAction_Plugin(kag))"]
|
||
[eval exp="kag.addPlugin(global.Toast = new Toast_Plugin(kag))"]
|
||
[eval exp="kag.addPlugin(global.gpp = new GamePad_Plugin(kag))"]
|
||
[eval exp="kag.addPlugin(global.pio = new PadInput_Plugin(kag))"]
|
||
|
||
[endif]
|
||
|
||
;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||
|
||
;;設定ファイル(特に使用していない)
|
||
;[eval exp="f.configFileName = System.exeName.substring(System.exePath.length,Storages.chopStorageExt(System.exeName).length - System.exePath.length) + '.tof'"]
|
||
|
||
[call storage="autoInsertLabel.ks"]
|
||
|
||
;デバッグモード
|
||
[eval exp="tf.debugMode=false"]
|
||
;リリース時 false
|
||
|
||
;音声無しモード(ボイスファイル納品前に使用)
|
||
[eval exp="tf.voiceLessMode=false"]
|
||
;リリース時 false
|
||
|
||
;サウンドファイルが無くてもエラーを出さない
|
||
[eval exp="tf.soundEnforce=true"]
|
||
;リリース時 true
|
||
|
||
;サウンド再生無効
|
||
[eval exp="tf.disableSound=false"]
|
||
;リリース時 false
|
||
|
||
;ボイス終了時にファイルを解放する
|
||
[eval exp="tf.voiceCheckMode=false"]
|
||
;リリース時 false
|
||
|
||
[playse buf=0 storage="a0000"]
|
||
|
||
;ブランドコールファイル
|
||
[eval exp="tf.voiceBrandCall=[]"]
|
||
[eval exp="tf.voiceBrandCall[0] = 'z9001'"]
|
||
|
||
;タイトルコールファイル
|
||
[eval exp="tf.voiceTitleCall=[]"]
|
||
[eval exp="tf.voiceTitleCall[0] = 'z9002'"]
|
||
|
||
;テスト音声ファイル
|
||
[eval exp="tf.voiceTestFile='a9004'"]
|
||
|
||
|
||
;起動時からオートになるのを防ぐ
|
||
[eval exp="kag.autoMode = 0"]
|
||
|
||
;既読も未読もメッセージの速さを同一に固定
|
||
[eval exp="kag.userCh2ndSpeed = -1"]
|
||
|
||
;OSを判別(特に使用していない)
|
||
[eval exp="tf.isNT = (System.osName.indexOf('NT')!=-1)"]
|
||
[eval exp="tf.isXpOrLater = !((System.osName.indexOf('NT 4.0')!=-1)||(System.osName.indexOf('NT 5.0')!=-1))&&(tf.isNT)"]
|
||
|
||
;ログファイル出力フォルダの設定
|
||
[eval exp="Debug.logLocation = kag.saveDataLocation"]
|
||
|
||
;拡張履歴画面
|
||
[call storage="ExtHistoryLayer.ks"]
|
||
|
||
;セーブ・ロード画面用処理の読み込み
|
||
[call storage="save_load.ks"]
|
||
|
||
;システムボタン用処理の読み込み
|
||
[call storage="sysbtn.ks"]
|
||
[call storage="sysbtn2.ks"]
|
||
|
||
;マクロ定義読み込み
|
||
[call storage="macrodefine.ks"]
|
||
[call storage="macrodefine2.ks"]
|
||
|
||
;メニュー項目の無効化
|
||
[eval exp="kag.menuEnabled=false"]
|
||
|
||
|
||
;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||
;システム変数を設定
|
||
[iscript]
|
||
|
||
if(typeof(kag.langMenu)!='undefined'){
|
||
switch(sf.language){
|
||
case En:
|
||
kag.langEngMenuItem.checked = true;
|
||
break;
|
||
case Ja:
|
||
default:
|
||
kag.langJpnMenuItem.checked = true;
|
||
break;
|
||
}
|
||
}
|
||
setLanguage();
|
||
|
||
// フォント設定
|
||
kag.chDefaultFace = fontList[sf.language];
|
||
kag.setMessageLayerUserFont();
|
||
|
||
// // ワイド画面
|
||
// if(sf.wideScreen===void) sf.wideScreen=1;
|
||
|
||
// メッセージウィンドウ現在位置
|
||
if(sf.windowTop===void) sf.windowTop=0;
|
||
|
||
// 表情表示のモード設定 0:常に表示 1:通常シーンのみ 2:Hシーンのみ 3:常に表示
|
||
if(sf.faceMode===void) sf.faceMode=0;
|
||
|
||
// 表情表示モードの設定2 0:全て表示する 1:男キャラは表示しない
|
||
if(sf.faceModeChar===void) sf.faceModeChar=0;
|
||
|
||
// ボイス再生時にクリックしたときの動作 0:ボイスを止めないまま次のメッセージへ 1:ボイスを止める
|
||
if(sf.voiceStopAtClick===void) sf.voiceStopAtClick=0;
|
||
|
||
// メッセージウィンドウの自動移動
|
||
if(sf.windowAutoMove===void) sf.windowAutoMove=1;
|
||
|
||
// オートプレイ時の挙動 0:ボイス再生終了を待たない 1:ボイス再生終了を待つ
|
||
if(sf.waitVoiceEndInAutoMode===void) sf.waitVoiceEndInAutoMode=1;
|
||
|
||
// 次のメッセージはボイス付きかを表示するか
|
||
if(sf.showVoiceIndicator===void) sf.showVoiceIndicator=1;
|
||
|
||
// カットインを表示するか
|
||
if(sf.showCutin===void) sf.showCutin=1;
|
||
|
||
// アヘ顔の表示
|
||
if(sf.アヘ顔表示無し===void) sf.アヘ顔表示無し=0;
|
||
|
||
// エフェクト関係
|
||
if(sf.effectFade===void) sf.effectFade=1;
|
||
if(sf.effectQuake===void) sf.effectQuake=1;
|
||
if(sf.effectAnime===void) sf.effectAnime=1;
|
||
if(sf.effectFlash===void) sf.effectFlash=1;
|
||
|
||
// ムービーのモード
|
||
// 0:無し 1:wmv 2:mpg
|
||
if(sf.effectMovieMode===void) sf.effectMovieMode=1;
|
||
|
||
// メッセージスキップモード 0:全てスキップ 1:既読のみ
|
||
if(sf.skipOnlyAlreadyRead===void) sf.skipOnlyAlreadyRead=1;
|
||
|
||
// メッセージウィンドウ濃度
|
||
if(sf.messageWindowOpacity===void) sf.messageWindowOpacity=177;
|
||
|
||
// 音量設定
|
||
if(sf.masterMute===void) sf.masterMute=0;
|
||
if(sf.bgmMute===void) sf.bgmMute=0;
|
||
if(sf.voiceMute===void) sf.voiceMute=0;
|
||
if(sf.bgVoiceMute===void) sf.bgVoiceMute=0;
|
||
if(sf.actVoiceMute===void) sf.actVoiceMute=0;
|
||
if(sf.seMute===void) sf.seMute=0;
|
||
if(sf.bgSeMute===void) sf.bgSeMute=0;
|
||
|
||
f.volumeMatrix=[];
|
||
f.volumeMatrix=[ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100];
|
||
|
||
// スキップ中はSEを再生しない
|
||
if(sf.noSeInSkip===void) sf.noSeInSkip=1;
|
||
|
||
// Hシーンに入ったらカウントを表示する
|
||
if(sf.showExtasyCount===void) sf.showExtasyCount=1;
|
||
|
||
// ホイールを逆回転させたときの動作(0:履歴画面, 1:巻き戻し)
|
||
if(sf.whenWheelUp===void) sf.whenWheelUp=0;
|
||
|
||
// 右クリックしたときの動作(0:メッセージウィンドウ消去, 1:メニュー画面表示)
|
||
if(sf.whenRightClick===void) sf.whenRightClick=0;
|
||
|
||
if(sf.masterVolume===void) sf.masterVolume=10;
|
||
if(sf.bgmVolume===void) sf.bgmVolume=14;
|
||
if(sf.voiceVolume===void) sf.voiceVolume=16;
|
||
if(sf.bgVoiceVolume===void) sf.bgVoiceVolume=14;
|
||
if(sf.actVoiceVolume===void) sf.actVoiceVolume=20;
|
||
if(sf.seVolume===void) sf.seVolume=16;
|
||
if(sf.BgSeVolume===void) sf.BgSeVolume=16;
|
||
|
||
// 選択肢通過記録用辞書配列
|
||
if(sf.選択肢===void) sf.選択肢=%[];
|
||
|
||
// CG表示フラグ用辞書配列
|
||
if(sf.cgOpenFlag===void) sf.cgOpenFlag=%[];
|
||
|
||
// 回想モード用辞書配列
|
||
if(sf.kaisouOpenFlag===void) sf.kaisouOpenFlag=%[];
|
||
|
||
// ボイス個別有無
|
||
// if(sf.voiceSetting===void) sf.voiceSetting = [0,0,0,0,0,0,0];
|
||
|
||
function getVoiceIndex(storage){
|
||
|
||
switch(storage[0]){
|
||
case "a":
|
||
return 0; //シフォン
|
||
case "b":
|
||
return 1; //ショコラ
|
||
case "c":
|
||
return 2; //レヴィエラ
|
||
default:
|
||
return 3; //その他
|
||
}
|
||
}
|
||
|
||
// 通常シーン
|
||
if(sf.voiceSetting1===void) sf.voiceSetting1 = [1,1,1,1];
|
||
// Hシーン
|
||
if(sf.voiceSetting2===void) sf.voiceSetting2 = [1,1,1,1];
|
||
// アクションシーン
|
||
if(sf.voiceSetting3===void) sf.voiceSetting3 = [1,1,1,1];
|
||
|
||
// ボイス個別音量
|
||
if(sf.voiceVolume2===void) sf.voiceVolume2 = [];
|
||
if(sf.voiceVolume2[0]===void) sf.voiceVolume2[0] = 100;
|
||
if(sf.voiceVolume2[1]===void) sf.voiceVolume2[1] = 100;
|
||
if(sf.voiceVolume2[2]===void) sf.voiceVolume2[2] = 100;
|
||
if(sf.voiceVolume2[3]===void) sf.voiceVolume2[3] = 100;
|
||
|
||
// おまけモード関連
|
||
if(sf.extraModeOpenFlag===void) sf.extraModeOpenFlag=0;
|
||
|
||
if(sf.cgModeContinuous===void) sf.cgModeContinuous = 0;
|
||
if(sf.cgModeVoicePlay===void) sf.cgModeVoicePlay = 0;
|
||
|
||
// トゥルーエンド通過
|
||
if(sf.throughTrueEnd===void) sf.throughTrueEnd=0;
|
||
|
||
// チャプタースキップ用シナリオ通過フラグ
|
||
if(sf.scenarioPass === void) sf.scenarioPass = %[];
|
||
|
||
// 初回起動かどうか
|
||
if(sf.notFirstBoot===void) sf.notFirstBoot=1;
|
||
|
||
// 難易度 0:Easy 1:Normal 2:Hard 3:Very Hard
|
||
f.difficultyStr = ['Very Easy','Easy','Normal','Hard','Very Hard', 'Extreme'];
|
||
if(sf.difficulty === void) sf.difficulty = 2;
|
||
|
||
// Hシーン 0:ドットアニメ 1:イベントCG 2:無し
|
||
if(sf.HSceneMode === void) sf.HSceneMode = 0;
|
||
|
||
// ドットアニメHシーンに設定されていても、ゲームオーバー時にはイベントCGによるHシーンに
|
||
if(sf.gameoverHScene === void) sf.gameoverHScene = 1;
|
||
if(sf.showCgInAnimeHScene === void) sf.showCgInAnimeHScene = 1;
|
||
|
||
|
||
if(sf.kaisouMode2 === void) sf.kaisouMode2 = 0;
|
||
|
||
// ポーズ画面 0:通常 1:操作方法画面
|
||
if(sf.pauseScreenMode === void) sf.pauseScreenMode = 1;
|
||
|
||
// アクションシーンカットイン 0:無し 1:有り
|
||
if(sf.actionSceneCutin === void) sf.actionSceneCutin = 1;
|
||
// 同じカットインは一定時間表示しない
|
||
if(sf.sameCutinDisable===void) sf.sameCutinDisable=0;
|
||
|
||
// プレイヤー選択表示円 2:常時 1:切り替え時のみ 0:無し
|
||
if(sf.showSelectIndicator === void) sf.showSelectIndicator = 2;
|
||
|
||
// キーボード・パッドの入力で2Pキャラも同時に操作する
|
||
if(sf.inputForBothCharacter === void) sf.inputForBothCharacter = false;
|
||
|
||
// パッド1を1Pキャラの操作に使用する
|
||
if(sf.pad1InputForChara1 === void) sf.pad1InputForChara1 = true;
|
||
|
||
// 2P側AI操作
|
||
if(sf.AIForChara2Enabled === void) sf.AIForChara2Enabled = true;
|
||
|
||
// ショコラ単独行動時の操作を1Pと2Pのどちらが行うか(0:1P 1:2P)
|
||
if(sf.inputAtChocolatOnly === void) sf.inputAtChocolatOnly = 0;
|
||
|
||
|
||
// 実績
|
||
if(sf.mission === void) sf.mission = %[];
|
||
if(sf.missionAllClear === void) sf.missionAllClear = false;
|
||
if(sf.missionAllClearMessage === void) sf.missionAllClearMessage = false;
|
||
|
||
// 調整ポイント
|
||
if(sf.gamePoint === void) sf.gamePoint = 0;
|
||
|
||
// ハイスコア
|
||
if(sf.highScore === void) sf.highScore = [];
|
||
|
||
// 最大コンボ数
|
||
if(sf.maxCombo === void) sf.maxCombo = 0;
|
||
|
||
// 起動回数
|
||
if(sf.bootCount === void) sf.bootCount = 0;
|
||
|
||
// 爆殺回数
|
||
if(sf.killingByExplode === void) sf.killingByExplode = 0;
|
||
|
||
// 到達ステージ
|
||
if(sf.stage === void) sf.stage = 0;
|
||
|
||
if(sf.routeA === void) sf.routeA = 0;
|
||
if(sf.routeB === void) sf.routeB = 0;
|
||
if(sf.routeC === void) sf.routeC = 0;
|
||
if(sf.routeD === void) sf.routeD = 0;
|
||
if(sf.routeE === void) sf.routeE = 0;
|
||
|
||
// 敵を倒した数
|
||
if(sf.enemyKillCount === void) sf.enemyKillCount = 0;
|
||
|
||
// 倒された数
|
||
if(sf.killedCount === void) sf.killedCount = 0;
|
||
|
||
// 犯された数
|
||
if(sf.sexCount === void) sf.sexCount = 0;
|
||
|
||
// クローン兵を倒した数
|
||
if(sf.cloneKillCount === void) sf.cloneKillCount = 0;
|
||
|
||
// 抱き付きを救助した数
|
||
if(sf.clinchedRescueCount === void) sf.clinchedRescueCount = 0;
|
||
|
||
// 戦闘不能を救助した回数
|
||
if(sf.rescueCount === void) sf.rescueCount = 0;
|
||
|
||
|
||
// 調整メニュー関係
|
||
|
||
// 攻撃力
|
||
if(sf.adjAttackRate === void) sf.adjAttackRate = 1;
|
||
|
||
// 防御力
|
||
if(sf.adjDamageRate === void) sf.adjDamageRate = 1;
|
||
|
||
// MP回復率
|
||
if(sf.adjMPRecoveryRate === void) sf.adjMPRecoveryRate = 1;
|
||
|
||
// MP無限
|
||
if(sf.adjMPInfinute === void) sf.adjMPInfinute = false;
|
||
|
||
// 乱舞技の時に無敵か
|
||
if(sf.adjGPInvincible === void) sf.adjGPInvincible = false;
|
||
|
||
// コス破損
|
||
if(sf.adjCosBreakCount === void) sf.adjCosBreakCount = 6;
|
||
|
||
// HP0になったときのコス全壊無効化
|
||
if(sf.adjDisableCosBreakSoonAtDead === void)
|
||
sf.adjDisableCosBreakSoonAtDead = false;
|
||
|
||
// コス状態初期値 → 現在特に使用していない
|
||
if(sf.adjCosStateInit === void) sf.adjCosStateInit = 0;
|
||
|
||
// if(sf.adjChameleonOpacityMin === void) sf.adjChameleonOpacityMin = 10;
|
||
// if(sf.adjMineVisibleEasy === void) sf.adjMineVisibleEasy = false;
|
||
// if(sf.adjGolemWeaken === void) sf.adjGolemWeaken = false;
|
||
// if(sf.adjExArts === void) sf.adjExArts = false;
|
||
if(sf.adjSlantDash === void) sf.adjSlantDash = true;
|
||
|
||
// 回想オープン・ヒント
|
||
if(sf.adjKaisouOpen === void) sf.adjKaisouOpen = false;
|
||
if(sf.adjKaisouHint === void) sf.adjKaisouHint = false;
|
||
|
||
// MPの代わりにHPを使用
|
||
if(sf.adjReduceHpInstedOfMp === void) sf.adjReduceHpInstedOfMp = false;
|
||
|
||
// MP消費レート
|
||
if(sf.reduceMpRate === void) sf.reduceMpRate = 1;
|
||
|
||
// シングルプレイモード
|
||
if(sf.adjSinglePlayMode === void) sf.adjSinglePlayMode = false;
|
||
|
||
// 残機数
|
||
if(sf.adjPlayerNum === void) sf.adjPlayerNum = 3;
|
||
|
||
// コンティニュー回数
|
||
if(sf.adjContinueNum === void) sf.adjContinueNum = 3;
|
||
|
||
// ステージセレクト
|
||
if(sf.adjStageSelect === void) sf.adjStageSelect = false;
|
||
if(sf.adjStageSelect2 === void) sf.adjStageSelect2 = false;
|
||
|
||
// ボス体力
|
||
if(sf.adjReduceBossHP1 === void) sf.adjReduceBossHP1 = 1;
|
||
if(sf.adjReduceBossHP2 === void) sf.adjReduceBossHP2 = 1;
|
||
if(sf.adjReduceBossHP3 === void) sf.adjReduceBossHP3 = 1;
|
||
if(sf.adjReduceBossHP4 === void) sf.adjReduceBossHP4 = 1;
|
||
if(sf.adjReduceBossHP5 === void) sf.adjReduceBossHP5 = 1;
|
||
if(sf.adjReduceBossHP6 === void) sf.adjReduceBossHP6 = 1;
|
||
if(sf.adjReduceBossHP7 === void) sf.adjReduceBossHP7 = 1;
|
||
if(sf.adjReduceBossHP8 === void) sf.adjReduceBossHP8 = 1;
|
||
|
||
// 電車が駅に到着までの時間の倍率
|
||
if(sf.adjTrainArrivalTime === void) sf.adjTrainArrivalTime = 1;
|
||
|
||
// 魔影蝶弱体化
|
||
if(sf.adjButterflyWeakened === void) sf.adjButterflyWeakened = false;
|
||
|
||
|
||
// AIによるアシスト
|
||
if(sf.adjAIAssist === void) sf.adjAIAssist = false;
|
||
|
||
// AIの強さを変更可能か
|
||
if(sf.adjEnableChangeAICleverness === void)
|
||
sf.adjEnableChangeAICleverness = false;
|
||
// AIの強さ
|
||
if(sf.adjAICleverness === void) sf.adjAICleverness = 2; // 0~4の範囲( 0:弱い 1:やや弱い 2:普通 3:やや強い 4:強い)
|
||
|
||
// 瀕死キー
|
||
if(sf.adjEnableDyingKey === void) sf.adjEnableDyingKey = false;
|
||
|
||
// 悪堕ちコスモード → ※コスバリエーション設定時はtrueに
|
||
if(sf.adjEvilCosMode === void) sf.adjEvilCosMode = false;
|
||
|
||
// コスバリエーション(4;悪堕ち 6:エロコス 9:裸)
|
||
if(sf.adjCosVariation === void) sf.adjCosVariation = 4;
|
||
|
||
// ランダムコス
|
||
if(sf.adjRandomCos === void) sf.adjRandomCos = false;
|
||
|
||
|
||
|
||
// 雑魚敵変更モード
|
||
// これミスってるけどこのまま行くか……e01にしちゃってるので非設定の場合全部ノーマル戦闘員になってしまう → 難易度hard以上では指定した敵が出現するように
|
||
if(sf.adjEnemyChangeKind === void) sf.adjEnemyChangeKind = 'e01';
|
||
|
||
// 待機指示
|
||
if(sf.adjEnableLeaveItMode === void) sf.adjEnableLeaveItMode = false;
|
||
|
||
if(sf.adjEnableLeaveItMode2 === void) sf.adjEnableLeaveItMode2 = false;
|
||
|
||
|
||
// 敵出現パターン変更
|
||
if(sf.adjEnemyPattern2 === void) sf.adjEnemyPattern2 = false;
|
||
|
||
// オルトロス弱体化
|
||
if(sf.adjOrthrosWeaken === void) sf.adjOrthrosWeaken = false;
|
||
|
||
// 邪妖蟲音なし
|
||
if(sf.adjEvilInsectSilent === void) sf.adjEvilInsectSilent = false;
|
||
|
||
// アイテムを画面内に
|
||
if(sf.adjItemInScreen === void) sf.adjItemInScreen = false;
|
||
|
||
// アイテム増量
|
||
if(sf.adjItemIncrease === void) sf.adjItemIncrease = false;
|
||
|
||
// アイテム無し
|
||
if(sf.adjNoItem === void) sf.adjNoItem = false;
|
||
|
||
// ボスHP倍増
|
||
if(sf.adjIncreaseBossHPRate === void) sf.adjIncreaseBossHPRate = 1;
|
||
|
||
// 敵の攻撃頻度を上昇
|
||
if(sf.adjIncreaseEnemyAttackRate === void) sf.adjIncreaseEnemyAttackRate = false;
|
||
|
||
// 敗北からの復活時、全体攻撃での敵へのダメージを極小に
|
||
if(sf.adjDecreaseDamageAtRevive === void) sf.adjDecreaseDamageAtRevive = false;
|
||
|
||
|
||
// 追加技の使用
|
||
if(sf.adjEnableNewArts === void) sf.adjEnableNewArts = true;
|
||
|
||
// シングルプレイでの交代モード
|
||
if(sf.adjSinglePlayExchangeMode === void) sf.adjSinglePlayExchangeMode = false;
|
||
|
||
// ノーウェイトモード有効化
|
||
if(sf.adjEnableNoWaitMode === void) sf.adjEnableNoWaitMode = false;
|
||
|
||
|
||
// 回想モード
|
||
if(sf.kaisouTab === void) sf.kaisouTab = 1;
|
||
if(sf.charaMode === void) sf.charaMode = 0;
|
||
if(sf.charaMode2 === void) sf.charaMode2 = 0;
|
||
if(sf.kaisouStage === void) sf.kaisouStage = 0;
|
||
|
||
|
||
// 各項目はステージに対しての有無のフラグ
|
||
var cgStageArray = %[
|
||
"evh01" => [0,1,0,1,1,1,1],
|
||
"evh02" => [0,1,0,1,1,1,1],
|
||
"evh03" => [0,1,0,1,1,1,1],
|
||
"evh04" => [0,1,0,1,1,1,1],
|
||
"evh06" => [0,0,0,0,0,0,1],
|
||
];
|
||
|
||
// 各項目は実際のファイルに対しての有無のフラグ
|
||
var cgStageArray2 = %[
|
||
"evh01" => [0,1,1,1,1,1,1,1],
|
||
"evh02" => [0,1,1,1,1,1,1,1],
|
||
"evh03" => [0,1,1,1,1,1,1,1],
|
||
"evh04" => [0,1,1,1,1,1,1,1],
|
||
"evh06" => [0,0,0,0,0,0,1,1],
|
||
];
|
||
|
||
var cgModeBgIndex = 1;
|
||
|
||
if(sf.omakeAnimeVoice === void) sf.omakeAnimeVoice = 1;
|
||
|
||
tf.killCount = [0, 0];
|
||
f.score = 0;
|
||
|
||
|
||
|
||
f.kaisouPage = [1, 1];
|
||
|
||
|
||
// ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
|
||
|
||
// 回想フラグのセット用
|
||
function setKaisouFlag(kaisou, para, p=0){
|
||
|
||
if(sf.kaisouOpenFlag[kaisou]===void){
|
||
sf.kaisouOpenFlag[kaisou] = [];
|
||
}
|
||
|
||
// 残機が無い→ゲームオーバー
|
||
if((f.playerNum[0]==0 || f.playerNum[1]==0) && kaisou != 'h-11'){
|
||
if(kaisou == 'h-21' || kaisou == 'h-22'){
|
||
sf.kaisouOpenFlag[kaisou][1] = true;
|
||
sf.kaisouOpenFlag[kaisou][2] = true;
|
||
}else{
|
||
sf.kaisouOpenFlag[kaisou][3] = true;
|
||
sf.kaisouOpenFlag[kaisou][4] = true;
|
||
}
|
||
checkMissionOfKaisou();
|
||
return;
|
||
}
|
||
|
||
// 処女である
|
||
if(f.sexCount[p]==1){
|
||
sf.kaisouOpenFlag[kaisou][1] = true;
|
||
checkMissionOfKaisou();
|
||
return;
|
||
}
|
||
|
||
//
|
||
switch (kaisou){
|
||
|
||
case 'h-11':
|
||
// 悪堕ち時
|
||
sf.kaisouOpenFlag[kaisou][1] = true;
|
||
break;
|
||
|
||
case 'h-21':
|
||
// シフォンがショコラに敗北
|
||
// index3については参照しない
|
||
sf.kaisouOpenFlag[kaisou][2] = true;
|
||
break;
|
||
case 'h-22':
|
||
// ショコラがシフォンに敗北
|
||
// index3については参照しない
|
||
sf.kaisouOpenFlag[kaisou][2] = true;
|
||
break;
|
||
|
||
case 'h-b5':
|
||
case 'h-b6':
|
||
// レヴィエラかエルゴネアに敗北
|
||
if(para==1){
|
||
sf.kaisouOpenFlag[kaisou][2] = true;
|
||
}else{
|
||
sf.kaisouOpenFlag[kaisou][3] = true;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
if(f.sexCount[p]==2){
|
||
sf.kaisouOpenFlag[kaisou][2] = true;
|
||
}else{
|
||
sf.kaisouOpenFlag[kaisou][3] = true;
|
||
}
|
||
break;
|
||
|
||
|
||
}
|
||
|
||
checkMissionOfKaisou();
|
||
|
||
}
|
||
|
||
// 回想オープンのチェック用
|
||
function checkKaisouAllOpen(kaisouList){
|
||
var flag = true;
|
||
|
||
for(var p=0; p<kaisouList.count; p++){
|
||
var k = kaisouList[p];
|
||
for(var i=0; i<k.count; i++){
|
||
if(k[i] === void) continue;
|
||
if(sf.kaisouOpenFlag[k[i].name] !== void){
|
||
if((typeof k[i].option)=='Object'){
|
||
// var tmp = false;
|
||
// for(var j=1; j<=k[i].option.count; j++){
|
||
//// dm("i : " + i + " / [k[i].name] : " +[k[i].name] + " / " + sf.kaisouOpenFlag[k[i].name][j]);
|
||
// flag *= sf.kaisouOpenFlag[k[i].name][j];
|
||
//// tmp = tmp || sf.kaisouOpenFlag[k[i].name][j];
|
||
// }
|
||
// flag *= tmp;
|
||
flag *= kaisouSubCheck(kaisouList, k[i].name);
|
||
}else{
|
||
// dm("sf.kaisouOpenFlag["+k[i].name+"]["+i+"] : " + sf.kaisouOpenFlag[k[i].name]);
|
||
flag *= sf.kaisouOpenFlag[k[i].name];
|
||
}
|
||
}else{
|
||
flag = false;
|
||
}
|
||
}
|
||
}
|
||
return flag;
|
||
}
|
||
|
||
function animeHModeOpenCheck(kaisouList){
|
||
for(var p=0; p<kaisouList.count; p++){
|
||
var k = kaisouList[p];
|
||
for(var i=0; i<k.count; i++){
|
||
if(k[i] === void) continue;
|
||
if(k[i].name.indexOf('dh') == 0){
|
||
if(sf.kaisouOpenFlag[k[i].name]!==void){
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
function animeHOpenCheck(s){
|
||
var a = [].split(", ", s , true);
|
||
var flag = false;
|
||
|
||
for(var i=0; i< a.count; i++){
|
||
var n1 = a[i].substring(2, 1);
|
||
var n2 = int(a[i].substring(3, 2).replace(new RegExp('^0+'),''));
|
||
var n3 = " abcd".indexOf(a[i].substring(5, 1));
|
||
|
||
var str;
|
||
if(n1 == "1"){
|
||
str = 'h-b' + n2;
|
||
}else{
|
||
if(n2 > 9){
|
||
str = 'h-' + n2;
|
||
}else{
|
||
str = 'h-0' + n2;
|
||
}
|
||
}
|
||
|
||
var index = 1;
|
||
if(n3 > 0) index = n3;
|
||
if(sf.kaisouOpenFlag[str] !== void){
|
||
flag = flag || sf.kaisouOpenFlag[str][index];
|
||
|
||
if(str == 'h-21' || str == 'h-22'){
|
||
flag = flag || sf.kaisouOpenFlag[str][1] || sf.kaisouOpenFlag[str][2];
|
||
}
|
||
}
|
||
}
|
||
return flag;
|
||
}
|
||
|
||
|
||
|
||
|
||
function kaisouSubCheck(kaisouList,name){
|
||
var obj1 = sf.kaisouOpenFlag[name];
|
||
if(obj1===void) return false;
|
||
|
||
var obj2 = void;
|
||
for(var i=0; i<kaisouList.count; i++){
|
||
for(var j=0; j<kaisouList[i].count; j++){
|
||
if(kaisouList[i][j].name == name){
|
||
obj2 = kaisouList[i][j];
|
||
break;
|
||
}
|
||
}
|
||
if(obj2!==void){
|
||
break;
|
||
}
|
||
}
|
||
if(obj2===void) return false;
|
||
|
||
if(typeof(obj1)=='Object'){
|
||
var flag = true;
|
||
var num = (typeof(obj2.option)=='Object')?obj2.option[0].count:obj2.option.count;
|
||
for(var i=1; i<=num; i++){
|
||
// dm("obj:" +obj1[i]);
|
||
if(!obj1[i]) flag=false;
|
||
}
|
||
return flag;
|
||
}else{
|
||
return int(obj1);
|
||
}
|
||
}
|
||
|
||
// ミッション「回想を全てオープンする」を判定する
|
||
function checkMissionOfKaisou(){
|
||
if(!sf.mission['回想']){
|
||
if(checkKaisouAllOpen(kaisouList1) && checkKaisouAllOpen(kaisouList2)){
|
||
sf.mission['回想'] = true;
|
||
toastMultiLanguage('Mission:「回想モードの項目を全てオープンする」をクリアしました。','Mission: \"Unlock all entries in Reminiscence Mode\" COMPLETED');
|
||
checkMissionAllClear();
|
||
}
|
||
}
|
||
}
|
||
|
||
var missions = [
|
||
["25 Combo",
|
||
"Perform a combo of 25 hits or more with the player character",
|
||
"Perform a combo more than 25 hits.",
|
||
"打出25以上Combo",
|
||
"连击数25Hit以上"
|
||
],
|
||
["50 Combo",
|
||
"Perform a combo of 50 hits or more with the player character",
|
||
"Perform a combo more than 50 hits.",
|
||
"打出50以上Combo",
|
||
"连击数50Hit以上"
|
||
],
|
||
["75 Combo",
|
||
"Perform a combo of 75 hits or more with the player character",
|
||
"Perform a combo more than 75 hits.",
|
||
"打出75以上Combo",
|
||
"连击数75Hit以上"
|
||
],
|
||
["Clone Soldier",
|
||
"Defeat 1000 clone soldiers",
|
||
"Defeat 1000 Clone Soldiers",
|
||
"打倒1000隻克隆兵",
|
||
"击倒1000个克隆兵"
|
||
],
|
||
["Stage 1",
|
||
"Clear stage 1 without allowing the player character's costume to be damaged",
|
||
"Clear stage 1 with no damage to costume.",
|
||
"在第1關,完全不讓衣裝破損通關",
|
||
"在不让战斗服破损的情况下,通过关卡1"
|
||
],
|
||
["Stage 2",
|
||
"Reach the vehicle with the boss on stage 2 without allowing the player character to climax",
|
||
"Clear stage 2 within 240 seconds (not including cut-scenes).",
|
||
"於240秒以內通過關卡2(劇情中¥不計時)",
|
||
"240秒内(显示文本时不计时)通过关卡2"
|
||
],
|
||
["Stage 3",
|
||
"Reach the boss on stage 3 without using the player character's emergency evasion technique",
|
||
"Destroy 20 or more motorcycles on stage 3.",
|
||
"在第3關,破壞20台以上的腳踏車",
|
||
"在关卡3中破坏摩托车20辆以上"
|
||
],
|
||
["Stage 4",
|
||
"Deflect 10 bombs on stage 4",
|
||
"Defeat a falling Slime on stage 4 before it lands on the ground.",
|
||
"在第4關,將從天花板落下的史萊姆掉到地面之前打倒",
|
||
"在关卡4的史莱姆从天花板掉落到地面之前,将其打倒"
|
||
],
|
||
["Stage 5",
|
||
"Clear stage 5 without attacking Fake Riviera",
|
||
"Defeat Guile Orc on stage 5 without being defeated or made to orgasm.",
|
||
"在第5關,在與狡詐的歐克戰鬥時,沒有絕頂地獲勝",
|
||
"在关卡5中,不被高潮且一次性地打倒奸狡兽人"
|
||
],
|
||
["Stage 6",
|
||
"Defeat 2 hidden goblin soldiers on stage 6",
|
||
"Clear stage 6 after blowing up all the land mines.",
|
||
"在第6關,爆破所有的地雷",
|
||
"引爆关卡6的所有地雷且通关"
|
||
],
|
||
["Rescue from Embrace",
|
||
"Rescue your buddy 5 times from being grabbed",
|
||
"",
|
||
"",
|
||
""
|
||
],
|
||
["Rescue",
|
||
"Rescue your buddy 3 times when they become incapacitated",
|
||
"",
|
||
"",
|
||
""
|
||
],
|
||
["Ending",
|
||
"Reach the true end",
|
||
"Clear all stages.",
|
||
"通關看到結局",
|
||
"通关"
|
||
],
|
||
["No Miss",
|
||
"Reach the ending without being assaulted even once",
|
||
"Clear all stages without being defeated even once.",
|
||
"未曾敗北即通關",
|
||
"无败北通关"
|
||
],
|
||
["Recollection",
|
||
"Open all items in Recollection mode",
|
||
"Unlock all entries in Reminiscence Mode",
|
||
"解鎖回想模式的所有項目",
|
||
"解锁回想模式的所有内容"
|
||
]
|
||
];
|
||
|
||
function checkMissionAllClear(){
|
||
if(sf.missionAllClear) return true;
|
||
var flag = true;
|
||
for(var i=0; i<missions.count; i++){
|
||
if(!sf.mission[missions[i][0]]){
|
||
flag = false;
|
||
break;
|
||
}
|
||
}
|
||
if(!sf.missionAllClear&&flag){
|
||
sf.missionAllClear = true;
|
||
toastMultiLanguage(
|
||
'おめでとうございます! ミッションをすべてクリアしました。ミッション画面にておまけCGとメッセージが閲覧可能です。',
|
||
'Congratulations! ALL Mission COMPLETED. Bonus CG + Message unlocked on the Mission Screen.',
|
||
'恭喜! 你達成了所有的任務。可以於任務畫面閱覽附贈的CG和訊息。',
|
||
'恭喜你完成所有任务! 可在任务画面中浏览附加的CG和信息。'
|
||
);
|
||
}
|
||
return flag;
|
||
}
|
||
|
||
function getMissionText(str){
|
||
|
||
switch(str){
|
||
case "ステージ5":
|
||
if(sf.stage < 5.5) return "―――――― Locked ――――――";
|
||
break;
|
||
// case "ステージ6":
|
||
// if(sf.stage < 6) return "―――――――――――――――";
|
||
// break;
|
||
}
|
||
|
||
for(var i=0; i<missions.count; i++){
|
||
if(str == missions[i][0]){
|
||
return missions[i][sf.language+1];
|
||
}
|
||
}
|
||
}
|
||
|
||
function getMissionClearText(str){
|
||
switch (sf.language){
|
||
case En:
|
||
return 'Mission: "' + getMissionText(str) + '" COMPLETED';
|
||
break;
|
||
case Tw:
|
||
return 'Mission:達成「' + getMissionText(str) + '」。';
|
||
break;
|
||
case Cn:
|
||
return 'Mission:「' + getMissionText(str) + '」达成。';
|
||
break;
|
||
default:
|
||
return 'Mission:「' + getMissionText(str) + '」をクリアしました。';
|
||
break;
|
||
}
|
||
}
|
||
|
||
function toastMultiLanguage(str1, str2, str3, str4){
|
||
var dic = [str1, str2, str3, str4];
|
||
toast(dic[sf.language]);
|
||
}
|
||
|
||
|
||
function getChapterName(name){
|
||
// 章名を取得する
|
||
switch (sf.language){
|
||
case En:
|
||
return getEnglishChapterName(name);
|
||
break;
|
||
case Tw:
|
||
return getZhtwChapterName(name);
|
||
break;
|
||
case Cn:
|
||
return getZhcnChapterName(name);
|
||
break;
|
||
default:
|
||
return name;
|
||
break;
|
||
}
|
||
}
|
||
|
||
function getEnglishChapterName(name){
|
||
// 英語の章名を返す
|
||
switch(name){
|
||
case "タイトル":
|
||
return "Title";
|
||
case "回想モード":
|
||
return "Reminiscence Mode";
|
||
case "ステージ1『市街』":
|
||
return "Stage 1 \"Urban City\"";
|
||
case "ステージ2『電車内』":
|
||
return "Stage 2 \"School\"";
|
||
case "ステージ3『レジャープール』":
|
||
return "Stage 3 \"Night City\"";
|
||
case "ステージ4『廃工場』":
|
||
return "Stage 4 \"Sewers\"";
|
||
case "ステージ5『洞窟』":
|
||
return "Stage 5 \"Base\"";
|
||
case "ステージ6『敵本拠地』":
|
||
return "Stage 6 \"Wilderness\"";
|
||
case "ミッションオールクリアメッセージ":
|
||
return "All Missions Completed Message";
|
||
case "スタート":
|
||
return "Start";
|
||
case "プロローグ":
|
||
return "Prologue";
|
||
default:
|
||
return "No Data";
|
||
}
|
||
|
||
}
|
||
|
||
function getZhtwChapterName(name){
|
||
// 繁体字の章名を返す
|
||
switch(name){
|
||
case "タイトル":
|
||
return "Title";
|
||
case "回想モード":
|
||
return "回想模式";
|
||
case "ステージ1『市街』":
|
||
return "關卡1 『街道』";
|
||
case "ステージ2『電車内』":
|
||
return "關卡2 『學校』";
|
||
case "ステージ3『レジャープール』":
|
||
return "關卡3 『夜晚的街道』";
|
||
case "ステージ4『廃工場』":
|
||
return "關卡4 『下水道』";
|
||
case "ステージ5『洞窟』":
|
||
return "關卡5 『基地』";
|
||
case "ステージ6『敵本拠地』":
|
||
return "關卡6 『荒野』";
|
||
case "ミッションオールクリアメッセージ":
|
||
return "任務ALL CLEAR";
|
||
case "スタート":
|
||
return "Start";
|
||
case "プロローグ":
|
||
return "序幕";
|
||
default:
|
||
return "No Data";
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function getZhcnChapterName(name){
|
||
// 簡体字の章名を返す
|
||
switch(name){
|
||
case "タイトル":
|
||
return "Title";
|
||
case "回想モード":
|
||
return "回想模式";
|
||
case "ステージ1『市街』":
|
||
return "关卡1 『市街』";
|
||
case "ステージ2『電車内』":
|
||
return "关卡2 『学校』";
|
||
case "ステージ3『レジャープール』":
|
||
return "关卡3 『夜街』";
|
||
case "ステージ4『廃工場』":
|
||
return "关卡4 『下水道』";
|
||
case "ステージ5『洞窟』":
|
||
return "关卡5 『基地』";
|
||
case "ステージ6『敵本拠地』":
|
||
return "关卡6 『荒野』";
|
||
case "ミッションオールクリアメッセージ":
|
||
return "任务全达成信息";
|
||
case "スタート":
|
||
return "Start";
|
||
case "プロローグ":
|
||
return "序章";
|
||
default:
|
||
return "No Data";
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function getKaisouName(name){
|
||
// 回想名を取得する
|
||
if(name === void) return "";
|
||
var reg = new RegExp("「*([^「^」]*)」*");
|
||
var dic = reg.exec(name);
|
||
name = (dic[1] !== void)? dic[1] : name;
|
||
if(name == "") return "";
|
||
var i = 0;
|
||
while(kaisouList2[i] !== void){
|
||
var j = 0;
|
||
while(kaisouList2[i][j] !== void){
|
||
var k = 0;
|
||
while(kaisouList2[i][j].text[k] !== void){
|
||
if(name == kaisouList2[i][j].text[k]){
|
||
return kaisouList2[i][j].text[sf.language];
|
||
}
|
||
k++;
|
||
}
|
||
j++;
|
||
}
|
||
i++;
|
||
}
|
||
return name;
|
||
}
|
||
|
||
|
||
|
||
sf.pad2keySpecial = sf.keySpecial[1][0];
|
||
sf.pad2keyEscAttack = sf.keyEscAttack[1][0];
|
||
sf.pad2keyAttack = sf.keyAttack[1][0];
|
||
sf.pad2keyJump = sf.keyJump[1][0];
|
||
sf.pad2keyPause = sf.keyPause[1][0];
|
||
|
||
sf.pad2keySwitch = sf.keySwitch[1][0];
|
||
sf.pad2keyLeaveIt = sf.keyLeaveIt[1][0];
|
||
|
||
sf.pad2keyOk = sf.keyOk[1][0];
|
||
sf.pad2keyCancel = sf.keyCancel[1][0];
|
||
sf.pad2keyNext = sf.keyNext[1][0];
|
||
sf.pad2keyPrev = sf.keyPrev[1][0];
|
||
sf.pad2keyBC = sf.keyBC[1][0];
|
||
|
||
function pad2SetteingCopyFromPad1(){
|
||
sf.keySpecial[1][0] = 0x1000 | sf.keySpecial[0][1];
|
||
sf.keyEscAttack[1][0] = 0x1000 | sf.keyEscAttack[0][1];
|
||
sf.keyAttack[1][0] = 0x1000 | sf.keyAttack[0][1];
|
||
sf.keyJump[1][0] = 0x1000 | sf.keyJump[0][1];
|
||
sf.keyPause[1][0] = 0x1000 | sf.keyPause[0][1];
|
||
|
||
sf.keySwitch[1][0] = 0x1000 | sf.keySwitch[0][1];
|
||
sf.keyLeaveIt[1][0] = 0x1000 | sf.keyLeaveIt[0][1];
|
||
|
||
sf.keyOk[1][0] = 0x1000 | sf.keyOk[0][1];
|
||
sf.keyCancel[1][0] = 0x1000 | sf.keyCancel[0][1];
|
||
sf.keyNext[1][0] = 0x1000 | sf.keyNext[0][1];
|
||
sf.keyPrev[1][0] = 0x1000 | sf.keyPrev[0][1];
|
||
|
||
sf.keyBC[1][0] = 0x1000 | sf.keyBC[0][1];
|
||
}
|
||
|
||
function pad2SetteingRetore(){
|
||
sf.keySpecial[1][0] = sf.pad2keySpecial;
|
||
sf.keyEscAttack[1][0] = sf.pad2keyEscAttack;
|
||
sf.keyAttack[1][0] = sf.pad2keyAttack;
|
||
sf.keyJump[1][0] = sf.pad2keyJump;
|
||
sf.keyPause[1][0] = sf.pad2keyPause;
|
||
|
||
sf.keySwitch[1][0] = sf.pad2keySwitch;
|
||
sf.keyLeaveIt[1][0] = sf.pad2keyLeaveIt;
|
||
|
||
sf.keyOk[1][0] = sf.pad2keyOk;
|
||
sf.keyCancel[1][0] = sf.pad2keyCancel;
|
||
sf.keyNext[1][0] = sf.pad2keyNext;
|
||
sf.keyPrev[1][0] = sf.pad2keyPrev;
|
||
}
|
||
|
||
function inputSetting(){
|
||
|
||
if(sf.inputForBothCharacter){
|
||
// キーボード・パッドの入力で2Pキャラも同時に操作する
|
||
bao.inputs[1].user = 0;
|
||
}else{
|
||
// 2Pキャラは独立操作(デフォルト)
|
||
bao.inputs[1].user = 1;
|
||
}
|
||
|
||
// if(sf.pad1InputForChara1 || ( bao.players.count==1 && bao.players[0].chara==chrChocolat)){
|
||
// //パッド1を1P側キャラ(bao.players[0])の操作に使用 あるいは 現在キャラがショコラだけの場合(5面後半及びDルート)
|
||
// if(sf.AIForChara2Enabled || gpp.padInputs.count<2){
|
||
// // 2P側をAI操作 あるいは パッドが1つしか無い場合
|
||
// // パッド1を1Pキャラの操作に使用する
|
||
// if(gpp.padInputs[0] !== void) gpp.padInputs[0].user = 0;
|
||
// if(gpp.padInputs[1] !== void) gpp.padInputs[1].enabled = true;
|
||
// }else{
|
||
// // パッド2を1Pキャラの操作に使用する
|
||
// gpp.padInputs[1].user = 1;
|
||
// gpp.padInputs[1].enabled = true;
|
||
// }
|
||
//// pad2SetteingRetore();
|
||
// }else{
|
||
// // パッド1を2Pキャラ(bao.players[1])の操作に使用する場合
|
||
// if(gpp.padInputs[0] !== void) gpp.padInputs[0].user = 1;
|
||
// if(gpp.padInputs[1] !== void) gpp.padInputs[1].enabled = false;
|
||
// pad2SetteingCopyFromPad1();
|
||
// }
|
||
|
||
|
||
|
||
if(bao.players.count!=1 || bao.players[0].chara == chrChiffon){
|
||
//現在キャラが二人、あるいはシフォンのみの場合
|
||
if(sf.pad1InputForChara1){
|
||
//パッド1を1P側キャラ(bao.players[0])の操作に使用する場合
|
||
if(gpp.padInputs[0] !== void) gpp.padInputs[0].user = 0;
|
||
if(gpp.padInputs[1] !== void) gpp.padInputs[1].enabled = true;
|
||
}else{
|
||
// パッド1を2Pキャラ(bao.players[1])の操作に使用する場合
|
||
if(gpp.padInputs[0] !== void) gpp.padInputs[0].user = 1;
|
||
if(gpp.padInputs[1] !== void) gpp.padInputs[1].enabled = false;
|
||
pad2SetteingCopyFromPad1();
|
||
}
|
||
}else{
|
||
//現在キャラがショコラだけの場合(5面後半及びDルート)
|
||
if(!sf.inputAtChocolatOnly || gpp.padInputs.count<2){
|
||
// ショコラ単独時は1Pが操作する設定 あるいは パッドが1つしか無い場合
|
||
// パッド1を1Pキャラの操作に使用する
|
||
if(gpp.padInputs[0] !== void) gpp.padInputs[0].user = 0;
|
||
if(gpp.padInputs[1] !== void) gpp.padInputs[1].enabled = true;
|
||
}else{
|
||
// パッドが2個有り、ショコラ単独時は2P操作の設定
|
||
// パッド2を1Pキャラの操作に使用する
|
||
if(bao.players.count == 1){
|
||
bao.players[0].input = bao.inputs[1];
|
||
}
|
||
gpp.padInputs[1].user = 1;
|
||
gpp.padInputs[1].enabled = true;
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
inputSetting();
|
||
|
||
|
||
function matrixSum(m){
|
||
var s = 0;
|
||
for(var i=0; i<m.count; i++){
|
||
s += +m[i];
|
||
}
|
||
return s;
|
||
}
|
||
|
||
|
||
|
||
// 敗北Hシーンギャラリー配置
|
||
|
||
// ギャラリーの配置
|
||
function setGallery1(){
|
||
dho.setEnemy(%['storage'=>'e010_gallery3','rootx'=>40 ,'rooty'=>170,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery1','rootx'=>100,'rooty'=>130,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery4','rootx'=>340,'rooty'=>135,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery3','rootx'=>420,'rooty'=>180,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery1b(){
|
||
// 戦闘員&一般人 ステージ2用
|
||
dho.setEnemy(%['storage'=>'e010_gallery3','rootx'=>40 ,'rooty'=>200,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e030_gallery1','rootx'=>110,'rooty'=>160,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e034_gallery1','rootx'=>340,'rooty'=>170,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e032_gallery3','rootx'=>420,'rooty'=>210,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e033_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery1c(){
|
||
// 戦闘員ステージ2用
|
||
dho.setEnemy(%['storage'=>'e010_gallery3','rootx'=>40 ,'rooty'=>200,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery1','rootx'=>110,'rooty'=>160,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery4','rootx'=>340,'rooty'=>170,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery3','rootx'=>420,'rooty'=>210,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery2(){
|
||
// 一般人
|
||
dho.setEnemy(%['storage'=>'e032_gallery3','rootx'=>40 ,'rooty'=>170,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e030_gallery1','rootx'=>100,'rooty'=>130,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e034_gallery1','rootx'=>340,'rooty'=>135,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e031_gallery3','rootx'=>420,'rooty'=>180,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e031_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e033_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery2b(){
|
||
// 一般人ステージ2用
|
||
dho.setEnemy(%['storage'=>'e031_gallery3','rootx'=>40 ,'rooty'=>200,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e030_gallery1','rootx'=>110,'rooty'=>160,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e034_gallery1','rootx'=>340,'rooty'=>170,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e032_gallery3','rootx'=>420,'rooty'=>210,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e033_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e032_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery2c(){
|
||
// 一般人ステージ3用
|
||
dho.setEnemy(%['storage'=>'e037_gallery3','rootx'=>40 ,'rooty'=>170,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e035_gallery1','rootx'=>100,'rooty'=>130,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e036_gallery1','rootx'=>340,'rooty'=>135,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e038_gallery3','rootx'=>420,'rooty'=>180,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e036_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e035_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery2d(){
|
||
// 一般人ステージ3ボス戦時用
|
||
dho.setEnemy(%['storage'=>'e036_gallery2','rootx'=>48 ,'rooty'=>246,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e035_gallery2','rootx'=>90 ,'rooty'=>296,'inverse'=>true ,'ignoremovablerect'=>true]);
|
||
dho.setEnemy(%['storage'=>'e036_gallery2','rootx'=>208,'rooty'=>280,'inverse'=>false,'ignoremovablerect'=>true]);
|
||
dho.setEnemy(%['storage'=>'e037_gallery2','rootx'=>270,'rooty'=>265,'inverse'=>true,'ignoremovablerect'=>true]);
|
||
dho.setEnemy(%['storage'=>'e038_gallery2','rootx'=>420,'rooty'=>230,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e035_gallery2','rootx'=>440,'rooty'=>345,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery2e(){
|
||
dho.setEnemy(%['storage'=>'e037_gallery3','rootx'=>40 ,'rooty'=>200,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e035_gallery1','rootx'=>100,'rooty'=>160,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e036_gallery1','rootx'=>340,'rooty'=>170,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e038_gallery3','rootx'=>420,'rooty'=>210,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e036_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e035_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery3(){
|
||
// 羽妖蟲
|
||
dho.setEnemy(%['storage'=>'e060_gallery1','rootx'=>40 ,'rooty'=>130,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e060_gallery1','rootx'=>400,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery3b(){
|
||
// 羽妖蟲
|
||
dho.setEnemy(%['storage'=>'e060_gallery1','rootx'=>40 ,'rooty'=>190,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e060_gallery1','rootx'=>400,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery4(){
|
||
// ゴブリン兵
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>40, 'rooty'=>160,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>110,'rooty'=>140,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>340,'rooty'=>170,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>420,'rooty'=>175,'inverse'=>false]);
|
||
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>70, 'rooty'=>220,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>140,'rooty'=>280,'inverse'=>true,'ignoremovablerect'=>true]);
|
||
if(bao.players.count > 1){
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>225,'rooty'=>260,'inverse'=>false,'ignoremovablerect'=>true]);
|
||
}
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery4b(){
|
||
// ゴブリン兵
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>40, 'rooty'=>170,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>110,'rooty'=>160,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>340,'rooty'=>170,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery1','rootx'=>420,'rooty'=>185,'inverse'=>false]);
|
||
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>70, 'rooty'=>220,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>140,'rooty'=>280,'inverse'=>true,'ignoremovablerect'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>225,'rooty'=>260,'inverse'=>false,'ignoremovablerect'=>true]);
|
||
dho.setEnemy(%['storage'=>'e070_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery5(){
|
||
// オーガ兵
|
||
dho.setEnemy(%['storage'=>'e010_gallery1','rootx'=>70,'rooty'=>130,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery1','rootx'=>380,'rooty'=>135,'inverse'=>false]);
|
||
// dho.setEnemy(%['storage'=>'e010_gallery3','rootx'=>420,'rooty'=>180,'inverse'=>false]);
|
||
// dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
// dho.setEnemy(%['storage'=>'e010_gallery2','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
function setGallery6a(){
|
||
dho.setEnemy(%['storage'=>'e010_gallery7','rootx'=>40 ,'rooty'=>170,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery5','rootx'=>100,'rooty'=>130,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery5','rootx'=>340,'rooty'=>135,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery7','rootx'=>420,'rooty'=>180,'inverse'=>false]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery6','rootx'=>70, 'rooty'=>240,'inverse'=>true]);
|
||
dho.setEnemy(%['storage'=>'e010_gallery6','rootx'=>390,'rooty'=>250,'inverse'=>false]);
|
||
}
|
||
|
||
|
||
function storePlayerState(){
|
||
if(!bao.enabled) return;
|
||
f.HP = [];
|
||
f.MP = [];
|
||
f.cosState = [];
|
||
for(var i=0; i<bao.players.count; i++){
|
||
f.HP[i] = bao.players[i].HP;
|
||
f.MP[i] = bao.players[i].MP;
|
||
f.cosState[i] = bao.players[i].cosState;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
// ステージ1クリア後のシーンスキップ可否チェックその1
|
||
function check_stage1Skip(){
|
||
|
||
var f1 = false;
|
||
var f2 = false;
|
||
|
||
var f4 = false;
|
||
var f5 = false;
|
||
var f6 = false;
|
||
|
||
if( f.cosState[0] < 2 && f.cosState[1] < 2 && f.HP[0] > f.maxHP * 0.8 && f.HP[1] > f.maxHP * 0.8){
|
||
f2 = true;
|
||
}else{
|
||
f1 = true;
|
||
}
|
||
|
||
if(f.killedCount[0] == 0){
|
||
if(f.killedCount[1] == 0){
|
||
f5 = true;
|
||
}else{
|
||
f6 = true;
|
||
}
|
||
}else{
|
||
f4 = true;
|
||
}
|
||
|
||
if(check_stage1Skip2() && ((f1 && sf.through103a1)||(f2 && sf.through103a2)) && ((f4 && sf.through103a4)||(f5 && sf.through103a5)||(f6 && sf.through103a6)) ){
|
||
return true;
|
||
}
|
||
return false;
|
||
|
||
}
|
||
|
||
// ステージ1クリア後のシーンスキップ可否チェックその2
|
||
function check_stage1Skip2(){
|
||
if(f.defeatedCountInThisStage == 0){
|
||
if(sf.through201a) return true;
|
||
}else{
|
||
if(sf.through201b) return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
// ステージ2クリア後のシーンスキップ可否チェック
|
||
function check_stage2Skip(){
|
||
|
||
if(f.defeatedCountInThisStage == 0){
|
||
if(sf.through205a) return true;
|
||
}else{
|
||
if(sf.through205b) return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
// ステージ2クリア後のシーンスキップ可否チェックその2
|
||
function check_stage2Skip2(){
|
||
|
||
if(f.defeatedCountInThisStage == 0){
|
||
if(sf.through207a) return true;
|
||
}else{
|
||
if(sf.through207b) return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
|
||
|
||
// メニュー表示設定
|
||
// if(kag.adjAIAssistMenuItem.visible){
|
||
// kag.adjAIAssistMenuItemM.checked = !sf.adjAIAssist;
|
||
// kag.adjAIAssistMenuItemA.checked = sf.adjAIAssist;
|
||
// }
|
||
//
|
||
// if(kag.adjAIClevernessItem.visible){
|
||
// kag.adjAIClevernessItem1.checked = (sf.adjAICleverness == 4);
|
||
// kag.adjAIClevernessItem2.checked = (sf.adjAICleverness == 3);
|
||
// kag.adjAIClevernessItem3.checked = (sf.adjAICleverness == 2);
|
||
// kag.adjAIClevernessItem4.checked = (sf.adjAICleverness == 1);
|
||
// kag.adjAIClevernessItem5.checked = (sf.adjAICleverness == 0);
|
||
// }
|
||
setMenuItemAboutAI();
|
||
|
||
|
||
function dko(){
|
||
for(var i=0; i<bao.players.count; i++){
|
||
bao.players[i].HP = 10;
|
||
}
|
||
for(var i=0; i<bao.enemies.count; i++){
|
||
bao.enemies[i].HP = 10;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
function setCgOpenFlagFromArray(arry){
|
||
for(var i = 0; i < arry.count; i++){
|
||
sf.cgOpenFlag[arry[i].toLowerCase()] = true;
|
||
}
|
||
}
|
||
|
||
|
||
function randomCostume(){
|
||
if(!sf.adjRandomCos) return;
|
||
|
||
var c = 0;
|
||
if(sf.adjEvilCosMode){
|
||
switch(sf.adjCosVariation){
|
||
case 4:
|
||
c = 1;
|
||
break;
|
||
case 6:
|
||
c = 2;
|
||
break;
|
||
case 9:
|
||
c = 3;
|
||
break;
|
||
}
|
||
}
|
||
|
||
var r;
|
||
do{
|
||
r = intrandom(0, 3);
|
||
}while(c == r);
|
||
|
||
switch(r){
|
||
case 0:
|
||
sf.adjEvilCosMode = false;
|
||
sf.adjCosVariation = 4;
|
||
break;
|
||
case 1:
|
||
sf.adjEvilCosMode = true;
|
||
sf.adjCosVariation = 4;
|
||
break;
|
||
case 2:
|
||
sf.adjEvilCosMode = true;
|
||
sf.adjCosVariation = 6;
|
||
break;
|
||
case 3:
|
||
sf.adjEvilCosMode = true;
|
||
sf.adjCosVariation = 9;
|
||
break;
|
||
}
|
||
|
||
if(bao.enabled){
|
||
for(var i=0; i<bao.players.count; i++){
|
||
if(r == 0){
|
||
bao.players[i].cosState = 0;
|
||
}else{
|
||
bao.players[i].cosState = 4;
|
||
}
|
||
}
|
||
bao.informLayer.resetFace2();
|
||
}
|
||
}
|
||
|
||
|
||
// アペンド用CGオープン設定
|
||
if(sf.kaisouOpenFlag['h-01']!==void && sf.kaisouOpenFlag['h-01'][4]) setCgOpenFlagFromArray(["EVh01a","EVh01b","EVh01c","EVh01d","EVh01e","EVh01f"]);
|
||
if(sf.kaisouOpenFlag['h-02']!==void && sf.kaisouOpenFlag['h-02'][4]) setCgOpenFlagFromArray(["EVh02a","EVh02b","EVh02c","EVh02d","EVh02e"]);
|
||
if(sf.kaisouOpenFlag['h-03']!==void && sf.kaisouOpenFlag['h-03'][4]) setCgOpenFlagFromArray(["EVh03a","EVh03b","EVh03c","EVh03d","EVh03d2","EVh03d3","EVh03d4","EVh03e"]);
|
||
if(sf.kaisouOpenFlag['h-10']!==void && sf.kaisouOpenFlag['h-10'][4]) setCgOpenFlagFromArray(["EVh04a","EVh04b","EVh04c","EVh04c2","EVh04c3","EVh04c4","EVh04c5","EVh04d","EVh04d2"]);
|
||
if(sf.kaisouOpenFlag['h-b5']!==void && sf.kaisouOpenFlag['h-b5'][4]) setCgOpenFlagFromArray(["EVh05a","EVh05b","EVh05c","EVh05d"]);
|
||
if(sf.kaisouOpenFlag['h-11']!==void && sf.kaisouOpenFlag['h-11'][1]) setCgOpenFlagFromArray(["EVh06a","EVh06b","EVh06c","EVh06d"]);
|
||
|
||
|
||
|
||
// 設定がおかしくなっていた点の修正
|
||
if(sf.adjDisableCosBreakSoonAtDead){
|
||
sf.adjCosBreakCount = (sf.adjButtonStateCosBreakDisabled.selected)?99999:((sf.adjButtonStateCosBreakDown.selected)?12:((sf.adjButtonStateCosBreakUp.selected)?2:6));
|
||
}
|
||
|
||
|
||
[endscript]
|
||
|
||
[call storage=0-02.ks]
|
||
[call storage=0-12.ks]
|
||
[call storage=0-22.ks]
|
||
[call storage=0-23.ks]
|
||
|
||
;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||
|
||
|
||
[eval exp="f.windowTopNow=0"]
|
||
[eval exp="f.titleScreenControl=0"]
|
||
|
||
[call storage=configmenu.ks target=*setVolume]
|
||
|
||
[eval exp="kag.se[2].open('sys_decide.ogg')"]
|
||
|
||
;[eval exp="sf.aviEnabled = false"]
|
||
[eval exp="sf.bootCount++"]
|
||
|
||
;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
|
||
|
||
[iscript]
|
||
|
||
if(kag.smallMode){
|
||
kag.setZoom(kag.smallWidth, kag.scWidth);
|
||
kag.innerWidth = kag.smallWidth;
|
||
kag.innerHeight = kag.smallHeight;
|
||
}
|
||
|
||
kag.visible = true;
|
||
|
||
if(kag.changeFullScreen){
|
||
kag.onFullScreenMenuItemClick();
|
||
}
|
||
|
||
var cgModeConductor = void;
|
||
|
||
[endscript]
|
||
|
||
|
||
[iscript]
|
||
function skipCSA(key, shift)
|
||
{
|
||
if(key == 0xc0 || key == #'Q' || key == VK_NUMPAD9){
|
||
kag.process('', '*goto_title');
|
||
return true;
|
||
}
|
||
|
||
// if(key == VK_1){
|
||
// sf.dbstyle = "ddraw";
|
||
// System.setArgument("-dbstyle", sf.dbstyle);
|
||
// }
|
||
//
|
||
// if(key == VK_2){
|
||
// sf.dbstyle = "d3d";
|
||
// System.setArgument("-dbstyle", sf.dbstyle);
|
||
// }
|
||
//
|
||
// if(key == VK_3){
|
||
// sf.dbstyle = "gdi";
|
||
// System.setArgument("-dbstyle", sf.dbstyle);
|
||
// }
|
||
//
|
||
// if(key == VK_0){
|
||
// sf.dbstyle = void;
|
||
// System.setArgument("-dbstyle", "auto");
|
||
// }
|
||
|
||
if(key == VK_F1){
|
||
sf.usedb = "no";
|
||
System.setArgument("-usedb","no");
|
||
kag.process('', '*goto_title');
|
||
return true;
|
||
}
|
||
|
||
if(key == VK_F12){
|
||
sf.usedb = void;
|
||
System.setArgument("-usedb","yes");
|
||
kag.process('', '*goto_title');
|
||
return true;
|
||
}
|
||
|
||
}
|
||
[endscript]
|
||
|
||
[if exp="!tf.debugMode"]
|
||
[eval exp="kag.keyDownHook.add(skipCSA)"]
|
||
|
||
[wait time=500 cond="sf.aviEnabled==false"]
|
||
;メディ倫表記
|
||
[BgSet storage="csa_01"]
|
||
[trans method=crossfade time=200]
|
||
[wt]
|
||
[wait time=2000]
|
||
|
||
[BgSet storage="csa_02"]
|
||
[trans method=crossfade time=200]
|
||
[wt]
|
||
[wait time=2000]
|
||
|
||
; [BgSet storage="_black"]
|
||
; [trans method=crossfade time=200]
|
||
; [wt]
|
||
;
|
||
[BgSet storage="csa_03"]
|
||
[trans method=crossfade time=200]
|
||
[wt]
|
||
[wait time=2000]
|
||
|
||
[BgSet storage="_black"]
|
||
[trans method=crossfade time=500]
|
||
[wt]
|
||
[wait time=1000]
|
||
|
||
[eval exp="kag.keyDownHook.remove(skipCSA)"]
|
||
[endif]
|
||
|
||
[BgSet storage="_black"]
|
||
[trans method=crossfade time=0][wt]
|
||
|
||
[call target=*load_plugin]
|
||
[jump storage="0-01.ks"]
|
||
|
||
*goto_title
|
||
[eval exp="kag.keyDownHook.remove(skipCSA)"]
|
||
[stoptrans]
|
||
|
||
[BgSet storage="_white"]
|
||
[trans method=crossfade time=0][wt]
|
||
|
||
[call target=*load_plugin]
|
||
[jump storage="0-01.ks" target="*title"]
|
||
|
||
*load_plugin
|
||
|
||
[call storage="resultScreen.ks" target=*init]
|
||
|
||
[return]
|
||
|
||
|
||
|
||
|
||
|