Auteur: Yukihiro matsumoto
#============================================
# ‘ Game_Party
#--------------------------------------------
# @p[eBπ΅€NXΕ·BS[hβACeΘΗΜξρͺάάκά·B±ΜN
# XΜCX^XΝ $game_party ΕQΖ³κά·B
#============================================
class Game_Party
#------------------------------------------
# φJCX^XΟ
#------------------------------------------
attr_reader :actors # AN^[
attr_reader :gold # S[h
attr_reader :steps # ΰ
#------------------------------------------
# IuWFNgϊ»
#------------------------------------------
def initialize
# AN^[Μzρπμ¬
@actors = []
# S[hΖΰπϊ»
@gold = 0
@steps = 0
# ACeAνAhοΜnbV
πμ¬
@items = {}
@weapons = {}
@armors = {}
end
#------------------------------------------
# ϊp[eBΜZbgAbv
#------------------------------------------
def setup_starting_members
@actors = []
for i in $data_system.party_members
@actors.push($game_actors[i])
end
end
#------------------------------------------
# ν¬eXgpp[eBΜZbgAbv
#------------------------------------------
def setup_battle_test_members
@actors = []
for battler in $data_system.test_battlers
actor = $game_actors[battler.actor_id]
actor.level = battler.level
gain_weapon(battler.weapon_id, 1)
gain_armor(battler.armor1_id, 1)
gain_armor(battler.armor2_id, 1)
gain_armor(battler.armor3_id, 1)
gain_armor(battler.armor4_id, 1)
actor.equip(0, battler.weapon_id)
actor.equip(1, battler.armor1_id)
actor.equip(2, battler.armor2_id)
actor.equip(3, battler.armor3_id)
actor.equip(4, battler.armor4_id)
actor.recover_all
@actors.push(actor)
end
@items = {}
for i in 1...$data_items.size
if $data_items[i].name != ""
occasion = $data_items[i].occasion
if occasion == 0 or occasion == 1
@items[i] = 99
end
end
end
end
#------------------------------------------
# p[eBo[ΜtbV
#------------------------------------------
def refresh
# Q[f[^π[h΅½ΌγΝAN^[IuWFNgͺ
# $game_actors ©ηͺ£΅Δ΅άΑΔ’ιB
# [hΜ½ΡΙAN^[πΔέθ·ι±ΖΕβθπρπ·ιB
new_actors = []
for i in 0...@actors.size
if $data_actors[@actors[i].id] != nil
new_actors.push($game_actors[@actors[i].id])
end
end
@actors = new_actors
end
#------------------------------------------
# ΕεxΜζΎ
#------------------------------------------
def max_level
# p[eBlͺ 0 lΜκ
if @actors.size == 0
return 0
end
# [JΟ level πϊ»
level = 0
# p[eBo[ΜΕεxπίι
for actor in @actors
if level < actor.level
level = actor.level
end
end
return level
end
#------------------------------------------
# AN^[πΑ¦ι
# actor_id : AN^[ ID
#------------------------------------------
def add_actor(actor_id)
# AN^[πζΎ
actor = $game_actors[actor_id]
# p[eBlͺ 4 l’ΕA±ΜAN^[ͺp[eBΙ’Θ’κ
if @actors.size < 4 and not @actors.include?(actor)
# AN^[πΗΑ
@actors.push(actor)
# vC[πtbV
$game_player.refresh
end
end
#------------------------------------------
# AN^[πO·
# actor_id : AN^[ ID
#------------------------------------------
def remove_actor(actor_id)
# AN^[πν
@actors.delete($game_actors[actor_id])
# vC[πtbV
$game_player.refresh
end
#------------------------------------------
# S[hΜΑ (Έ)
# n : ΰz
#------------------------------------------
def gain_gold(n)
@gold = [[@gold + n, 0].max, 9999999].min
end
#------------------------------------------
# S[hΜΈ
# n : ΰz
#------------------------------------------
def lose_gold(n)
# lπt]΅Δ gain_gold πΔΤ
gain_gold(-n)
end
#------------------------------------------
# ΰΑ
#------------------------------------------
def increase_steps
@steps = [@steps + 1, 9999999].min
end
#------------------------------------------
# ACeΜζΎ
# item_id : ACe ID
#------------------------------------------
def item_number(item_id)
# nbV
ΙΒf[^ͺ κΞ»ΜlπAΘ―κΞ 0 πΤ·
return @items.include?(item_id) ? @items[item_id] : 0
end
#------------------------------------------
# νΜζΎ
# weapon_id : ν ID
#------------------------------------------
def weapon_number(weapon_id)
# nbV
ΙΒf[^ͺ κΞ»ΜlπAΘ―κΞ 0 πΤ·
return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
end
#------------------------------------------
# hοΜζΎ
# armor_id : hο ID
#------------------------------------------
def armor_number(armor_id)
# nbV
ΙΒf[^ͺ κΞ»ΜlπAΘ―κΞ 0 πΤ·
return @armors.include?(armor_id) ? @armors[armor_id] : 0
end
#------------------------------------------
# ACeΜΑ (Έ)
# item_id : ACe ID
# n : Β
#------------------------------------------
def gain_item(item_id, n)
# nbV
ΜΒf[^πXV
if item_id > 0
@items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
end
end
#------------------------------------------
# νΜΑ (Έ)
# weapon_id : ν ID
# n : Β
#------------------------------------------
def gain_weapon(weapon_id, n)
# nbV
ΜΒf[^πXV
if weapon_id > 0
@weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
end
end
#------------------------------------------
# hοΜΑ (Έ)
# armor_id : hο ID
# n : Β
#------------------------------------------
def gain_armor(armor_id, n)
# nbV
ΜΒf[^πXV
if armor_id > 0
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
end
end
#------------------------------------------
# ACeΜΈ
# item_id : ACe ID
# n : Β
#------------------------------------------
def lose_item(item_id, n)
# lπt]΅Δ gain_item πΔΤ
gain_item(item_id, -n)
end
#------------------------------------------
# νΜΈ
# weapon_id : ν ID
# n : Β
#------------------------------------------
def lose_weapon(weapon_id, n)
# lπt]΅Δ gain_weapon πΔΤ
gain_weapon(weapon_id, -n)
end
#------------------------------------------
# hοΜΈ
# armor_id : hο ID
# n : Β
#------------------------------------------
def lose_armor(armor_id, n)
# lπt]΅Δ gain_armor πΔΤ
gain_armor(armor_id, -n)
end
#------------------------------------------
# ACeΜgpΒ»θ
# item_id : ACe ID
#------------------------------------------
def item_can_use?(item_id)
# ACeΜΒͺ 0 ΒΜκ
if item_number(item_id) == 0
# gps
return false
end
# gpΒπζΎ
occasion = $data_items[item_id].occasion
# ogΜκ
if $game_temp.in_battle
# gpΒͺ 0 (ν) ά½Ν 1 (ogΜέ) ΘηgpΒ
return (occasion == 0 or occasion == 1)
end
# gpΒͺ 0 (ν) ά½Ν 2 (j
[Μέ) ΘηgpΒ
return (occasion == 0 or occasion == 2)
end
#------------------------------------------
# SυΜANVNA
#------------------------------------------
def clear_actions
# p[eBSυΜANVπNA
for actor in @actors
actor.current_action.clear
end
end
#------------------------------------------
# R}hόΝΒ»θ
#------------------------------------------
def inputable?
# κlΕΰR}hόΝΒΘη true πΤ·
for actor in @actors
if actor.inputable?
return true
end
end
return false
end
#------------------------------------------
# SΕ»θ
#------------------------------------------
def all_dead?
# p[eBlͺ 0 lΜκ
if $game_party.actors.size == 0
return false
end
# HP 0 ΘγΜAN^[ͺp[eBΙ’ικ
for actor in @actors
if actor.hp > 0
return false
end
end
# SΕ
return true
end
#------------------------------------------
# Xbv_[W`FbN (}bvp)
#------------------------------------------
def check_map_slip_damage
for actor in @actors
if actor.hp > 0 and actor.slip_damage?
actor.hp -= [actor.maxhp / 100, 1].max
if actor.hp == 0
$game_system.se_play($data_system.actor_collapse_se)
end
$game_screen.start_flash(Color.new(255,0,0,128), 4)
$game_temp.gameover = $game_party.all_dead?
end
end
end
#------------------------------------------
# ΞΫAN^[Μ_Θθ
# hp0 : HP 0 ΜAN^[Ιΐι
#------------------------------------------
def random_target_actor(hp0 = false)
# [bgπϊ»
roulette = []
# [v
for actor in @actors
# πΙY·ικ
if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
# AN^[ΜNXΜ [Κu] πζΎ
position = $data_classes[actor.class_id].position
# OqΜΖ« n = 4AqΜΖ« n = 3AγqΜΖ« n = 2
n = 4 - position
# [bgΙAN^[π n ρΗΑ
n.times do
roulette.push(actor)
end
end
end
# [bgΜTCYͺ 0 Μκ
if roulette.size == 0
return nil
end
# [bgπρ΅AAN^[πθ
return roulette[rand(roulette.size)]
end
#------------------------------------------
# ΞΫAN^[Μ_Θθ (HP 0)
#------------------------------------------
def random_target_actor_hp0
return random_target_actor(true)
end
#------------------------------------------
# ΞΫAN^[ΜX[YΘθ
# actor_index : AN^[CfbNX
#------------------------------------------
def smooth_target_actor(actor_index)
# AN^[πζΎ
actor = @actors[actor_index]
# AN^[ͺΆέ·ικ
if actor != nil and actor.exist?
return actor
end
# [v
for actor in @actors
# AN^[ͺΆέ·ικ
if actor.exist?
return actor
end
end
end
end |
|