shiny-cuty-excel-chiffon/data/stage99-01_ctrl.asd

225 lines
15 KiB
Common Lisp
Raw Permalink 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.

*start
; モブ子ちゃんたちのBGボイス制御と
; 駅に着いたときに一般人が沢山車内に入ってくるようにする
[eval exp="sprite.ignoreScroll=true"]
[state enablemove=false enableattack=false ignoremovablerect=true]
[ontrigger name=generate target=*generate]
;[s]
*loop
[wait frame=3]
[iscript]
{
var inside_sex = [];
var inside_fella = [];
var border_sex = [];
var border_fella = [];
var border_sex_ave = 0;
var border_fella_ave = 0;
// 画面内もしくは画面外でも一定範囲内にモブがいるかどうか
for(var i=0; i<bao.objects.count; i++){
var e = bao.objects[i];
if(e.kind == 'e99'){
if(e.rootX > 0 && e.rootX < bao.internalWidth){
if(e.layer.conductor.mp.kind == 'セックス'){
inside_sex.add(e);
}else{
inside_fella.add(e);
}
}else if(e.rootX > - 80 && e.rootX < bao.internalWidth + 80){
if(e.layer.conductor.mp.kind == 'セックス'){
border_sex.add(e);
if(e.rootX < 0){
border_sex_ave += -(e.rootX);
}else{
border_sex_ave += (e.rootX - bao.internalWidth);
}
}else{
border_fella.add(e);
if(e.rootX < 0){
border_fella_ave += -(e.rootX);
}else{
border_fella_ave += (e.rootX - bao.internalWidth);
}
}
}
}
}
// 犯されてるモブのBGボイス
if(inside_sex.count + border_sex.count == 0){
if(kag.se[3].status == 'play') kag.se[3].stop();
}else{
if(inside_sex.count + border_sex.count >= 1){
if(kag.se[3].status != 'play'){
kag.se[3].play(%['storage'=>'mobh_1_0','loop'=>true]);
}
}
var v1 = sf.voiceVolume2[getVoiceIndex('x')] * 1.0 * f.volumeMatrix[sf.bgVoiceVolume]/100;
var a = border_sex_ave / 80;
if(inside_sex.count => 2){
kag.se[3].volume = v1;
}else if(inside_sex.count == 1 && border_sex.count >= 1){
border_sex_ave = border_sex_ave / border_sex.count;
kag.se[3].volume = v1;
}else if(border_sex.count >= 2){
border_sex_ave = border_sex_ave / border_sex.count;
kag.se[3].volume = v1 * a;
}
}
// フェラさせられてるモブのBGボイス
if(inside_fella.count + border_fella.count == 0){
if(kag.se[14].status == 'play') kag.se[14].stop();
}else{
if(inside_fella.count + border_fella.count >= 1){
if(kag.se[14].status != 'play'){
kag.se[14].play(%['storage'=>'mobh_0_1','loop'=>true]);
}
}
var v = sf.voiceVolume2[getVoiceIndex('x')] * 1.0 * f.volumeMatrix[sf.bgVoiceVolume]/100;
var a = border_sex_ave / 80;
if(inside_fella.count => 2){
kag.se[14].volume = v;
}else if(inside_fella.count == 1 && border_fella.count >= 1){
border_fella_ave = border_fella_ave / border_fella.count;
kag.se[14].volume = v * a;
}else if(border_fella.count >= 2){
border_fella_ave = border_fella_ave / border_fella.count;
kag.se[14].volume = v * a;
}
}
if(f.inBattleMode) f.limitTime = 9999;
}
[endscript]
[jump target=*loop]
;kag.se[3].status
*generate
[playse storage="se669"]
[wait frame=30]
[iscript]
mp.loc = [
368 * 0 + 195,
368 * 1 + 195,
368 * 2 + 195,
368 * 3 + 195
];
mp.x = [];
for(var i=0; i < mp.loc.count; i++){
mp.lt = int(mp.loc[i] - bao.stageLayer.dispLeft);
if(mp.lt > -40 && mp.lt < bao.internalWidth+40){
mp.x.add(mp.lt);
}
}
[endscript]
[wait frame=5]
[eval exp="mp.i=0"]
[eval exp="tf.v = kag.se[0].volume2"]
*loop2
[iscript]
// SEボリュームを小さくする
kag.se[0].volume2 *= 0.7;
kag.se[1].volume2 *= 0.7;
kag.se[10].volume2 *= 0.7;
kag.se[11].volume2 *= 0.7;
kag.se[12].volume2 *= 0.7;
kag.se[3].volume2 *= 0.7;
kag.se[14].volume2 *= 0.7;
// 右側の壁が画面外であるなら右側から一般人生成
if(tf.rightwall.baseLeft > bao.internalWidth){
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>(bao.internalWidth+intrandom(30,50)), 'y'=>210, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
mp.e.addQueue("[state enablemove=false][waitaction][move path=(-" + (200-mp.i*40) + ",-" + (20-mp.i*8) + ",0) frame=150][load id=stStanding]");
}
// 左側から一般人生成
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>intrandom(-30,-50), 'y'=>210, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
mp.e.addQueue("[state enablemove=false][waitaction][move path=(" + (200-mp.i*40) + ",-" + (20-mp.i*8) + ",0) frame=150][load id=stStanding]");
// 下側から一般人生成
for(var j=0; j < mp.x.count; j++){
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>(mp.x[j]-30+intrandom(-10,10)), 'y'=>380, 'inverse'=>false, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
if(mp.x[j] > bao.internalWidth/2){
mp.e.addQueue("[state enablemove=false][waitaction][move path=(-" + (120-mp.i*14) + ",-" + (200-mp.i*20) + ",0) id=stEtc6 frame=150][load id=stStanding]");
}else{
mp.e.addQueue("[state enablemove=false][waitaction][move path=(-" + (60-mp.i*14) + ",-" + (200-mp.i*20) + ",0) id=stEtc6 frame=150][load id=stStanding]");
}
}
[endscript]
[wait frame=2]
[iscript]
// 右側の壁が画面外であるなら右側から一般人生成
if(tf.rightwall.baseLeft > bao.internalWidth){
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>(bao.internalWidth+intrandom(30,50)), 'y'=>230, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
mp.e.addQueue("[state enablemove=false][waitaction][move path=(-" + (200-mp.i*40) + ",-" + (20-mp.i*8) + ",0) frame=150][load id=stStanding]");
}
// 左側から一般人生成
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>intrandom(-30,-50), 'y'=>230, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
mp.e.addQueue("[state enablemove=false][waitaction][move path=(" + (200-mp.i*40) + ",-" + (20-mp.i*8) + ",0) frame=150][load id=stStanding]");
// 下側から一般人生成
for(var j=0; j < mp.x.count; j++){
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>(mp.x[j]+intrandom(-10,10)), 'y'=>380, 'inverse'=>false, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
if(mp.x[j] > bao.internalWidth/2){
mp.e.addQueue("[state enablemove=false][waitaction][move path=(-" + (60-mp.i*14) + ",-" + (200-mp.i*20) + ",0) id=stEtc6 frame=150][load id=stStanding]");
}else{
mp.e.addQueue("[state enablemove=false][waitaction][move path=(" + (-mp.i*14) + ",-" + (200-mp.i*20) + ",0) id=stEtc6 frame=150][load id=stStanding]");
}
}
[endscript]
[wait frame=2]
[iscript]
// 右側の壁が画面外であるなら右側から一般人生成
if(tf.rightwall.baseLeft > bao.internalWidth){
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>(bao.internalWidth+intrandom(30,50)), 'y'=>250, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
mp.e.addQueue("[state enablemove=false][waitaction][move path=(-" + (200-mp.i*40) + ",-" + (20-mp.i*8) + ",0) frame=150][load id=stStanding]");
}
// 左側から一般人生成
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>intrandom(-30,-50), 'y'=>250, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
mp.e.addQueue("[state enablemove=false][waitaction][move path=(" + (200-mp.i*40) + ",-" + (20-mp.i*8) + ",0) frame=150][load id=stStanding]");
// 下側から一般人生成
for(var j=0; j < mp.x.count; j++){
mp.e = bao.setEnemy(%['kind'=>'e03', 'rootx'=>(mp.x[j]+30+intrandom(-10,10)), 'y'=>380, 'inverse'=>false, 'cosstate'=>intrandom(0,4), 'enablemove'=>false]);
if(mp.x[j] > bao.internalWidth/2){
mp.e.addQueue("[state enablemove=false][waitaction][move path=(" + (-mp.i*14) + ",-" + (200-mp.i*20) + ",0) id=stEtc6 frame=150][load id=stStanding]");
}else{
mp.e.addQueue("[state enablemove=false][waitaction][move path=(" + (60-mp.i*14) + ",-" + (200-mp.i*20) + ",0) id=stEtc6 frame=150][load id=stStanding]");
}
}
[endscript]
[wait frame=16]
[eval exp="mp.i++"]
[jump target=*loop2 cond="mp.i<4"]
[del]
[s]
tf.ctrl.layer.trigger('generate')