敵も多彩な攻撃で、もう何が何やら。
1対1の殴りあいより複雑になったことは、、、
// 敵が行動可能か、どの行動をするかを決める
combat.enemy_select = function (i){
//add_msg("combat.enemy_select(" + i + ")に入った。");
// ターン数の計算
if (i === 0 && enemy_party.first_strike === true && enemy[i].wolf_double_speed !== 2){
combat.turn_num++;
}
if (enemy[i].gelatin === true) {
enemy[i].LIFE_POINT -= 10;
add_msg("魔法のラッパのゼラチンが" + enemy[i].name + "の生命点を10点吸収した。");
update_status();
}
if (enemy[i].max_LIFE_POINT <= 0 ) {
//add_msg("敵" + i + "は初めからいない。");
if (i === enemy.length - 1) {
combat.enemy_do(i); // 敵フレッドはenemy25_doへ。
} else {
combat.enemy_select(enemy.length - 1); // 敵最後のフレッド(enemy25_select)まで順番をスキップ
}
} else if (enemy[i].Friendly_Reaction === true) {
add_msg(enemy[i].name + "は友好的だ。");
combat.enemy_do(i);
} else if (enemy[i].Bribery === true) {
add_msg(enemy[i].name + "はワイロで買収されている。");
combat.enemy_do(i);
} else if (enemy[i].LIFE_POINT <= 0 && enemy[i].max_LIFE_POINT > 0) {
add_msg(enemy[i].name + "は死んでいる。");
combat.enemy_do(i);
} else if (enemy[i].LIFE_POINT <= 5 && enemy[i].max_LIFE_POINT > 5) {
add_msg(enemy[i].name + "は気絶している。");
combat.enemy_do(i);
} else if (enemy[i].sleep_globe > 0) { //眠り玉で眠っている
add_msg(enemy[i].name + "は残り" + (enemy[i].sleep_globe - 1) + "回分、眠り玉で眠っている。");
combat.enemy_do(i);
} else if (enemy[i].Eye_of_Horus > 0) { //太陽神の目で催眠状態。
add_msg(enemy[i].name + "は残り" + (enemy[i].Eye_of_Horus - 1) + "回分、太陽神の目で催眠状態になっている。");
combat.enemy_do(i);
} else if (enemy[i].Laughing_Globe > 0) { //笑い玉で笑っている
add_msg(enemy[i].name + "は残り" + (enemy[i].Laughing_Globe - 1) + "回分、笑い玉で笑っている。");
combat.enemy_do(i);
} else if (enemy[i].Psionic_Helm_Stop > 0) { //脳波で衰弱している
add_msg(enemy[i].name + "は残り" + (enemy[i].Psionic_Helm_Stop - 1) + "回分、脳波で衰弱して動けない。");
combat.enemy_do(i);
} else if (enemy[i].attack_way === "ドラゴン・ファイア錠") { // 魔女スクロッグ
add_msg(enemy[i].name + "は" + (enemy[i].attack_base + 1 ) + "つ目のドラゴン・ファイア錠を飲んだ。");
combat.enemy_do(i);
} else if (Section.num === "154" && combat.turn_num === 1) { // 警官、最初の攻撃の機会。
add_msg(enemy[i].name + "は警笛を吹き鳴らして署から応援を呼んだ。サイコロを1個振れ。");
dice.start(1, "Police_help");
} else {
if (Fred.sumon === true && Fred.LIFE_POINT >= 0){
add_msg(enemy[i].name + "は" + enemy[i].attack_way + "でフレッドを攻撃。");
} else {
add_msg(enemy[i].name + "は" + enemy[i].attack_way + "でピップを攻撃。");
}
dice.start(2, "combat.enemy_do('" + i + "')");
}
}
// 敵の行動
combat.enemy_do = function (i) {
//add_msg("combat.enemy_do(" + i + ")に入った。");
var attack_point = Math.max(dice.dice12pip - enemy[i].attack_base, 0) + enemy[i].extra_damage;
var damage_point = attack_point - Pip.defence;
var any_msg = false;
if (enemy[i].max_LIFE_POINT <= 0 ) {
//初めからいない
} else if (enemy[i].Friendly_Reaction === true) {
// 有効
} else if (enemy[i].Bribery === true) {
// ワイロ
} else if (enemy[i].LIFE_POINT <= 0 && enemy[i].max_LIFE_POINT > 0) {
//死んでいる
} else if (enemy[i].LIFE_POINT <= 5 && enemy[i].max_LIFE_POINT > 5) {
//気絶している
} else if (enemy[i].sleep_globe > 0) {
//眠り玉で眠っている
enemy[i].sleep_globe--;
if (enemy[i].sleep_globe === 0) {
add_msg(enemy[i].name + "は目をさました。");
}
} else if (enemy[i].Eye_of_Horus > 0) {
//太陽神の目で催眠状態
enemy[i].Eye_of_Horus--;
if (enemy[i].Eye_of_Horus === 0) {
add_msg(enemy[i].name + "は催眠状態から戻った。");
}
} else if (enemy[i].Laughing_Globe > 0) {
//笑い玉で笑っている
enemy[i].Laughing_Globe--;
if (enemy[i].Laughing_Globe === 0) {
add_msg(enemy[i].name + "の笑いがおさまった。");
}
} else if (enemy[i].Psionic_Helm_Stop > 0) {
//脳波で衰弱している
enemy[i].Psionic_Helm_Stop--;
if (enemy[i].Psionic_Helm_Stop === 0) {
add_msg(enemy[i].name + "はようやく動けるようになった。");
}
} else if (Section.num === "154" && combat.turn_num === 1) {
add_msg(dice.die1pip + "人の警官が駆けつけた。");
var j;
for (j = 1; j < dice.die1pip + 1; j++) {
enemy[j].id_num = enemy_party.id_num;
enemy[j].name = enemy_data[enemy_party.id_num].name + (j + 1);
enemy[j].max_LIFE_POINT = enemy_data[enemy_party.id_num].max_LIFE_POINT;
enemy[j].LIFE_POINT = enemy_data[enemy_party.id_num].LIFE_POINT;
enemy[j].attack_base = enemy_data[enemy_party.id_num].attack_base;
enemy[j].extra_damage = enemy_data[enemy_party.id_num].extra_damage;
enemy[j].defence = enemy_data[enemy_party.id_num].defence;
enemy[j].attack_way = enemy_data[enemy_party.id_num].attack_way;
enemy[j].Bribery_amount = enemy_data[enemy_party.id_num].Bribery_amount;
}
} else { //攻撃してくる
if (Pip.bolt_charge === true && dice.dice12pip === 12 && (Fred.sumon === false || Fred.LIFE_POINT <= 0)) {
enemy[i].LIFE_POINT = 0;
add_msg("首に刺さったボルトに武器が当たって" + enemy[i].name + "は感電死した!");
update_status();
} else if (dice.dice12pip <= enemy[i].attack_base) {
any_msg = true;
add_msg("空振り!");
} else if (damage_point <= 0) {
any_msg = true;
if (Fred.sumon === true && Fred.LIFE_POINT >= 0) {
add_msg("ミス! フレッドは被害を受けない。");
} else {
add_msg("ミス! ピップは被害を受けない。");
}
} else { // 被害点が1以上
if (enemy[i].attack_way === "魔法のラッパ") {
if (Fred.sumon === true && Fred.LIFE_POINT >= 0) {
Fred.gelatin = true;
add_msg("フレッドは全身ゼリー状の粘液に包まれた。");
} else {
Pip.gelatin = true;
add_msg("きみは全身ゼリー状の粘液に包まれた。");
}
enemy[i].attack_base = 6;
enemy[i].extra_damage = 0;
enemy[i].attack_way = "素手";
} else {
if (enemy[i].attack_way === "稲妻の矢") {
if (Fred.sumon === true && Fred.LIFE_POINT >= 0) {
damage_point = Math.floor(Fred.LIFE_POINT / 2);
} else {
damage_point = Math.floor(Pip.LIFE_POINT / 2);
}
}
if (enemy[i].attack_way === "ドラゴン・ファイア錠") {
damage_point = 25;
}
if (enemy[i].Psionic_Helm_Half === true) {
damage_point = Math.floor(damage_point / 2);
add_msg(enemy[i].name + "は脳波で衰弱しているので半分しか被害点を与えられない。");
}
if (Pip.impermeable_bubble > 0) {
damage_point = 0;
add_msg("泡渦巻きが被害点をはねとばした。");
Pip.impermeable_bubble--;
if (Pip.impermeable_bubble > 0) {
add_msg("泡渦巻きの効果はあと" + Pip.impermeable_bubble + "回。");
} else {
add_msg("泡渦巻きを使い切った。窒息死する前に脱出した。");
data_magic[Pip_magic[i].id_num].label = "使う";
}
}
if (Fred.sumon === true && Fred.LIFE_POINT >= 0) {
Fred.LIFE_POINT -= damage_point;
add_msg("フレッドは" + enemy[i].name + "から" + damage_point + "点の被害を受けた。");
} else {
Pip.LIFE_POINT -= damage_point;
add_msg("ピップは" + enemy[i].name + "から" + damage_point + "点の被害を受けた。");
}
any_msg = true;
if (Section.num === "105" && combat.turn_num === 1) {
if (Fred.sumon === true && Fred.LIFE_POINT >= 0) {
Fred.ghoul_poison = true;
add_msg("食屍鬼から毒を受けた! この戦いが終わるまで、1ラウンド毎にフレッドは生命点を3点ずつ失っていく。");
} else {
Pip.ghoul_poison = true;
add_msg("食屍鬼から毒を受けた! この戦いが終わるまで、1ラウンド毎にきみは生命点を3点ずつ失っていく。");
}
}
if (Section.num === "73") {
if (Fred.sumon === true && Fred.LIFE_POINT >= 0) {
Fred.scorpion_poison = true;
add_msg("フレッドの身体にサソリの毒がまわった。以後のセクションに入るたびに生命点を2点ずつ失っていく。");
} else {
Pip.scorpion_poison = true;
add_msg("きみの身体にサソリの毒がまわった。以後のセクションに入るたびに生命点を2点ずつ失っていく。");
}
}
if (enemy[i].attack_way === "稲妻の矢") {
add_msg("魔女ミニーは稲妻の矢が尽きた。");
enemy[i].attack_base = 6;
enemy[i].extra_damage = 0;
enemy[i].attack_way = "素手";
}
if (enemy[i].attack_way === "ドラゴン・ファイア錠") {
enemy[i].attack_base++;
if (enemy[i].attack_base === 6) {
add_msg("魔女スクロッグはドラゴン・ファイア錠が尽きた。");
enemy[i].attack_base = 6;
enemy[i].extra_damage = 0;
enemy[i].attack_way = "素手;"
}
}
if (Section.num === "131") {
combat.round++;
Pip.round_damage += damage_point;
add_msg("きみがこれまでアドルフから受けた被害点は" + Pip.round_damage + "点。");
add_msg("アドルフが一撃を与えてラウンド" + combat.round + "が終了した。");
}
if (Section.num === "146") {
combat.round++;
Pip.round_damage += damage_point;
add_msg("きみがこれまでマオから受けた被害点は" + Pip.round_damage + "点。");
add_msg("マオが一撃を与えてラウンド" + combat.round + "が終了した。");
}
}
}
}
if (i === enemy.length - 1) {
if (Pip.ghoul_poison === true) {
Pip.LIFE_POINT -= 3;
add_msg("食屍鬼の毒で生命点を3点失った。");
}
if (Fred.ghoul_poison === true) {
Fred.LIFE_POINT -= 3;
add_msg("食屍鬼の毒で生命点を3点失った。");
}
if (Pip.gelatin === true) {
Pip.LIFE_POINT -= 10;
add_msg("ゼリー状の粘液から生命点を10点吸い取られた。");
}
if (Fred.gelatin === true) {
Fred.LIFE_POINT -= 10;
add_msg("ゼリー状の粘液から生命点を10点吸い取られた。");
}
}
if (any_msg === true) {
any_msg = false;
} else {
}
update_status();
combat.enemy2Pip_turn(i);
}
// 戦闘を続行してピップにターンを渡すかどうか判断
combat.enemy2Pip_turn = function (i) {
var j, k;
var max_enemy_LIFE_POINT = 0;
for (j = 0; j < enemy.length; j++) {
if (enemy[j].Friendly_Reaction === true || enemy[j].Bribery === true) {
// 友好的またはワイロで買収された敵はカウントしない
} else {
max_enemy_LIFE_POINT = Math.max(max_enemy_LIFE_POINT, enemy[j].LIFE_POINT);
}
}
if (Pip.LIFE_POINT <= 0 && Pip.Resurrection_Wand === true) {
add_msg("復活の杖で14行きを避けた! ピップの生命点が完全回復した!");
Pip.Resurrection_Wand = false;
Pip.LIFE_POINT = Pip.max_LIFE_POINT;
data_magic[15].label = "使う";
}
if (Pip.LIFE_POINT <= 0) { //ピップが死んだ
add_msg("ピップは生命点が0になった。14に行け。");
} else if (max_enemy_LIFE_POINT <= 0) { //敵が死んだ
add_msg("敵をやっつけた!");
combat.result(); //戦後処理へ
} else if (max_enemy_LIFE_POINT <= 5 && Section.num === "36" && Section.subnum === 0) { //三つ目獣を気絶
add_msg("三つ目獣を気絶させた!");
combat.result(); //戦後処理へ
} else if (combat.round === 4 && Section.num === "131") { // 4ラウンド終了
add_msg("4ラウンド終了。");
combat.result(); //戦後処理へ
} else if (combat.round === 4 && Section.num === "146") { // 4ラウンド終了
add_msg("4ラウンド終了。");
combat.result(); //戦後処理へ
} else {
if (enemy[i].wolf_double_speed === 1) {
add_msg("狼は素早いのでもう一回攻撃できる。");
enemy[i].wolf_double_speed = 2;
combat.enemy_select(i);
} else {
if (enemy[i].wolf_double_speed === 2) {
enemy[i].wolf_double_speed = 1;
}
if (i !== enemy.length - 1) {
i++;
combat.enemy_select(i);
} else {
combat.Pip_select();
}
}
}
}