※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

所持品のボタンをクリックしたときの処理。まず、ボタンは上から click_event(0)、click_event(1)、click_event(2)、click_event(3)、click_event(4)、click_event(5)、click_event(6)、 と並んでいるが、この数字はデータベースのid番号ではない。 クリックされたボタンはどの所持品のid番号に当たるかはPip_event[i].id_numなので、これでswitch分岐を入れる。 サイコロを振る必要のないものは、このswitch分岐内に処理を全部書ききってしまう。

// 戦利品のボタンをクリック
function click_event(i) {
   var j,k;
   switch (Pip_event[i].id_num) {
       case 0: // do nothing
           break;
       case 1: // E・J

           if (combat.onCombat === false) {
               add_msg("まだ戦闘開始になっていない。");
           } else if (EJ.refuse > 0) {
               add_msg("E・Jは即死剣に嫉妬して参戦を拒否している。");
           } else {
               add_msg("ピップはE・Jで敵に斬りかかった。");
               Pip.attack_base = 3;
               Pip.extra_damage = 5;
               Pip.attack_way = "E・J";
               dice.start(2,"combat.Pip_strike()");
           }
           break;
       case 2: // 首に刺さったボルト
           add_msg("首に刺さったボルトが電気を帯びた。");
           Pip.bolt_charge = true;
           data_event[2].label = "帯電中";
           updata_state();
           break;
       case 3: // 眠り玉
           // add_msg("眠り玉をクリックした。"); // デバッグ表示用
           if (combat.onCombat === false) {
               add_msg("眠り玉は戦闘中に使うものだ。");
           } else if (Pip_event[i].num <= 0) {
               add_msg("眠り玉はもう残っていない");
           } else {
               add_msg("眠り玉を割ると催眠ガスが出てきた。");
               lose_event("眠り玉", 1);
               k = 12;
               while (k > 0) {
                   for (j = 0; j < enemy.length; j++) {
                       if (enemy[j].LIFE_POINT > 0 && k > 0) {
                           enemy[j].sleep_globe += 1;
                           k--;
                       }
                   }
               }
               for (j = 0; j < enemy.length; j++) {
                   if (enemy[j].sleep_globe > 0) {
                       add_msg(enemy[j].name + "は" + enemy[j].sleep_globe + "回の攻撃分眠るだろう。")
                   }
               }
               combat.Pip2enemy_turn();
           }
           break;
       case 4: // ノコギリ草
           add_msg("ノコギリ草をむしゃむしゃ食べた。");
           Pip.scorpion_poison = false;
           break;
       case 5: // 羊皮紙
           add_msg("巨人が踊っているような絵だ。");
           break;
       case 6: // 金貨
           add_msg("金貨をクリックした。");
           break;
       case 7: // 治療薬
           if (Pip_event[i].num <= 0) {
               add_msg("治療薬はもう残っていない。");
           } else {
               add_msg("治療薬を飲む。サイコロを2個振れ。");
               dice.start(2, "use_Healing_Potion()");
           }
           break;
       case 8: // 通行許可硬貨
           add_msg("使うべきところで使おう。");
           break;
       case 9: // サクラの花
           add_msg("サクラの花をクリックした。");
           break;
       case 10: //楕円のメダル
           add_msg("楕円のメダルをクリックした。");
           break;
       case 11: //警告球
           add_msg("警告球をクリックした。");
           break;
       case 12: //ハチミツ
           if (Pip_event[i].num <= 0) {
               add_msg("ハチミツはもう残っていない。");
           } else {
               add_msg("ハチミツを飲む。サイコロを2個振れ。");
               dice.start(2, "use_honey()");
           }
           break;
       case 13: //稲妻の矢
           if (combat.onCombat === false) {
               add_msg("稲妻の矢は戦闘中に使え。");
           } else if (Pip_event[i].num <= 0) {
               add_msg("稲妻の矢はもう残っていない。");
           } else {
               add_msg("稲妻の矢を放つ。サイコロを2個振れ。");
               dice.start(2, "combat.Pip_Thunderbolt()");
           }
         break;
       case 14: //魔法のラッパ
           if (combat.onCombat === false) {
               add_msg("魔法のラッパは戦闘中に使え。");
           } else if (Pip_event[i].num <= 0) {
               add_msg("魔法のラッパはもう残っていない。");
           } else {
               add_msg("魔法のラッパを放つ。サイコロを2個振れ。");
               dice.start(2, "combat.Pip_Kangling()");
           }
           break;
       case 15: //ドラゴン・ファイア錠
           if (combat.onCombat === false) {
               add_msg("ドラゴン・ファイア錠は戦闘中に使え。");
           } else if (Pip_event[i].num <= 0) {
               add_msg("ドラゴン・ファイア錠はもう残っていない。");
           } else {
               add_msg("ピップはドラゴン・ファイア錠を飲んで火を噴いた!");
               j = combat.find_Pip2enemy_target();
               enemy[j].LIFE_POINT -= 35;
               add_msg(enemy[j].name + "は35点の被害点を被った。");
               combat.Pip2enemy_turn();
           }
           break;
       case 16: //ブロンの歯
           add_msg("ブロンの歯をクリックした。");
           break;
       case 17: //ルビー
           add_msg("ルビーをクリックした。");
           break;
       case 18: //象牙の杖
           add_msg("象牙の杖をクリックした。");
           break;
       case 19: //音楽堂のチケット
           add_msg("音楽堂のチケットをクリックした。");
           break;
       case 20: //博物館のチケット
           add_msg("博物館のチケットをクリックした。");
           break;
       case 21: //八角形の銅貨
           add_msg("八角形の銅貨をクリックした。");
           break;
       case 22: //八角形の合金の硬貨
           add_msg("八角形の合金の硬貨をクリックした。");
           break;
       case 23: //エクスカリバー
           add_msg("ピップはエクスカリバーで敵に斬りかかった。");
           if (combat.onCombat === false) {
               add_msg("まだ戦闘開始になっていない。");
           } else {
               Pip.attack_base = 3;
               Pip.extra_damage = 10;
               Pip.attack_way = "エクスカリバー";
               dice.start(2,"combat.Pip_strike()");
           }
           break;
   }
}
// マーリンの隠れ家2の装備品のボタンをクリック
function click_equip(i) {
   switch (Pip_equip[i].id_num) {
       case 0: // do nothing
           break;
       case 1: // 斧
           add_msg("斧をクリックした。");
           break;
       case 2: // 包帯
           add_msg("包帯をクリックした。");
           break;
       case 3: // 長靴
           add_msg("長靴をクリックした。");
           break;
       case 4: // つけ髭
           if (Pip_equip[i].num <= 0) {
               add_msg("つけ髭を持っていない。");
           } else if (data_equip[4].label === "つける") {
               add_msg("つけ髭をつけた。");
               data_equip[4].label = "はずす";
           } else {
               add_msg("つけ髭をはずした。");
               data_equip[4].label = "つける";
           }
           update_status();
           break;
       case 5: // ハンマー
           add_msg("ハンマーをクリックした。");
           break;
       case 6: // ハープ
           add_msg("ハープをクリックした。");
           break;
       case 7: // ランタン
           add_msg("ランタンをクリックした。");
           break;
       case 8: // ギター
           add_msg("ギターをクリックした。");
           break;
       case 9: // 木槌
           add_msg("木槌をクリックした。");
           break;
       case 10: //大釘
           add_msg("大釘をクリックした。");
           break;
       case 11: //三つの小笛
           add_msg("三つの小笛をクリックした。");
           break;
       case 12: //軟膏
           if (Pip_equip[i].num <= 0) {
               add_msg("軟膏はもう残っていない。");
           } else {
               add_msg("軟膏を塗りこんだ。生命点が3点回復した。");
               lose_equip("軟膏", 1);
               Pip.LIFE_POINT = Math.min(Pip.LIFE_POINT + 3, Pip.max_LIFE_POINT);
               update_status();
           }
           break;
       case 13: //カボチャ
           add_msg("カボチャをクリックした。");
           break;
       case 14: //水晶板
           add_msg("水晶板をクリックした。");
           break;
       case 15: //羽根ペン
           add_msg("羽根ペンをクリックした。");
           break;
       case 16: //食料
           add_msg("食料をクリックした。");
           break;
       case 17: //ロープ
           add_msg("ロープをクリックした。");
           break;
       case 18: //袋詰めの穀物
           add_msg("袋詰めの穀物をクリックした。");
           break;
       case 19: //サンダル
           add_msg("サンダルをクリックした。");
           break;
       case 20: //ノコギリ
           add_msg("ノコギリをクリックした。");
           break;
       case 21: //羊皮の胴着
           add_msg("羊皮の胴着をクリックした。");
           break;
       case 22: //ほくち箱
           add_msg("ほくち箱をクリックした。");
           break;
       case 23: //水袋
           add_msg("水袋をクリックした。");
           break;
       case 24: //バネつき靴
           add_msg("バネつき靴をクリックした。");
           break;
   }
}
  // マーリンの隠れ家3の魔法の品のボタンをクリック
