###################### 敵の撃破数を個別にカウントする ###################### # # # それぞれの敵を何体倒したかをカウントします。 # # 敵を撃破した時点で撃破数を増加させるため、 # # 敵を倒したあと逃げた場合も、それまでに倒した数はカウントされます。 # # また、敵が復活した場合は撃破しなかったことになります。 # # # # また、敵の撃破数をゲーム内で使われる変数に代入したい場合は # # スクリプトで「get_defeat_count(変数ID, 敵ID)」で代入することができます。 # # 例えば「get_defeat_count(2, 1)」とすれば、 # # 変数の2番にIDが1(デフォルトではゴースト)の敵の撃破数が代入されます。 # # # # ※スクリプトでの開発用の撃破数取得 # # 「$game_party.get_defeat_count(enemy_id)」を呼び出せば値を取得できます。 # # # ############################################################################ #============================================================================== # ■ Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- alias enemy_defeat_count_initialize initialize def initialize # 呼び戻し enemy_defeat_count_initialize @defeat_count = {} end #-------------------------------------------------------------------------- # ◎ 追加:撃破数の増加 # enemy_id : アイテム ID #-------------------------------------------------------------------------- def defeat_enemy(enemy_id) # ハッシュの個数データを更新 if enemy_id > 0 @defeat_count[enemy_id] = get_defeat_count(enemy_id) + 1 end end #-------------------------------------------------------------------------- # ◎ 追加:撃破数の減少 # enemy_id : アイテム ID #-------------------------------------------------------------------------- def rebirth_enemy(enemy_id) # ハッシュの個数データを更新 if enemy_id > 0 @defeat_count[enemy_id] = get_defeat_count(enemy_id) - 1 end end #-------------------------------------------------------------------------- # ◎ 追加:撃破数の取得 # enemy_id : アイテム ID #-------------------------------------------------------------------------- def get_defeat_count(enemy_id) # ハッシュに個数データがあればその数値を、なければ 0 を返す return @defeat_count.include?(enemy_id) ? @defeat_count[enemy_id] : 0 end #-------------------------------------------------------------------------- # ◎ 追加:全撃破数の取得 #-------------------------------------------------------------------------- def get_total_defeat_count total = 0 # $data_enemies(敵のデータベース)の数だけ回す for i in 1...$data_enemies.sizze # total に そのIDの撃破数を加算 total += get_defeat_count(i) end return total end end #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ○ オブジェクト初期化 # troop_id : トループ ID # member_index : トループメンバーのインデックス #-------------------------------------------------------------------------- alias enemy_defeat_count_initialize initialize def initialize(troop_id, member_index) # 呼び戻し enemy_defeat_count_initialize(troop_id, member_index) @dead_flag = false end #-------------------------------------------------------------------------- # ◎ 追加:ステートの付加 # state_id : ステート ID # force : 強制付加フラグ (オートステートの処理で使用) #-------------------------------------------------------------------------- def add_state(state_id, force = false) super(state_id, force) # hpが0でまだ 撃破されていなかった場合 if @hp == 0 and @dead_flag == false # 撃破数増加 $game_party.defeat_enemy(self.id) # 撃破フラグをセット @dead_flag = true end end #-------------------------------------------------------------------------- # ◎ 追加:ステートの解除 # state_id : ステート ID # force : 強制解除フラグ (オートステートの処理で使用) #-------------------------------------------------------------------------- def remove_state(state_id, force = false) super(state_id, force) # hpが1以上で 撃破フラグがセットされている場合 if @hp > 0 and @dead_flag # 撃破数増加 $game_party.rebirth_enemy(self.id) # 撃破フラグをセット @dead_flag = false end end end #============================================================================== # ■ Interpreter #============================================================================== class Interpreter #-------------------------------------------------------------------------- # ◎ 追加:撃破数のを変数に代入 # variable_id : 変数 ID # enemy_id : アイテム ID #-------------------------------------------------------------------------- def get_defeat_count(variable_id, enemy_id) # 変数への代入を実行 $game_variables[variable_id] = $game_party.get_defeat_count(enemy_id) return true end end