#==============================================================================
# ■ エネミーアクションβ拡張パック2 ver.0.99 byスウ
#------------------------------------------------------------------------------
#
# エネミーアクションβの行動条件を拡張するRGSSです。
# 新たに以下の機能を追加します。
#
#
# 【行動条件】(226〜237までは+1000で対象入替)
#
# 226.MaxHPが最も高いアクターに対して
# 227.MaxHPが最も低いアクターに対して
# 228.MaxMPが最も高いアクターに対して
# 229.MaxMPが最も低いアクターに対して
# 230.残存HP(実数)が最も高いアクターに対して
# 231.残存HP(実数)が最も低いアクターに対して
# 232.残存HP(%)が最も高いアクターに対して
# 233.残存HP(%)が最も低いアクターに対して
# 234.残存MP(実数)が最も高いアクターに対して
# 235.残存MP(実数)が最も低いアクターに対して
# 236.残存MP(%)が最も高いアクターに対して
# 237.残存MP(%)が最も低いアクターに対して
# 238.特定スキル(A群)を修得しているアクターに対して
# 239.特定スキル(B群)を修得しているアクターに対して
# 240.先頭のアクターに対して
# 241.2番目のアクターに対して(存在しない場合は無効)
# 242.3番目のアクターに対して(存在しない場合は無効)
# 243.4番目のアクターに対して(存在しない場合は無効)
# 244.特定のアクター(A)に対して(存在しない場合は無効)
# 245.特定のアクター(B)に対して(存在しない場合は無効)
# 246.特定のアクター(C)に対して(存在しない場合は無効)
# 247.特定の武器(A)を装備しているアクターに対して(存在しない場合は無効)
# 248.特定の武器(B)を装備しているアクターに対して(存在しない場合は無効)
# 249.特定の武器(C)を装備しているアクターに対して(存在しない場合は無効)
# 250.特定の防具(盾)を装備しているアクターに対して(存在しない場合は無効)
# 251.特定の防具(頭)を装備しているアクターに対して(存在しない場合は無効)
# 252.特定の防具(身体)を装備しているアクターに対して(存在しない場合は無効)
# 253.特定の防具(装飾A)を装備しているアクターに対して(存在しない場合は無効)
# 254.特定の防具(装飾B)を装備しているアクターに対して(存在しない場合は無効)
# 255.特定の防具(装飾C)を装備しているアクターに対して(存在しない場合は無効)
#
#
#
# 【基本情報】
#
# 再定義:なし(aliasを使用)
# 導入法:エネミーアクションβの下(拡張パック1があればその下)にコピペ。
# 履 歴:2008年7月上旬作成、中旬修正&機能増量。
#==============================================================================
module Neo_Enemy02
# 特定スキルA群のカスタマイズ [スキルID配列]
SKILLS_A = [36,37,38]#←スキルID36,37,38を修得している者をターゲットにする
# 特定スキルB群のカスタマイズ [スキルID配列]
SKILLS_B = [1,2]
# 特定アクターのカスタマイズ [アクターA名,アクターB名,アクターC名]
NAMES_AT = ["ヴェラ","エルマー","オスカー"]
# 特定武器のカスタマイズ [武器AのID, 武器BのID, 武器CのID]
WEAPON_F = [3,4,5]
# 特定防具(盾・頭・身体)のカスタマイズ [防具(盾)のID, 防具(頭)のID, 防具(身体)のID]
ARMOR_AB = [3,4,5]
# 特定防具(装飾)のカスタマイズ [装飾AのID, 装飾BのID, 装飾CのID]
ARMOR_CD = [3,4,5]
end
class Game_Enemy < Game_Battler
include Neo_Enemy02
#--------------------------------------------------------------------------
# ● 行動条件分岐
#--------------------------------------------------------------------------
alias action01c action01
def action01(act)
action01c(act)
return if (act < 226 && act > 255) || (act > 1226 &&
act < 1250)
case act
when 226..227
el_hp_pt($game_party.existing_members, act - 225)
when 228..229
el_mp_pt($game_party.existing_members, act - 227)
when 230..231
el_nhp_pt($game_party.existing_members, act - 229)
when 232..233
el_php_pt($game_party.existing_members, act - 231)
when 234..235
el_nmp_pt($game_party.existing_members, act - 233)
when 236..237
el_pmp_pt($game_party.existing_members, act - 235)
when 238..239
el_skl_pt($game_party.existing_members, act - 237)
when 240..243
el_index($game_party.existing_members, act - 240)
when 244..246
el_nss_pt($game_party.existing_members, act - 244)
when 247..249
el_weapon($game_party.existing_members, act - 247)
when 250..252
el_armor($game_party.existing_members, act - 250)
when 253..255
el_armor2($game_party.existing_members, act - 253)
when 1226..1227
el_hp_pt($game_troop.existing_members, act - 1225)
when 1228..1229
el_hp_pt($game_troop.existing_members, act - 1227)
when 1230..1231
el_nhp_pt($game_troop.existing_members, act - 1229)
when 1232..1233
el_php_pt($game_troop.existing_members, act - 1231)
when 1234..1235
el_nmp_pt($game_troop.existing_members, act - 1233)
when 1236..1237
el_pmp_pt($game_troop.existing_members, act - 1235)
end
end
#--------------------------------------------------------------------------
# ● 最大HP情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_hp_pt(unit, n)
a, b = 0, nil
for i in unit
if b == nil
b = i.index
elsif n == 1
b = i.index if i.base_maxhp - a > 0
next if i.base_maxhp - a < 0
elsif n == 2
b = i.index if i.base_maxhp - a < 0
next if i.base_maxhp - a > 0
end
a = i.base_maxhp
end
@targets.push b
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 最大MP情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_mp_pt(unit, n)
a, b = 0, nil
for i in unit
if b == nil
b = i.index
elsif n == 1
b = i.index if i.base_maxmp - a > 0
next if i.base_maxmp - a < 0
elsif n == 2
b = i.index if i.base_maxmp - a < 0
next if i.base_maxmp - a > 0
end
a = i.base_maxmp
end
@targets.push b
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 残存HP情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_nhp_pt(unit, n)
a, b = 0, nil
for i in unit
if b == nil
b = i.index
elsif n == 1
b = i.index if i.hp - a > 0
next if i.hp - a < 0
elsif n == 2
b = i.index if i.hp - a < 0
next if i.hp - a > 0
end
a = i.hp
end
@targets.push b
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 残存HP(%)情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_php_pt(unit, n)
a, b = 0, nil
for i in unit
c = i.hp * 100 / i.base_maxhp
if b == nil
b = i.index
elsif n == 1
b = i.index if c - a > 0
next if i.hp - a < 0
elsif n == 2
b = i.index if c - a < 0
next if i.hp - a > 0
end
a = i.hp * 100 / i.base_maxhp
end
@targets.push b
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 残存MP情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_nmp_pt(unit, n)
a, b = 0, nil
for i in unit
if b == nil
b = i.index
elsif n == 1
b = i.index if i.mp - a > 0
next if i.mp - a < 0
elsif n == 2
b = i.index if i.mp - a < 0
next if i.mp - a > 0
end
a = i.mp
end
@targets.push b
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 残存MP(%)情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_pmp_pt(unit, n)
a, b = 0, nil
for i in unit
c = (i.mp + 1) * 100 / i.base_maxmp
if b == nil
b = i.index
elsif n == 1
b = i.index if c - a > 0
next if i.mp - a < 0
elsif n == 2
b = i.index if c - a < 0
next if i.mp - a > 0
end
a = (i.mp + 1) * 100 / i.base_maxmp
end
@targets.push b
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● 特定スキル修得情報解析A・B(グループ,act数値)
#--------------------------------------------------------------------------
def el_skl_pt(unit, n)
n == 1 ? sk = SKILLS_A : sk = SKILLS_B
for i in unit
@targets.push i.index if include_skill?(i.skills, sk)
end
@flug = true if @targets.size != 0
end
def include_skill?(unit_skill, skill)
for i in unit_skill
return true if skill.include?(i.id)
end
return false
end
#--------------------------------------------------------------------------
# ● アクター配列情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_index(unit, n)
for i in unit
@targets.push i.index if i.index == n
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● アクター名称情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_nss_pt(unit, n)
a = NAMES_AT[n]
for i in unit
@targets.push i.index if i.name == a
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● アクター装備武器情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_weapon(unit, n)
a = WEAPON_F[n]
for i in unit
@targets.push i.index if i.weapon_id == a
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● アクター装備防具情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_armor(unit, n)
a = ARMOR_AB[n]
for i in unit
if n == 0
@targets.push i.index if i.armor1_id == a
elsif n == 1
@targets.push i.index if i.armor2_id == a
else
@targets.push i.index if i.armor3_id == a
end
end
@flug = true if @targets.size != 0
end
#--------------------------------------------------------------------------
# ● アクター装備装飾情報解析(グループ,act数値)
#--------------------------------------------------------------------------
def el_armor2(unit, n)
a = ARMOR_CD[n]
for i in unit
@targets.push i.index if i.armor4_id == a
end
@flug = true if @targets.size != 0
end
end