Initial import
This commit is contained in:
132
Scripts/RPG/Game_Unit.rb
Normal file
132
Scripts/RPG/Game_Unit.rb
Normal file
@@ -0,0 +1,132 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#==============================================================================
|
||||
# ** Game_Unit
|
||||
#------------------------------------------------------------------------------
|
||||
# This class handles units. It's used as a superclass of the Game_Party and
|
||||
# and Game_Troop classes.
|
||||
#==============================================================================
|
||||
|
||||
class Game_Unit
|
||||
#--------------------------------------------------------------------------
|
||||
# * Public Instance Variables
|
||||
#--------------------------------------------------------------------------
|
||||
attr_reader :in_battle # in battle flag
|
||||
#--------------------------------------------------------------------------
|
||||
# * Object Initialization
|
||||
#--------------------------------------------------------------------------
|
||||
def initialize
|
||||
@in_battle = false
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Members
|
||||
#--------------------------------------------------------------------------
|
||||
def members
|
||||
return []
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Array of Living Members
|
||||
#--------------------------------------------------------------------------
|
||||
def alive_members
|
||||
members.select {|member| member.alive? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Array of Incapacitated Members
|
||||
#--------------------------------------------------------------------------
|
||||
def dead_members
|
||||
members.select {|member| member.dead? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Array of Movable Members
|
||||
#--------------------------------------------------------------------------
|
||||
def movable_members
|
||||
members.select {|member| member.movable? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Clear all Members' Battle Actions
|
||||
#--------------------------------------------------------------------------
|
||||
def clear_actions
|
||||
members.each {|member| member.clear_actions }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Calculate Average Value of Agility
|
||||
#--------------------------------------------------------------------------
|
||||
def agi
|
||||
return 1 if members.size == 0
|
||||
members.inject(0) {|r, member| r += member.agi } / members.size
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Calculate Total Target Rate
|
||||
#--------------------------------------------------------------------------
|
||||
def tgr_sum
|
||||
alive_members.inject(0) {|r, member| r + member.tgr }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Random Selection of Target
|
||||
#--------------------------------------------------------------------------
|
||||
def random_target
|
||||
tgr_rand = rand * tgr_sum
|
||||
alive_members.each do |member|
|
||||
tgr_rand -= member.tgr
|
||||
return member if tgr_rand < 0
|
||||
end
|
||||
alive_members[0]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Randomly Determine Target (K.O.)
|
||||
#--------------------------------------------------------------------------
|
||||
def random_dead_target
|
||||
dead_members.empty? ? nil : dead_members[rand(dead_members.size)]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Smooth Selection of Target
|
||||
#--------------------------------------------------------------------------
|
||||
def smooth_target(index)
|
||||
member = members[index]
|
||||
(member && member.alive?) ? member : alive_members[0]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Smooth Selection of Target (K.O.)
|
||||
#--------------------------------------------------------------------------
|
||||
def smooth_dead_target(index)
|
||||
member = members[index]
|
||||
(member && member.dead?) ? member : dead_members[0]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Clear Action Results
|
||||
#--------------------------------------------------------------------------
|
||||
def clear_results
|
||||
members.select {|member| member.result.clear }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Processing at Start of Battle
|
||||
#--------------------------------------------------------------------------
|
||||
def on_battle_start
|
||||
members.each {|member| member.on_battle_start }
|
||||
@in_battle = true
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Processing at End of Battle
|
||||
#--------------------------------------------------------------------------
|
||||
def on_battle_end
|
||||
@in_battle = false
|
||||
members.each {|member| member.on_battle_end }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Battle Action
|
||||
#--------------------------------------------------------------------------
|
||||
def make_actions
|
||||
members.each {|member| member.make_actions }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine Everyone is Dead
|
||||
#--------------------------------------------------------------------------
|
||||
def all_dead?
|
||||
alive_members.empty?
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Substitute Battler
|
||||
#--------------------------------------------------------------------------
|
||||
def substitute_battler
|
||||
members.find {|member| member.substitute? }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user