#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# This class handles the party. It includes information on amount of gold
# and items. Refer to "$game_party" for the instance of this class.
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :actors # actors
attr_reader :gold # amount of gold
attr_reader :steps # number of steps
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# Create actor array
@actors = []
# Initialize amount of gold and steps
@gold = 0
@steps = 0
# Create amount in possession hash for items, weapons, and armor
@items = {}
@weapons = {}
@armors = {}
end
#--------------------------------------------------------------------------
# * Initial Party Setup
#--------------------------------------------------------------------------
def setup_starting_members
@actors = []
for i in $data_system.party_members
@actors.push($game_actors[i])
end
end
#--------------------------------------------------------------------------
# * Battle Test Party Setup
#--------------------------------------------------------------------------
def setup_battle_test_members
@actors = []
for battler in $data_system.test_battlers
actor = $game_actors[battler.actor_id]
actor.level = battler.level
Here ->gain_weapon(battler.weapon_id, 1)
gain_armor(battler.armor1_id, 1)
gain_armor(battler.armor2_id, 1)
gain_armor(battler.armor3_id, 1)
gain_armor(battler.armor4_id, 1)
gain_armor(battler.armor5_id, 1)
actor.equip(0, battler.weapon_id)
actor.equip(1, battler.armor1_id)
actor.equip(2, battler.armor2_id)
actor.equip(3, battler.armor3_id)
actor.equip(4, battler.armor4_id)
actor.equip(5, battler.armor4_id)<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<here
actor.recover_all
@actors.push(actor)
end
@items = {}
for i in 1...$data_items.size
if $data_items[i].name != ""
occasion = $data_items[i].occasion
if occasion == 0 or occasion == 1
@items[i] = 99
end
end
end
end
#--------------------------------------------------------------------------
# * Refresh Party Members
#--------------------------------------------------------------------------
def refresh
# Actor objects split from $game_actors right after loading game data
# Avoid this problem by resetting the actors each time data is loaded.
new_actors = []
for i in 0...@actors.size
if $data_actors[@actors[i].id] != nil
new_actors.push($game_actors[@actors[i].id])
end
end
@actors = new_actors
end
#--------------------------------------------------------------------------
# * Getting Maximum Level
#--------------------------------------------------------------------------
def max_level
# If 0 members are in the party
if @actors.size == 0
return 0
end
# Initialize local variable: level
level = 0
# Get maximum level of party members
for actor in @actors
if level < actor.level
level = actor.level
end
end
return level
end
#--------------------------------------------------------------------------
# * Add an Actor
# actor_id : actor ID
#--------------------------------------------------------------------------
def add_actor(actor_id)
# Get actor
actor = $game_actors[actor_id]
# If the party has less than 5 members and this actor is not in the party
if @actors.size < 5 and not @actors.include?(actor)
# Add actor
@actors.push(actor)
# Refresh player
$game_player.refresh
end
end
#--------------------------------------------------------------------------
# * Remove Actor
# actor_id : actor ID
#--------------------------------------------------------------------------
def remove_actor(actor_id)
# Delete actor
@actors.delete($game_actors[actor_id])
# Refresh player
$game_player.refresh
end
#--------------------------------------------------------------------------
# * Gain Gold (or lose)
# n : amount of gold
#--------------------------------------------------------------------------
def gain_gold(n)
@gold = [[@gold + n, 0].max, 9999999].min
end
#--------------------------------------------------------------------------
# * Lose Gold
# n : amount of gold
#--------------------------------------------------------------------------
def lose_gold(n)
# Reverse the numerical value and call it gain_gold
gain_gold(-n)
end
#--------------------------------------------------------------------------
# * Increase Steps
#--------------------------------------------------------------------------
def increase_steps
@steps = [@steps + 1, 9999999].min
end
#--------------------------------------------------------------------------
# * Get Number of Items Possessed
# item_id : item ID
#--------------------------------------------------------------------------
def item_number(item_id)
# If quantity data is in the hash, use it. If not, return 0
return @items.include?(item_id) ? @items[item_id] : 0
end
#--------------------------------------------------------------------------
# * Get Number of Weapons Possessed
# weapon_id : weapon ID
#--------------------------------------------------------------------------
def weapon_number(weapon_id)
# If quantity data is in the hash, use it. If not, return 0
return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
end
#--------------------------------------------------------------------------
# * Get Amount of Armor Possessed
# armor_id : armor ID
#--------------------------------------------------------------------------
def armor_number(armor_id)
# If quantity data is in the hash, use it. If not, return 0
return @armors.include?(armor_id) ? @armors[armor_id] : 0
end
#--------------------------------------------------------------------------
# * Gain Items (or lose)
# item_id : item ID
# n : quantity
#--------------------------------------------------------------------------
def gain_item(item_id, n)
# Update quantity data in the hash.
if item_id > 0
@items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
end
end
#--------------------------------------------------------------------------
# * Gain Weapons (or lose)
# weapon_id : weapon ID
# n : quantity
#--------------------------------------------------------------------------
def gain_weapon(weapon_id, n)
# Update quantity data in the hash.
if weapon_id > 0
@weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
end
end
#--------------------------------------------------------------------------
# * Gain Armor (or lose)
# armor_id : armor ID
# n : quantity
#--------------------------------------------------------------------------
def gain_armor(armor_id, n)
# Update quantity data in the hash.
if armor_id > 0
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
end
end
#--------------------------------------------------------------------------
# * Lose Items
# item_id : item ID
# n : quantity
#--------------------------------------------------------------------------
def lose_item(item_id, n)
# Reverse the numerical value and call it gain_item
gain_item(item_id, -n)
end
#--------------------------------------------------------------------------
# * Lose Weapons
# weapon_id : weapon ID
# n : quantity
#--------------------------------------------------------------------------
def lose_weapon(weapon_id, n)
# Reverse the numerical value and call it gain_weapon
gain_weapon(weapon_id, -n)
end
#--------------------------------------------------------------------------
# * Lose Armor
# armor_id : armor ID
# n : quantity
#--------------------------------------------------------------------------
def lose_armor(armor_id, n)
# Reverse the numerical value and call it gain_armor
gain_armor(armor_id, -n)
end
#--------------------------------------------------------------------------
# * Determine if Item is Usable
# item_id : item ID
#--------------------------------------------------------------------------
def item_can_use?(item_id)
# If item quantity is 0
if item_number(item_id) == 0
# Unusable
return false
end
# Get usable time
occasion = $data_items[item_id].occasion
# If in battle
if $game_temp.in_battle
# If useable time is 0 (normal) or 1 (only battle) it's usable
return (occasion == 0 or occasion == 1)
end
# If useable time is 0 (normal) or 2 (only menu) it's usable
return (occasion == 0 or occasion == 2)
end
#--------------------------------------------------------------------------
# * Clear All Member Actions
#--------------------------------------------------------------------------
def clear_actions
# Clear All Member Actions
for actor in @actors
actor.current_action.clear
end
end
#--------------------------------------------------------------------------
# * Determine if Command is Inputable
#--------------------------------------------------------------------------
def inputable?
# Return true if input is possible for one person as well
for actor in @actors
if actor.inputable?
return true
end
end
return false
end
#--------------------------------------------------------------------------
# * Determine Everyone is Dead
#--------------------------------------------------------------------------
def all_dead?
# If number of party members is 0
if $game_party.actors.size == 0
return false
end
# If an actor is in the party with 0 or more HP
for actor in @actors
if actor.hp > 0
return false
end
end
# All members dead
return true
end
#--------------------------------------------------------------------------
# * Slip Damage Check (for map)
#--------------------------------------------------------------------------
def check_map_slip_damage
for actor in @actors
if actor.hp > 0 and actor.slip_damage?
actor.hp -= [actor.maxhp / 100, 1].max
if actor.hp == 0
$game_system.se_play($data_system.actor_collapse_se)
end
$game_screen.start_flash(Color.new(255,0,0,128), 4)
$game_temp.gameover = $game_party.all_dead?
end
end
end
#--------------------------------------------------------------------------
# * Random Selection of Target Actor
# hp0 : limited to actors with 0 HP
#--------------------------------------------------------------------------
def random_target_actor(hp0 = false)
# Initialize roulette
roulette = []
# Loop
for actor in @actors
# If it fits the conditions
if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
# Get actor class [position]
position = $data_classes[actor.class_id].position
# Front guard: n = 4; Mid guard: n = 3; Rear guard: n = 2
n = 4 - position
# Add actor to roulette n times
n.times do
roulette.push(actor)
end
end
end
# If roulette size is 0
if roulette.size == 0
return nil
end
# Spin the roulette, choose an actor
return roulette[rand(roulette.size)]
end
#--------------------------------------------------------------------------
# * Random Selection of Target Actor (HP 0)
#--------------------------------------------------------------------------
def random_target_actor_hp0
return random_target_actor(true)
end
#--------------------------------------------------------------------------
# * Smooth Selection of Target Actor
# actor_index : actor index
#--------------------------------------------------------------------------
def smooth_target_actor(actor_index)
# Get an actor
actor = @actors[actor_index]
# If an actor exists
if actor != nil and actor.exist?
return actor
end
# Loop
for actor in @actors
# If an actor exists
if actor.exist?
return actor
end
end
end
end
actor.equip(4, battler.armor4_id
gain_armor(battler.armor4_id, 1)
#==============================================================================
# BlizzABS
#------------------------------------------------------------------------------
# This is the master control, configuration, utility and battle process
# module for Blizz-ABS.
#==============================================================================
module BlizzABS
#============================================================================
# BlizzABS::Control
#----------------------------------------------------------------------------
# This module provides in-game control configurations.
#============================================================================
module Control
# using other controls instead of arrow keys
CUSTOM_CONTROLS = true
# RMXP default controls will be replaced completely with Blizz-ABS controls
DISABLE_DEFAULT = true
# you can skip this if you have set CUSTOM_CONTROLS to false
# setup the controls as array, but with prefix and suffix "
# i.e.: Let T and R be for cancel => CANCEL = "[Let['T'], Let['R']]"
# for more info about read 1.1.1. of the manual
UP = "[Let['W']]" # move up
LEFT = "[Let['A']]" # move left
DOWN = "[Let['S']]" # move down
RIGHT = "[Let['D']]" # move right
PREVPAGE = "[Let['Q']]" # previous page
NEXTPAGE = "[Let['E']]" # next page
CONFIRM = "[Let['H']]" # confirm selections / pick up items
CANCEL = "[Let['J']]" # cancel selections
ATTACK = "[Let['K']]" # attacking
DEFEND = "[Let['L']]" # defending (hold)
SKILL = "[Let['U']]" # use skill
ITEM = "[Let['I']]" # use item
SELECT = "[Let['O']]" # change leader
HUD = "[Let['Z']]" # HUD on/off if enabled
HOTKEY = "[Let['X']]" # hotkey display on/off if enabled
MINIMAP = "[Let['C']]" # toggle minimap mode if enabled
RUN = "[Let['P']]" # running (hold)
SNEAK = "[Dot]" # sneaking (hold)
JUMP = "[Comma]" # jumping
TURN = "[Let['M']]" # turning around without moving (hold)
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# BlizzABS::Config
#----------------------------------------------------------------------------
# This module provides Blizz-ABS configurations.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
module Config
# should party members follow the leader on the map
CATERPILLAR = true
# how many party member do you use
MAX_PARTY = 5 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<This from 4 to 5
# include all actor IDs who are animated when standing
ANIMATED_IDS = []
# 0 -> 32 pixel tiles, 1 -> 16, 2 -> 8, 3 -> 4, 4 -> 2, 5 -> 1
# careful anything higher than 1 will limit the max speed of char movement
# 0 - max: 6, 1 - max: 6, 2 - max: 5, 3 - max: 4, 4 - max: 3, 5 - max: 2
# I recommend using 2 if you have allies else you can use 3
# note that this can also cause problems with running and sneaking
PIXEL_MOVEMENT_RATE = 0
# will make the force movement command ALWAYS work for 32 pixel tiles
REPAIR_MOVEMENT = true
# enable or disable moving in all 8 directions
EIGHT_WAY_MOVEMENT = true
# the normal moving speed (4 is default)
NORMAL_SPEED = 4
# the speed of running (set to 0 to disable)
RUN_SPEED = 5
# the speed of sneaking (set to 0 to disable)
SNEAK_SPEED = 3
# how many squares should the player jump (set to 0 to disable)
JUMPING = 2
# the terrain tag of tiles where the player can't jump over
JUMP_TAG = 8
# measured in map squares
PERCEPTION_RANGE = 5
# the terrain tag of "walls" (enemies can't see through walls, only hear)
WALL_TAG = 8
# turns HUD on or off
HUD_ENABLED = true
# 0, 1, or 2 (slightly different drawing method of the bars)
HUD_TYPE = 0
# 0 = upper left corner, 1 = upper right corner
HUD_POSITION = 0
# enables minimap
MINIMAP = true
# enables intelligent minimap to save map loading time
INTELLIGENT_PASSABILTY = true
# how much time will pass until an enemy respawns (0 for no respawn)
RESPAWN_TIME = 10
# the terrain tag of tiles where enemies can't respawn
NO_ENEMY_TAG = 8
# how many seconds will dropped stuff stay (0xFFFF for "infinite")
ITEM_TIME = 30
# sound played when picking up items ("NAME", VOLUME, PITCH)
ITEM_PICKUP_SOUND_FILE = RPG::AudioFile.new('056-Right02', 80, 100)
# makes enemies drop gold, specify an icon for display here
DROP_GOLD = ''
# map IDs where ABSEAL is disabled
DISABLE_ANTI_LAG_IDS = []
# strength of delag (1 is most powerful and not recommended)
FACTOR = 3
# stops update of events with no spriteset
ABSEAL_AUTOKILL = true
# restores the character's HP/SP/Status on Level Up
HEAL_ON_LVLUP = true
# displays LvUp on Level Up
DISPLAY_LVLUP = true
# animation ID of the animation shown when a player levels up
LVLUP_ANIMATION_ID = 0
# animation ID of the animation shown when an enemy is on the run
FLEE_LOOP_ANIMATION_ID = 0
# shows attack/skill/item animation
ANIMATIONS = true
# enables or disables the sprites during action of for actors
ACTOR_ACTION_SPRITES = false
# enables or disables the sprites during action of enemies
ENEMY_ACTION_SPRITES = false
# enables or disables the extra sprites for each weapon (actors only)
WEAPON_SPRITES = false
# enables or disables the sprites during running (player and allies)
RUNNING_SPRITES = false
# enables or disables the sprites during sneaking (player and allies)
SNEAKING_SPRITES = false
# enables or disables the sprites during sneaking (player and allies)
JUMPING_SPRITES = false
# small animations (set to true to size animations down to 50%)
SMALL_ANIMATIONS = true
# use also different tint colors for the pre-menu
MENU_COLOR_TINT = 0
# attack sprite (for actors), first row y offset if necessary
ACTOR_SPRITE_Y_OFFSET = 0
# attack sprite (for enemies), first row y offset if necessary
ENEMY_SPRITE_Y_OFFSET = 0
# 0 = never, 1 = no enemies, 2 = enemies dead, 3 = enemies within ABSEAL dead
DISABLE_ABS_MODE = 1
# [type, range], 0 = no data, 1 = in name, 2 = in description
WEAPON_DATA_MODE = [0, 0]
# [type, explode range, range] 0 = no data, 1 = in name, 2 = in description
SKILL_DATA_MODE = [0, 0, 0]
# [type, explode range, range] 0 = no data, 1 = in name, 2 = in description
ITEM_DATA_MODE = [0, 0, 0]
end