This class handles parties. Information such as gold and items is included. Instances of this class are referenced by $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
 

Constants

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

Public Instance Variables

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

Object Initialization

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

Add an Actor

# File Game_Party.rb, line 193
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?()

Determine if Everyone is Dead

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

Get Array of All Item Objects

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

Get All Members

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

Get Armor Object Array

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

Get Battle Members

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

Disable Surprise?

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

Character Image Information for Save File Display

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

Consume Items

If the specified object is a consumable item, the number in investory will be reduced by 1.

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

Discard Members’ Equipment

# File Game_Party.rb, line 294
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?()

Double Item Acquisition Rate?

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

Halve Encounters?

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

Disable Encounters?

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

Get Array of All Equipment Objects

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

Determine Existence

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

Increase Gold

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

Increase/Decrease Items

include_equip : Include equipped items

# File Game_Party.rb, line 278
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?()

Double Money Earned?

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

Determine Item Possession Status

include_equip : Include equipped items

# File Game_Party.rb, line 262
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()

Get Highest Level of Party Members

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

Increase Steps

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

Initialize All Item Lists

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

Determine Command Inputability During Battle

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

Get Container Object Corresponding to 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)

Determine if Maximum Number of Items Are Possessed

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

Get Number of Items Possessed

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

Get Item Object Array

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

Get Leader

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

Decrease Gold

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

Lose Items

include_equip : Include equipped items

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

Get Maximum Number of Battle Members

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

Get Maximum Value of Gold

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

Get Maximum Number of Items Possessed

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

Get Members

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

Determine if Specified Item Is Included in Members’ Equipment

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

Get Actor Selected on Menu Screen

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

Set Actor Selected on Menu Screen

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

Select Next Actor on Menu Screen

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

Select Previous Actor on Menu Screen

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

Get Party Name

If there is only one, returns the actor’s name. If there are more, returns “XX’s Party”.

# File Game_Party.rb, line 147
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()

Processing Performed When Player Takes 1 Step

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

Determine Party Ability

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

Increase Preemptive Strike Rate?

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

Calculate Probability of Preemptive Attack

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

Calculate Probability of Surprise

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

Remove Actor

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

Set Up Battle Test

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

Set Up Items for Battle Test

# File Game_Party.rb, line 177
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()

Battle Test Party Setup

# File Game_Party.rb, line 164
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()

Initial Party Setup

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

Change Order

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

Get Actor Targeted by Skill/Item Use

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

Set Actor Targeted by Skill/Item Use

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

Determine Skill/Item Usability

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

Get Weapon Object Array

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