#--------------------------------------------------------------------------
# Ââ„¢Sideview battle simple English version
#
# (C) copyright by
http://rye.jp/ Date 2007/01/12 Ver alpha
#--------------------------------------------------------------------------
# Side view battle script walking graphic version Special Thanks by blz
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# Standard of graphic file
#--------------------------------------------------------------------------
# battler graphics
#
# Â@Walking graphic is used as it is.
# Â@
# weapon graphics
#
# Â@The icon graphic of arms is used as it is.
#
module Side_view
#--------------------------------------------------------------------------
# ÂÅ“ Using together RTABÂ@Ââ„¢Automatic recognition
#--------------------------------------------------------------------------
if Scene_Battle.method_defined?("synthe?")
RTAB = true
else
RTAB = false
end
#--------------------------------------------------------------------------
# ÂÅ“ Using together RTAB cam Ââ„¢Automatic recognition
#--------------------------------------------------------------------------
def camera_correctness
return false if !RTAB
begin
return $scene.drive
rescue
return false
end
end
#--------------------------------------------------------------------------
# ÂÅ“ The maximum number of parties
#--------------------------------------------------------------------------
Party_max = 4
#--------------------------------------------------------------------------
# ÂÅ“ Expansion rate of Battler graphic(actor exclusive use)
#--------------------------------------------------------------------------
CHAR_ZOOM = 1.0
#--------------------------------------------------------------------------
# ÂÅ“ Arrow cursor position correction
#--------------------------------------------------------------------------
ARROW_OX = 0
ARROW_OY = 64
#--------------------------------------------------------------------------
# ÂÅ“ State name treated as flight (Array)
#--------------------------------------------------------------------------
FLY_STATES = ["Flying"]
#--------------------------------------------------------------------------
# ÂÅ“ Positional correction of combat screen party
#--------------------------------------------------------------------------
PARTY_X = 480 # X position of party
PARTY_Y = 200 # Y position of party
FORMATION_X = 32 # actor's interval X
FORMATION_Y = 38 # actor's interval Y
#--------------------------------------------------------------------------
# ÂÅ“ Æ’JÆ’XÆ’^Æ’}Æ’CÆ’Y’èÂâ€
#--------------------------------------------------------------------------
NORMAL = "NORMAL"
WALK_R = "WALK_R"
WALK_L = "WALK_L"
ATTACK = "ATTACK"
ATTACK_R = "ATTACK_R"
ATTACK_L = "ATTACK_L"
MAGIC = "MAGIC"
ITEM = "ITEM"
# Æ’AÆ’jƒ‚ÌÂÃ’è
ANIME = {
# [id,Loop?,speed,weapon visible,pattern freeze,Weapon Right or Left(using RTAB)]
NORMAL => [1,true , 0,false, true ,"" ], # Standby usually
WALK_R => [2,true , 6,false, false,"" ], # move Right
WALK_L => [1,true , 6,false, false,"" ], # move Left
ATTACK_R => [1,false, 6,true , false,"Right"],# attack by Right hand
ATTACK_L => [1,false, 6,true , false,"Left"], # attack by Left hand
MAGIC => [1,false, 6,false, false,"" ], # spell Magic
ITEM => [1,false, 6,false, false,"" ], # using Item
}
# default (Do not change it)
ANIME.default = [1,false,12,false,"",""]
# Æ’AÆ’NÆ’Vƒ‡ƒ“ÂÃ’è‚ÌŠÖ˜A•t‚¯
ACTION_LIB = {
"Hero Move" => "moving_setup",
"Hero Graphic Change" => "change",
"Throw Animation" => "flying",
"main phase step 3" => "animation1",
"main phase step 4" => "animation2",
"Waiting" => "wait",
"Graphic Reverse" => "reverse",
"Afterimage ON" => "shadow_on",
"Afterimage OFF" => "shadow_off",
"Freeze ON" => "freeze",
"Freeze OFF" => "freeze_lifting",
"Display Animation" => "animation_start",
"Play Sound Effect" => "play_se",
}
ACTION_LIB.default = "finish"
# (Do not change it)
DUAL_WEAPONS_ANIME = [ATTACK]
# Arms display X coordinates
BLZ_X = {
0=>[0,0,0,0], # NO MOTION
1=>[2,2,2,2], # Shake lowering
2=>[15,10,0,0], # Piercing
3=>[2,2,2,2], # Raising
4=>[0,0,3,3], # Bow and gun
5=>[0,0,0,0], # For addition
6=>[0,0,0,0], # For addition
7=>[0,0,0,0], # For addition
8=>[0,0,0,0], # For addition
}
# Arms display Y coordinates
BLZ_Y = {
0=>[0,0,0,0], # NO MOTION
1=>[6,6,6,6], # Shake lowering
2=>[6,6,6,6], # Piercing
3=>[6,6,6,6], # Raising
4=>[8,8,8,8], # Bow and gun
5=>[0,0,0,0], # For addition
6=>[0,0,0,0], # For addition
7=>[0,0,0,0], # For addition
8=>[0,0,0,0], # For addition
}
# Arms display Angle
BLZ_ANGLE = {
0=>[0,0,0,0], # NO MOTION
1=>[75-45*3,75-45*2,75-45*1,75-45*1], # Shake lowering
2=>[45,45,45,45], # Piercing
3=>[100-45*1,100-45*2,100-45*3,00-45*4], # Raising
4=>[45,45,45,45], # Bow and gun
5=>[0,0,0,0], # For addition
6=>[0,0,0,0], # For addition
7=>[0,0,0,0], # For addition
8=>[0,0,0,0], # For addition
}
#--------------------------------------------------------------------------
# ÂÅ“ SHAKE
#--------------------------------------------------------------------------
SHAKE_FILE = "SHAKE" # filename
SHAKE_POWER = 5 # POWER
SHAKE_SPEED = 5 # SPEED
SHAKE_DURATION = 5 # DURATION
#--------------------------------------------------------------------------
# ÂÅ“ UPSIDE_DOWN
#--------------------------------------------------------------------------
UPSIDE_DOWN_FILE = "UPSIDE_DOWN" # filename
#--------------------------------------------------------------------------
# ÂÅ“ REVERSE
#--------------------------------------------------------------------------
REVERSE_FILE = "REVERSE" # filename
#--------------------------------------------------------------------------
# ÂÅ“ ‰ñ“]‚ÌÂÃ’è
#--------------------------------------------------------------------------
TURNING_FILE = "ROTATION" # filename
TURNING_DIRECTION = 1 # DirectionÂi1.Anti-clockwise, -1.clockwise)
TURNING_SPEED = 40 # Speed
TURNING_DURATION = 1 # Rotation frequency
#--------------------------------------------------------------------------
# ÂÅ“ ˆÚ“®‚ÌÂÃ’è
#--------------------------------------------------------------------------
MOVE_FILE = "MOVE" # filename
MOVE_RETURN = 1 # Do you return to former position?
MOVE_SPEED = 32 # Speed
MOVE_COORDINATES = [0,-640] # Relative coordinates from former position
#--------------------------------------------------------------------------
# ÂÅ“ Add Animation (using RTAB)
#--------------------------------------------------------------------------
ADD_ANIME_FILE = "Add_ANIME" # filename
ADD_ANIME_ID = 0 # Animation ID
#--------------------------------------------------------------------------
# ÂÅ“ using RTAB (Do not change it)
#--------------------------------------------------------------------------
def convert_battler
return RTAB ? @active_actor : @active_battler
end
#--------------------------------------------------------------------------
# ÂÅ“ using RTAB (Do not change it)
#--------------------------------------------------------------------------
def convert_battler2(*arg)
return RTAB ? arg[0] : @active_battler
end
end
#--------------------------------------------------------------------------
# ÂÅ“ action performer
#--------------------------------------------------------------------------
module BattleActions
# Because the one below is one example to the last
# Please make it originally.
Actions = {
"Normal Attack" => [
"main phase step 3",
"Hero Graphic Change#WALK_L",
"Hero Move#target,32,0,64,0",
"Hero Graphic Change#NORMAL",
"Waiting#5",
"Hero Graphic Change#ATTACK",
"Throw Animation",
"main phase step 4",
"Hero Graphic Change#WALK_L",
"Play Sound Effect#016-Jump02,80,100",
"Hero Move#self,0,0,18,4",
"end"
],
"One step advancement Attack" => [
"main phase step 3",
"Hero Graphic Change#WALK_L",
"Hero Move#self,-32,0,12,0",
"Hero Graphic Change#NORMAL",
"Waiting#5",
"Hero Graphic Change#ATTACK",
"Throw Animation",
"main phase step 4",
"Hero Graphic Change#WALK_L",
"Play Sound Effect#016-Jump02,80,100",
"Hero Move#self,0,0,12,0",
"end"
],
"Enemy Attack" => [
"main phase step 3",
"Hero Graphic Change#WALK_L",
"Hero Move#self,-36,0,12,0",
"Hero Graphic Change#NORMAL",
"Waiting#5",
"Hero Graphic Change#ATTACK",
"Throw Animation",
"main phase step 4",
"Hero Graphic Change#WALK_L",
"Hero Move#self,0,0,12,0",
"end"
],
"Spell Magic" => [
"main phase step 3",
"Hero Graphic Change#WALK_L",
"Hero Move#self,-32,0,4,0",
"Hero Graphic Change#MAGIC",
"Waiting#15",
"Throw Animation",
"main phase step 4",
"Hero Graphic Change#WALK_L",
"Hero Move#self,0,0,4,2",
"end"
],
"Using Item" => [
"Hero Graphic Change#WALK_L",
"Hero Move#self,-32,0,4,0",
"main phase step 3",
"Hero Graphic Change#ITEM",
"Waiting#15",
"Throw Animation",
"main phase step 4",
"Hero Graphic Change#WALK_L",
"Hero Move#self,0,0,4,2",
"end"
],
"Using Skill" => [
"Hero Graphic Change#WALK_L",
"Hero Move#target_near,50,0,48,6",
"Graphic Reverse",
"Freeze ON#ATTACK#3",
"main phase step 3",
"Play Sound Effect#135-Light01,100,100",
"Display Animation#self,42",
"Waiting#15",
"Graphic Reverse",
"Afterimage ON",
"Hero Move#target_far,-50,0,48,0",
"main phase step 4",
"Afterimage OFF",
"Freeze OFF",
"Hero Graphic Change#WALK_L",
"Hero Move#self,0,0,48,1,0",
"end"
],
}
end
module RPG
# Because the one below is one example to the last
# Please make it originally.
class Weapon
#--------------------------------------------------------------------------
# Weapon sctions. Set what weapons are a stand still weapon.
#--------------------------------------------------------------------------
def battle_actions
case @id
when 21 # Bronze Gun
return BattleActions::Actions["One step advancement Attack"]
end
return BattleActions::Actions["Normal Attack"] # default
end
end
class Skill
#--------------------------------------------------------------------------
# ÂÅ“ action performer
#--------------------------------------------------------------------------
def battle_actions
if self.magic?
return BattleActions::Actions["Spell Magic"] # default
else
return BattleActions::Actions["Using Skill"] # default
end
end
end
class Item
#--------------------------------------------------------------------------
# ÂÅ“ action performer
#--------------------------------------------------------------------------
def battle_actions
return BattleActions::Actions["Using Item"] # default
end
end
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ÂÅ“ action performer
#--------------------------------------------------------------------------
def battle_actions
return BattleActions::Actions["Enemy Attack"] # default
end
end
module RPG
=begin
ÂÅ“ Setting of arms type
The attribute of the name "WeaponType" is made, and it is applied to arms.
The figure is written behind "WeaponType".
Â@Â@
Example.Â@WeaponType1Â@
=end
class Weapon
#--------------------------------------------------------------------------
# ÂÅ“ WeaponType
#--------------------------------------------------------------------------
def anime
# Elemental
element_name = "WeaponType"
for i in @element_set
if $data_system.elements
=~ /#{element_name}([+-]?[0-9]+)?(%)?/
return $1.to_i
end
end
# Weapon ID
# Because the one below is one example to the last
# Please make it originally.
case @id
when 1,2,3,4
return 1 # (WeaponType) Refer from the 115th line to the 150th line.
when 5,6,7,8
return 2 # (WeaponType) Refer from the 115th line to the 150th line.
end
return 1 # defaut
end
end
end
=begin
#--------------------------------------------------------------------------
# ÂÅ“ Throw Animation
#--------------------------------------------------------------------------
Â@ Animation is thrown out from performar to target.
Please make animation from the data base.
[ Animation ID, Speed, Do you shuttle?, Straight line (false) or curve(true)]
=end
module RPG
class Weapon
#--------------------------------------------------------------------------
# ÂÅ“ Throw Animation
#--------------------------------------------------------------------------
def flying_anime
# Example
#case @id
#when 34 # Boomerang
# return [10,32,true,true]
#when 17,18,19,20 # Arrow
# return [40,32,false,false]
#end
return [0,0,false,false] # No throw
end
end
class Skill
#--------------------------------------------------------------------------
# ÂÅ“ Throw Animation
#--------------------------------------------------------------------------
def flying_anime
# Example
#case @id
#when 34 # Boomerang
# return [10,32,true,true]
#when 17,18,19,20 # Arrow
# return [40,32,false,false]
#end
return [0,0,false,false] # No throw
end
end
class Item
#--------------------------------------------------------------------------
# ÂÅ“ Throw Animation
#--------------------------------------------------------------------------
def flying_anime
# Example
#case @id
#when 34 # Boomerang
# return [10,32,true,true]
#when 17,18,19,20 # Arrow
# return [40,32,false,false]
#end
return [0,0,false,false] # No throw
end
end
end
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ÂÅ“ Throw Animation
#--------------------------------------------------------------------------
def flying_anime
# Example
#case @id
#when 34 # Boomerang
# return [10,32,true,true]
#when 17,18,19,20 # Arrow
# return [40,32,false,false]
#end
return [0,0,false,false] # No throw
end
end
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
include Side_view
#--------------------------------------------------------------------------
# ÂÅ“ ’ljÃÂEŒöŠJÆ’Cƒ“ƒXÆ’^ƒ“ƒX•ÃÂâ€
#--------------------------------------------------------------------------
attr_accessor :height # ‰æ‘œ‚Ì‚‚³
attr_accessor :real_x # XÂÀ•W•â³
attr_accessor :real_y # YÂÀ•W•â³
attr_accessor :real_zoom # Šg‘å—¦
attr_accessor :wait_count # Æ’AÆ’jÆ’ÂÂ[Æ’Vƒ‡ƒ“ ‘Ò‚¿ŽžŠÔ
attr_accessor :wait_count2 # Æ’AÆ’jÆ’ÂÂ[Æ’Vƒ‡ƒ“ ‘Ò‚¿ŽžŠÔ2
attr_accessor :pattern # Æ’AÆ’jÆ’ÂÂ[Æ’Vƒ‡ƒ“ Æ’JÆ’Eƒ“ƒgÂiÆ’Lƒƒƒ‰)
attr_accessor :shake # ƒVƒFƒCƒNŠJŽnƒtƒ‰ƒbƒO
attr_accessor :reverse # ¶‰Eâ€Â½â€œ]Æ’tƒ‰ƒbÆ’O
attr_accessor :shadow # Žc‘œƒtƒ‰ƒbƒO
attr_accessor :flash_flag # ‘M‚«ƒtƒ‰ƒbƒO
attr_reader x # XÂÀ•W•â³
attr_reader y # YÂÀ•W•â³
attr_reader :flying_x # ‰“‹——£ƒAÆ’jÆ’ÂXÂÀ•W
attr_reader :flying_y # ‰“‹——£ƒAÆ’jÆ’ÂYÂÀ•W
attr_reader :flying_anime # ‰“‹——£ƒAÆ’jÆ’Â
attr_reader :animation1_on # Âs“®ƒAÆ’jÆ’ÂÅ JŽnÆ’tƒ‰ƒbÆ’O
attr_reader :animation2_on # ‘ÎÂÛƒAÆ’jÆ’ÂÅ JŽnÆ’tƒ‰ƒbÆ’O
#--------------------------------------------------------------------------
# ÂÅ“ Æ’fÆ’tÆ’Hƒ‹ƒg‚̃AÆ’jÆ’ÂÂ[Æ’Vƒ‡ƒ“‘Ò‚¿ŽžŠÔ‚ðŽæ“¾
#--------------------------------------------------------------------------
def animation_duration=(animation_duration)
@_animation_duration = animation_duration
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’oÆ’gƒ‹ŠJŽnŽž‚̃ZÆ’bÆ’gÆ’AÆ’bÆ’v
#--------------------------------------------------------------------------
def start_battle
@height = 0
@real_x = 0
@real_y = 0
@real_zoom = 1.0
@battler_condition = ""
@action = nil
@battle_actions = []
@battler_action = false
@step = 0
@anime_on = false
@wait_count = 0
@wait_count2 = 0
@ox = 0
@oy = 0
@pattern = 0
@pattern_log = true
@pattern_freeze = false
@condition_freeze = false
@active = false
@move_distance = nil
@move_wait = 0
@move_coordinates = [0,0,0,0]
@flying_distance = nil
@flying_wait = 0
@flying_x = 0
@flying_y = 0
@flash_flag = {}
self.flying_clear
end
#--------------------------------------------------------------------------
# ÂÅ“ ˆÚ“®’†â€Â»â€™Ã¨
#--------------------------------------------------------------------------
def moving?
# XÂÀ•W•â³‚Ü‚½‚ÃÂAYÂÀ•W•â³‚ª0‚Å‚È‚¯‚ê‚ÎÂAˆÚ“®’â€
return (@ox != 0 or @oy != 0)
end
#--------------------------------------------------------------------------
# ÂÅ“ ˆÚ“®ÂI—¹â€Â»â€™Ã¨
#--------------------------------------------------------------------------
def move_end?
return (@ox == @move_coordinates[0] and @oy == @move_coordinates[1])
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’AÆ’NÆ’Vƒ‡ƒ“ŠJŽnÂÃ’è
#--------------------------------------------------------------------------
def action(flag = true)
@battler_action = flag
@animation1_on = false
@animation2_on = false
@step = "setup"
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’AÆ’NÆ’Vƒ‡ƒ“’†â€Â»â€™Ã¨
#--------------------------------------------------------------------------
def action?
return @battler_action
end
#--------------------------------------------------------------------------
# ÂÅ“ ‘M‚«â€Â»â€™Ã¨
#--------------------------------------------------------------------------
def flash?
return @flash_flg
end
#--------------------------------------------------------------------------
# ÂÅ“ ÂÓ¬•sâ€\â€Â»â€™Ã¨
#--------------------------------------------------------------------------
def anime_dead?
if $game_temp.in_battle and !RTAB
if [2,3,4,5].include?($scene.phase4_step)
return @last_dead
end
end
return @last_dead = self.dead?
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’sƒ“ƒ`Âó‘Ôâ€Â»â€™Ã¨
#--------------------------------------------------------------------------
def crisis?
if $game_temp.in_battle and !RTAB
if [2,3,4,5].include?($scene.phase4_step)
return @last_crisis
end
end
return @last_crisis = (self.hp <= self.maxhp / 4 or badstate?)
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’oÆ’bÆ’hÆ’XÆ’eÂ[Æ’gâ€Â»â€™Ã¨
#--------------------------------------------------------------------------
def badstate?
for i in @states
unless $data_states.nonresistance
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ÂÅ“ â€Ã²Âs
#--------------------------------------------------------------------------
def fly
if @fly != nil
return @fly
end
for id in @states
if FLY_STATES.include?($data_states[id].name)
return 60
end
end
return 0
end
#--------------------------------------------------------------------------
# ÂÅ“ ‰“‹——£ƒAÆ’jƒ–ڕWÂÀ•W‚ÌŒvŽZ
#--------------------------------------------------------------------------
def flying_setup
# “ñ“x–Ú‚ÃŽÀÂs‚µ‚È‚¢
return if @flying_distance != nil && !camera_correctness
if RTAB
targets = @target
else
targets = $scene.target_battlers
end
# –Ú“IÂÀ•W‚ðŒvŽZ
@f_target_x = 0
@f_target_y = 0
for t in targets
@f_target_x += t.screen_x
@f_target_y += t.screen_y
end
if targets != []
@f_target_x /= targets.size
@f_target_y /= targets.size
else
@flying_distance = 0
return
end
# ‹——£‚ÌŒvŽZ
@flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs
@flying_end = false
end
#--------------------------------------------------------------------------
# ÂÅ“ ‰“‹——£ƒAÆ’jÆ’Â
#--------------------------------------------------------------------------
def flying_animation
# –ß‚é
if @step != "flying" or @flying_distance.nil?
return [false,true]
end
# ‚ ‚ç‚©‚¶‚ߌvŽZ
self_x = self.screen_x
self_y = self.screen_y
@flying_distance = @flying_distance == 0 ? 1 : @flying_distance
n1 = @flying_wait / @flying_distance.to_f
if @flying_distance - @flying_wait > @flying_distance / 2
n2 = 1.0 + 10.0 * @flying_wait / @flying_distance.to_f
else
n2 = 1.0 + 10.0 * (@flying_distance - @flying_wait) / @flying_distance.to_f
end
if !@flying_anime[4]
# ’¼ÂüˆÚ“®
x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
y = (self_y + 1.0 * (@f_target_y - self_y) * n1).to_i
else
# ‹ÈÂüˆÚ“®
if !@flying_proceed_end
x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
y = (self_y + 1.0 * (@f_target_y - self_y) * n1 - n2**2).to_i
else
x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
y = (self_y + 1.0 * (@f_target_y - self_y) * n1 + n2**2).to_i
end
end
# ÂÀ•W‘ã“ü
@flying_x = x
@flying_y = y
# Æ’EÆ’GÆ’CÆ’g
if !@flying_proceed_end
# ŠJŽn
@flying_proceed_start = @flying_wait == 0
@flying_wait += @flying_anime[1]
@flying_wait = [@flying_wait,@flying_distance].min
@flying_proceed_end = @flying_wait == @flying_distance
else
# ŠJŽn
@flying_return_start = @flying_wait == @flying_distance
@flying_wait -= @flying_anime[1]
@flying_wait = [@flying_wait,0].max
@flying_return_end = @flying_wait == 0
end
if @flying_anime[1] == 0
@flying_end = true
elsif !@flying_anime[2]
@flying_end = @flying_proceed_end
else
@flying_end = @flying_return_end
end
# ’l‚ð•Ô‚·ÂiÆ’AÆ’jÆ’ÂÅ JŽn,Æ’AÆ’jÆ’ÂÂI—¹)
return [@flying_proceed_start,@flying_end]
end
#--------------------------------------------------------------------------
# ÂÅ“ ‰“‹——£ƒAÆ’jƒ‰Šú‰»
#--------------------------------------------------------------------------
def flying_clear
@flying_proceed_start = false
@flying_proceed_end = false
@flying_return_start = false
@flying_return_end = false
@flying_end = true
@flying_anime = [0,0,false,false]
end
#--------------------------------------------------------------------------
# ÂÅ“ ˆÚ“®
#--------------------------------------------------------------------------
def move
# ‹——£‚ÌŒvŽZ
@move_distance = (@move_coordinates[2] - @move_coordinates[0]).abs +
(@move_coordinates[3] - @move_coordinates[1]).abs
if @move_distance > 0
return if @ox == @move_coordinates[0] and @oy == @move_coordinates[1]
array = @move_coordinates
# Æ’Wƒƒƒ“ƒv•â³’l‚ÌŒvŽZ
n = 100.0 * @move_wait / @move_distance
jump = -@move_action[4] * n * (100 - n) / 100.0
@ox = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @move_wait) / @move_distance.to_f).to_i
@oy = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @move_wait) / @move_distance.to_f + jump).to_i
# Æ’EÆ’GÆ’CÆ’g
@move_wait -= @move_action[3]
@move_wait = [@move_wait,0].max
end
end
#--------------------------------------------------------------------------
# ÂÅ“ ˆÚ“®ƒAÆ’NÆ’Vƒ‡ƒ“‚̎擾
#--------------------------------------------------------------------------
def get_move_action
string = @action.split(/#/)[1]
string = string.split(/,/)
@move_action = [string[0],string[1].to_i,string[2].to_i,string[3].to_i,string[4].to_i,string[5].to_i]
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’AÆ’NÆ’Vƒ‡ƒ“‚̎擾
#--------------------------------------------------------------------------
def get_step
if @action.nil?
@step = "finish"
return
end
return ACTION_LIB[@action.split(/#/)[0]]
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (ŽŸ‚̃AÆ’NÆ’Vƒ‡ƒ“‚Ö)
#--------------------------------------------------------------------------
def update_next
@action = @battle_actions.shift
@step = get_step
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (“®ÂìŽæ“¾)
#--------------------------------------------------------------------------
def update_setup
# ƒAƒNƒVƒ‡ƒ“‚̎擾
self.get_actions
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (ˆÚ“®Žæ“¾)
#--------------------------------------------------------------------------
def update_moving_setup
# ˆÚ“®ƒAƒNƒVƒ‡ƒ“‚̎擾
self.get_move_action
# ˆÚ“®–Ú•W‚ÌÂÃ’è
self.move_setup
@step = "moving"
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (ˆÚ“®)
#--------------------------------------------------------------------------
def update_moving
# ˆÚ“®
self.move
self.condition = @battler_condition
# ˆÚ“®Š®—¹‚µ‚½‚玟‚̃Xƒeƒbƒv‚Ö
if move_end?
update_next
end
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Æ’AÆ’jÆ’ÂŽÀÂs)
#--------------------------------------------------------------------------
def update_action
con = @action.split(/#/)[1]
# ‰EŽèÂE¶Žè‚𕪂¯‚é
if DUAL_WEAPONS_ANIME.include?(con)
if !@first_weapon and @second_weapon
con = con + "_L"
else
con = con + "_R"
end
end
# Æ’AÆ’jĥÃÂX
self.condition = con
# ƒ‹Â[Æ’v‚©â€Ã›â€šÂ©
if !ANIME[@battler_condition][1]
self.anime_on
end
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (‰“‹——£ƒAÆ’jÆ’Â)
#--------------------------------------------------------------------------
def update_flying
# –Ú•W‚ÌÂÃ’è
self.flying_setup
# ‰“‹——£ƒAÆ’jÆ’ÂÂI—¹
if @flying_end or @flying_anime == [0,0,false,false]
self.flying_clear
update_next
end
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Æ’AÆ’jĥÃÂX)
#--------------------------------------------------------------------------
def update_change
con = @action.split(/#/)[1]
# ‰EŽèÂE¶Žè‚𕪂¯‚é
if DUAL_WEAPONS_ANIME.include?(con)
if !@first_weapon and @second_weapon
con = con + "_L"
else
con = con + "_R"
end
end
# Æ’AÆ’jĥÃÂX
self.condition = con
# ƒ‹Â[Æ’v‚©â€Ã›â€šÂ©
if !ANIME[@battler_condition][1]
self.anime_on
end
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Âs“®ƒAÆ’jÆ’Â)
#--------------------------------------------------------------------------
def update_animation1
@animation1_on = true
# Âs“®ƒAÆ’jƒ‚̌ã‚ÉÂs“®‚ðŠJŽn‚·‚é
if $scene.phase4_step == 3
id = RTAB ? @anime1 : $scene.animation1_id
animation = $data_animations[id]
frame_max = animation != nil ? animation.frame_max : 0
@wait_count2 = frame_max * 2
return
end
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (‘ÎÂÛƒAÆ’jÆ’Â)
#--------------------------------------------------------------------------
def update_animation2
@animation2_on = true
# Âs“®ƒAÆ’jƒ‚̌ã‚ÉÂs“®‚ðŠJŽn‚·‚é
if $scene.phase4_step == 4
id = RTAB ? @anime2 : $scene.animation2_id
animation = $data_animations[id]
frame_max = animation != nil ? animation.frame_max : 0
@wait_count2 = frame_max * 2
return
end
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Æ’EÆ’GÆ’CÆ’g)
#--------------------------------------------------------------------------
def update_wait
@wait_count2 = @action.split(/#/)[1].to_i
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Žc‘œ•\Ž¦)
#--------------------------------------------------------------------------
def update_shadow_on
@shadow = true
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Žc‘œÂËŽ)
#--------------------------------------------------------------------------
def update_shadow_off
@shadow = false
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (¶‰Eâ€Â½â€œ])
#--------------------------------------------------------------------------
def update_reverse
@reverse = @reverse ? false : true
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (‘M‚«ƒAÆ’jÆ’Â)
#--------------------------------------------------------------------------
def update_flash
# ‘M‚«ƒAÆ’jƒ‚̌ã‚ÉÂs“®‚ðŠJŽn‚·‚é
if @flash_flag["normal"]
@wait_count = $scene.flash_duration
@flash_flag["normal"] = false
return
end
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (SE‚̉‰‘t)
#--------------------------------------------------------------------------
def update_play_se
data = @action.split(/#/)[1]
data = data.split(/,/)
# SE ‚ð‰‰‘t
Audio.se_play("Audio/SE/" + data[0], data[1].to_i, data[2].to_i)
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Æ’AÆ’NÆ’^Â[Æ’AÆ’jÆ’Â΁Տ)
#--------------------------------------------------------------------------
def update_freeze
con = @action.split(/#/)[1]
# ‰EŽèÂE¶Žè‚𕪂¯‚é
if DUAL_WEAPONS_ANIME.include?(con)
if !@first_weapon and @second_weapon
con = con + "_L"
else
con = con + "_R"
end
end
# Æ’AÆ’jĥÃÂX
self.condition = con
@pattern = @action.split(/#/)[2].to_i
@pattern_freeze = true
@condition_freeze = true
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Æ’AÆ’NÆ’^Â[Æ’AÆ’jƒŒŒè‰ðÂÅ“)
#--------------------------------------------------------------------------
def update_freeze_lifting
@pattern_freeze = false
@condition_freeze = false
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (Æ’AÆ’jÆ’ÂÂ[Æ’Vƒ‡ƒ“‚Ì•\Ž¦)
#--------------------------------------------------------------------------
def update_animation_start
data = @action.split(/#/)[1]
data = data.split(/,/)
target = data[0]
animation_id = data[1].to_i
if RTAB
case target
when "self"
@animation.push([animation_id,true])
when "target"
for tar in @target
tar.animation.push([animation_id, true])
end
end
else
case target
when "self"
@animation_id = animation_id
@animation_hit = true
when "target"
for tar in $scene.target_battlers
tar.animation_id = animation_id
tar.animation_hit = true
end
end
end
update_next
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV (“®ÂìÂI—¹)
#--------------------------------------------------------------------------
def update_finish
# “®ÂìÂI—¹
@battler_action = false
@step = "setup"
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’oÆ’gƒ‰Â[‚ÌÂó‘ÔÂiÆ’oÆ’gƒ‰Â[Æ’Oƒ‰ƒtÆ’BÆ’bÆ’N‚̃^Æ’CÆ’v)
#--------------------------------------------------------------------------
def condition
return @battler_condition
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’oÆ’gƒ‰Â[‚ÌÂó‘Ô •ÃÂXÂiÆ’oÆ’gƒ‰Â[Æ’Oƒ‰ƒtÆ’BÆ’bÆ’N‚̃^Æ’CÆ’v)
#--------------------------------------------------------------------------
def condition=(condition)
return if @condition_freeze
if @battler_condition != condition
@wait_count = ANIME[condition][2]
@pattern = 0
end
@battler_condition = condition
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’tÆ’Å’Â[ƒ€ÂXÂV
#--------------------------------------------------------------------------
def update
# Æ’EÆ’FÆ’CÆ’g’†‚ÌÂê‡
if @wait_count == 0
# Æ’pÆ’^Â[ƒ“ÂXÂV
self.char_animation
@wait_count = ANIME[@battler_condition][2]
end
# Æ’pÆ’^Â[ƒ“ÂXÂV
self.char_animation
# Æ’EÆ’FÆ’CÆ’g’†‚ÌÂê‡
if @wait_count2 > 0
return
end
# Âs“®ƒAÆ’jÆ’ÂÂ[Æ’Vƒ‡ƒ“
if @battler_action
method("update_" + @step).call
return
end
# Æ’fÂ[Æ’^‰Šú‰»
@animation1_on = false
@animation2_on = false
@action = nil
@battle_actions = []
@move_wait = 0
@move_distance = nil
@flying_wait = 0
@flying_distance = nil
@flash = false
# ’ÊÂÃÂE‘Ò‹@
return self.condition = NORMAL
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’AÆ’NÆ’Vƒ‡ƒ“‚̎擾
#--------------------------------------------------------------------------
def get_actions
skill = $data_skills[self.current_action.skill_id]
item = $data_items[self.current_action.item_id]
kind = self.current_action.kind
# “®ÂìŽæ“¾
@battle_actions = []
# ƒXƒLƒ‹
if skill != nil && kind == 1
@battle_actions = skill.battle_actions.dup
@flying_anime = skill.flying_anime
# ƒAƒCƒeƒ€
elsif item != nil && kind == 2
@battle_actions = item.battle_actions.dup
@flying_anime = item.flying_anime
# ¶ŽèÂUŒ‚
elsif !@first_weapon and @second_weapon and self.is_a?(Game_Actor)
@battle_actions = self.battle_actions2.dup
@flying_anime = self.flying_anime2
# ‰EŽèÂUŒ‚
elsif self.current_action.basic == 0 and
self.is_a?(Game_Actor) and self.current_action.kind == 0
@battle_actions = self.battle_actions1.dup
@flying_anime = self.flying_anime1
# ’ÊÂÃÂUŒ‚
elsif self.current_action.basic == 0 and self.current_action.kind == 0
@battle_actions = self.battle_actions.dup
@flying_anime = self.flying_anime
else
@battle_actions = ["ÂI—¹"]
@flying_anime = [0,0,false,false]
end
end
#--------------------------------------------------------------------------
# ÂÅ“ ƒ‹Â[Æ’v‚µ‚È‚¢ƒAÆ’jƒ‚̃ZÆ’bÆ’g
#--------------------------------------------------------------------------
def anime_on
@pattern = 0
@pattern_log = true
return
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’pÆ’^Â[ƒ“ÂXÂV
#--------------------------------------------------------------------------
def char_animation
# Æ’pÆ’^ƒ“ŒÅ’è‚ÌÂê‡‚à ‚Ç‚é
return if @pattern_freeze
# ƒ‹Â[Æ’v‚µ‚È‚¢ƒAÆ’jƒ‚ÌÂê‡ 1234 ‚ÅŽ~‚Ü‚é
if !ANIME[@battler_condition][1] && @pattern == 3
return
end
# Æ’AÆ’jƒ‚³‚¹‚È‚¢Âê‡ 1 ‚ÅŽ~‚Ü‚é
if ANIME[@battler_condition][4]
@pattern = 0
return
end
@pattern = (@pattern + 1) % 4
end
#--------------------------------------------------------------------------
# ÂÅ“ Æ’AÆ’jÆ’ÂÆ’^Æ’CÆ’v
#--------------------------------------------------------------------------
def anime_type
return ANIME[@battler_condition] != nil ? ANIME[@battler_condition][0] : 0
end
end
#==============================================================================
# ¡ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
include Side_view
#--------------------------------------------------------------------------
# ÂÅ“ Æ’ZÆ’bÆ’gÆ’AÆ’bÆ’v
#--------------------------------------------------------------------------
alias side_view_setup setup
def setup(actor_id)
side_view_setup(actor_id)
start_battle
end
#--------------------------------------------------------------------------
# ÂÅ“ “ñ“•ÂŠÂÌID