Auteur: Yukihiro matsumoto
#============================================
# ¡ö Game_Enemy
#--------------------------------------------
# ¡¡¥¨¥Í¥ß©`¤ò’Q¤¦¥¯¥é¥¹¤Ç¤¹¡£¤³¤Î¥¯¥é¥¹¤Ï Game_Troop ¥¯¥é¥¹ ($game_troop) ¤Î
# ÄÚ²¿¤ÇʹÓ䵤ì¤Þ¤¹¡£
#============================================
class Game_Enemy < Game_Battler
#------------------------------------------
# ¡ñ ¥ª¥Ö¥¸¥§¥¯¥È³õÆÚ»¯
# troop_id : ¥È¥ë©`¥× ID
# member_index : ¥È¥ë©`¥×¥á¥ó¥Ð©`¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹
#------------------------------------------
def initialize(troop_id, member_index)
super()
@troop_id = troop_id
@member_index = member_index
troop = $data_troops[@troop_id]
@enemy_id = troop.members[@member_index].enemy_id
enemy = $data_enemies[@enemy_id]
@battler_name = enemy.battler_name
@battler_hue = enemy.battler_hue
@hp = maxhp
@sp = maxsp
@hidden = troop.members[@member_index].hidden
@immortal = troop.members[@member_index].immortal
end
#------------------------------------------
# ¡ñ ¥¨¥Í¥ß©` ID È¡µÃ
#------------------------------------------
def id
return @enemy_id
end
#------------------------------------------
# ¡ñ ¥¤¥ó¥Ç¥Ã¥¯¥¹È¡µÃ
#------------------------------------------
def index
return @member_index
end
#------------------------------------------
# ¡ñ ÃûÇ°¤ÎÈ¡µÃ
#------------------------------------------
def name
return $data_enemies[@enemy_id].name
end
#------------------------------------------
# ¡ñ »ù±¾ MaxHP ¤ÎÈ¡µÃ
#------------------------------------------
def base_maxhp
return $data_enemies[@enemy_id].maxhp
end
#------------------------------------------
# ¡ñ »ù±¾ MaxSP ¤ÎÈ¡µÃ
#------------------------------------------
def base_maxsp
return $data_enemies[@enemy_id].maxsp
end
#------------------------------------------
# ¡ñ »ù±¾ÍóÁ¦¤ÎÈ¡µÃ
#------------------------------------------
def base_str
return $data_enemies[@enemy_id].str
end
#------------------------------------------
# ¡ñ »ù±¾Æ÷Ó䵤ÎÈ¡µÃ
#------------------------------------------
def base_dex
return $data_enemies[@enemy_id].dex
end
#------------------------------------------
# ¡ñ »ù±¾ËØÔ礵¤ÎÈ¡µÃ
#------------------------------------------
def base_agi
return $data_enemies[@enemy_id].agi
end
#------------------------------------------
# ¡ñ »ù±¾Ä§Á¦¤ÎÈ¡µÃ
#------------------------------------------
def base_int
return $data_enemies[@enemy_id].int
end
#------------------------------------------
# ¡ñ »ù±¾¹¥“ÄÁ¦¤ÎÈ¡µÃ
#------------------------------------------
def base_atk
return $data_enemies[@enemy_id].atk
end
#------------------------------------------
# ¡ñ »ù±¾ÎïÀí·ÀÓù¤ÎÈ¡µÃ
#------------------------------------------
def base_pdef
return $data_enemies[@enemy_id].pdef
end
#------------------------------------------
# ¡ñ »ù±¾Ä§·¨·ÀÓù¤ÎÈ¡µÃ
#------------------------------------------
def base_mdef
return $data_enemies[@enemy_id].mdef
end
#------------------------------------------
# ¡ñ »ù±¾»Ø±ÜÐÞÕý¤ÎÈ¡µÃ
#------------------------------------------
def base_eva
return $data_enemies[@enemy_id].eva
end
#------------------------------------------
# ¡ñ ͨ³£¹¥“Ä ¹¥“Ä‚È¥¢¥Ë¥á©`¥·¥ç¥ó ID ¤ÎÈ¡µÃ
#------------------------------------------
def animation1_id
return $data_enemies[@enemy_id].animation1_id
end
#------------------------------------------
# ¡ñ ͨ³£¹¥“Ä ŒÏó‚È¥¢¥Ë¥á©`¥·¥ç¥ó ID ¤ÎÈ¡µÃ
#------------------------------------------
def animation2_id
return $data_enemies[@enemy_id].animation2_id
end
#------------------------------------------
# ¡ñ ÊôÐÔÑaÕý‚Ž¤ÎÈ¡µÃ
# element_id : ÊôÐÔ ID
#------------------------------------------
def element_rate(element_id)
# ÊôÐÔÓЄ¿¶È¤ËŒê¤¹¤ëÊý‚Ž¤òÈ¡µÃ
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
# ¥¹¥Æ©`¥È¤Ç¤³¤ÎÊôÐÔ¤¬·ÀÓù¤µ¤ì¤Æ¤¤¤ëˆöºÏ¤Ï°ëœp
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# ¥á¥½¥Ã¥É½KÁË
return result
end
#------------------------------------------
# ¡ñ ¥¹¥Æ©`¥ÈÓЄ¿¶È¤ÎÈ¡µÃ
#------------------------------------------
def state_ranks
return $data_enemies[@enemy_id].state_ranks
end
#------------------------------------------
# ¡ñ ¥¹¥Æ©`¥È·ÀÓùÅж¨
# state_id : ¥¹¥Æ©`¥È ID
#------------------------------------------
def state_guard?(state_id)
return false
end
#------------------------------------------
# ¡ñ ͨ³£¹¥“ĤÎÊôÐÔÈ¡µÃ
#------------------------------------------
def element_set
return []
end
#------------------------------------------
# ¡ñ ͨ³£¹¥“ĤΥ¹¥Æ©`¥È‰ä»¯ (+) È¡µÃ
#------------------------------------------
def plus_state_set
return []
end
#------------------------------------------
# ¡ñ ͨ³£¹¥“ĤΥ¹¥Æ©`¥È‰ä»¯ (-) È¡µÃ
#------------------------------------------
def minus_state_set
return []
end
#------------------------------------------
# ¡ñ ¥¢¥¯¥·¥ç¥ó¤ÎÈ¡µÃ
#------------------------------------------
def actions
return $data_enemies[@enemy_id].actions
end
#------------------------------------------
# ¡ñ EXP ¤ÎÈ¡µÃ
#------------------------------------------
def exp
return $data_enemies[@enemy_id].exp
end
#------------------------------------------
# ¡ñ ¥´©`¥ë¥É¤ÎÈ¡µÃ
#------------------------------------------
def gold
return $data_enemies[@enemy_id].gold
end
#------------------------------------------
# ¡ñ ¥¢¥¤¥Æ¥à ID ¤ÎÈ¡µÃ
#------------------------------------------
def item_id
return $data_enemies[@enemy_id].item_id
end
#------------------------------------------
# ¡ñ ÎäÆ÷ ID ¤ÎÈ¡µÃ
#------------------------------------------
def weapon_id
return $data_enemies[@enemy_id].weapon_id
end
#------------------------------------------
# ¡ñ ·À¾ß ID ¤ÎÈ¡µÃ
#------------------------------------------
def armor_id
return $data_enemies[@enemy_id].armor_id
end
#------------------------------------------
# ¡ñ ¥È¥ì¥¸¥ã©`³ö¬FÂʤÎÈ¡µÃ
#------------------------------------------
def treasure_prob
return $data_enemies[@enemy_id].treasure_prob
end
#------------------------------------------
# ¡ñ ¥Ð¥È¥ë»Ãæ X ×ù˜Ë¤ÎÈ¡µÃ
#------------------------------------------
def screen_x
return $data_troops[@troop_id].members[@member_index].x
end
#------------------------------------------
# ¡ñ ¥Ð¥È¥ë»Ãæ Y ×ù˜Ë¤ÎÈ¡µÃ
#------------------------------------------
def screen_y
return $data_troops[@troop_id].members[@member_index].y
end
#------------------------------------------
# ¡ñ ¥Ð¥È¥ë»Ãæ Z ×ù˜Ë¤ÎÈ¡µÃ
#------------------------------------------
def screen_z
return screen_y
end
#------------------------------------------
# ¡ñ ÌÓ¤²¤ë
#------------------------------------------
def escape
# ¥Ò¥É¥¥¥ó¥Õ¥é¥°¤ò¥»¥Ã¥È
@hidden = true
# ¥«¥ì¥ó¥È¥¢¥¯¥·¥ç¥ó¤ò¥¯¥ê¥¢
self.current_action.clear
end
#------------------------------------------
# ¡ñ ‰äÉí
# enemy_id : ‰äÉíÏȤΥ¨¥Í¥ß©` ID
#------------------------------------------
def transform(enemy_id)
# ¥¨¥Í¥ß©` ID ¤ò‰ä¸ü
@enemy_id = enemy_id
# ¥Ð¥È¥é©` ¥°¥é¥Õ¥£¥Ã¥¯¤ò‰ä¸ü
@battler_name = $data_enemies[@enemy_id].battler_name
@battler_hue = $data_enemies[@enemy_id].battler_hue
# ¥¢¥¯¥·¥ç¥óÔÙ×÷³É
make_action
end
#------------------------------------------
# ¡ñ ¥¢¥¯¥·¥ç¥ó×÷³É
#------------------------------------------
#Script am¨¦lior¨¦ par RPG Advocate
def make_action
self.current_action.clear
unless self.movable?
return
end
available_actions = []
rating_max = 0
for action in self.actions
n = $game_temp.battle_turn
a = action.condition_turn_a
b = action.condition_turn_b
if (b == 0 and n != a) or
(b > 0 and (n < 1 or n < a or n % b != a % b))
next
end
if self.hp * 100.0 / self.maxhp > action.condition_hp
next
end
if $game_party.max_level < action.condition_level
next
end
switch_id = action.condition_switch_id
if switch_id > 0 and $game_switches[switch_id] == false
next
end
if exclude_pointless_actions(action)
next
end
available_actions.push(action)
if action.rating > rating_max
rating_max = action.rating
end
end
ratings_total = 0
for action in available_actions
ratings_total += action.rating
end
if ratings_total > 0
choose_action = []
for action in available_actions
for j in 1..action.rating
choose_action.push(action)
end
end
enemy_action = choose_action[rand(choose_action.size - 1)]
self.current_action.kind = enemy_action.kind
self.current_action.basic = enemy_action.basic
self.current_action.skill_id = enemy_action.skill_id
self.current_action.decide_random_target_for_enemy
end
end
# --------------------------------
def exclude_pointless_actions(action)
if action.kind == 0
return false
end
if action.kind == 1
s = action.skill_id
if self.sp < $data_skills[s].sp_cost
return true
end
if $data_skills[s].common_event_id > 0
return false
end
if $data_skills[s].scope == 0 || $data_skills[s].scope == 1 ||
$data_skills[s].scope == 2
return false
end
if $data_skills[s].scope == 3 || $data_skills[s].scope == 4
if $game_troop != nil
fullhpflag = true
statusflag = true
for i in $game_troop.enemies
if i.hp < i.maxhp && i.exist?
fullhpflag = false
end
for j in $data_skills[s].plus_state_set
if not i.state?(j) && i.exist?
statusflag = false
end
end
for j in $data_skills[s].minus_state_set
if i.state?(j) && i.exist?
statusflag = false
end
end
end
end
if $data_skills[s].power == 0 && statusflag
return true
end
if $data_skills[s].power < 0 && statusflag && fullhpflag
return true
end
end
if $data_skills[s].scope == 5 || $data_skills[s].scope == 6
nonedeadflag = true
if $game_troop != nil
for i in $game_troop.enemies
if i.dead? and not i.hidden
nonedeadflag = false
end
end
end
if nonedeadflag
return true
end
end
if $data_skills[s].scope == 7
if $game_troop != nil
fullhpflag = true
statusflag = true
if self.hp < self.maxhp
fullhpflag = false
end
for j in $data_skills[s].plus_state_set
if not self.state?(j)
statusflag = false
end
end
for j in $data_skills[s].minus_state_set
if self.state?(j)
statusflag = false
end
end
end
if $data_skills[s].power == 0 && statusflag
return true
end
if $data_skills[s].power < 0 && statusflag && fullhpflag
return true
end
end
end
return false
end
end |
|