225 lines
15 KiB
Common Lisp
225 lines
15 KiB
Common Lisp
*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.enemies.count; i++){
|
||
var e = bao.enemies[i];
|
||
if(e.kind == 'モブ'){
|
||
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')
|