#==============================================================================
# ■ VXAce-RGSS3-6 撃破数カウンタ [Ver.1.0.0] by Claimh
#------------------------------------------------------------------------------
# 各アクターが倒したエネミーの数をカウントします。
#------------------------------------------------------------------------------
#・ウィンドウ上に表示させる
#Widow_Statusなどに追記してください。
#<記述>
# draw_defeat_count(actor_id, enemy_id, x, y)
# actor_id :対象アクターID(0を指定すると全アクター)
# enemy_id :対象エネミーID(0を指定すると全エネミー)
# x :横方向の表示位置
# y :縦方向の表示位置
#------------------------------------------------------------------------------
#・変数に入れる
#イベントのスクリプト上に記述してください。
#<記述>
# input_defeat_count(actor_id, enemy_id, variable_id)
# actor_id :対象アクターID(0を指定すると全アクター)
# enemy_id :対象エネミーID(0を指定すると全エネミー)
# variable_id :撃破数を入れる変数
#==============================================================================
module DefeatCounter ## 他スクリプトとの併用のために残す
#--------------------------------------------------------------------------
# ● 指定アクターの撃破数
# actor_id :対象アクターID(0を指定すると全アクター)
# enemy_id :対象エネミーID(0を指定すると全エネミー)
#--------------------------------------------------------------------------
def self.defeat_count(actor_id=0, enemy_id=0)
return $game_actors.defeat(enemy_id, actor_id)
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_defeat_count initialize
def initialize(actor_id)
initialize_defeat_count(actor_id)
[url=home.php?mod=space&uid=376319]@Defeat[/url] = {}
end
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat(enemy_id=0)
return defeat_all if enemy_id == 0
@defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
return @defeat[enemy_id]
end
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat_all
@defeat.keys.inject(0) { |n, id| n += @defeat[id] }
end
#--------------------------------------------------------------------------
# ● 撃破数カウント
#--------------------------------------------------------------------------
def defeat_cnt(enemy_id)
return if enemy_id == 0
@defeat[enemy_id] = 0 unless @defeat.keys.include?(enemy_id)
@defeat[enemy_id] += 1
end
end
class Game_Actors
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat(enemy_id=0, actor_id=0)
return defeat_all(enemy_id) if actor_id == 0
return self.[](actor_id).defeat(enemy_id)
end
#--------------------------------------------------------------------------
# ● 撃破数取得
#--------------------------------------------------------------------------
def defeat_all(enemy_id=0)
@data.inject(0) { |n, actor| n += (actor.nil? ? 0 : actor.defeat(enemy_id)) }
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● ダメージの処理
# 呼び出し前に @result.hp_damage @result.mp_damage @result.hp_drain
# @result.mp_drain が設定されていること。
#--------------------------------------------------------------------------
alias execute_damage_defeat execute_damage
def execute_damage(user)
execute_damage_defeat(user)
return if actor? or !dead? or user.enemy?
return if $game_troop.enable_dead_count?(self.index)
$game_troop.defeat_dead_count(self.index)
user.defeat_cnt(self.enemy_id)
end
end
#==============================================================================
# ■ Game_Troop
#==============================================================================
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias setup_defeat setup
def setup(troop_id)
setup_defeat(troop_id)
@enemy_defeat = []
end
#--------------------------------------------------------------------------
# ● 撃破時のカウント
#--------------------------------------------------------------------------
def defeat_dead_count(index)
@enemy_defeat[index] = true
end
#--------------------------------------------------------------------------
# ● 既にカウント済み?
#--------------------------------------------------------------------------
def enable_dead_count?(index)
@enemy_defeat[index] || false
end
end
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 指定した変数にアクターの撃破数を格納する
# actor_id :対象アクター(0を指定すると全アクター)
# enemy_id :対象エネミー(0を指定すると全エネミー)
# variable_id :撃破数を格納する変数
#--------------------------------------------------------------------------
def input_defeat_count(actor_id, enemy_id, variable_id)
$game_variables[variable_id] = $game_actors.defeat(enemy_id, actor_id)
return true
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 指定した変数にアクターの撃破数を表示する
# actor_id :対象アクター(0を指定すると全アクター)
# enemy_id :対象エネミー(0を指定すると全エネミー)
# x :横方向の表示位置
# y :縦方向の表示位置
#--------------------------------------------------------------------------
def draw_defeat_count(actor_id, enemy_id, x, y)
draw_text(x, y, 200, line_height, $game_actors.defeat(enemy_id, actor_id), 2)
end
end