【RGSS3】味方で一番HPが少ない対象を狙うスキル
【RGSS3】味方で一番HPが少ない対象を狙うスキル
敵のスキルでHPが一番少ない味方を対象にするようにしたいです。
Re: 【RGSS3】味方で一番HPが少ない対象を狙うスキル
アリッチ様こんにちは
スクリプトを作成してみました
スクリプト初心者なので至らぬところがあるかもしれませんが宜しければお使いください
なお現在HPの最小なのか最大HPと現在HPの割合が最小なのかわからなかったので両方実装してみました
スキルのメモ欄に@hp_min_targetと入力すると現在HPが最も少ない敵を自動で攻撃します
@hp_rate_min_targetと入力すると最大HPと現在HPの割合が最小の敵を攻撃します
スクリプトを作成してみました
スクリプト初心者なので至らぬところがあるかもしれませんが宜しければお使いください
なお現在HPの最小なのか最大HPと現在HPの割合が最小なのかわからなかったので両方実装してみました
スキルのメモ欄に@hp_min_targetと入力すると現在HPが最も少ない敵を自動で攻撃します
@hp_rate_min_targetと入力すると最大HPと現在HPの割合が最小の敵を攻撃します
コード: 全て選択
#==============================================================================
# ■ 最小HPターゲットスキル
#------------------------------------------------------------------------------
# 自動でHPが最も少ない敵を攻撃するスキルを作成します
#==============================================================================
#==============================================================================
# 〇使い方
#------------------------------------------------------------------------------
# ●スキルの対象は敵単体にして下さい
# ●スキルのメモ欄に@hp_min_targetと入力すると現在HPが最も少ない敵を攻撃します
#
# 例:敵AのHPが100、敵BのHPが50の場合は自動で敵Bを攻撃
#
# ●スキルのメモ欄に@hp_rate_min_targetと入力するとHP割合が最も少ない敵を攻撃します
#
# 例:敵Aの現在HP/最大HPが100/300、敵Bの現在HP/最大HPが50/100の場合は自動で敵Aを攻撃
#==============================================================================
class Game_Action
#--------------------------------------------------------------------------
# ● 敵に対するターゲット
#--------------------------------------------------------------------------
def targets_for_opponents
if item.for_random?
Array.new(item.number_of_targets) { opponents_unit.random_target }
elsif item.for_one?
unless /^\@hp_/ =~ item.note
num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
if @target_index < 0
[opponents_unit.random_target] * num
else
[opponents_unit.smooth_target(@target_index)] * num
end
else
[hp_min_target]
end
else
opponents_unit.alive_members
end
end
#--------------------------------------------------------------------------
# ● HPが少ない対象をターゲット
#--------------------------------------------------------------------------
def hp_min_target
if /^\@hp_min_target/ =~ item.note
opponents_unit.hp_min_target
elsif /^\@hp_rate_min_target/ =~ item.note
opponents_unit.hp_rate_min_target
end
end
end
#--------------------------------------------------------------------------
class Game_Unit
def hp_min_target
target = alive_members.sort {|a,b|a.hp <=> b.hp}
target[0]
end
def hp_rate_min_target
target = alive_members.sort {|a,b|a.hp_rate <=> b.hp_rate}
target[0]
end
end
Re: 【RGSS3】味方で一番HPが少ない対象を狙うスキル
度々すみません
せっかくなので味方側が使用した場合も正常に動作するようにしてみました
宜しければどうぞ
それに伴い対象を敵単体にする必要はなくなりました
どれにしても自動でHPが最小の敵を攻撃します
せっかくなので味方側が使用した場合も正常に動作するようにしてみました
宜しければどうぞ
それに伴い対象を敵単体にする必要はなくなりました
どれにしても自動でHPが最小の敵を攻撃します
コード: 全て選択
#==============================================================================
# ■ 最小HPターゲットスキル Ver:1.01
#------------------------------------------------------------------------------
# 自動でHPが最も少ない敵を攻撃するスキルを作成します
#==============================================================================
#==============================================================================
# 〇使い方
#------------------------------------------------------------------------------
# ●スキルのメモ欄に@hp_min_targetと入力すると現在HPが最も少ない敵を攻撃します
#
# 例:敵AのHPが100、敵BのHPが50の場合は自動で敵Bを攻撃
#
# ●スキルのメモ欄に@hp_rate_min_targetと入力するとHP割合が最も少ない敵を攻撃します
#
# 例:敵Aの現在HP/最大HPが100/300、敵Bの現在HP/最大HPが50/100の場合は自動で敵Aを攻撃
#==============================================================================
#==============================================================================
# 〇更新履歴
# Ver:1.01 味方も使用できるように改良
#==============================================================================
class Game_Action
#--------------------------------------------------------------------------
# ● 敵に対するターゲット
#--------------------------------------------------------------------------
def targets_for_opponents
if item.for_random?
Array.new(item.number_of_targets) { opponents_unit.random_target }
elsif item.for_one?
unless /^\@hp_/ =~ item.note
num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
if @target_index < 0
[opponents_unit.random_target] * num
else
[opponents_unit.smooth_target(@target_index)] * num
end
else
[hp_min_target]
end
else
opponents_unit.alive_members
end
end
#--------------------------------------------------------------------------
# ● HPが少ない対象をターゲット
#--------------------------------------------------------------------------
def hp_min_target
if /^\@hp_min_target/ =~ item.note
opponents_unit.hp_min_target
elsif /^\@hp_rate_min_target/ =~ item.note
opponents_unit.hp_rate_min_target
end
end
end
#--------------------------------------------------------------------------
class Game_Unit
def hp_min_target
target = alive_members.sort {|a,b|a.hp <=> b.hp}
target[0]
end
def hp_rate_min_target
target = alive_members.sort {|a,b|a.hp_rate <=> b.hp_rate}
target[0]
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● スキル[決定]
#--------------------------------------------------------------------------
def on_skill_ok
@skill = @skill_window.item
BattleManager.actor.input.set_skill(@skill.id)
BattleManager.actor.last_skill.object = @skill
if !@skill.need_selection? || /^\@hp_/ =~ @skill.note
@skill_window.hide
next_command
elsif @skill.for_opponent?
select_enemy_selection
else
select_actor_selection
end
end
end