Class: Game_Party

Inherits:
Game_Unit show all
Defined in:
lib/rgss3_default_scripts/Game_Party.rb

Overview

** Game_Party


This class handles parties. Information such as gold and items is included.

Instances of this class are referenced by $game_party.

Constant Summary collapse

ABILITY_ENCOUNTER_HALF =

  • Constants


0
ABILITY_ENCOUNTER_NONE =

halve encounters

1
ABILITY_CANCEL_SURPRISE =

disable encounters

2
ABILITY_RAISE_PREEMPTIVE =

disable surprise

3
ABILITY_GOLD_DOUBLE =

increase preemptive strike rate

4
ABILITY_DROP_ITEM_DOUBLE =

double money earned

5

Instance Attribute Summary collapse

Attributes inherited from Game_Unit

#in_battle

Instance Method Summary collapse

Methods inherited from Game_Unit

#agi, #alive_members, #clear_actions, #clear_results, #dead_members, #make_actions, #movable_members, #on_battle_end, #on_battle_start, #random_dead_target, #random_target, #smooth_dead_target, #smooth_target, #substitute_battler, #tgr_sum

Constructor Details

#initializeGame_Party


  • Object Initialization




27
28
29
30
31
32
33
34
35
36
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 27

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 Attribute Details

#goldObject (readonly)


  • Public Instance Variables




21
22
23
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 21

def gold
  @gold
end

#last_itemObject (readonly)

for cursor memorization: item



23
24
25
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 23

def last_item
  @last_item
end

#stepsObject (readonly)

number of steps



22
23
24
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 22

def steps
  @steps
end

Instance Method Details

#add_actor(actor_id) ⇒ Object


  • Add an Actor




172
173
174
175
176
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 172

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?Boolean


  • Determine if Everyone is Dead


Returns:

  • (Boolean)


300
301
302
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 300

def all_dead?
  super && ($game_party.in_battle || members.size > 0)
end

#all_itemsObject


  • Get Array of All Item Objects




108
109
110
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 108

def all_items
  items + equip_items
end

#all_membersObject


  • Get All Members




60
61
62
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 60

def all_members
  @actors.collect {|id| $game_actors[id] }
end

#armorsObject


  • Get Armor Object Array




96
97
98
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 96

def armors
  @armors.keys.sort.collect {|id| $data_armors[id] }
end

#battle_membersObject


  • Get Battle Members




66
67
68
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 66

def battle_members
  all_members[0, max_battle_members].select {|actor| actor.exist? }
end

#cancel_surprise?Boolean


  • Disable Surprise?


Returns:

  • (Boolean)


385
386
387
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 385

def cancel_surprise?
  party_ability(ABILITY_CANCEL_SURPRISE)
end

#characters_for_savefileObject


  • Character Image Information for Save File Display




359
360
361
362
363
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 359

def characters_for_savefile
  battle_members.collect do |actor|
    [actor.character_name, actor.character_index]
  end
end

#consume_item(item) ⇒ Object


  • Consume Items

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



282
283
284
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 282

def consume_item(item)
  lose_item(item, 1) if item.is_a?(RPG::Item) && item.consumable
end

#discard_members_equip(item, amount) ⇒ Object


  • Discard Members’ Equipment




261
262
263
264
265
266
267
268
269
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 261

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?Boolean


  • Double Item Acquisition Rate?


Returns:

  • (Boolean)


403
404
405
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 403

def drop_item_double?
  party_ability(ABILITY_DROP_ITEM_DOUBLE)
end

#encounter_half?Boolean


  • Halve Encounters?


Returns:

  • (Boolean)


373
374
375
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 373

def encounter_half?
  party_ability(ABILITY_ENCOUNTER_HALF)
end

#encounter_none?Boolean


  • Disable Encounters?


Returns:

  • (Boolean)


379
380
381
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 379

