shiny-cuty-excel-chiffon/data/rescueMode.ssd

147 lines
7.1 KiB
Text


*start
; ①
*wait
[s cond="bao.players[tf.killedPlayerId].nowSpriteId==stStanding && tf.debugMode"]
[eval exp="bao.conductor.debugLevel=tkdlNone"]
[if exp="bao.players[tf.killedPlayerId].nowSpriteId!=stDown && bao.players[tf.killedPlayerId].nowSpriteId!=stDamage3"]
[wait time=100]
[jump target=*wait]
[endif]
[eval exp="bao.conductor.debugLevel=tkdlVerbose"]
; 戻る→②へ
[retkag3]
[pause]
; ③
[iscript]
tf.inRescueMode = true;
bao.informLayer.rescueGaugeLayer.value = 0;
bao.setObject(%['storage'=>'longPressAttack','shadow'=>false,'parentsprite'=>tf.livingPlayer,'absolute'=>40000]);
tf.enemySet = true;
switch(tf.killedByKind[0]){
case "ジャイアントスクイッド":
case "ベイゼル":
case "触手基部":
case "レヴィエラ":
case "エルゴネア":
case "デスオーク":
case "ヘルオーク":
tf.enemySet = false;
break;
}
if(tf.killedBy[0] !== void && isvalid tf.killedBy[0]){
// プレイヤーキャラを殺した敵をそのプレイヤーの近くへ移動させる
if(!tf.isExistBoss && (tf.killedBy[0].nowSpriteId==stStanding || tf.killedBy[0].nowSpriteId==stWalk) && tf.killedBy[0].rootY >= bao.stageLayer.topLine){
tf.tmp = "[waitaction][eval exp='[move path=("+(bao.players[tf.killedPlayerId].rootX)+","+(bao.players[tf.killedPlayerId].rootY)+",0) mode=absolute]']";
tf.killedBy[0].addQueue(tf.tmp);
}
switch(tf.killedByKind[0]){
case "戦闘員":
case "女戦闘員":
case "上級戦闘員":
case "スライム":
case "ゴブリン兵":
case "一般人":
case "オルトロス":
case "邪妖蟲":
case "オーガ兵":
tf.enemyKind = tf.killedByKind[0];
break;
default:
tf.enemyKind = "e01";
break;
}
}
dm("■■■■ tf.killedBy : " + tf.killedBy[0]);
//dm(tf.tmp);
// for(var i=0; i<tf.killedBy[0].movingTable.count; i++){
// tf.killedBy[0].movingTable[i].dm();
// }
[endscript]
[if exp="tf.doubleKO"]
[eval exp="dm('tf.doubleKO is true')"]
[jump target=*end]
[endif]
[wait time=100]
;[if exp="tf.enemySet"]
; [enemy x=right kind=e01]
; [enemy x=left kind=e01]
; [enemy x=left kind=&tf.enemyKind]
;[endif]
[eval exp="tf.time = 4000"]
*loop
[iscript]
tf.enemyCount = 0;
for(var i=0; i<bao.enemies.count; i++){
if(bao.enemies[i].kind != "モブ"){
tf.enemyCount++;
}
}
if(tf.time > 2000) tf.time -= 100;
[endscript]
[if exp="tf.enemyCount < 5 && tf.enemySet"]
[if exp="(f.stage == 2 && bao.stageLayer.dispLeft>700) || bao.stageLayer.getAltitude(bao.internalWidth,bao.stageLayer.topLine) > 0"]
[eval exp="tf.enemyLR = 'left'"]
[else]
[eval exp="tf.enemyLR = (intrandom(0,1)==0)? 'left': 'right'"]
[endif]
; [enemy kind=e01]
[if exp="f.stage != 2"]
[enemy kind=&((intrandom(0,1)==0)?"e01":"e02") x=&tf.enemyLR]
[else]
[enemy kind=&((intrandom(0,1)==0)?"e01":"e03") x=&tf.enemyLR]
[endif]
[enemy kind=&tf.enemyKind x=&tf.enemyLR]
[enemy kind=&tf.enemyKind x=&tf.enemyLR cond="tf.enemyKind!='オーガ兵'"]
[endif]
[iscript]
// 抱きつきに行くのを設定し直したり
if(tf.killedBy[0] === void || !isvalid tf.killedBy[0] || tf.killedBy[0].scriptQueue.count==0){
var e = bao.getNearestEnemy(tf.killedPlayer, tf.enemyKind);
if(e !== void && isvalid e && !e.isBoss && (e.nowSpriteId==stStanding || e.nowSpriteId==stWalk)){
tf.killedBy[0] = e;
tf.tmp = "[eval exp='[move path=("+(bao.players[tf.killedPlayerId].rootX)+","+(bao.players[tf.killedPlayerId].rootY)+",0) mode=absolute]']";
tf.killedBy[0].addQueue(tf.tmp);
//dm("tf.killedBy[0] : " + tf.killedBy[0] + " / tf.tmp : " + tf.tmp);
}
}
[endscript]
[wait time=&tf.time]
[jump target=*loop]
*end
;[waittrig name=rescue]
[eval exp='dm("■レスキューモード終了")']
; 戻る→④へ
[retkag3]
[returnextra]