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

Methods
A
B
C
D
E
G
H
I
L
M
N
O
P
R
S
T
U
W
Constants
ABILITY_ENCOUNTER_HALF = 0
 

定数

ABILITY_ENCOUNTER_NONE = 1
 
ABILITY_CANCEL_SURPRISE = 2
 
ABILITY_RAISE_PREEMPTIVE = 3
 
ABILITY_GOLD_DOUBLE = 4
 
ABILITY_DROP_ITEM_DOUBLE = 5
 
Attributes
[R] gold

公開インスタンス変数

[R] last_item
[R] steps
Class Public methods
new()

オブジェクト初期化

# File Game_Party.rb, line 28
def initialize
  super
  @gold = 0
  @steps = 0
  @last_item = Game_BaseItem.new
  @menu_actor_id = 0
  @target_actor_id = 0
  @actors = []
  init_all_items
end
Instance Public methods
add_actor(actor_id)

アクターを加える

# File Game_Party.rb, line 192
def add_actor(actor_id)
  @actors.push(actor_id) unless @actors.include?(actor_id)
  $game_player.refresh
  $game_map.need_refresh = true
end
all_dead?()

全滅判定

# File Game_Party.rb, line 336
def all_dead?
  super && ($game_party.in_battle || members.size > 0)
end
all_items()

全てのアイテムオブジェクトの配列取得

# File Game_Party.rb, line 121
def all_items
  items + equip_items
end
all_members()

全メンバーの取得

# File Game_Party.rb, line 65
def all_members
  @actors.collect {|id| $game_actors[id] }
end
armors()

防具オブジェクトの配列取得

# File Game_Party.rb, line 107
def armors
  @armors.keys.sort.collect {|id| $data_armors[id] }
end
battle_members()

バトルメンバーの取得

# File Game_Party.rb, line 72
def battle_members
  all_members[0, max_battle_members].select {|actor| actor.exist? }
end
cancel_surprise?()

不意打ち無効?

# File Game_Party.rb, line 434
def cancel_surprise?
  party_ability(ABILITY_CANCEL_SURPRISE)
end
characters_for_savefile()

セーブファイル表示用のキャラクター画像情報

# File Game_Party.rb, line 404
def characters_for_savefile
  battle_members.collect do |actor|
    [actor.character_name, actor.character_index]
  end
end
consume_item(item)

アイテムの消耗

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

# File Game_Party.rb, line 315
def consume_item(item)
  lose_item(item, 1) if item.is_a?(RPG::Item) && item.consumable
end
discard_members_equip(item, amount)

メンバーの装備品を破棄する

# File Game_Party.rb, line 293
def discard_members_equip(item, amount)
  n = amount
  members.each do |actor|
    while n > 0 && actor.equips.include?(item)
      actor.discard_equip(item)
      n -= 1
    end
  end
end
drop_item_double?()

アイテム入手率二倍?

# File Game_Party.rb, line 455
def drop_item_double?
  party_ability(ABILITY_DROP_ITEM_DOUBLE)
end
encounter_half?()

エンカウント半減?

# File Game_Party.rb, line 420
def encounter_half?
  party_ability(ABILITY_ENCOUNTER_HALF)
end
encounter_none?()

エンカウント無効?

# File Game_Party.rb, line 427
def encounter_none?
  party_ability(ABILITY_ENCOUNTER_NONE)
end
equip_items()

全ての装備品オブジェクトの配列取得

# File Game_Party.rb, line 114
def equip_items
  weapons + armors
end
exists()

存在判定

# File Game_Party.rb, line 51
def exists
  !@actors.empty?
end
gain_gold(amount)

所持金の増加(減少)

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

アイテムの増加(減少)

include_equip : 装備品も含める

# File Game_Party.rb, line 277
def gain_item(item, amount, include_equip = false)
  container = item_container(item.class)
  return unless container
  last_number = item_number(item)
  new_number = last_number + amount
  container[item.id] = [[new_number, 0].max, max_item_number(item)].min
  container.delete(item.id) if container[item.id] == 0
  if include_equip && new_number < 0
    discard_members_equip(item, -new_number)
  end
  $game_map.need_refresh = true
end
gold_double?()

獲得金額二倍?

# File Game_Party.rb, line 448
def gold_double?
  party_ability(ABILITY_GOLD_DOUBLE)
end
has_item?(item, include_equip = false)

アイテムの所持判定

include_equip : 装備品も含める

# File Game_Party.rb, line 261
def has_item?(item, include_equip = false)
  return true if item_number(item) > 0
  return include_equip ? members_equip_include?(item) : false
end
highest_level()

パーティメンバーの最も高いレベルの取得

# File Game_Party.rb, line 185
def highest_level
  lv = members.collect {|actor| actor.level }.max
end
increase_steps()

歩数増加

# File Game_Party.rb, line 231
def increase_steps
  @steps += 1
end
init_all_items()

全アイテムリストの初期化

# File Game_Party.rb, line 42
def init_all_items
  @items = {}
  @weapons = {}
  @armors = {}
end
inputable?()

戦闘時コマンド入力可能判定

# File Game_Party.rb, line 329
def inputable?
  members.any? {|actor| actor.inputable? }
end
item_container(item_class)

アイテムのクラスに対応するコンテナオブジェクトを取得

# File Game_Party.rb, line 128
def item_container(item_class)
  return @items   if item_class == RPG::Item
  return @weapons if item_class == RPG::Weapon
  return @armors  if item_class == RPG::Armor
  return nil
end
item_max?(item)

アイテムを最大まで所持しているか判定

# File Game_Party.rb, line 253
def item_max?(item)
  item_number(item) >= max_item_number(item)