def encounter_none?
  party_ability(ABILITY_ENCOUNTER_NONE)
end

#equip_itemsObject


  • Get Array of All Equipment Objects




102
103
104
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 102

def equip_items
  weapons + armors
end

#existsObject


  • Determine Existence




48
49
50
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 48

def exists
  !@actors.empty?
end

#gain_gold(amount) ⇒ Object


  • Increase Gold




188
189
190
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 188

def gain_gold(amount)
  @gold = [[@gold + amount, 0].max, max_gold].min
end

#gain_item(item, amount, include_equip = false) ⇒ Object


  • Increase/Decrease Items

    include_equip : Include equipped items
    



246
247
248
249
250
251
252
253
254
255
256
257
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 246

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?Boolean


  • Double Money Earned?


Returns:

  • (Boolean)


397
398
399
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 397

def gold_double?
  party_ability(ABILITY_GOLD_DOUBLE)
end

#has_item?(item, include_equip = false) ⇒ Boolean


  • Determine Item Possession Status

    include_equip : Include equipped items
    

Returns:

  • (Boolean)


232
233
234
235
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 232

def has_item?(item, include_equip = false)
  return true if item_number(item) > 0
  return include_equip ? members_equip_include?(item) : false
end

#highest_levelObject


  • Get Highest Level of Party Members




166
167
168
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 166

def highest_level
  lv = members.collect {|actor| actor.level }.max
end

#increase_stepsObject


  • Increase Steps




206
207
208
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 206

def increase_steps
  @steps += 1
end

#init_all_itemsObject


  • Initialize All Item Lists




40
41
42
43
44
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 40

def init_all_items
  @items = {}
  @weapons = {}
  @armors = {}
end

#inputable?Boolean


  • Determine Command Inputability During Battle


Returns:

  • (Boolean)


294
295
296
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 294

def inputable?
  members.any? {|actor| actor.inputable? }
end

#item_container(item_class) ⇒ Object


  • Get Container Object Corresponding to Item Class




114
115
116
117
118
119
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 114

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) ⇒ Boolean


  • Determine if Maximum Number of Items Are Possessed


Returns:

  • (Boolean)


225
226
227
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 225

def item_max?(item)
  item_number(item) >= max_item_number(item)
end

#item_number(item) ⇒ Object


  • Get Number of Items Possessed




212
213
214
215
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 212

def item_number(item)
  container = item_container(item.class)
  container ? container[item.id] || 0 : 0
end

#itemsObject


  • Get Item Object Array




84
85
86
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 84

def items
  @items.keys.sort.collect {|id| $data_items[id] }
end

#leaderObject


  • Get Leader




78
79
80
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 78

def leader
  battle_members[0]
end

#lose_gold(amount) ⇒ Object


  • Decrease Gold




194
195
196
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 194

def lose_gold(amount)
  gain_gold(-amount)
end

#lose_item(item, amount, include_equip = false) ⇒ Object


  • Lose Items

    include_equip : Include equipped items
    



274
275
276
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 274

def lose_item(item, amount, include_equip = false)
  gain_item(item, -amount, include_equip)
end

#max_battle_membersObject


  • Get Maximum Number of Battle Members




72
73
74
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 72

def max_battle_members
  return 4
end

#max_goldObject


  • Get Maximum Value of Gold




200
201
202
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 200

def max_gold
  return 99999999
end

#max_item_number(item) ⇒ Object


  • Get Maximum Number of Items Possessed




219
220
221
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 219

def max_item_number(item)
  return 99
end

#membersObject


  • Get Members




54
55
56
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 54

def members
  in_battle ? battle_members : all_members
end

#members_equip_include?(item) ⇒ Boolean


  • Determine if Specified Item Is Included in Members’ Equipment


Returns:

  • (Boolean)


239
240
241
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 239

def members_equip_include?(item)
  members.any? {|actor| actor.equips.include?(item) }
end

  • Get Actor Selected on Menu Screen