function click_magic(i) {
   var j,k;
   var decode1, decode2;
   switch (Pip_magic[i].id_num) {
       case 0: // do nothing
           break;
       case 1: // 魔法の削り骨
           if (combat.onCombat === false) {
               add_msg("魔法の削り骨は戦闘中に使え。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("魔法の削り骨はもう残っていない。");
           } else {
               add_msg("ピップは魔法の削り骨を削った。");
               j = combat.find_Pip2enemy_target();
               lose_magic("魔法の削り骨", 1);
               Pip.LIFE_POINT -= 5;
               enemy[j].LIFE_POINT = 0;
               add_msg("生命点5点を費やして" + enemy[j].name + "を即死させた!");
               combat.Pip2enemy_turn();
           }
           break;
       case 2: // 首に刺さったボルト
           add_msg("首に刺さったボルトが電気を帯びた。");
           Pip.bolt_charge = true;
           data_magic[2].label = "帯電中";
           break;
       case 3: // スピードアップ靴
               if (Pip_magic[i].num <= 0) {
                   add_msg("もうスピードアップ靴は残っていない。");
               } else if (Pip.Boots_of_Speed > 0) {
                   add_msg("もうスピードアップ靴を履いている!");
               } else {
                   Pip.Boots_of_Speed = 1;
                   lose_magic("スピードアップ靴", 1);
                   add_msg("戦闘中に2回連続行動できるようになった。");
                   data_magic[Pip_magic[i].id_num].label = "発動中";
               }
           break;
       case 4: // 悪魔を呼ぶ死の鐘
           if (Pip_magic[i].num <= 0) {
               add_msg("悪魔を呼ぶ死の鐘はもう残っていない。");
           } else {
               add_msg("悪魔を呼ぶ死の鐘を放つ。サイコロを1個振れ。");
               dice.start(1, "sumonFred()");
           }
           break;
       case 5: // エジプトの死仮面
           if (combat.onCombat === false) {
               add_msg("エジプトの死仮面は戦闘中に使え。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("エジプトの死仮面はもう残っていない。");
           } else {
               add_msg("ピップはエジプトの死仮面を顔につけて、闘いを避けた。");
               lose_magic("エジプトの死仮面", 1);
               Pip.LIFE_POINT--;
               combat.reset();
           }
           break;
       case 6: // 太陽神の目
           if (combat.onCombat === false) {
               add_msg("太陽神の目は戦闘中に使え。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("太陽神の目はもう残っていない。");
           } else {
               add_msg("ピップは生命点を10点を費やして、太陽神の目を使った!");
               lose_magic("太陽神の目", 1);
               Pip.LIFE_POINT -= 10;
               for (j = 0; j < enemy.length ; j++){
                   if (enemy[j].LIFE_POINT > 0){
                       enemy.Eye_of_Horus = 6;
                       add_msg(enemy[j].name + "は催眠状態になった。");
                   }
               }
               combat.Pip2enemy_turn();
           }
           break;
       case 7: // 笑い球
           if (combat.onCombat === false) {
               add_msg("笑い球は戦闘中に使うものだ。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("笑い球はもう残っていない");
           } else {
               add_msg("笑い球を投げつけると粉々になり、ガスが発生した。");
               lose_event("笑い球", 1);
               k = 3;
               for (j = 0; j < enemy.length; j++) {
                   if (enemy[j].LIFE_POINT >= 5 && k > 0) {
                       enemy[j].Laughing_Globe = 3;
                       k--;
                       add_msg(enemy[j].name + "を笑い狂わせた!")
                   }
               }
               combat.Pip2enemy_turn();
           }
           break;
       case 8: // 稲妻の杖
           if (combat.onCombat === false) {
               add_msg("稲妻の杖は戦闘中に使うものだ。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("稲妻の杖はもう残っていない。");
           } else {
               add_msg("稲妻の杖を放った。サイコロを2個振れ。");
               dice.start(2, "combat.Pip_LightningWand();");
           }
           break;
       case 9: // 幸運の金貨
           if (Pip_magic[i].num <= 0) {
               add_msg("もう幸運の金貨は残っていない。");
           } else if (Pip.Boots_of_Speed > 0) {
               add_msg("もう幸運の金貨を使っている!");
           } else {
               Pip.Lucky_Coin = 3;
               add_msg("戦闘中に3回攻撃だけ被害点を2追加される。");
               data_magic[Pip_magic[i].id_num].label = "発動中";
               lose_magic("幸運の金貨", 1);
           }
           break;
       case 10: // 火の玉
           if (combat.onCombat === false) {
               add_msg("火の玉は戦闘中に使うものだ。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("火の玉はもう残っていない。");
           } else {
               add_msg("火の玉を放った。サイコロを2個振れ。");
               dice.start(2, "combat.Pip_Fireball()");
           }
           break;
       case 11: // 友好の仮面
           if (combat.onCombat === true) {
               add_msg("友好の仮面は敵に会ってからは無効だ。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("友好の仮面はもう残っていない。");
           } else if (Pip.Mask_of_Friendship_nextSection === true){
               add_msg("既に友好の仮面は次セクションに有効だ。");
           } else {
               Pip.Mask_of_Friendship_nextSection = true;
               add_msg("友好の仮面をつけた。次セクションで有効になる。");
               data_magic[Pip_magic[i].id_num].label = "次発動";
               lose_magic("友好の仮面", 1);
           }
           break;
       case 12: //破壊球
           if (combat.onCombat === false) {
               add_msg("破壊球は戦闘中に使うものだ。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("破壊球は(幸運にも)もう残っていない。");
           } else {
               add_msg("破壊球を使った。サイコロを1個振れ。");
               dice.start(1, "combat.Pip_Orb_of_Incredible_Destruction()");
           }
           break;
       case 13: //脳波兜
           if (combat.onCombat === false) {
               add_msg("脳波兜は戦闘中に使え。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("脳波兜はもう残っていない。");
           } else {
               add_msg("ピップは脳波兜をかぶった。");
               lose_magic("脳波兜", 1);
               for (j = 0; j < enemy.length ; j++){
                   if (enemy[j].LIFE_POINT > 0){
                       enemy[j].Psionic_Helm_Stop = 7;
                       enemy[j].Psionic_Helm_Half = true;
                       add_msg(enemy[j].name + "は強力な頭脳エネルギーにより衰弱した。");
                   }
               }
               combat.Pip2enemy_turn();
           }
           break;
       case 14: //虹の泡のパイプ
           add_msg("虹の泡のパイプをクリックした。");
           break;
       case 15: //復活の杖
           if (combat.onCombat === true) {
               add_msg("復活の杖は闘いの前に使え。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("復活の杖はもう残っていない。");
           } else if (Pip.Resurrection_Wand === true){
               add_msg("復活の杖で14行きを避けた! ピップの生命点が完全回復した!");
               Pip.Resurrection_Wand = false;
               Pip.LIFE_POINT = Pip.max_LIFE_POINT;
               data_magic[15].label = "使う";
           } else {
               add_msg("復活の杖を使ってみる。サイコロを2個振れ。");
               dice.start(2, "use_Resurrection_Wand()");
           }
           break;
       case 16: //泡渦巻き
           if (Pip_magic[i].num <= 0) {
               add_msg("もう泡渦巻きは残っていない。");
           } else if (Pip.impermeable_bubble > 0) {
               add_msg("まだ泡渦巻きの効果は残っている。");
           } else {
               Pip.impermeable_bubble = 2;
               add_msg("2回だけ敵からの被害点をはねとばせる。");
               data_magic[Pip_magic[i].id_num].label = "発動中";
               lose_magic("泡渦巻き", 1);
           }
           break;
       case 17: //投げ針
           if (Pip_magic[i].num <= 0) {
               add_msg("もう投げ針は残っていない。");
           } else {

               decode1 = prompt("敵の名前は?","");
               decode2 = prompt("敵のいるセクション番号は?","");
               for (j = 0; j < enemy_data.length; j++) {
                   if (decode1 === enemy_data[j].name) {
                       if (decode2 === enemy_data[j].Section) {
                           if (combat.onCombat === true) {
                               if (decode2 === "Fred") {
                                   enemy[enemy.length].LIFE_POINT = Math.max(enemy[enemy.length].LIFE_POINT / 2);
                                   add_msg("フレッドの生命点を半減させた。");
                               } else {
                                   enemy[enemy_party.num-1].LIFE_POINT = Math.max(enemy[enemy_party.num-1].LIFE_POINT / 2);
                                   add_msg(enemy[enemy_party.num-1].name + "の生命点を半減させた。");
                               }
                               update_status();
                           } else { // 移動中
                               Pip.Seeker_Needle_enemy_name = decode1;
                               add_msg(Pip.Seeker_Needle_enemy_name + "の生命点を半減させた。");
                           }
                       } //decode2一致
                   } // decode1一致
               } // enemy_dataを検索
           }
           break;
       case 18: //眠り玉
           // add_msg("眠り玉をクリックした。"); // デバッグ表示用
           if (combat.onCombat === false) {
               add_msg("眠り玉は戦闘中に使うものだ。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("眠り玉はもう残っていない");
           } else {
               add_msg("眠り玉を投げつけると粉々になって、もくもくとガスが発生した。");
               lose_magic("眠り玉", 1);
               k = 3;
               while (k > 0) {
                   for (j = 0; j < enemy.length; j++) {
                       if (enemy[j].LIFE_POINT > 0 && k > 0) {
                           enemy[j].sleep_globe += 1;
                           k--;
                       }
                   }
               }
               for (j = 0; j < enemy.length; j++) {
                   if (enemy[j].sleep_globe > 0) {
                       add_msg(enemy[j].name + "は" + enemy[j].sleep_globe + "回の攻撃分眠るだろう。")
                   }
               }
               combat.Pip2enemy_turn();
           }
           break;
       case 19: //友好オイル
           if (combat.onCombat === true) {
               add_msg("友好オイルは戦闘がはじまってからは使えない。");
           } else if (Pip_magic[i].num <= 0) {
               add_msg("友好オイルはもう残っていない。");
           } else if (enemy[i].max_LIFE_POINT > 0) {
               add_msg("友好オイルを身体に塗りつけて、闘いを避けた。");
               lose_magic("友好オイル", 1);
               combat.reset();
           } else {
               add_msg("友好オイルを身体に塗りつけた。次の友好反応で効果を発揮する。");
               Pip.Smarm_Oil = true;
               data_magic[19].label = "発動中";
               lose_magic("友好オイル", 1);
           }
           break;
       case 20: //即死剣
           if (combat.onCombat === false) {
               add_msg("即死剣は戦闘中に使え。");
           } else {
               Pip.attack_base = 6;
               Pip.extra_damage = 0;
               Pip.attack_way = "即死剣";
               EJ.refuse = 3;
               dice.start(2, "combat.Pip_strike()");
           }
           break;
   }
}

使用にサイコロを振る必要がものがあるものは、続きの関数を用意する。 いまから思えば、Section.ctrl()関数のように区切ってswitch関数の中に放り込んで処理した方が良かったかな。

// 稲妻の矢のサイコロ後
combat.Pip_Thunderbolt = function () {
    add_msg("ピップは稲妻の矢を放った!");
    lose_event("稲妻の矢", 1);
    if (dice.dice12pip >= 6) {
    var i = combat.find_Pip2enemy_target();
    enemy[i].LIFE_POINT = Math.floor(enemy[i].LIFE_POINT/ 2);
        add_msg("命中! " + enemy[i].name + "の生命点を半減させた。");
    } else {
        add_msg("稲妻の矢は外れてしまった。");
    }
    combat.Pip2enemy_turn();
}
// 魔法のラッパのサイコロ後
combat.Pip_Kangling = function () {
    add_msg("ピップは魔法のラッパを試みた!");
    lose_event("魔法のラッパ", 1);
    if (dice.dice12pip >= 6) {
        var i = combat.find_Pip2enemy_target();
        enemy[i].gelatin = true;
        add_msg("魔法のラッパを吹き鳴らした。" + enemy[i].name + "の生命点を10点ずつうばっていく。");
    } else {
        add_msg("魔法のラッパをうまく鳴らせなかった。");
    }
    combat.Pip2enemy_turn();
}
 // 稲妻の杖のサイコロ後
combat.Pip_LightningWand = function () {
    add_msg("ピップは稲妻の杖を放った!");
    lose_magic("稲妻の杖", 1);
    var i = combat.find_Pip2enemy_target();
    enemy[i].LIFE_POINT -= dice.dice12pip * 2;
    add_msg("必中! " + enemy[i].name + "に" + (dice.dice12pip * 2) + "の被害点を与えた。");
    combat.Pip2enemy_turn();
}
 // 火の玉のサイコロ後
combat.Pip_Fireball = function () {
    add_msg("ピップは火の玉を放った!");
    lose_magic("火の玉", 1);
    if (dice.dice12pip >= 6) {
        var i = combat.find_Pip2enemy_target();
        enemy[i].LIFE_POINT -= 75;
        add_msg("命中! " + enemy[i].name + "に75点の被害点を与えた。");
    } else {
        add_msg("火の玉は外れてしまった。。。");
    }
    combat.Pip2enemy_turn();
}
 // 破壊球のサイコロ後
combat.Pip_Orb_of_Incredible_Destruction = function () {
    add_msg("ピップは破壊球を使った!");
    lose_magic("破壊球", 1);
    if (dice.die1pip >= 4) {
        var i;
        for(i = 0; i < enemy.length; i++) {
            enemy[i].LIFE_POINT = 0;
        }
        add_msg("敵は皆殺しになった!");
    } else {
        add_msg("きみは即死してしまった。");
    }
    combat.Pip2enemy_turn();
}
 // 治療薬のサイコロ後
function use_Healing_Potion() {
    add_msg("ピップは治療薬を使った。");
    lose_event("治療薬", 1);

    Pip.LIFE_POINT = Math.min(Pip.LIFE_POINT + dice.dice12pip, Pip.max_LIFE_POINT);

    add_msg("ピップの生命点が" + dice.dice12pip + "点回復した。");
    update_status();

    if (combat.onCombat === true) {
        combat.Pip2enemy_turn();
    }
}
 // ハチミツのサイコロ後
function use_honey() {
    add_msg("ピップはハチミツを食べた。");
    lose_event("ハチミツ", 1);

    Pip.LIFE_POINT = Math.min(Pip.LIFE_POINT + (dice.dice12pip * 2), Pip.max_LIFE_POINT);

    add_msg("ピップの生命点が" + (dice.dice12pip * 2) + "点回復した。");
    update_status();

    if (combat.onCombat === true) {
        combat.Pip2enemy_turn();
    }
}
 // 悪魔を呼ぶ死の鐘のサイコロ後
function sumonFred () {
    if (combat.onCombat === true) {
        add_msg("ピップは悪魔を呼ぶ死の鐘を鳴らした。");
        lose_event("悪魔を呼ぶ死の鐘", 1);
        if (dice.die1pip >= 3) {
            add_msg("フレッドがきみに加勢した!");
            Fred.sumon = true;
            Fred.done = false;
            window.setTimeout("Section.ctrl()", 0);
        } else {
            add_msg("フレッドが敵に加勢してしまった!");
            enemy[enemy.length-1].id_num = enemy_data[32].name;
            enemy[enemy.length-1].name = enemy_data[32].name;
            enemy[enemy.length-1].max_LIFE_POINT = enemy_data[32].max_LIFE_POINT;
            enemy[enemy.length-1].LIFE_POINT = enemy_data[32].LIFE_POINT;
            enemy[enemy.length-1].attack_base = enemy_data[32].attack_base;
            enemy[enemy.length-1].extra_damage = enemy_data[32].extra_damage;
            enemy[enemy.length-1].defence = enemy_data[32].defence;
            enemy[enemy.length-1].attack_way = enemy_data[32].attack_way;
            enemy[enemy.length-1].Bribery_amount = enemy_data[32].Bribery_amount;
            if (Pip.Seeker_Needle_enemy_name === "Fred") {
                enemy[enemy.length-1].LIFE_POINT = Math.floor(enemy[enemy.length-1].LIFE_POINT /2);
                add_msg("投げ針でフレッドの生命点は半減している。");
            }
            combat.Pip2enemy_turn();
        }
    } else {
        if (dice.die1pip >= 3) {
            Fred.sumon = true;
            add_msg("フレッドが味方になった。次1回の戦いに限り、被害点をすべて受けて闘ってくれる。");
        } else {
            add_msg("フレッドがきみを攻撃してきた!");
            Section.num = "Fred";
            combat.encounter();
        }
    }
}
 // 復活の杖のサイコロ後
function use_Resurrection_Wand() {
    add_msg("ピップは生命点を15点放出して、復活の杖を使った。");
    lose_magic("復活の杖", 1);
    Pip.LIFE_POINT -= 15;
    if (dice.dice12pip >= 9) {
        Pip.Resurrection_Wand = true;
        data_magic[15].label = "発動中";
        add_msg("成功! もう14も怖くない。");
    } else {
        add_msg("失敗した。");
    }
    update_status();
}

素手、E・J、エクスカリバー、即死剣はcombat.Pip_strike()関数でまとめて処理する。

// ピップの打撃攻撃
combat.Pip_strike = function () {
    //add_msg("pip_strikeに入った。");
    var i = combat.find_Pip2enemy_target();

    if (Section.num === "82") { // 見えない敵
        Pip.attack_base = Math.max(Pip.attack_base, 5);
    } else if (Section.num === "171") { // ワニガエル獣
        Pip.attack_base = Math.max(Pip.attack_base, 5);
    }

    var attack_point = Math.max(dice.dice12pip - Pip.attack_base, 0) + Pip.extra_damage;
    var damage_point = attack_point - enemy[i].defence;

    add_msg("ピップは" + Pip.attack_way + "で" + enemy[i].name + "を攻撃。");

    if (Pip.bone_pain === true) {
        add_msg("夢時間で自分の骨をバラバラにしたので、敵に与えるダメージが半減している。");
        damage_point = Math.floor(damage_point / 2);
    }

    if (Pip.yoga > 0) {
        add_msg("ヨガで関節が痛み、敵に与える被害点が2点マイナスされる。");
        damage_point -= 2;
    }

    if (Pip.Lucky_Coin > 0) {
        add_msg("幸運の金貨で、敵に与える被害点が2点プラスされる。");
        damage_point += 2;
    }

    if (Pip.attack_way === "即死剣" && dice.dice12pip >= 11) {
        add_msg("即死剣で" + enemy[i].name + "は即死した!");
        enemy[i].LIFE_POINT = 0;
        update_status();
    } else if (dice.dice12pip - Pip.attack_base <= 0) {
        add_msg("空振り!");
    } else if (damage_point <= 0) {
        add_msg("ミス! " + enemy[i].name + "に攻撃が通らない。");
    } else {
        if (EJ.pudding > 0) {
            add_msg("E・Jがプリンになっているので与える被害点は2点になってしまう。");
            damage_point = 2;
        }

        if (Pip.Lucky_Coin > 0) {
            Pip.Lucky_Coin--;
            if (Pip.Lucky_Coin > 0) {
                add_msg("幸運の金貨の効果は残り" + Pip.Lucky_Coin + "回。");
            } else {
                add_msg("幸運の金貨の効果が切れた。");
                data_magic[9].label = "使う";
            }
        }

        enemy[i].LIFE_POINT -= damage_point;
        add_msg("ピップは" + enemy[i].name + "に" + damage_point + "点の被害点を与えた。");

        if (Section.num === "131") {
            combat.round++;
            add_msg("きみが一撃を与えてラウンド" + combat.round + "が終了した。");
        }
        if (Section.num === "146") {
            combat.round++;
            add_msg("きみが一撃を与えてラウンド" + combat.round + "が終了した。");
        }
        update_status();
    }
    combat.Pip2enemy_turn();
}