パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク ラスのインスタンスは $game_party で参照されます。
- A
- C
- D
- G
- H
- I
- L
- M
- N
- O
- R
- S
| MAX_MEMBERS | = | 4 |
定数 |
||
| [R] | gold | 公開インスタンス変数 |
| [RW] | last_actor_index | |
| [RW] | last_item_id | |
| [RW] | last_target_index | |
| [R] | steps |
オブジェクト初期化
Source: show
# File Game_Party.rb, line 25 def initialize super @gold = 0 @steps = 0 @last_item_id = 0 @last_actor_index = 0 @last_target_index = 0 @actors = [] # パーティメンバー (アクター ID) @items = {} # 所持品ハッシュ (アイテム ID) @weapons = {} # 所持品ハッシュ (武器 ID) @armors = {} # 所持品ハッシュ (防具 ID) end
アクターを加える
actor_id : アクター ID
Source: show
# File Game_Party.rb, line 130 def add_actor(actor_id) if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id) @actors.push(actor_id) $game_player.refresh end end
全滅判定
Source: show
# File Game_Party.rb, line 278 def all_dead? if @actors.size == 0 and not $game_temp.in_battle return false end return existing_members.empty? end
アイテムの消耗
item : アイテム 指定されたオブジェクトが消耗アイテムであれば、所持数を 1 減らす。
Source: show
# File Game_Party.rb, line 244 def consume_item(item) if item.is_a?(RPG::Item) and item.consumable lose_item(item, 1) end end
自動回復の実行 (ターン終了時に呼び出し)
Source: show
# File Game_Party.rb, line 303 def do_auto_recovery for actor in members actor.do_auto_recovery end end
ゴールドの増加 (減少)
n : 金額
Source: show
# File Game_Party.rb, line 150 def gain_gold(n) @gold = [[@gold + n, 0].max, 9999999].min end
アイテムの増加 (減少)
item : アイテム n : 個数 include_equip : 装備品も含める
Source: show
# File Game_Party.rb, line 208 def gain_item(item, n, include_equip = false) number = item_number(item) case item when RPG::Item @items[item.id] = [[number + n, 0].max, 99].min when RPG::Weapon @weapons[item.id] = [[number + n, 0].max, 99].min when RPG::Armor @armors[item.id] = [[number + n, 0].max, 99].min end n += number if include_equip and n < 0 for actor in members while n < 0 and actor.equips.include?(item) actor.discard_equip(item) n += 1 end end end end
アイテムの所持判定
item : アイテム include_equip : 装備品も含める
Source: show
# File Game_Party.rb, line 190 def has_item?(item, include_equip = false) if item_number(item) > 0 return true end if include_equip for actor in members return true if actor.equips.include?(item) end end return false end
歩数増加
Source: show
# File Game_Party.rb, line 165 def increase_steps @steps += 1 end
コマンド入力可能判定
自動戦闘は入力可能として扱う。
Source: show
# File Game_Party.rb, line 268 def inputable? for actor in members return true if actor.inputable? end return false end
アイテムの使用可能判定
item : アイテム
Source: show
# File Game_Party.rb, line 254 def item_can_use?(item) return false unless item.is_a?(RPG::Item) return false if item_number(item) == 0 if $game_temp.in_battle return item.battle_ok? else return item.menu_ok? end end
アイテムの所持数取得
item : アイテム
Source: show
# File Game_Party.rb, line 173 def item_number(item) case item when RPG::Item number = @items[item.id] when RPG::Weapon number = @weapons[item.id] when RPG::Armor number = @armors[item.id] end return number == nil ? 0 : number end
アイテムオブジェクトの配列取得 (武器と防具を含む)
Source: show
# File Game_Party.rb, line 52 def items result = [] for i in @items.keys.sort result.push($data_items[i]) if @items[i] > 0 end for i in @weapons.keys.sort result.push($data_weapons[i]) if @weapons[i] > 0 end for i in @armors.keys.sort result.push($data_armors[i]) if @armors[i] > 0 end return result end
ゴールドの減少
n : 金額
Source: show
# File Game_Party.rb, line 158 def lose_gold(n) gain_gold(-n) end
アイテムの減少
item : アイテム n : 個数 include_equip : 装備品も含める
Source: show
# File Game_Party.rb, line 235 def lose_item(item, n, include_equip = false) gain_item(item, -n, include_equip) end
最大レベルの取得
Source: show
# File Game_Party.rb, line 117 def max_level level = 0 for i in @actors actor = $game_actors[i] level = actor.level if level < actor.level end return level end
メンバーの取得
Source: show
# File Game_Party.rb, line 41 def members result = [] for i in @actors result.push($game_actors[i]) end return result end
パーティ名の取得
一人ならそのアクターの名前、複数なら “○○たち” を返す。
Source: show
# File Game_Party.rb, line 80 def name if @actors.size == 0 return '' elsif @actors.size == 1 return members[0].name else return sprintf(Vocab::PartyName, members[0].name) end end
プレイヤーが 1 歩動いたときの処理
Source: show
# File Game_Party.rb, line 288 def on_player_walk for actor in members if actor.slip_damage? actor.hp -= 1 if actor.hp > 1 # 毒ダメージ $game_map.screen.start_flash(Color.new(255,0,0,64), 4) end if actor.auto_hp_recover and actor.hp > 0 actor.hp += 1 # HP 自動回復 end end end
アクターを外す
actor_id : アクター ID
Source: show
# File Game_Party.rb, line 141 def remove_actor(actor_id) @actors.delete(actor_id) $game_player.refresh end
戦闘用ステートの解除 (戦闘終了時に呼び出し)
Source: show
# File Game_Party.rb, line 312 def remove_states_battle for actor in members actor.remove_states_battle end end
戦闘テスト用パーティのセットアップ
Source: show
# File Game_Party.rb, line 93 def setup_battle_test_members @actors = [] for battler in $data_system.test_battlers actor = $game_actors[battler.actor_id] actor.change_level(battler.level, false) actor.change_equip_by_id(0, battler.weapon_id, true) actor.change_equip_by_id(1, battler.armor1_id, true) actor.change_equip_by_id(2, battler.armor2_id, true) actor.change_equip_by_id(3, battler.armor3_id, true) actor.change_equip_by_id(4, battler.armor4_id, true) actor.recover_all @actors.push(actor.id) end @items = {} for i in 1...$data_items.size if $data_items[i].battle_ok? @items[i] = 99 unless $data_items[i].name.empty? end end end