312
313
314
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 312

def menu_actor
  $game_actors[@menu_actor_id] || members[0]
end

  • Set Actor Selected on Menu Screen




318
319
320
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 318

def menu_actor=(actor)
  @menu_actor_id = actor.id
end

  • Select Next Actor on Menu Screen




324
325
326
327
328
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 324

def menu_actor_next
  index = members.index(menu_actor) || -1
  index = (index + 1) % members.size
  self.menu_actor = members[index]
end

  • Select Previous Actor on Menu Screen




332
333
334
335
336
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 332

def menu_actor_prev
  index = members.index(menu_actor) || 1
  index = (index + members.size - 1) % members.size
  self.menu_actor = members[index]
end

#nameObject


  • Get Party Name

    If there is only one, returns the actor's name.
    If there are more, returns "XX's Party".
    



131
132
133
134
135
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 131

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_walkObject


  • Processing Performed When Player Takes 1 Step




306
307
308
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 306

def on_player_walk
  members.each {|actor| actor.on_player_walk }
end

#party_ability(ability_id) ⇒ Object


  • Determine Party Ability




367
368
369
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 367

def party_ability(ability_id)
  battle_members.any? {|actor| actor.party_ability(ability_id) }
end

#raise_preemptive?Boolean


  • Increase Preemptive Strike Rate?


Returns:

  • (Boolean)


391
392
393
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 391

def raise_preemptive?
  party_ability(ABILITY_RAISE_PREEMPTIVE)
end

#rate_preemptive(troop_agi) ⇒ Object


  • Calculate Probability of Preemptive Attack




409
410
411
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 409

def rate_preemptive(troop_agi)
  (agi >= troop_agi ? 0.05 : 0.03) * (raise_preemptive? ? 4 : 1)
end

#rate_surprise(troop_agi) ⇒ Object


  • Calculate Probability of Surprise




415
416
417
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 415

def rate_surprise(troop_agi)
  cancel_surprise? ? 0 : (agi >= troop_agi ? 0.03 : 0.05)
end

#remove_actor(actor_id) ⇒ Object


  • Remove Actor




180
181
182
183
184
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 180

def remove_actor(actor_id)
  @actors.delete(actor_id)
  $game_player.refresh
  $game_map.need_refresh = true
end

#setup_battle_testObject


  • Set Up Battle Test




139
140
141
142
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 139

def setup_battle_test
  setup_battle_test_members
  setup_battle_test_items
end

#setup_battle_test_itemsObject


  • Set Up Items for Battle Test




158
159
160
161
162
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 158

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_membersObject


  • Battle Test Party Setup




146
147
148
149
150
151
152
153
154
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 146

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_membersObject


  • Initial Party Setup




123
124
125
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 123

def setup_starting_members
  @actors = $data_system.party_members.clone
end

#swap_order(index1, index2) ⇒ Object


  • Change Order




352
353
354
355
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 352

def swap_order(index1, index2)
  @actors[index1], @actors[index2] = @actors[index2], @actors[index1]
  $game_player.refresh
end

#target_actorObject


  • Get Actor Targeted by Skill/Item Use




340
341
342
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 340

def target_actor
  $game_actors[@target_actor_id] || members[0]
end

#target_actor=(actor) ⇒ Object


  • Set Actor Targeted by Skill/Item Use




346
347
348
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 346

def target_actor=(actor)
  @target_actor_id = actor.id
end

#usable?(item) ⇒ Boolean


  • Determine Skill/Item Usability


Returns:

  • (Boolean)


288
289
290
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 288

def usable?(item)
  members.any? {|actor| actor.usable?(item) }
end

#weaponsObject


  • Get Weapon Object Array




90
91
92
# File 'lib/rgss3_default_scripts/Game_Party.rb', line 90

def weapons
  @weapons.keys.sort.collect {|id| $data_weapons[id] }
end