shiny-cuty-excel-chiffon/data/first.ks
2024-10-23 08:03:04 -05:00

1743 lines
97 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.


*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; // 04の範囲 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':
// シフォンがショコラに敗北
// indexについては参照しない
sf.kaisouOpenFlag[kaisou][2] = true;
break;
case 'h-22':
// ショコラがシフォンに敗北
// indexについては参照しない
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秒以內通過關卡劇情中¥不計時",
"240秒内显示文本时不计时通过关卡"
],
["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.",
"在第破壞20台以上的腳踏車",
"在关卡中破坏摩托车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]