魔法の効果や毒の効果など、すべての効果を実装した戦闘処理関数を細かく紹介する。 まずは、敵のデータを読み込む関数combat.encounter()を紹介。
枝葉の部分は……
combat.encounter = function (){
var i;
enemy_party.exist = true;
Pip.quick = 0;
enemy_party.quick = 0;
combat.turn_num = 0;
combat.round = 0;
Pip.round_damage = 0;
if (Section.num === "46") { //まぬけな百姓
enemy_party.id_num = 1;
enemy_party.num = 1;
enemy_party.quick = -1;
} else if (Section.num === "75") { //まぬけな百姓
enemy_party.id_num = 2;
enemy_party.num = 1;
enemy_party.quick = -1;
} else if (Section.num === "66") { //ずんぐりした百姓
enemy_party.id_num = 3;
enemy_party.num = 1;
Pip.quick = -1;
enemy_party.quick = 10;
} else if (Section.num === "83") { //乱暴な百姓
enemy_party.id_num = 4;
enemy_party.num = 3;
} else if (Section.num === "41") { // 盗賊
enemy_party.id_num = 5;
enemy_party.num = 1;
} else if (Section.num === "70") { // 醜い百姓
enemy_party.id_num = 6;
enemy_party.num = 25;
} else if (Section.num === "16") { // 黒衣の祭司
enemy_party.id_num = 7;
enemy_party.num = 3;
} else if (Section.num === "56") { // 巨人
enemy_party.id_num = 8;
enemy_party.num = 1;
} else if (Section.num === "105") { // 食屍鬼
enemy_party.id_num = 9;
enemy_party.num = 1;
enemy_data[9].LIFE_POINT = Pip.LIFE_POINT;
enemy_data[9].max_LIFE_POINT = Pip.max_LIFE_POINT;
} else if (Section.num === "17") { // 砂のドラゴン
enemy_party.id_num = 10;
enemy_party.num = 1;
} else if (Section.num === "19") { // 野蛮人
enemy_party.id_num = 11;
enemy_party.num = 3;
} else if (Section.num === "36" && Section.subnum === 0) { // 三つ目獣
enemy_party.id_num = 12;
enemy_party.num = 1;
} else if (Section.num === "36" && Section.subnum === 1) { // 兵士ベン
enemy_party.id_num = 13;
enemy_party.num = 1;
} else if (Section.num === "116") { // ブロン
enemy_party.id_num = 14;
enemy_party.num = 3 + dice.die1pip;
} else if (Section.num === "73") { // サソリ
enemy_party.id_num = 15;
enemy_party.num = 1;
} else if (Section.num === "82") { // 見えない敵
enemy_party.id_num = 16;
enemy_party.num = 1;
Pip.quick = -1;
} else if (Section.num === "78" && Section.subnum === 0) { // 魔女ミニー
enemy_party.id_num = 17;
enemy_party.num = 1;
} else if (Section.num === "78" && Section.subnum === 1) { // 魔女アギー
enemy_party.id_num = 18;
enemy_party.num = 2;
} else if (Section.num === "78" && Section.subnum === 2) { // 魔女スクロッグ
enemy_party.id_num = 19;
enemy_party.num = 3;
} else if (Section.num === "20") { // 狼
enemy_party.id_num = 20;
enemy_party.num = 1;
enemy[0].wolf_double_speed = 1;
} else if (Section.num === "54") { // カメレオン怪人
enemy_party.id_num = 21;
enemy_party.num = 1;
} else if (Section.num === "114") { // 悪魔の落とし子
enemy_party.id_num = 22;
enemy_party.num = 1;
} else if (Section.num === "85") { // パトロール警官
enemy_party.id_num = 23;
enemy_party.num = dice.die1pip;
} else if (Section.num === "93") { // 見張り
enemy_party.id_num = 24;
enemy_party.num = dice.dice12pip;
} else if (Section.num === "110") { // 僧
enemy_party.id_num = 25;
enemy_party.num = 2;
} else if (Section.num === "129") { // こそ泥サム
enemy_party.id_num = 26;
enemy_party.num = 1;
} else if (Section.num === "131") { // アドルフ
enemy_party.id_num = 27;
enemy_party.num = 1;
} else if (Section.num === "146") { // マオ
enemy_party.id_num = 28;
enemy_party.num = 1;
} else if (Section.num === "154") { // 警官
enemy_party.id_num = 29;
enemy_party.num = 1;
} else if (Section.num === "216") { // ゼリー・モンスター
enemy_party.id_num = 30;
enemy_party.num = 1;
} else if (Section.num === "171") { // ワニガエル獣
enemy_party.id_num = 31;
enemy_party.num = 1;
} else if (Section.num === "Fred") { // フレッド
enemy_party.id_num = 32;
enemy_party.num = 1;
} else if (Section.num === "D7") { // 骸骨
enemy_party.id_num = 33;
enemy_party.num = 1;
} else if (Section.num === "D8") { // 亡霊
enemy_party.id_num = 34;
enemy_party.num = dice.die1pip;
}
enemy_party.name = enemy_data[enemy_party.id_num].name;
if (Section.num === "78") { // 魔女は1人ずつ襲いかかってくる
enemy[Section.subnum].id_num = enemy_party.id_num;
enemy[Section.subnum].name = enemy_data[enemy_party.id_num].name;
enemy[Section.subnum].max_LIFE_POINT = enemy_data[enemy_party.id_num].max_LIFE_POINT;
enemy[Section.subnum].LIFE_POINT = enemy_data[enemy_party.id_num].LIFE_POINT;
enemy[Section.subnum].attack_base = enemy_data[enemy_party.id_num].attack_base;
enemy[Section.subnum].extra_damage = enemy_data[enemy_party.id_num].extra_damage;
enemy[Section.subnum].defence = enemy_data[enemy_party.id_num].defence;
enemy[Section.subnum].attack_way = enemy_data[enemy_party.id_num].attack_way;
enemy[Section.subnum].Bribery_amount = enemy_data[enemy_party.id_num].Bribery_amount;
} else if (enemy_party.num === 1) {
enemy[0].id_num = enemy_party.id_num;
enemy[0].name = enemy_data[enemy_party.id_num].name;
enemy[0].max_LIFE_POINT = enemy_data[enemy_party.id_num].max_LIFE_POINT;
enemy[0].LIFE_POINT = enemy_data[enemy_party.id_num].LIFE_POINT;
enemy[0].attack_base = enemy_data[enemy_party.id_num].attack_base;
enemy[0].extra_damage = enemy_data[enemy_party.id_num].extra_damage;
enemy[0].defence = enemy_data[enemy_party.id_num].defence;
enemy[0].attack_way = enemy_data[enemy_party.id_num].attack_way;
enemy[0].Bribery_amount = enemy_data[enemy_party.id_num].Bribery_amount;
} else { // enemy_party.num > 1
for (i = 0; i < enemy_party.num; i++) {
enemy[i].id_num = enemy_party.id_num;
enemy[i].name = enemy_data[enemy_party.id_num].name + (i + 1);
enemy[i].max_LIFE_POINT = enemy_data[enemy_party.id_num].max_LIFE_POINT;
enemy[i].LIFE_POINT = enemy_data[enemy_party.id_num].LIFE_POINT;
enemy[i].attack_base = enemy_data[enemy_party.id_num].attack_base;
enemy[i].extra_damage = enemy_data[enemy_party.id_num].extra_damage;
enemy[i].defence = enemy_data[enemy_party.id_num].defence;
enemy[i].attack_way = enemy_data[enemy_party.id_num].attack_way;
enemy[i].Bribery_amount = enemy_data[enemy_party.id_num].Bribery_amount;
}
}
if (Section.num === "78" && Section.subnum === 2) { // 魔女スクロッグ
enemy[Section.subnum].Dragonfire_pill = 6
}
if (Section.num === "20") {
enemy[0].wolf_double_attack = 0;
}
if (Pip.Seeker_Needle_enemy_name === enemy_party.name) {
if (Section.num === "78") {
enemy[Section.subnum].LIFE_POINT = Math.floor(enemy[Section.subnum].LIFE_POINT/2);
add_msg("投げ針で" + enemy[Section.subnum].name + "の生命点は半減している。");
} else {
enemy[0].LIFE_POINT = Math.floor(enemy[0].LIFE_POINT/2);
add_msg("投げ針で" + enemy[0].name + "の生命点は半減している。");
}
}
update_status();
add_msg("戦闘を開始するには「戦闘開始」をクリックせよ。「友好反応」「ワイロ」「逃亡」などはそのボタンをクリックせよ。");
}