shiny-cuty-excel-chiffon/data/4-01.ks
2024-10-27 15:37:15 -05:00

690 lines
31 KiB
Text


[call target=*init]
;ステージスクリプトのロード
[loadstage storage='stage04_01.ssd']
[image page=back layer=0 storage="_black" visible=true]
[UpDate time=1]
*stage3_start|ステージ4『廃工場』
[eval exp="f.chaptertitle=''"]
[record]
[runstage]
[waitstage]
[playbgm storage="stage04"]
[freeimage page=back layer=0]
[UpDate canskip=false]
*stage4-01
[playerstate enablemove=false]
[enemystate enablemove=false]
[setSkipTarget target='*stage4-01Start']
[WindowOn]
[Face storage="f_a230"]
[Voice storage="a0492" buf=2]
【Excel Chiffon】[CR]
「[v]...This is the place, right?[/v]」[KeyWait]
[FaceOff]
[Face storage="f_b229"]
[Voice storage="b0400" buf=2]
【Excel Chocolat】[CR]
「[v]Yeah... I can feel the negative energy here...[/v]」[KeyWait]
[FaceOff]
[Face storage="f_a230"]
[Voice storage="a0493" buf=2]
【Excel Chiffon】[CR]
「[v]But why here? This is an abandoned factory, right? I[r]don't think there are any people to attack here.[/v]」[KeyWait]
[FaceOff]
[Face storage="f_a230"]
[Voice storage="a0494" buf=2]
【Excel Chiffon】[CR]
「[v]Also... the negative energy feels different than[r]usual... like it's wavering...[/v]」[KeyWait]
[FaceOff]
[Face storage="f_b229"]
[Voice storage="b0401" buf=2]
【Excel Chocolat】[CR]
「[v]Could it be... they've found a way to interfere with[r]our detection abilities?[/v]」[KeyWait]
[FaceOff]
[Face storage="f_a230"]
[Voice storage="a0495" buf=2]
【Excel Chiffon】[CR]
「[v]If that's the case, there might be traps. We need to be[r]careful—[/v]」[KeyWait]
[FaceOff]
[Face storage="f_b229"]
[Voice storage="b0402" buf=2]
【Excel Chocolat】[CR]
「[v]Right. Let's explore inside with extra caution. And...[r]if there are enemies, we'll defeat them and go home[r]together like always.[/v]」[KeyWait]
[FaceOff]
[Face storage="f_a205"]
[Voice storage="a0496" buf=2]
【Excel Chiffon】[CR]
「[v]Yeah![/v]」[KeyWait]
[FaceOff]
*stage4-01Start
*stage4-01Start2
[setSkipEnableFlag]
[call target=*init cond="tf.skipNextFlag"]
[SetSsdAtSkipNext storage=stage04_01.ssd target=*skipped bgm=stage04 cond="!bao.enabled || bao.conductor.curStorage!='stage04_01.ssd'"]
[iscript]
f.defeatedCountInThisStage = 0;
f.hitBomb = 0;
[endscript]
[WindowOff]
[ClearHistory]
[eval exp="bao.informLayer.show()"]
[playerstate enablemove=true]
[enemystate enablemove=true]
[runstage]
*stage4-01b
[waitstage]
; 屋内へ
[playerstate enablemove=false]
[enemystate enablemove=false]
[runstage]
*stage4-01d
[waitstage]
[eval exp="sf.stage=4.2" cond="sf.stage<4.2"]
[eval exp="bao.informLayer.hide()"]
[image page=back layer=0 storage="_black" visible=true]
[UpDate canskip=false]
[iscript]
f.selectCharacter = bao.nowSelectingPlayerId;
storePlayerState();
bao.resetStage();
[endscript]
[loadstage storage='stage04_02.ssd']
[runstage]
[waitstage]
[if exp="bao.nowSelectingPlayerId != f.selectCharacter"]
[eval exp="bao.exchangePlayer()"]
[endif]
[freeimage page=back layer=0]
[UpDate canskip=false]
[eval exp="bao.informLayer.show()"]
[playerstate enablemove=true]
[enemystate enablemove=true]
; 屋内戦開始
[runstage]
*stage4-02
[waitstage]
; ボスと遭遇
*stage4-02b
[playerstate enablemove=false]
[enemystate enablemove=false]
;[waitstable]
;[ClearHistory]
[setSkipTarget target='*Stage4BossStart']
[fadeoutbgm time=250]
[eval exp="bao.informLayer.hide()"]
[eval exp="sf.stage=4.5" cond="sf.stage<4.5"]
[runstage]
[waitstage]
[playbgm storage="boss1"]
[wait time=1000 canskip=false]
[eval exp="bao.players[0].turnToRight()"]
[eval exp="bao.players[1].turnToRight()"]
[WindowOn]
[Face storage="f_d001"]
【Bezel】[CR]
「[i]Oh... you've made it this far.[/i]」[KeyWait]
[FaceOff]
[Face storage="f_b229"]
[Voice storage="b0403" buf=2]
【Excel Chocolat】[CR]
「[v]Who are you!?[/v]」[KeyWait]
[FaceOff]
[ChrSet0 storage="bg130"]
[ChrSet1 storage="b_d001" pos=c]
[Update]
[Face storage="f_d001"]
【Bezel】[CR]
「[i]Me? My name is Bezel! A researcher of the great Ergonia[r]Empire and an advisor to General Reviella.[/i]」[KeyWait]
[FaceOff]
[Face storage="f_d001"]
【Bezel】[CR]
「[i]...You little girls have been quite the nuisance to our[r]plans. But this is the end. I will personally defeat[r]you. And then... I will analyze everything about you.[/i]」[KeyWait]
[FaceOff]
[Face storage="f_a207"]
[Voice storage="a0497" buf=2]
【Excel Chiffon】[CR]
「[v]We won't let you do that! We will never lose![/v]」[KeyWait]
[FaceOff]
[runstage]
[waitstage]
[ChrReset0]
[ChrReset1]
[Update]
[Face storage="f_d001"]
【Bezel】[CR]
「[i]...Then, prove it![/i]」[KeyWait]
[FaceOff]
*Stage4BossStart
[setSkipEnableFlag]
[if exp="tf.ctrl === void || !isvalid tf.ctrl"]
; [eval exp="tf.tentacleBases = []"]
; [enemy kind=触手基部 shadow=false exp="mp.num=0" return='tf.tentacleBases[0]']
; [enemy kind=触手基部 shadow=false exp="mp.num=1" return='tf.tentacleBases[1]']
; [enemy kind=触手基部 shadow=false exp="mp.num=2" return='tf.tentacleBases[2]']
; [enemy kind=触手基部 shadow=false exp="mp.num=3" return='tf.tentacleBases[3]']
; [object storage="e830_ctrl" x=228 y=215 return='tf.ctrl']
[runstage]
[waitstage]
[endif]
[if exp="tf.skipNextFlag && f.chara1 != ''"]
[ChrReset0]
[ChrReset1]
[layopt layer=message0 page=back visible=false]
[layopt layer=message1 page=back visible=false]
[Update time=250]
[WindowOff time=0]
[else]
[WindowOff]
[endif]
[ClearHistory]
[eval exp="bao.informLayer.show()"]
[playerstate enablemove=true]
[enemystate enablemove=true]
[runstage]
*stage4-02c
[waitstage]
[jump target=*clear]
*missed
[playerstate enablemove=false]
[enemystate enablemove=false]
[ClearHistory]
[eval exp="sf.gamePoint+=3"]
[call storage="defeatedHScene.ks"]
[jump target=*clear cond="tf.doubleKO"]
[if exp="tf.toRescueMode"]
[call storage="rescueMode.ks"]
[eval exp="tf.toRescueMode = false"]
[jump target=*missed cond="bao.returnState=='miss'"]
[jump target=&f.nowLabel]
[endif]
[eval exp="f.defeatedCountInThisStage++"]
[eval exp="sf.gamePoint+=7"]
;残機0ならゲームオーバー
[jump target=*gameover cond="f.playerNum[chrChiffon] == 0 || f.playerNum[chrChocolat]==0"]
[if exp="sf.HSceneMode==2 || !sf.R18"]
[call storage=defeatedHScene.ks target=*hsceneless2]
[jump target=&f.nowLabel]
[endif]
[call storage=defeatedHScene.ks target=*revive]
[jump target=&f.nowLabel]
*clear
[iscript]
{
bao.iconLayers[0].visible = false;
bao.iconLayers[1].visible = false;
bao.fukidashi.clear();
if(sf.adjSinglePlayMode){
var x0 = bao.players[0].rootX;
var x1 = bao.players[1].rootX;
if(Math.abs(x0 - x1) < 50){
if(bao.nowSelectingPlayerId == 0){
if(x1 < bao.internalWidth / 2){
bao.players[1].rootX = bao.players[0].rootX + 60;
}else{
bao.players[1].rootX = bao.players[0].rootX - 60;
}
}else{
if(x0 < bao.internalWidth / 2){
bao.players[0].rootX = bao.players[1].rootX + 60;
}else{
bao.players[0].rootX = bao.players[1].rootX - 60;
}
}
}
}
}
[endscript]
[enemystate exp="sprite.damage.strength=1000;sprite.damage.kind=atkBrowOut|atkInvalidGuard;sprite.damageFrom=bao.players[0];sprite.setHitMark(sprite.rootX,sprite.rootY,sprite.layer.asdHeight/2)"]
[playerstate enablemove=false]
[enemystate enablemove=false]
[iscript]
sf.gamePoint += 12;
bao.noWaitMode = false; bao.resetTimerInterval();
// result計算用
tf.HP = 0;
tf.MP = 0;
tf.maxHP = 0;
tf.maxMP = 0;
for(var i=0; i<bao.players.count; i++){
tf.HP += bao.players[i].HP;
tf.MP += bao.players[i].MP;
tf.maxHP += bao.players[i].maxHP;
tf.maxMP += bao.players[i].maxMP;
}
tf.doubleKO = false;
[endscript]
[fadeoutbgm time=300]
[eval exp="bao.informLayer.hide()"]
[wait time=300]
[iscript]
// キメポーズ
for(var i=0; i<bao.players.count; i++){
var p = bao.players[i];
if(p.rootX<bao.enemies[0].rootX){
if(!p.inverse) p.inverse = true;
}else{
if(p.inverse) p.inverse = false;
}
if(f.defeatedCountInThisStage == 0){
p.addQueue('[wait frame=15][load id=stWinning]');
}
}
[endscript]
[call storage=resultScreen.ks]
[iscript]
// キメポーズから直る
for(var i=0; i<bao.players.count; i++){
bao.players[i].layer.trigger('end');
}
[endscript]
*stage4-03
[setSkipTarget storage='5-01.ks' target='*stage5-01Start']
;BGM:重苦しさ
[playbgm storage="bgm005"]
[WindowOn]
[Face storage="f_d001"]
【Bezel】[CR]
「[i]Gah... guaaahhh...[/i]」[KeyWait]
[FaceOff]
[Face storage="f_a229"]
[Voice storage="a0498" buf=2]
【Excel Chiffon】[CR]
「[v]Our—[/v]」[KeyWait]
[FaceOff]
[Face storage="f_b206"]
[Voice storage="b0404" buf=2]
【Excel Chocolat】[CR]
「[v]Victory.[/v]」[KeyWait]
[FaceOff]
[eval exp="tf.beizel.layer.trigger('erase')"]
[Face storage="f_d001"]
【Bezel】[CR]
「[i]Impossible... I... this... guaaahhh! Reviella-sama...[r]I'm... sorry...[/i]」[KeyWait]
[FaceOff]
[Face storage="f_a201"]
[Voice storage="a0499" buf=2]
【Excel Chiffon】[CR]
「[v]We did it![/v]」[KeyWait]
[FaceOff]
[Face storage="f_b300"]
[Voice storage="b0405" buf=2]
【Excel Chocolat】[CR]
「[v]Whew...[/v]」[KeyWait]
[FaceOff]
[Face storage="f_a201"]
[Voice storage="a0500" buf=2]
【Excel Chiffon】[CR]
「[v]So, Chocolat... let's go home—[/v]」[KeyWait]
[FaceOff]
[Face storage="f_none"]
[Voice storage="c0030" buf=2]
【???】[CR]
『[v]I can't believe you defeated Bezel... This is[r]surprising.[/v]』[KeyWait]
[FaceOff]
[Face storage="f_b229"]
[Voice storage="b0406" buf=2]
【Excel Chocolat】[CR]
「[v]Huh? A voice!?[/v]」[KeyWait]
[FaceOff]
[Face storage="f_a230"]
[Voice storage="a0501" buf=2]
【Excel Chiffon】[CR]
「[v]This voice... somewhere—no way, Re-Reviella!?[/v]」[KeyWait]
[FaceOff]
[Face storage="f_c208"]
[Voice storage="c0031" buf=2]
【Reviella】[CR]
『[v]Hehehe... I'm honestly surprised. I never expected[r]those little girls from back then to grow this much...[r]It's unexpected.[/v]』[KeyWait]
[FaceOff]
[Face storage="f_c208"]
[Voice storage="c0032" buf=2]
【Reviella】[CR]
『[v]I can't leave you alone anymore. I must thank you for[r]defeating Bezel... So, let's play.[/v]』[KeyWait]
[FaceOff]
[Sound storage="se025" buf=0]
;転送装置発動
[iscript]
{
bao.setObject(%['storage'=>'magiccircle05', 'x'=>p0.rootX, 'y'=>p0.rootY+40, 'absolute'=>10, 'return'=>'tf.e01']);
bao.setObject(%['storage'=>'magiceffect01a', 'x'=>p0.rootX, 'y'=>p0.rootY+18, 'return'=>'tf.e02']);
bao.setObject(%['storage'=>'magiceffect01b', 'x'=>p0.rootX, 'y'=>p0.rootY-4, 'return'=>'tf.e03']);
bao.setObject(%['storage'=>'magiccircle05', 'x'=>p1.rootX, 'y'=>p1.rootY+40, 'absolute'=>10, 'return'=>'tf.e11']);
bao.setObject(%['storage'=>'magiceffect01a', 'x'=>p1.rootX, 'y'=>p1.rootY+18, 'return'=>'tf.e12']);
bao.setObject(%['storage'=>'magiceffect01b', 'x'=>p1.rootX, 'y'=>p1.rootY-4, 'return'=>'tf.e13']);
}
[endscript]
[Face storage="f_a205"]
[Voice storage="a0502" buf=2]
【Excel Chiffon】[CR]
「[v]What? This... what is this!?[/v]」[KeyWait]
[FaceOff]
[iscript]
p0.lookTo(p1);
p1.lookTo(p0);
[endscript]
[Face storage="f_b206"]
[Voice storage="b0407" buf=2]
【Excel Chocolat】[CR]
「[v]I have a bad feeling... Chiffon![/v]」[KeyWait]
[FaceOff]
[Face storage="f_a207"]
[Voice storage="a0503" buf=2]
【Excel Chiffon】[CR]
「[v]Chocolat!![/v]」[KeyWait]
[FaceOff]
;互いの手を取ろうとする
;ホワイトアウト
[Sound storage="se013" buf=1]
[iscript]
bao.setObject(%['storage'=>'fadewhite', 'x'=>228, 'y'=>256, 'altitude'=>0, 'exp'=>'mp.endopacity=160,mp.delay=0,mp.frame=15,mp.mode=1', 'absolute'=>2000,'return'=>'tf.white']);
[endscript]
[Face storage="f_b210"]
[Voice storage="b0408" buf=2]
【Excel Chocolat】[CR]
「[v]Ah... ahhh![/v]」[KeyWait]
[FaceOff]
[Face storage="f_a210"]
[Voice storage="a0504" buf=2]
【Excel Chiffon】[CR]
「[v]Th-this is... ahhh...!?[/v]」[KeyWait]
[FaceOff]
[Sound storage="se008" buf=0]
[iscript]
p0.dOpacity2Auto = false;
p0.layer.dOpacity2 = -10;
p1.dOpacity2Auto = false;
p1.layer.dOpacity2 = -10;
[endscript]
[WindowOff]
[iscript]
tf.white.layer.trigger('delete');
tf.e01.layer.trigger('erase');
tf.e02.layer.trigger('erase');
tf.e03.layer.trigger('erase');
tf.e11.layer.trigger('erase');
tf.e12.layer.trigger('erase');
tf.e13.layer.trigger('erase');
[endscript]
[wait time=1000]
[fadeoutbgm time=1000]
[image page=back layer=0 storage="_black" visible=true left=0 top=0]
[Update canskip=false]
[eval exp="bao.resetStage()"]
[eval exp="bao.hide()"]
[wait time=500]
[scenarioend]
[ljump storage="5-01.ks"]
*gameover
[BgmFadeOut time=1000]
[if exp="sf.HSceneMode==2 || !sf.R18"]
[wait time=1000]
[eval exp="bao.informLayer.hide()"]
[image page=back layer=0 storage="_black" visible=true]
[Update time=2000]
[image page=fore layer=0 storage="_black" visible=true]
[else]
[WindowOff]
[wait time=1000]
[endif]
;ステージの非表示
[eval exp="bao.resetStage()"]
[eval exp="bao.hide()"]
[eval exp="sf.gamePoint+=15"]
[ClearHistory]
[setSkipTarget storage=4-04.ks target='*scene4-04end']
[lcall storage="4-04.ks" cond="sf.R18"]
[setSkipEnableFlag label='*scene4-04end']
[SoundAllOut]
;コンティニューするかどうか
[eval exp="tf.result=askYesNo('コンティニューしますか?')"]
[jump target=*continue cond="tf.result==true"]
[scenarioend]
[cancelskip]
[if exp="!sf.R18"]
[BgmFadeOut time=2000]
[image page=back layer=0 storage="gameover" left=0 opacity=255 visible=true]
[update]
[wait time=2000 cond="kag.skipMode!=4"]
[else]
[wait time=1000 cond="kag.skipMode!=4"]
[endif]
[SoundAllStop]
[eval exp="kag.skipMode=0"]
[jump storage="0-01.ks"]
*continue
[BgSet storage="_black"]
[image page=back layer=0 storage="_black" visible=true]
[UpDate canskip=false]
[SoundAllStop]
[call target=*init]
[iscript]
switch(f.stageProgress){
case 0:
tf.storage = 'stage04_01.ssd';
tf.target = '*stage4-01b';
break;
case 1:
tf.storage = 'stage04_01.ssd';
tf.target = '*stage4-01b';
break;
case 2:
tf.storage = 'stage04_02.ssd';
tf.target = '*stage4-02';
break;
case 3:
tf.storage = 'stage04_02.ssd';
tf.target = '*stage4-02';
break;
case 4:
tf.storage = 'stage04_02.ssd';
tf.target = '*stage4-02';
break;
}
bao.addHighScore(f.score);
f.continue++;
f.playerNum = [sf.adjPlayerNum, sf.adjPlayerNum];
f.score= 0 ;
tf.defeated = false;
bao.informLayer.resetFace();
[endscript]
[loadstage storage=&tf.storage target=*prepareContinue]
[runstage]
[waitstage]
[iscript]
switch(f.stageProgress){
case 0:
bao.stageLayer.dispLeft = 0;
bao.conductor.goToLabel('*point0');
break;
case 1:
bao.stageLayer.dispLeft = 2000-456;
bao.conductor.goToLabel('*point1');
break;
case 2:
bao.stageLayer.dispLeft = 0;
bao.conductor.goToLabel('*point2');
break;
case 3:
bao.stageLayer.dispLeft = 2104-456;
bao.conductor.goToLabel('*point3');
break;
case 4:
bao.stageLayer.dispLeft = 2850-456;
bao.conductor.goToLabel('*point4');
break;
}
[endscript]
[playbgm storage="stage04"]
[freeimage page=back layer=0]
[UpDate canskip=false]
[ClearHistory]
[eval exp="bao.informLayer.show()"]
[runstage]
[playerstate enablemove=true]
[jump target=&tf.target]
*init|ステージ4『廃工場』
[iscript]
f.chaptertitle='';
f.stage = 4;
if(sf.stage<f.stage) sf.stage=f.stage;
f.HP = [f.maxHP, f.maxHP];
f.MP = [f.maxMP, f.maxMP];
f.cosState = [(sf.adjEvilCosMode)?4:0, (sf.adjEvilCosMode)?4:0];
f.downCount = [0, 0];
tf.killCount = [0, 0];
[endscript]
[return]