Game_Party

Publié le par chindan

#============================================
# ¡ Game_Party
#--------------------------------------------
# @ƒp[ƒeƒB‚ðˆµ‚¤ƒNƒ‰ƒX‚Å‚·BƒS[ƒ‹ƒh‚âƒAƒCƒeƒ€‚Ȃǂ̏î•ñ‚ªŠÜ‚Ü‚ê‚Ü‚·B‚±‚̃N
# ƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Í $game_party ‚ŎQÆ‚³‚ê‚Ü‚·B
#============================================

class Game_Party
#------------------------------------------
# œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•ϐ”
#------------------------------------------
attr_reader :actors # ƒAƒNƒ^[
attr_reader :gold # ƒS[ƒ‹ƒh
attr_reader :steps # •à”
#------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#------------------------------------------
def initialize
# ƒAƒNƒ^[‚Ì”z—ñ‚ðì¬
@actors = []
# ƒS[ƒ‹ƒh‚Æ•à”‚ð‰Šú‰»
@gold = 0
@steps = 0
# ƒAƒCƒeƒ€A•ŠíA–h‹ï‚ÌŠŽ”ƒnƒbƒVƒ…‚ðì¬
@items = {}
@weapons = {}
@armors = {}
end
#------------------------------------------
# œ ‰Šúƒp[ƒeƒB‚̃ZƒbƒgƒAƒbƒv
#------------------------------------------
def setup_starting_members
@actors = []
for i in $data_system.party_members
@actors.push($game_actors[i])
end
end
#------------------------------------------
# œ í“¬ƒeƒXƒg—pƒp[ƒeƒB‚̃ZƒbƒgƒAƒbƒv
#------------------------------------------
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[ƒeƒBƒƒ“ƒo[‚ÌƒŠƒtƒŒƒbƒVƒ…
#------------------------------------------
def refresh
# ƒQ[ƒ€ƒf[ƒ^‚ðƒ[ƒh‚µ‚½’¼Œã‚̓AƒNƒ^[ƒIƒuƒWƒFƒNƒg‚ª
# $game_actors ‚©‚番—£‚µ‚Ä‚µ‚Ü‚Á‚Ä‚¢‚éB
# ƒ[ƒh‚Ì‚½‚тɃAƒNƒ^[‚ðÄÝ’è‚·‚邱‚ƂŖâ‘è‚ð‰ñ”ð‚·‚é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[ƒeƒBl”‚ª 0 l‚̏ꍇ
if @actors.size == 0
return 0
end
# ƒ[ƒJƒ‹•ϐ” level ‚ð‰Šú‰»
level = 0
# ƒp[ƒeƒBƒƒ“ƒo[‚̍ő僌ƒxƒ‹‚ð‹‚ß‚é
for actor in @actors
if level < actor.level
level = actor.level
end
end
return level
end
#------------------------------------------
# œ ƒAƒNƒ^[‚ð‰Á‚¦‚é
# actor_id : ƒAƒNƒ^[ ID
#------------------------------------------
def add_actor(actor_id)
# ƒAƒNƒ^[‚ðŽæ“¾
actor = $game_actors[actor_id]
# ƒp[ƒeƒBl”‚ª 4 l–¢–ž‚ŁA‚±‚̃AƒNƒ^[‚ªƒp[ƒeƒB‚É‚¢‚È‚¢ê‡
if @actors.size < 4 and not @actors.include?(actor)
# ƒAƒNƒ^[‚ð’ljÁ
@actors.push(actor)
# ƒvƒŒƒCƒ„[‚ðƒŠƒtƒŒƒbƒVƒ…
$game_player.refresh
end
end
#------------------------------------------
# œ ƒAƒNƒ^[‚ðŠO‚·
# actor_id : ƒAƒNƒ^[ ID
#------------------------------------------
def remove_actor(actor_id)
# ƒAƒNƒ^[‚ðíœ
@actors.delete($game_actors[actor_id])
# ƒvƒŒƒCƒ„[‚ðƒŠƒtƒŒƒbƒVƒ…
$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
#------------------------------------------
# œ ƒAƒCƒeƒ€‚ÌŠŽ”Žæ“¾
# item_id : ƒAƒCƒeƒ€ ID
#------------------------------------------
def item_number(item_id)
# ƒnƒbƒVƒ…‚Ɍ”ƒf[ƒ^‚ª‚ ‚ê‚΂»‚̐”’l‚ðA‚È‚¯‚ê‚Î 0 ‚ð•Ô‚·
return @items.include?(item_id) ? @items[item_id] : 0
end
#------------------------------------------
# œ •Ší‚ÌŠŽ”Žæ“¾
# weapon_id : •Ší ID
#------------------------------------------
def weapon_number(weapon_id)
# ƒnƒbƒVƒ…‚Ɍ”ƒf[ƒ^‚ª‚ ‚ê‚΂»‚̐”’l‚ðA‚È‚¯‚ê‚Î 0 ‚ð•Ô‚·
return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
end
#------------------------------------------
# œ –h‹ï‚ÌŠŽ”Žæ“¾
# armor_id : –h‹ï ID
#------------------------------------------
def armor_number(armor_id)
# ƒnƒbƒVƒ…‚Ɍ”ƒf[ƒ^‚ª‚ ‚ê‚΂»‚̐”’l‚ðA‚È‚¯‚ê‚Î 0 ‚ð•Ô‚·
return @armors.include?(armor_id) ? @armors[armor_id] : 0
end
#------------------------------------------
# œ ƒAƒCƒeƒ€‚Ì‘‰Á (Œ¸­)
# item_id : ƒAƒCƒeƒ€ ID
# n : ŒÂ”
#------------------------------------------
def gain_item(item_id, n)
# ƒnƒbƒVƒ…‚̌”ƒf[ƒ^‚ðXV
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)
# ƒnƒbƒVƒ…‚̌”ƒf[ƒ^‚ðXV
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)
# ƒnƒbƒVƒ…‚̌”ƒf[ƒ^‚ðXV
if armor_id > 0
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
end
end
#------------------------------------------
# œ ƒAƒCƒeƒ€‚ÌŒ¸­
# item_id : ƒAƒCƒeƒ€ 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
#------------------------------------------
# œ ƒAƒCƒeƒ€‚̎g—p‰Â””»’è
# item_id : ƒAƒCƒeƒ€ ID
#------------------------------------------
def item_can_use?(item_id)
# ƒAƒCƒeƒ€‚̌”‚ª 0 ŒÂ‚̏ꍇ
if item_number(item_id) == 0
# Žg—p•s”
return false
end
# Žg—p‰Â”Žž‚ðŽæ“¾
occasion = $data_items[item_id].occasion
# ƒoƒgƒ‹‚̏ꍇ
if $game_temp.in_battle
# Žg—p‰Â”Žž‚ª 0 (íŽž) ‚Ü‚½‚Í 1 (ƒoƒgƒ‹‚Ì‚Ý) ‚È‚çŽg—p‰Â”
return (occasion == 0 or occasion == 1)
end
# Žg—p‰Â”Žž‚ª 0 (íŽž) ‚Ü‚½‚Í 2 (ƒƒjƒ…[‚Ì‚Ý) ‚È‚çŽg—p‰Â”
return (occasion == 0 or occasion == 2)
end
#------------------------------------------
# œ ‘Sˆõ‚̃AƒNƒVƒ‡ƒ“ƒNƒŠƒA
#------------------------------------------
def clear_actions
# ƒp[ƒeƒB‘Sˆõ‚̃AƒNƒVƒ‡ƒ“‚ðƒNƒŠƒA
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[ƒeƒBl”‚ª 0 l‚̏ꍇ
if $game_party.actors.size == 0
return false
end
# HP 0 ˆÈã‚̃AƒNƒ^[‚ªƒp[ƒeƒB‚É‚¢‚éê‡
for actor in @actors
if actor.hp > 0
return false
end
end
# ‘S–Å
return true
end
#------------------------------------------
# œ ƒXƒŠƒbƒvƒ_ƒ[ƒWƒ`ƒFƒbƒN (ƒ}ƒbƒv—p)
#------------------------------------------
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
#------------------------------------------
# œ ‘ΏۃAƒNƒ^[‚̃‰ƒ“ƒ_ƒ€‚ÈŒˆ’è
# hp0 : HP 0 ‚̃AƒNƒ^[‚ÉŒÀ‚é
#------------------------------------------
def random_target_actor(hp0 = false)
# ƒ‹[ƒŒƒbƒg‚ð‰Šú‰»
roulette = []
# ƒ‹[ƒv
for actor in @actors
# ðŒ‚ÉŠY“–‚·‚éê‡
if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
# ƒAƒNƒ^[‚̃Nƒ‰ƒX‚Ì [ˆÊ’u] ‚ðŽæ“¾
position = $data_classes[actor.class_id].position
# ‘O‰q‚̂Ƃ« n = 4A’†‰q‚̂Ƃ« n = 3AŒã‰q‚̂Ƃ« n = 2
n = 4 - position
# ƒ‹[ƒŒƒbƒg‚ɃAƒNƒ^[‚ð n ‰ñ’ljÁ
n.times do
roulette.push(actor)
end
end
end
# ƒ‹[ƒŒƒbƒg‚̃TƒCƒY‚ª 0 ‚̏ꍇ
if roulette.size == 0
return nil
end
# ƒ‹[ƒŒƒbƒg‚ð‰ñ‚µAƒAƒNƒ^[‚ðŒˆ’è
return roulette[rand(roulette.size)]
end
#------------------------------------------
# œ ‘ΏۃAƒNƒ^[‚̃‰ƒ“ƒ_ƒ€‚ÈŒˆ’è (HP 0)
#------------------------------------------
def random_target_actor_hp0
return random_target_actor(true)
end
#------------------------------------------
# œ ‘ΏۃAƒNƒ^[‚̃Xƒ€[ƒY‚ÈŒˆ’è
# actor_index : ƒAƒNƒ^[ƒCƒ“ƒfƒbƒNƒX
#------------------------------------------
def smooth_target_actor(actor_index)
# ƒAƒNƒ^[‚ðŽæ“¾
actor = @actors[actor_index]
# ƒAƒNƒ^[‚ª‘¶Ý‚·‚éê‡
if actor != nil and actor.exist?
return actor
end
# ƒ‹[ƒv
for actor in @actors
# ƒAƒNƒ^[‚ª‘¶Ý‚·‚éê‡
if actor.exist?
return actor
end
end
end
end
Publicité

Publié dans poubelle

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article