#==============================================================================
# ■ エネミーアクションβ拡張パック ver.1.00  byスウ
#------------------------------------------------------------------------------
#
# エネミーアクションβの行動条件・行動内容を拡張するRGSSです。
# 新たに以下の機能を追加します。(条件追加のサンプルの意味も込めて公開)
# 特に、このRGSSシリーズの行動条件をそのままイベント作動条件に還元できる機能はオススメ(^^b
# 例えば「ID231のスキルを発動する(した)者がいる時、NO.3のバトルイベントを実行」というパターンも組めるようになります。
#
#
# 【行動条件】
#
# 〜-1.設定した数の絶対値のIDスキルを発動する味方がいる時、その味方に対して(-1000で対象が入れ替わります)
# 161.生存している敵が2人以上の時、敵に対して(以下、+1000で対象が入れ替わります)
# 162.生存している敵が3人以上の時
# 163.生存している敵が4人以上の時
# 164.(敵一人から)受ける基本ダメージが自分の現HPの10%以上の時、その敵に対して
# 165.受ける基本ダメージが自分の現HPの20%以上の時
# 166.受ける基本ダメージが自分の現HPの30%以上の時
# 167.受ける基本ダメージが自分の現HPの40%以上の時
# 168.受ける基本ダメージが自分の現HPの50%以上の時
# 169.受ける基本ダメージが自分の現HPの60%以上の時
# 170.受ける基本ダメージが自分の現HPの70%以上の時
# 171.受ける基本ダメージが自分の現HPの80%以上の時
# 172.受ける基本ダメージが自分の現HPの90%以上の時
# 173.受ける基本ダメージが自分の現HPの100%以上の時
# 174.受ける基本ダメージが自分の現HPの10%未満の時、その敵に対して
# 175.受ける基本ダメージが自分の現HPの20%未満の時
# 176.受ける基本ダメージが自分の現HPの30%未満の時
# 177.受ける基本ダメージが自分の現HPの40%未満の時
# 178.受ける基本ダメージが自分の現HPの50%未満の時
# 179.受ける基本ダメージが自分の現HPの60%未満の時
# 180.受ける基本ダメージが自分の現HPの70%未満の時
# 181.受ける基本ダメージが自分の現HPの80%未満の時
# 182.受ける基本ダメージが自分の現HPの90%未満の時
# 183.受ける基本ダメージが自分の現HPの100%未満の時
# 184.通常攻撃で相手の現HPの10%以上の基本ダメージを与えられる時、その敵に対して
# 185.通常攻撃で相手の現HPの20%以上の基本ダメージを与えられる時
# 186.通常攻撃で相手の現HPの30%以上の基本ダメージを与えられる時
# 187.通常攻撃で相手の現HPの40%以上の基本ダメージを与えられる時
# 188.通常攻撃で相手の現HPの50%以上の基本ダメージを与えられる時
# 189.通常攻撃で相手の現HPの60%以上の基本ダメージを与えられる時
# 190.通常攻撃で相手の現HPの70%以上の基本ダメージを与えられる時
# 191.通常攻撃で相手の現HPの80%以上の基本ダメージを与えられる時
# 192.通常攻撃で相手の現HPの90%以上の基本ダメージを与えられる時
# 193.通常攻撃で相手の現HPの100%以上の基本ダメージを与えられる時
# 194.属性ID1が効果のある味方がいる時、その味方に対して
# 195.属性ID2が効果のある味方がいる時
# 196.属性ID3が効果のある味方がいる時
# 197.属性ID4が効果のある味方がいる時
# 198.属性ID5が効果のある味方がいる時
# 199.属性ID6が効果のある味方がいる時
# 200.属性ID7が効果のある味方がいる時
# 201.属性ID8が効果のある味方がいる時
# 202.属性ID9が効果のある味方がいる時
# 203.属性ID10が効果のある味方がいる時
# 204.属性ID11が効果のある味方がいる時
# 205.属性ID12が効果のある味方がいる時
# 206.属性ID13が効果のある味方がいる時
# 207.属性ID14が効果のある味方がいる時
# 208.属性ID15が効果のある味方がいる時
# 209.属性ID16が効果のある味方がいる時
# 210.自分より攻撃のパラメータが高い敵がいる時、その敵に対して
# 211.自分より防御のパラメータが高い敵がいる時
# 212.自分より精神のパラメータが高い敵がいる時
# 213.自分より俊敏のパラメータが高い敵がいる時
# 214.自分より攻撃のパラメータが低い敵がいる時
# 215.自分より防御のパラメータが低い敵がいる時
# 216.自分より精神のパラメータが低い敵がいる時
# 217.自分より俊敏のパラメータが低い敵がいる時
# 218.レベルが2の倍数のアクターがいる時、そのアクターに対して(この系統の条件は+1000による対象入替に未対応)
# 219.レベルが3の倍数のアクターがいる時
# 220.レベルが4の倍数のアクターがいる時
# 221.レベルが5の倍数のアクターがいる時
# 222.レベルが6の倍数のアクターがいる時
# 223.レベルが7の倍数のアクターがいる時
# 224.レベルが8の倍数のアクターがいる時
# 225.レベルが9の倍数のアクターがいる時
#
# ※基本ダメージ=攻撃力×4−防御力×2(デフォルト計算)、属性計算は含まれません。

