~Site
Accueil
Forum
Admin

~Base de scripts
Scripts de base
Scripts Menu
Scripts Combat
Scripts Systθme
Scripts Modifiιs

Scripts de Base
Game_Temp
Game_System
Game_Switches
Game_Variables
Game_SelfSwitches
Game_Screen
Game_Picture
Game_Battler 1
Game_Battler 2
Game_Battler 3
Game_BattleAction
Game_Actor
Game_Enemy
Game_Actors
Game_Party
Game_Troop
Game_Map
Game_CommonEvent
Game_Character 1
Game_Character 2
Game_Character 3
Game_Event
Game_Player
Sprite_Character
Sprite_Battler
Sprite_Picture
Sprite_Timer
Spriteset_Map
Spriteset_Battle
Window_Base
Window_Selectable
Window_Command
Window_Help
Window_Gold
Window_PlayTime
Window_Steps
Window_MenuStatus
Window_Item
Window_Skill
Window_SkillStatus
Window_Target
Window_EquipLeft
Window_EquipRight
Window_EquipItem
Window_Status
Window_SaveFile
Window_ShopCommand
Window_ShopBuy
Window_ShopSell
Window_ShopNumber
Window_ShopStatus
Window_NameEdit
Window_NameInput
Window_InputNumber
Window_Message
Window_PartyCommand
Window_BattleStatus
Window_BattleResult
Window_DebugLeft
Window_DebugRight
Window_Dataset
Arrow_Base
Arrow_Enemy
Arrow_Actor
Interpreter 1
Interpreter 2
Interpreter 3
Interpreter 4
Interpreter 5
Interpreter 6
Interpreter 7
Scene_Title
Scene_Map
Scene_Menu
Scene_Item
Scene_Skill
Scene_Equip
Scene_Status
Scene_File
Scene_Save
Scene_Load
Scene_End
Scene_Battle 1
Scene_Battle 2
Scene_Battle 3
Scene_Battle 4
Scene_Shop
Scene_Name
Scene_Gameover
Scene_Debug
Main


Game_Party ::: postι le 2006-02-16 @ 08:57:00
Auteur: Yukihiro matsumoto

#============================================
# ‘ 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ƒ^[‚π’Η‰Α
@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 ‰ρ’Η‰Α
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
Design By RaZ © Watery Build 2005