/// <summary> /// 実際に攻撃を行い、ゲームを進める /// </summary> /// <param name="on_first">1マス先を取るのに使用</param> void Attack_Process(int adjust_value1, int adjust_value2) { var enemy_manager = new Enemy_Manager(); // 隣接してるエネミーを調べる GameObject side_enemy = enemy_manager.Find_Enemy(player_script.position.x + adjust_value1, player_script.position.y + adjust_value2); // 隣接してるエネミーのステータスを取ってくる var enemy_status = side_enemy.GetComponent <Enemy_Controller>().enemy_status; enemy_status.hit_point -= damage_calculation.Damage(player_status.attack, enemy_status.defence); // ダメージのログを流す Log_Scroll.Player_Attack_Log(player_status, side_enemy, damage_calculation.Damage(player_status.attack, enemy_status.defence)); // 攻撃した敵が死んでいたら経験値を取得 if (enemy_status.hit_point <= 0) { // レベルアップより先に経験値を取得 Log_Scroll.Get_Experience_Point(player_status, side_enemy, enemy_status.experience_point); // 実際に経験値を取得し、次レベルに必要な経験値量に達しているかを見る player_status.Add_Experience_Point(enemy_status.experience_point); // ダンジョンに出現中の敵のリストを取得 List <GameObject> enemy_list = Enemy_Manager.Instance.enemies; // プレイヤーに隣接しているものを抽出 enemy_manager.Dead_Enemy(enemy_list.IndexOf(side_enemy)); } // 移動状態に戻す player_action.Set_Action(ePlayer_State.Move); }
/// <summary> /// Playerのターン経過の処理(自動回復、はらへり) プレイヤーの行動が終了したときに呼ばれる /// </summary> public void Add_Turn() { ++turn_count; var game_manager = GameManager.Instance; //TODO:ひとまず if (hit_point.Value < max_hit_point.Value && hunger_point.Value > 0) { ++hit_point.Value; } // 空腹であればHPを1減らす if (hunger_point.Value <= 0) { --hit_point.Value; } // 3ターンに1度空腹ポイントを1減らす else if (0 == turn_count % 3) { --hunger_point.Value; // 一定量を下回ったらログで空腹を知らせる if (hunger_point.Value == 50) { Log_Scroll.Generic_Log("おなかがへってきた"); } if (hunger_point.Value == 20) { Log_Scroll.Generic_Log("おなかがへりすぎて目が回ってきた"); } // 2になったらログで知らせる if (hunger_point.Value == 2) { Log_Scroll.Generic_Log("ダメだ、もうたおれそうだ!"); } // 1になったらログで知らせる if (hunger_point.Value == 1) { Log_Scroll.Generic_Log("なにかたべないと!"); } } if (Enemy_Manager.Instance.enemies.Count > 0) { game_manager.Set_Game_State(eGame_State.Enemy_Trun); } else if (Dungeon_Manager.Instance.Is_Exist) { game_manager.Set_Game_State(eGame_State.Dungeon_Turn); } //TODO:ほんとはパートナーの番に else { //TODO:パートナーターン } }