パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク ラスのインスタンスは $game_party で参照されます。

Methods
A
C
D
G
H
I
L
M
N
O
R
S
Constants
MAX_MEMBERS = 4
 

定数

Attributes
[R] gold

公開インスタンス変数

[RW] last_actor_index
[RW] last_item_id
[RW] last_target_index
[R] steps
Class Public methods
new()

オブジェクト初期化

# 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
Instance Public methods
add_actor(actor_id)

アクターを加える

actor_id : アクター ID

# 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
all_dead?()

全滅判定

# 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
consume_item(item)

アイテムの消耗

item : アイテム 指定されたオブジェクトが消耗アイテムであれば、所持数を 1 減らす。

# 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
do_auto_recovery()

自動回復の実行 (ターン終了時に呼び出し)

# File Game_Party.rb, line 303
def do_auto_recovery
  for actor in members
    actor.do_auto_recovery
  end
end
gain_gold(n)

ゴールドの増加 (減少)

n : 金額

# File Game_Party.rb, line 150
def gain_gold(n)
  @gold = [[@gold + n, 0].max, 9999999].min
end
gain_item(item, n, include_equip = false)

アイテムの増加 (減少)

item : アイテム n : 個数 include_equip : 装備品も含める

# 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
has_item?(item, include_equip = false)

アイテムの所持判定

item : アイテム include_equip : 装備品も含める

# 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
increase_steps()

歩数増加

# File Game_Party.rb, line 165
def increase_steps
  @steps += 1
end
inputable?()

コマンド入力可能判定

自動戦闘は入力可能として扱う。

# File Game_Party.rb, line 268
def inputable?
  for actor in members
    return true if actor.inputable?
  end
  return false
end
item_can_use?(item)

アイテムの使用可能判定

item : アイテム

# 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_number(item)

アイテムの所持数取得

item : アイテム

# 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
items()

アイテムオブジェクトの配列取得 (武器と防具を含む)

# 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
lose_gold(n)

ゴールドの減少

n : 金額

# File Game_Party.rb, line 158
def lose_gold(n)
  gain_gold(-n)
end
lose_item(item, n, include_equip = false)

アイテムの減少

item : アイテム n : 個数 include_equip : 装備品も含める

# File Game_Party.rb, line 235
def lose_item(item, n, include_equip = false)
  gain_item(item, -n, include_equip)
end
max_level()

最大レベルの取得

# 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
members()

メンバーの取得

# File Game_Party.rb, line 41
def members
  result = []
  for i in @actors
    result.push($game_actors[i])
  end
  return result
end
name()

パーティ名の取得

一人ならそのアクターの名前、複数なら “○○たち” を返す。

# 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
on_player_walk()

プレイヤーが 1 歩動いたときの処理

# 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
remove_actor(actor_id)

アクターを外す

actor_id : アクター ID

# File Game_Party.rb, line 141
def remove_actor(actor_id)
  @actors.delete(actor_id)
  $game_player.refresh
end
remove_states_battle()

戦闘用ステートの解除 (戦闘終了時に呼び出し)

# File Game_Party.rb, line 312
def remove_states_battle
  for actor in members
    actor.remove_states_battle
  end
end
setup_battle_test_members()

戦闘テスト用パーティのセットアップ

# 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
setup_starting_members()

初期パーティのセットアップ

# File Game_Party.rb, line 69
def setup_starting_members
  @actors = []
  for i in $data_system.party_members
    @actors.push(i)
  end
end