#
# 【行動内容】
# 11〜.バトルアクションの代わりにNO.(設定数値‐10)のバトルイベントを作動させます。
#
# ※ここで設定したイベントはデータベースの条件が「実行しない」でも作動します(ターンやHPは条件を加味)。
#  一度実行された、あるいは(カスタマイズとデータベースの)条件に合わない場合は次の行動判定へ移ります。
#  イベントを複数回作動させたい場合はデータベースのスパンを「モーメント」に設定してください
#
#
# 再定義:なし
# 導入法:エネミーアクションβの真下にコピペ。(カスタマイズはβと共用)
# 履 歴:2008年3月中旬作成(公開は下旬)
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 行動条件分岐
#--------------------------------------------------------------------------
alias action01b action01
def action01(act)
action01b(act)
return if (act > 0 && act < 161) || (act > 1000 && act < 1161)
case act
when -2000..-1001
el_skill($game_troop.existing_members, act.abs - 1000)
when -1000..-1
el_skill($game_party.existing_members, act.abs)
when 161..163
las_num($game_party.existing_members, act - 159)
when 164..173
lo_damage($game_party.existing_members, (act - 163) * 10, 1)
when 174..183
lo_damage($game_party.existing_members, (act - 173) * 10, 2)
when 184..193
os_damage($game_party.existing_members, (act - 183) * 10)
when 194..209
el_element2($game_troop.existing_members, act - 193)
when 210
la_para($game_party.existing_members, 1)
when 211
la_para($game_party.existing_members, 2)
when 212
la_para($game_party.existing_members, 3)
when 213
la_para($game_party.existing_members, 4)
when 218..225
level_nu(act - 216)
when 1161..1163
las_num($game_troop.existing_members, act - 1159)
when 1164..1173
lo_damage($game_troop.existing_members, (act - 1163) * 10, 1)
when 1174..1183
lo_damage($game_troop.existing_members, (act - 1173) * 10, 2)
when 1184..1193
os_damage($game_troop.existing_members, (act - 1183) * 10)
when 1194..1209
el_element2($game_party.existing_members, act - 1193)
when 1210
la_para($game_troop.existing_members, 1)
when 1211
la_para($game_troop.existing_members, 2)
when 1212
la_para($game_troop.existing_members, 3)
when 1213
la_para($game_troop.existing_members, 4)
end
end
#--------------------------------------------------------------------------
# ● 発動スキル情報解析(グループ,ID数値)
#--------------------------------------------------------------------------
def el_skill(unit, n)
for i in unit
next if i.action.kind != 1
@targets.push i.index if i.action.skill_id == n
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 生存人数情報解析(グループ,人数)
#--------------------------------------------------------------------------
def las_num(unit, n)
unit.each{|i| @targets.push(i.index)}
@targets.size > n - 1 ? @flug = true : @targets = []
end
#--------------------------------------------------------------------------
# ● 被ダメージ情報解析(グループ,比較数値,1:以上 2:以下)
#--------------------------------------------------------------------------
def lo_damage(unit, n, a)
gd = (i.base_atk * 4) - (self.base_def * 2)
for i in unit
@targets.push i.index if gd >= self.hp * n / 100 && a == 1
@targets.push i.index if gd < self.hp * n / 100 && a == 2
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 与ダメージ情報解析(グループ,比較数値)
#--------------------------------------------------------------------------
def os_damage(unit, n)
for i in unit
gd = (self.base_atk * 4) - (i.base_def * 2)
@targets.push i.index if gd >= i.hp * n / 100 && a == 1
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 属性情報解析2(グループ,ID)
#--------------------------------------------------------------------------
def el_element2(unit, n)
for i in unit
@targets.push i.index if i.element_rate(n) > 0
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● パラメータ情報解析(グループ,比較パラメータ1:atk,2:def,3:spi,4:agi)
#--------------------------------------------------------------------------
def la_para(unit, a)
for i in unit
next if i.base_atk <= self.base_atk && a == 1
next if i.base_def <= self.base_def && a == 2
next if i.base_spi <= self.base_spi && a == 3
next if i.base_agi <= self.base_agi && a == 4
@targets.push i.index
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● レベル倍数情報解析(検査倍数)
#--------------------------------------------------------------------------
def level_nu(n)
for i in $game_party.existing_members
@targets.push i.index if i.level % n == 0
end
@flug = true if @targets.size != 0
end

#--------------------------------------------------------------------------
# ● バトルイベントの強制作動
#--------------------------------------------------------------------------
alias action_decide00 action_decide
def action_decide(rating)
if rating > 10
return if $game_troop.event_check_f(rating - 11) == nil
@action.basic = -10
$game_troop.event_setting_f(rating - 11)
return
end
action_decide00(rating)
end
end
class Game_Troop
#--------------------------------------------------------------------------
# ● バトルイベントの強制的なセットアップ
#--------------------------------------------------------------------------
def event_check_f(tres)
return nil unless f_conditions_met?(troop.pages[tres])
return true
end
def event_setting_f(tres)
a = troop.pages[tres]
@interpreter.setup(a.list)
@event_flags[a] = true if a.span <= 1
return
end
#--------------------------------------------------------------------------
# ● バトルイベントの条件合致判定(特殊)
#--------------------------------------------------------------------------
def f_conditions_met?(page)
return false if page == nil
c = page.condition
return false if @event_flags[page]
if c.turn_ending
return false unless @turn_ending
end
if c.turn_valid
n, a, b = @turn_count, c.turn_a, c.turn_b
return false if (b == 0 and n != a)
return false if (b > 0 and (n < 1 or n < a or n % b != a % b))
end
if c.enemy_valid
enemy = $game_troop.members[c.enemy_index]
return false if enemy == nil
return false if enemy.hp * 100.0 / enemy.maxhp > c.enemy_hp
end
if c.actor_valid
actor = $game_actors[c.actor_id]
return false if actor == nil
return false if actor.hp * 100.0 / actor.maxhp > c.actor_hp
end
if c.switch_valid
return false if $game_switches[c.switch_id] == false
end
return true
end
end