end
item_number(item)

アイテムの所持数取得

# File Game_Party.rb, line 238
def item_number(item)
  container = item_container(item.class)
  container ? container[item.id] || 0 : 0
end
items()

アイテムオブジェクトの配列取得

# File Game_Party.rb, line 93
def items
  @items.keys.sort.collect {|id| $data_items[id] }
end
leader()

リーダーの取得

# File Game_Party.rb, line 86
def leader
  battle_members[0]
end
lose_gold(amount)

所持金の減少

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

アイテムの減少

include_equip : 装備品も含める

# File Game_Party.rb, line 307
def lose_item(item, amount, include_equip = false)
  gain_item(item, -amount, include_equip)
end
max_battle_members()

バトルメンバーの最大数を取得

# File Game_Party.rb, line 79
def max_battle_members
  return 4
end
max_gold()

所持金の最大値を取得

# File Game_Party.rb, line 224
def max_gold
  return 99999999
end
max_item_number(item)

アイテムの最大所持数取得

# File Game_Party.rb, line 246
def max_item_number(item)
  return 99
end
members()

メンバーの取得

# File Game_Party.rb, line 58
def members
  in_battle ? battle_members : all_members
end
members_equip_include?(item)

指定アイテムがメンバーの装備品に含まれているかを判定

# File Game_Party.rb, line 269
def members_equip_include?(item)
  members.any? {|actor| actor.equips.include?(item) }
end
menu_actor()

メニュー画面で選択中のアクターを取得

# File Game_Party.rb, line 350
def menu_actor
  $game_actors[@menu_actor_id] || members[0]
end
menu_actor=(actor)

メニュー画面で選択中のアクターを設定

# File Game_Party.rb, line 357
def menu_actor=(actor)
  @menu_actor_id = actor.id
end
menu_actor_next()

メニュー画面で次のアクターを選択

# File Game_Party.rb, line 364
def menu_actor_next
  index = members.index(menu_actor) || -1
  index = (index + 1) % members.size
  self.menu_actor = members[index]
end
menu_actor_prev()

メニュー画面で前のアクターを選択

# File Game_Party.rb, line 373
def menu_actor_prev
  index = members.index(menu_actor) || 1
  index = (index + members.size - 1) % members.size
  self.menu_actor = members[index]
end
name()

パーティ名の取得

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

# File Game_Party.rb, line 146
def name
  return ""           if battle_members.size == 0
  return leader.name  if battle_members.size == 1
  return sprintf(Vocab::PartyName, leader.name)
end
on_player_walk()

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

# File Game_Party.rb, line 343
def on_player_walk
  members.each {|actor| actor.on_player_walk }
end
party_ability(ability_id)

パーティ能力判定

# File Game_Party.rb, line 413
def party_ability(ability_id)
  battle_members.any? {|actor| actor.party_ability(ability_id) }
end
raise_preemptive?()

先制攻撃率アップ?

# File Game_Party.rb, line 441
def raise_preemptive?
  party_ability(ABILITY_RAISE_PREEMPTIVE)
end
rate_preemptive(troop_agi)

先制攻撃の確率計算

# File Game_Party.rb, line 462
def rate_preemptive(troop_agi)
  (agi >= troop_agi ? 0.05 : 0.03) * (raise_preemptive? ? 4 : 1)
end
rate_surprise(troop_agi)

不意打ちの確率計算

# File Game_Party.rb, line 469
def rate_surprise(troop_agi)
  cancel_surprise? ? 0 : (agi >= troop_agi ? 0.03 : 0.05)
end
remove_actor(actor_id)

アクターを外す

# File Game_Party.rb, line 201
def remove_actor(actor_id)
  @actors.delete(actor_id)
  $game_player.refresh
  $game_map.need_refresh = true
end
setup_battle_test()

戦闘テストのセットアップ

# File Game_Party.rb, line 155
def setup_battle_test
  setup_battle_test_members
  setup_battle_test_items
end
setup_battle_test_items()

戦闘テスト用アイテムのセットアップ

# File Game_Party.rb, line 176
def setup_battle_test_items
  $data_items.each do |item|
    gain_item(item, max_item_number(item)) if item && !item.name.empty?
  end
end
setup_battle_test_members()

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

# File Game_Party.rb, line 163
def setup_battle_test_members
  $data_system.test_battlers.each do |battler|
    actor = $game_actors[battler.actor_id]
    actor.change_level(battler.level, false)
    actor.init_equips(battler.equips)
    actor.recover_all
    add_actor(actor.id)
  end
end
setup_starting_members()

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

# File Game_Party.rb, line 138
def setup_starting_members
  @actors = $data_system.party_members.clone
end
swap_order(index1, index2)

順序入れ替え

# File Game_Party.rb, line 396
def swap_order(index1, index2)
  @actors[index1], @actors[index2] = @actors[index2], @actors[index1]
  $game_player.refresh
end
target_actor()

スキル/アイテムの使用対象となったアクターを取得

# File Game_Party.rb, line 382
def target_actor
  $game_actors[@target_actor_id] || members[0]
end
target_actor=(actor)

スキル/アイテムの使用対象となったアクターを設定

# File Game_Party.rb, line 389
def target_actor=(actor)
  @target_actor_id = actor.id
end
usable?(item)

スキル/アイテムの使用可能判定

# File Game_Party.rb, line 322
def usable?(item)
  members.any? {|actor| actor.usable?(item) }
end
weapons()

武器オブジェクトの配列取得

# File Game_Party.rb, line 100
def weapons
  @weapons.keys.sort.collect {|id| $data_weapons[id] }
end