#--------------------------------------------------------------------------
# ツ≫┐Sideview battle simple English version
#
# © 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
#--------------------------------------------------------------------------
# ツナ ニ谷ニ湛ニ耽ニ筑ニ辰ニ炭窶凖ィツ絶
#--------------------------------------------------------------------------
NORMAL = "NORMAL"
WALK_R = "WALK_R"
WALK_L = "WALK_L"
ATTACK = "ATTACK"
ATTACK_R = "ATTACK_R"
ATTACK_L = "ATTACK_L"
MAGIC = "MAGIC"
ITEM = "ITEM"
# ニ但ニ男ニ陳≫堙個静昶凖ィ
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,"",""]
# ニ但ニ誰ニ歎ニ停。ニ停慊静昶凖ィ窶堙固テ麺廣窶「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ツ(1.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[i] =~ /#{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
#--------------------------------------------------------------------------
# ツナ 窶凖窶ーテツ・ナ津カナJニ辰ニ停愴湛ニ耽ニ停愴湛窶「テ渉絶
#--------------------------------------------------------------------------
attr_accessor :height # 窶ーテヲ窶佛凪堙個坂壺堋ウ
attr_accessor :real_x # Xツ催窶「W窶「テ「ツ青ウ
attr_accessor :real_y # Yツ催窶「W窶「テ「ツ青ウ
attr_accessor :real_zoom # ナg窶佚・窶板ヲ
attr_accessor :wait_count # ニ但ニ男ニ陳ツーニ歎ニ停。ニ停 窶佚停堋ソナスナセナテ
attr_accessor :wait_count2 # ニ但ニ男ニ陳ツーニ歎ニ停。ニ停 窶佚停堋ソナスナセナテ2
attr_accessor :pattern # ニ但ニ男ニ陳ツーニ歎ニ停。ニ停 ニ谷ニ脱ニ停愴暖ツ(ニ鱈ニ槌槌停ー)
attr_accessor :shake # ニ歎ニ巽ニ辰ニ誰ナJナスnニ稚ニ停ーニ鍛ニ丹
attr_accessor :reverse # ツ債カ窶ーE窶敖ス窶彎ニ稚ニ停ーニ鍛ニ丹
attr_accessor :shadow # ナスc窶佛独稚ニ停ーニ鍛ニ丹
attr_accessor :flash_flag # 窶弄窶堋ォニ稚ニ停ーニ鍛ニ丹
attr_reader

x # Xツ催窶「W窶「テ「ツ青ウ
attr_reader

y # Yツ催窶「W窶「テ「ツ青ウ
attr_reader :flying_x # 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳々ツ催窶「W
attr_reader :flying_y # 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳〆ツ催窶「W
attr_reader :flying_anime # 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳
attr_reader :animation1_on # ツ行窶慊ョニ但ニ男ニ陳ナJナスnニ稚ニ停ーニ鍛ニ丹
attr_reader :animation2_on # 窶佚篠湘嵌但ニ男ニ陳ナJナスnニ稚ニ停ーニ鍛ニ丹
#--------------------------------------------------------------------------
# ツナ ニ断ニ稚ニ辿ニ停ケニ暖窶堙姑但ニ男ニ陳ツーニ歎ニ停。ニ停懌佚停堋ソナスナセナテ披堙ーナステヲ窶慊セ
#--------------------------------------------------------------------------
def animation_duration=(animation_duration)
@_animation_duration = animation_duration
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケナJナスnナスナセ窶堙姑短ニ鍛ニ暖ニ但ニ鍛ニ致
#--------------------------------------------------------------------------
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窶「テ「ツ青ウ窶堙懌堋ス窶堙債、Yツ催窶「W窶「テ「ツ青ウ窶堋ェ0窶堙窶堙遺堋ッ窶堙ェ
窶堙篠、ヒテ壺慊ョ窶吮
return (@ox != 0 or @oy != 0)
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョツ終窶板ケ窶敖サ窶凖ィ
#--------------------------------------------------------------------------
def move_end?
return (@ox == @move_coordinates[0] and @oy == @move_coordinates[1])
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ誰ニ歎ニ停。ニ停愬Jナスnツ静昶凖ィ
#--------------------------------------------------------------------------
def action(flag = true)
@battler_action = flag
@animation1_on = false
@animation2_on = false
@step = "setup"
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ誰ニ歎ニ停。ニ停懌吮窶敖サ窶凖ィ
#--------------------------------------------------------------------------
def action?
return @battler_action
end
#--------------------------------------------------------------------------
# ツナ 窶弄窶堋ォ窶敖サ窶凖ィ
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ツナ ニ痴ニ停愴`ツ湘ウ窶佚披敖サ窶凖ィ
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ツナ ニ弛ニ鍛ニ檀ニ湛ニ弾ツーニ暖窶敖サ窶凖ィ
#--------------------------------------------------------------------------
def badstate?
for i in @states
unless $data_states[i].nonresistance
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ツナ 窶敕イツ行
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ツナ 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳≫禿壺「Wツ催窶「W窶堙固致ナスZ
#--------------------------------------------------------------------------
def flying_setup
# 窶愿ア窶忸窶禿壺堙最ステツ行窶堋オ窶堙遺堋「
return if @flying_distance != nil && !camera_correctness
if RTAB
targets = @target
else
targets = $scene.target_battlers
end
# 窶禿壺廬ツ催窶「W窶堙ーナ致ナス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
# 窶ケ窶披板」窶堙固致ナスZ
@flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs
@flying_end = false
end
#--------------------------------------------------------------------------
# ツナ 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳
#--------------------------------------------------------------------------
def flying_animation
# 窶禿溪堙ゥ
if @step != "flying" or @flying_distance.nil?
return [false,true]
end
# 窶 窶堙ァ窶堋ゥ窶堋カ窶堙淒致ナス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
# ニ脱ニ竪ニ辰ニ暖
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
# 窶冤窶堙ー窶「テ披堋キツ(ニ但ニ男ニ陳ナJナスn,ニ但ニ男ニ陳ツ終窶板ケ)
return [@flying_proceed_start,@flying_end]
end
#--------------------------------------------------------------------------
# ツナ 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳ツ鞘ーナテコ窶ーツサ
#--------------------------------------------------------------------------
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
# 窶ケ窶披板」窶堙固致ナス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
# ニ淡ニ槌槌停愴致窶「テ「ツ青ウ窶冤窶堙固致ナス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
# ニ脱ニ竪ニ辰ニ暖
@move_wait -= @move_action[3]
@move_wait = [@move_wait,0].max
end
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョニ但ニ誰ニ歎ニ停。ニ停懌堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ツナ ニ但ニ誰ニ歎ニ停。ニ停懌堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def get_step
if @action.nil?
@step = "finish"
return
end
return ACTION_LIB[@action.split(/#/)[0]]
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ナスナク窶堙姑但ニ誰ニ歎ニ停。ニ停懌堙)
#--------------------------------------------------------------------------
def update_next
@action = @battle_actions.shift
@step = get_step
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (窶慊ョツ催ャナステヲ窶慊セ)
#--------------------------------------------------------------------------
def update_setup
# ニ但ニ誰ニ歎ニ停。ニ停懌堙固ステヲ窶慊セ
self.get_actions
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ヒテ壺慊ョナステヲ窶慊セ)
#--------------------------------------------------------------------------
def update_moving_setup
# ヒテ壺慊ョニ但ニ誰ニ歎ニ停。ニ停懌堙固ステヲ窶慊セ
self.get_move_action
# ヒテ壺慊ョ窶禿壺「W窶堙個静昶凖ィ
self.move_setup
@step = "moving"
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ヒテ壺慊ョ)
#--------------------------------------------------------------------------
def update_moving
# ヒテ壺慊ョ
self.move
self.condition = @battler_condition
# ヒテ壺慊ョナツョ窶板ケ窶堋オ窶堋ス窶堙ァナスナク窶堙姑湛ニ弾ニ鍛ニ致窶堙
if move_end?
update_next
end
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ但ニ男ニ陳ナステツ行)
#--------------------------------------------------------------------------
def update_action
con = @action.split(/#/)[1]
# 窶ーEナスティツ・ツ債カナスティ窶堙ー窶「ツェ窶堋ッ窶堙ゥ
if DUAL_WEAPONS_ANIME.include?(con)
if !@first_weapon and @second_weapon
con = con + "_L"
else
con = con + "_R"
end
end
# ニ但ニ男ニ陳≫「テ渉更
self.condition = con
# ニ停ケツーニ致窶堋ゥ窶敕帚堋ゥ
if !ANIME[@battler_condition][1]
self.anime_on
end
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (窶ー窶懌ケ窶披板」ニ但ニ男ニ陳)
#--------------------------------------------------------------------------
def update_flying
# 窶禿壺「W窶堙個静昶凖ィ
self.flying_setup
# 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳ツ終窶板ケ
if @flying_end or @flying_anime == [0,0,false,false]
self.flying_clear
update_next
end
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ但ニ男ニ陳≫「テ渉更)
#--------------------------------------------------------------------------
def update_change
con = @action.split(/#/)[1]
# 窶ーEナスティツ・ツ債カナスティ窶堙ー窶「ツェ窶堋ッ窶堙ゥ
if DUAL_WEAPONS_ANIME.include?(con)
if !@first_weapon and @second_weapon
con = con + "_L"
else
con = con + "_R"
end
end
# ニ但ニ男ニ陳≫「テ渉更
self.condition = con
# ニ停ケツーニ致窶堋ゥ窶敕帚堋ゥ
if !ANIME[@battler_condition][1]
self.anime_on
end
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ツ行窶慊ョニ但ニ男ニ陳)
#--------------------------------------------------------------------------
def update_animation1
@animation1_on = true
# ツ行窶慊ョニ但ニ男ニ陳≫堙固津」窶堙可行窶慊ョ窶堙ーナ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
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (窶佚篠湘嵌但ニ男ニ陳)
#--------------------------------------------------------------------------
def update_animation2
@animation2_on = true
# ツ行窶慊ョニ但ニ男ニ陳≫堙固津」窶堙可行窶慊ョ窶堙ーナ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
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ脱ニ竪ニ辰ニ暖)
#--------------------------------------------------------------------------
def update_wait
@wait_count2 = @action.split(/#/)[1].to_i
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ナスc窶佛凪「\ナスツヲ)
#--------------------------------------------------------------------------
def update_shadow_on
@shadow = true
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ナスc窶佛督湘≫ケナス)
#--------------------------------------------------------------------------
def update_shadow_off
@shadow = false
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ツ債カ窶ーE窶敖ス窶彎)
#--------------------------------------------------------------------------
def update_reverse
@reverse = @reverse ? false : true
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (窶弄窶堋ォニ但ニ男ニ陳)
#--------------------------------------------------------------------------
def update_flash
# 窶弄窶堋ォニ但ニ男ニ陳≫堙固津」窶堙可行窶慊ョ窶堙ーナJナスn窶堋キ窶堙ゥ
if @flash_flag["normal"]
@wait_count = $scene.flash_duration
@flash_flag["normal"] = false
return
end
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (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
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ但ニ誰ニ耽ツーニ但ニ男ニ陳ナ津窶凖ィ)
#--------------------------------------------------------------------------
def update_freeze
con = @action.split(/#/)[1]
# 窶ーEナスティツ・ツ債カナスティ窶堙ー窶「ツェ窶堋ッ窶堙ゥ
if DUAL_WEAPONS_ANIME.include?(con)
if !@first_weapon and @second_weapon
con = con + "_L"
else
con = con + "_R"
end
end
# ニ但ニ男ニ陳≫「テ渉更
self.condition = con
@pattern = @action.split(/#/)[2].to_i
@pattern_freeze = true
@condition_freeze = true
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ但ニ誰ニ耽ツーニ但ニ男ニ陳ナ津窶凖ィ窶ーテーツ焦)
#--------------------------------------------------------------------------
def update_freeze_lifting
@pattern_freeze = false
@condition_freeze = false
update_next
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ但ニ男ニ陳ツーニ歎ニ停。ニ停懌堙娯「\ナスツヲ)
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (窶慊ョツ催ャツ終窶板ケ)
#--------------------------------------------------------------------------
def update_finish
# 窶慊ョツ催ャツ終窶板ケ
@battler_action = false
@step = "setup"
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ーツー窶堙個湘ウ窶佚板(ニ弛ニ暖ニ停ーツーニ丹ニ停ーニ稚ニ達ニ鍛ニ誰窶堙姑耽ニ辰ニ致)
#--------------------------------------------------------------------------
def condition
return @battler_condition
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ーツー窶堙個湘ウ窶佚 窶「テ渉更ツ(ニ弛ニ暖ニ停ーツーニ丹ニ停ーニ稚ニ達ニ鍛ニ誰窶堙姑耽ニ辰ニ致)
#--------------------------------------------------------------------------
def condition=(condition)
return if @condition_freeze
if @battler_condition != condition
@wait_count = ANIME[condition][2]
@pattern = 0
end
@battler_condition = condition
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新
#--------------------------------------------------------------------------
def update
# ニ脱ニ巽ニ辰ニ暖窶吮窶堙個湘ェツ坂。
if @wait_count == 0
# ニ恥ニ耽ツーニ停慊更ツ新
self.char_animation
@wait_count = ANIME[@battler_condition][2]
end
# ニ恥ニ耽ツーニ停慊更ツ新
self.char_animation
# ニ脱ニ巽ニ辰ニ暖窶吮窶堙個湘ェツ坂。
if @wait_count2 > 0
return
end
# ツ行窶慊ョニ但ニ男ニ陳ツーニ歎ニ停。ニ停
if @battler_action
method("update_" + @step).call
return
end
# ニ断ツーニ耽ツ鞘ーナテコ窶ーツサ
@animation1_on = false
@animation2_on = false
@action = nil
@battle_actions = []
@move_wait = 0
@move_distance = nil
@flying_wait = 0
@flying_distance = nil
@flash = false
# 窶凖環湘ュツ・窶佚停ケ@
return self.condition = NORMAL
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ誰ニ歎ニ停。ニ停懌堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
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 = []
# ニ湛ニ鱈ニ停ケ
if skill != nil && kind == 1
@battle_actions = skill.battle_actions.dup
@flying_anime = skill.flying_anime
# ニ但ニ辰ニ弾ニ停ぎ
elsif item != nil && kind == 2
@battle_actions = item.battle_actions.dup
@flying_anime = item.flying_anime
# ツ債カナスティツ攻ナ停
elsif !@first_weapon and @second_weapon and self.is_a?(Game_Actor)
@battle_actions = self.battle_actions2.dup
@flying_anime = self.flying_anime2
# 窶ーEナスティツ攻ナ停
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
# 窶凖環湘ュツ攻ナ停
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 = ["ツ終窶板ケ"]
@flying_anime = [0,0,false,false]
end
end
#--------------------------------------------------------------------------
# ツナ ニ停ケツーニ致窶堋オ窶堙遺堋「ニ但ニ男ニ陳≫堙姑短ニ鍛ニ暖
#--------------------------------------------------------------------------
def anime_on
@pattern = 0
@pattern_log = true
return
end
#--------------------------------------------------------------------------
# ツナ ニ恥ニ耽ツーニ停慊更ツ新
#--------------------------------------------------------------------------
def char_animation
# ニ恥ニ耽ニ停愬津窶凖ィ窶堙個湘ェツ坂。窶堙窶堙窶堙ゥ
return if @pattern_freeze
# ニ停ケツーニ致窶堋オ窶堙遺堋「ニ但ニ男ニ陳≫堙個湘ェツ坂。 1234 窶堙ナス~窶堙懌堙ゥ
if !ANIME[@battler_condition][1] && @pattern == 3
return
end
# ニ但ニ男ニ陳≫堋ウ窶堋ケ窶堙遺堋「ツ湘ェツ坂。 1 窶堙ナス~窶堙懌堙ゥ
if ANIME[@battler_condition][4]
@pattern = 0
return
end
@pattern = (@pattern + 1) % 4
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ男ニ陳ニ耽ニ辰ニ致
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ツナ ニ短ニ鍛ニ暖ニ但ニ鍛ニ致
#--------------------------------------------------------------------------
alias side_view_setup setup
def setup(actor_id)
side_view_setup(actor_id)
start_battle
end
#--------------------------------------------------------------------------
# ツナ 窶愿ア窶慊≫「ツ税テュ窶堙栗Dナステヲ窶慊セツ ツツヲニ竪ニ停ーツー窶ーテア窶敕ー窶廃
#--------------------------------------------------------------------------
def weapon2_id
return @weapon2_id != nil ? @weapon2_id : 0
end
#--------------------------------------------------------------------------
# ツナ X窶「テサナ津シ ニ竹ニ淡ニ歎ニ停。ニ停 ナステヲ窶慊セ
#--------------------------------------------------------------------------
def position
return $data_classes[@class_id].position
end
#--------------------------------------------------------------------------
# ツナ Y窶「テサナ津シ ニ竹ニ淡ニ歎ニ停。ニ停 ナステヲ窶慊セ
#--------------------------------------------------------------------------
def position2
return self.index
end
#--------------------------------------------------------------------------
# ツナ 窶「ツ税テュニ但ニ男ニ陳ニ耽ニ辰ニ致
#--------------------------------------------------------------------------
def weapon_anime_type(type = @battler_condition)
file_name = weapon_anime_type0(type)
visible = weapon_anime_type1(type)
z = weapon_anime_type2(type)
motion = weapon_anime_type3(type)
return [file_name,visible,z,motion]
end
# 窶「ツ税テュニ但ニ辰ニ坦ニ停愬ステヲ窶慊セ
def weapon_anime_type0(type = @battler_condition)
type = ANIME[type][5]
return weapon_anime1 if type == "Right"
return weapon_anime2 if type == "Left"
return nil
end
# 窶「\ナスツヲツ・窶敕ア窶「\ナスツヲ窶堙固ステヲ窶慊セ
def weapon_anime_type1(type = @battler_condition)
return ANIME[type][3]
end
# ニ弛ニ暖ニ停ーツー窶堙ヲ窶堙ィツ湘」窶堙俄「\ナスツヲ窶堋キ窶堙ゥ窶堋ゥ窶堙窶堋、窶堋ゥ
def weapon_anime_type2(type = @battler_condition)
type = ANIME[type][5]
return true if type == "Left"
return false
end
# 窶「ツ税テュ窶堙娯慊ョツ催ャNoツ.ナステヲ窶慊セ
def weapon_anime_type3(type = @battler_condition)
type = ANIME[type][5]
return extend_weapon_anime1 if type == "Right"
return extend_weapon_anime2 if type == "Left"
return 0
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ(ニ谷ニ陳ニ停ー窶「テ「ツ青ウ窶督ウ窶堋オ)
#--------------------------------------------------------------------------
def true_x
return PARTY_X + position * FORMATION_X + @ox
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ(ニ谷ニ陳ニ停ー窶「テ「ツ青ウ窶督ウ窶堋オ)
#--------------------------------------------------------------------------
def true_y
# ニ恥ツーニ弾ニ達窶愿窶堙娯「テ窶堙堕鞘。窶堋ゥ窶堙ァ Y ツ催窶「W窶堙ーナ致ナスZ窶堋オ窶堙窶「テ披堋キ
if self.index != nil
y = position2 * FORMATION_Y + PARTY_Y + @oy - @height / 2
return y
else
return 0
end
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def screen_x(true_x = self.true_x)
return 320 + (true_x - 320) * @real_zoom + @real_x
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def screen_y(true_y = self.true_y)
return true_y * @real_zoom + @real_y
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Z ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def screen_z
return screen_y + 1000
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ(ヒテ壺慊ョ窶堙遺堙窶堋オ窶堙窶堋「窶堙遺堋「ツ湘ェツ坂。)
#--------------------------------------------------------------------------
def base_x
return 320 + (true_x - @ox - 320) * @real_zoom + @real_x
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def base_y
return (true_y - @oy) * @real_zoom + @real_y
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 ナg窶佚・窶板ヲ窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def zoom
return ($scene.zoom_rate[1] - $scene.zoom_rate[0]) *
(true_x + @fly) / 480 + $scene.zoom_rate[0]
end
#--------------------------------------------------------------------------
# ツナ ツ攻ナ停壺廃ツ、ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def attack_x(z)
return (320 - true_x) * z * 0.75
end
#--------------------------------------------------------------------------
# ツナ ツ攻ナ停壺廃ツ、ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def attack_y(z)
return (160 - (true_y + fly / 4) * z + @height * zoom * z / 2) * 0.75
end
#--------------------------------------------------------------------------
# ツナ 窶弄窶堋ォ窶佚停堋ソナスナセナテ
#--------------------------------------------------------------------------
def flash_duration
return $scene.flash_duration
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ男ニ陳ツーニ歎ニ停。ニ停愬ステヲ窶慊セ
#--------------------------------------------------------------------------
def battle_actions1
weapon = $data_weapons[@weapon_id]
return weapon != nil ? weapon.battle_actions : BattleActions::Actions["窶凖環湘ュツ攻ナ停"]
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ男ニ陳ツーニ歎ニ停。ニ停愬ステヲ窶慊セ
#--------------------------------------------------------------------------
def battle_actions2
weapon = $data_weapons[@weapon2_id]
return weapon != nil ? weapon.battle_actions : BattleActions::Actions["窶凖環湘ュツ攻ナ停"]
end
#--------------------------------------------------------------------------
# ツナ 窶「ツ税テュニ但ニ男ニ陳ツーニ歎ニ停。ニ停 窶慊ョ窶堋ォ窶「テサ ナステヲ窶慊セ
#--------------------------------------------------------------------------
def extend_weapon_anime1
weapon = $data_weapons[@weapon_id]
return weapon != nil ? weapon.anime : 0
end
#--------------------------------------------------------------------------
# ツナ 窶「ツ税テュニ但ニ男ニ陳ツーニ歎ニ停。ニ停 窶慊ョ窶堋ォ窶「テサ ナステヲ窶慊セ
#--------------------------------------------------------------------------
def extend_weapon_anime2
weapon = $data_weapons[@weapon2_id]
return weapon != nil ? weapon.anime : 0
end
#--------------------------------------------------------------------------
# ツナ 窶「ツ税テュニ但ニ男ニ陳ツーニ歎ニ停。ニ停愬ステヲ窶慊セ
#--------------------------------------------------------------------------
def weapon_anime1
weapon = $data_weapons[@weapon_id]
return weapon != nil ? weapon.icon_name : ""
end
#--------------------------------------------------------------------------
# ツナ 窶「ツ税テュニ但ニ男ニ陳ツーニ歎ニ停。ニ停愬ステヲ窶慊セ
#--------------------------------------------------------------------------
def weapon_anime2
weapon = $data_weapons[@weapon2_id]
return weapon != nil ? weapon.icon_name : ""
end
#--------------------------------------------------------------------------
# ツナ 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳ツーニ歎ニ停。ニ停愬ステヲ窶慊セ
#--------------------------------------------------------------------------
def flying_anime1
weapon = $data_weapons[@weapon_id]
return weapon != nil ? weapon.flying_anime : [0,0,false,false]
end
#--------------------------------------------------------------------------
# ツナ 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳ツーニ歎ニ停。ニ停愬ステヲ窶慊セ
#--------------------------------------------------------------------------
def flying_anime2
weapon = $data_weapons[@weapon2_id]
return weapon != nil ? weapon.flying_anime : [0,0,false,false]
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョ窶禿壺「Wツ催窶「W窶堙固致ナスZ
#--------------------------------------------------------------------------
def move_setup
if RTAB
targets = @target
else
targets = $scene.target_battlers
end
case @move_action[0]
when "self" # ナスツゥ窶「ツェ
@target_x = self.base_x
@target_y = self.base_y
when "target_near" # ヒテェ窶敕披ケテ溪堋ュ窶堙姑耽ツーニ嘆ニ鍛ニ暖
targets.sort!{|a,b| a.screen_x<=>b.screen_x }
targets.reverse!
if targets != []
@target_x = targets[0].screen_x
@target_y = targets[0].screen_y
else
@target_x = self.base_x
@target_y = self.base_y
end
when "target_far" # ヒテェ窶敕披ー窶懌堋ュ窶堙姑耽ツーニ嘆ニ鍛ニ暖
targets.sort!{|a,b| a.screen_x<=>b.screen_x }
if targets != []
@target_x = targets[0].screen_x
@target_y = targets[0].screen_y
else
@target_x = self.base_x
@target_y = self.base_y
end
when "target" # ニ耽ツーニ嘆ニ鍛ニ暖窶吮窶ー窶コ
@target_x = 0
@target_y = 0
for t in targets
@target_x += t.screen_x
@target_y += t.screen_y
end
if targets != []
@target_x /= targets.size
@target_y /= targets.size
end
when "troop" # "ニ暖ニ停ケツーニ致窶吮窶ー窶コ"
@target_x = 0
@target_y = 0
for t in $game_troop.enemies
@target_x += t.screen_x
@target_y += t.screen_y
end
if $game_troop.enemies != []
@target_x /= $game_troop.enemies.size
@target_y /= $game_troop.enemies.size
end
when "party" # "ニ恥ツーニ弾ニ達窶吮窶ー窶コ"
@target_x = 0
@target_y = 0
for t in $game_party.actors
@target_x += t.screen_x
@target_y += t.screen_y
end
if $game_party.actors != []
@target_x /= $game_party.actors.size
@target_y /= $game_party.actors.size
end
when "screen" # "窶ーテヲ窶禿"
@target_x = self.base_x
@target_y = self.base_y
end
# 窶「テ「ツ青ウ
@target_x += @move_action[1] - self.base_x
@target_y += @move_action[2] - self.base_y
# ヒテ壺慊ョ窶禿壺「W窶堙個催窶「W窶堙ーニ短ニ鍛ニ暖
@move_coordinates = [@target_x.to_i,@target_y.to_i,@move_coordinates[0],@move_coordinates[1]]
# 窶ケ窶披板」窶堙固致ナスZ(ニ脱ニ竪ニ辰ニ暖窶堙個静昶凖ィ)
@move_wait = (@move_coordinates[2] - @move_coordinates[0]).abs +
(@move_coordinates[3] - @move_coordinates[1]).abs
end
end
#==============================================================================
# ツツ。 Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ツナ ニ短ニ鍛ニ暖ニ但ニ鍛ニ致
#--------------------------------------------------------------------------
alias side_view_initialize initialize
def initialize(troop_id, member_index)
side_view_initialize(troop_id, member_index)
start_battle
end
def character_name
return battler_name
end
def character_hue
return battler_hue
end
def reverse
return !@reverse
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョ
#--------------------------------------------------------------------------
def move
# 窶ケ窶披板」窶堙固致ナス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
# ニ淡ニ槌槌停愴致窶「テ「ツ青ウ窶冤窶堙固致ナス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
# ニ脱ニ竪ニ辰ニ暖
@move_wait -= @move_action[3]
@move_wait = [@move_wait,0].max
end
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョ窶禿壺「Wツ催窶「W窶堙固致ナスZ
#--------------------------------------------------------------------------
def move_setup
if RTAB
targets = @target
else
targets = $scene.target_battlers
end
case @move_action[0]
when "self" # ナスツゥ窶「ツェ
@target_x = self.base_x
@target_y = self.base_y
when "target_near" # ヒテェ窶敕披ケテ溪堋ュ窶堙姑耽ツーニ嘆ニ鍛ニ暖
targets.sort!{|a,b| a.screen_x<=>b.screen_x }
if targets != []
@target_x = targets[0].screen_x
@target_y = targets[0].screen_y
else
@target_x = self.base_x
@target_y = self.base_y
end
when "target_far" # ヒテェ窶敕披ー窶懌堋ュ窶堙姑耽ツーニ嘆ニ鍛ニ暖
targets.sort!{|a,b| a.screen_x<=>b.screen_x }
targets.reverse!
if targets != []
@target_x = targets[0].screen_x
@target_y = targets[0].screen_y
else
@target_x = self.base_x
@target_y = self.base_y
end
when "target" # ニ耽ツーニ嘆ニ鍛ニ暖窶吮窶ー窶コ
@target_x = 0
@target_y = 0
for t in targets
@target_x += t.screen_x
@target_y += t.screen_y
end
if targets != []
@target_x /= targets.size
@target_y /= targets.size
end
when "party" # "ニ暖ニ停ケツーニ致窶吮窶ー窶コ"
@target_x = 0
@target_y = 0
for t in $game_troop.enemies
@target_x += t.screen_x
@target_y += t.screen_y
end
if $game_troop.enemies != []
@target_x /= $game_troop.enemies.size
@target_y /= $game_troop.enemies.size
end
when "troop" # "ニ恥ツーニ弾ニ達窶吮窶ー窶コ"
@target_x = 0
@target_y = 0
for t in $game_party.actors
@target_x += t.screen_x
@target_y += t.screen_y
end
if $game_party.actors != []
@target_x /= $game_party.actors.size
@target_y /= $game_party.actors.size
end
when "screen" # "窶ーテヲ窶禿"
@target_x = self.base_x
@target_y = self.base_y
end
# 窶「テ「ツ青ウ
@target_x -= @move_action[1] + self.base_x
@target_y -= @move_action[2] + self.base_y
# ヒテ壺慊ョ窶禿壺「W窶堙個催窶「W窶堙ーニ短ニ鍛ニ暖
@move_coordinates = [@target_x.to_i,@target_y.to_i,@move_coordinates[0],@move_coordinates[1]]
# 窶ケ窶披板」窶堙固致ナスZ(ニ脱ニ竪ニ辰ニ暖窶堙個静昶凖ィ)
@move_wait = (@move_coordinates[2] - @move_coordinates[0]).abs +
(@move_coordinates[3] - @move_coordinates[1]).abs
end
if RTAB
alias original_x true_x
alias original_y true_y
else
alias original_x screen_x
alias original_y screen_y
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ(ニ谷ニ陳ニ停ー窶「テ「ツ青ウ窶督ウ窶堋オ)
#--------------------------------------------------------------------------
def true_x
return original_x + @ox
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ(ニ谷ニ陳ニ停ー窶「テ「ツ青ウ窶督ウ窶堋オ)
#--------------------------------------------------------------------------
def true_y
return original_y - @height / 2 + @oy
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def screen_x(true_x = self.true_x)
return true_x * @real_zoom + @real_x
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ
#--------------------------------------------------------------------------
def screen_y(true_y = self.true_y)
return true_y * @real_zoom + @real_y
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 X ツ催窶「W窶堙固ステヲ窶慊セ(ヒテ壺慊ョ窶堙遺堙窶堋オ窶堙窶堋「窶堙遺堋「ツ湘ェツ坂。)
#--------------------------------------------------------------------------
def base_x(true_x = self.true_x)
return (true_x - @ox) * @real_zoom + @real_x
end
#--------------------------------------------------------------------------
# ツナ ニ弛ニ暖ニ停ケ窶ーテヲ窶禿 Y ツ催窶「W窶堙固ステヲ窶慊セ(ヒテ壺慊ョ窶堙遺堙窶堋オ窶堙窶堋「窶堙遺堋「ツ湘ェツ坂。)
#--------------------------------------------------------------------------
def base_y(true_y = self.true_y)
return (true_y - @oy) * @real_zoom + @real_y
end
end
#==============================================================================
# ツツ。 Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ツナ ニ但ニ誰ニ耽ツー窶堙ー窶ーテ≫堋ヲ窶堙ゥ
# actor_id : ニ但ニ誰ニ耽ツー ID
#--------------------------------------------------------------------------
alias side_view_add_actor add_actor
def add_actor(actor_id)
# ニ但ニ誰ニ耽ツー窶堙ーナステヲ窶慊セ
actor = $game_actors[actor_id]
# ニ探ニ辰ニ檀ニ池ニ停ヲツーニ断ツーニ耽窶堙個鞘ーナテコ窶ーツサ
actor.start_battle
# 窶禿溪堋キ
side_view_add_actor(actor_id)
end
end
#==============================================================================
# ツツ。 Scene_Battle
#==============================================================================
class Scene_Battle
include Side_view
#--------------------------------------------------------------------------
# ツナ ナ津カナJニ辰ニ停愴湛ニ耽ニ停愴湛窶「テ渉絶
#--------------------------------------------------------------------------
attr_reader :phase # ニ稚ニ巽ツーニ炭
attr_reader :phase4_step # ニ稚ニ巽ツーニ炭窶售ニ湛ニ弾ニ鍛ニ致
attr_reader :active_battler # 窶佚篠湘帚堙娯掏窶氾ア
attr_reader :target_battlers # 窶佚篠湘帚堙娯掏窶氾ア
attr_reader :animation1_id # ツ行窶慊ョニ但ニ男ニ陳!D
attr_reader :animation2_id # 窶佚篠湘嵌但ニ男ニ陳!D
#--------------------------------------------------------------------------
# ツナ ニ陳ニ辰ニ停慊祥窶板
#--------------------------------------------------------------------------
alias side_view_main main
def main
# ニ弛ニ暖ニ停ーツーツ鞘ーナテコ窶ーツサ
for battler in $game_party.actors + $game_troop.enemies
battler.start_battle
end
# 窶禿溪堋キ
side_view_main
end
#--------------------------------------------------------------------------
# ツナ 窶弄窶堋ォ窶敖サ窶凖ィ
#--------------------------------------------------------------------------
def flash?
return @flash_flag ? true : false
end
#--------------------------------------------------------------------------
# ツナ 窶弄窶堋ォニ但ニ男ニ陳≫佚停堋ソナスナセナテ版ステヲ窶慊セ
#--------------------------------------------------------------------------
def flash_duration
animation = nil
if FLASH_ANIME
animation = $data_animations[FLASH_ANIMATION_ID]
end
return animation != nil ? animation.frame_max * 2 + 2 : 0
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ陳ニ辰ニ停愴稚ニ巽ツーニ炭 ニ湛ニ弾ニ鍛ニ致 2 : ニ但ニ誰ニ歎ニ停。ニ停愬Jナスn)
#--------------------------------------------------------------------------
alias side_view_update_phase4_step2 update_phase4_step2
def update_phase4_step2(*arg)
battler = convert_battler2(*arg)
battler.action
side_view_update_phase4_step2(*arg)
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ陳ニ辰ニ停愴稚ニ巽ツーニ炭 ニ湛ニ弾ニ鍛ニ致 3 : ツ行窶慊ョ窶伉、ニ但ニ男ニ陳ツーニ歎ニ停。ニ停)
#--------------------------------------------------------------------------
alias side_view_update_phase4_step3 update_phase4_step3
def update_phase4_step3(*arg)
battler = convert_battler2(*arg)
return if !battler.animation1_on and battler.action? and !battler.flash?
if battler.flash? and FLASH_ANIME
battler.flash_flag["normal"] = true
end
side_view_update_phase4_step3(*arg)
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新 (ニ陳ニ辰ニ停愴稚ニ巽ツーニ炭 ニ湛ニ弾ニ鍛ニ致 4 : 窶佚篠湘帚伉、ニ但ニ男ニ陳ツーニ歎ニ停。ニ停)
#--------------------------------------------------------------------------
alias side_view_update_phase4_step4 update_phase4_step4
def update_phase4_step4(*arg)
battler = convert_battler2(*arg)
targets = RTAB ? battler.target : @target_battlers
return if !battler.animation2_on and battler.action?
side_view_update_phase4_step4(*arg)
for target in targets
if RTAB
value = nil
if target.damage_sp.include?(battler)
value = target.damage_sp[battler]
end
if target.damage.include?(battler)
if value == nil or value == "Miss"
value = target.damage[battler]
elsif value.is_a?(Numeric) && value > 0
value = target.damage[battler] == "Miss" ? value : target.damage[battler]
end
end
else
value = target.damage
end
if target.is_a?(Game_Actor)
# ニ胆ニ陳ツーニ淡窶堙個湘ェツ坂。
if value.is_a?(Numeric) && value > 0
# ニ歎ニ巽ニ辰ニ誰窶堙ーナJナスn
target.shake = true
end
elsif target.is_a?(Game_Enemy)
# ニ胆ニ陳ツーニ淡窶堙個湘ェツ坂。
if value.is_a?(Numeric) && value > 0
# ニ歎ニ巽ニ辰ニ誰窶堙ーナJナスn
target.shake = true
end
end
end
end
#--------------------------------------------------------------------------
# ツナ ニ致ニ椎槌弛ニ暖ニ停ケニ稚ニ巽ツーニ炭ナJナスn
#--------------------------------------------------------------------------
alias start_phase1_correct start_phase1
def start_phase1
# ニ谷ニ陳ニ停ー窶堙個静昶凖ィ
# ナ陳ウツ々ニ稚ニ陳哉停愴暖ニ池ニ停ヲツーナ津シ窶堋ッ窶堙個絶昶冤窶堙俄堙遺堙≫堙窶堋
「窶堙ゥ窶堋ス窶堙
@zoom_rate = [1.0, 1.0]
start_phase1_correct
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ誰ニ耽ツーニ坦ニ筑ニ停愴檀ニ稚ニ巽ツーニ炭ナJナスn
#--------------------------------------------------------------------------
alias start_phase3_correct start_phase3
def start_phase3
battler = convert_battler
start_phase3_correct
if RTAB
# ニ谷ニ陳ニ停ー窶堙個静昶凖ィ
# ナ陳ウツ々ニ稚ニ陳哉停愴暖ニ池ニ停ヲツーナ津シ窶堋ッ窶堙個絶昶冤窶堙俄堙遺堙≫堙窶堋
「窶堙ゥ窶堋ス窶堙
@camera = "command"
@spriteset.screen_target(0, 0, 1.0)
end
end
end
class Spriteset_Battle
include Side_view
#--------------------------------------------------------------------------
# ツナ ニ棚ニ置ニ淡ニ巽ニ誰ニ暖ツ鞘ーナテコ窶ーツサ
#--------------------------------------------------------------------------
alias side_veiw_initialize initialize
def initialize
side_veiw_initialize
# ニ但ニ誰ニ耽ツーニ湛ニ致ニ停ーニ辰ニ暖窶堙ー窶ーテー窶「テコ
for sprite in @actor_sprites
sprite.dispose
end
# ニ但ニ誰ニ耽ツーニ湛ニ致ニ停ーニ辰ニ暖窶堙ーツ催ャツ青ャ
@actor_sprites = []
for i in 1..Party_max
@actor_sprites.push(Sprite_Battler.new(@viewport1))
end
update
end
#--------------------------------------------------------------------------
# ツナ 窶ーテヲ窶禿岩堙姑湛ニ誰ニ陳債ーニ停ケ
#--------------------------------------------------------------------------
if method_defined?("screen_scroll")
alias side_view_screen_scroll screen_scroll
def screen_scroll
side_view_screen_scroll
# ニ但ニ誰ニ耽ツー窶堙戸テ岩冰窶「テ「ツ青ウ
for actor in $game_party.actors
actor.real_x = @real_x
actor.real_y = @real_y
actor.real_zoom = @real_zoom
end
end
end
end
class Sprite_Battler < RPG::Sprite
include Side_view
#--------------------------------------------------------------------------
# ツナ ニ棚ニ置ニ淡ニ巽ニ誰ニ暖ツ鞘ーナテコ窶ーツサ
# viewport : ニ池ニ停ヲツーニ竹ツーニ暖
# battler : ニ弛ニ暖ニ停ーツー (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
@weapon = Sprite_Weapon.new(viewport, battler)
@flying = Sprite_Flying.new(viewport, battler)
@shadow = []
@fly = 0
@fly_direction = 1
@rand = rand(10)
@bitmaps = {}
self.effect_clear
end
#--------------------------------------------------------------------------
# ツナ 窶ーテー窶「テコ
#--------------------------------------------------------------------------
alias side_view_dispose dispose
def dispose
side_view_dispose
@weapon.dispose if @weapon != nil
@flying.dispose if @flying != nil
if @_target_sprite != nil
@_target_sprite.bitmap.dispose
@_target_sprite.dispose
@_target_sprite = nil
end
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新
#--------------------------------------------------------------------------
def update
super
# ニ弛ニ暖ニ停ーツー窶堋ェ nil 窶堙個湘ェツ坂。
if @battler == nil
self.bitmap = nil
@weapon.bitmap = nil
loop_animation(nil)
return
end
# ニ弛ニ暖ニ停ーツーツ更ツ新
@battler.update
# ニ弛ニ暖ニ停ーツーニ但ニ男ニ陳≫堙姑断ツーニ耽ナステヲ窶慊セ
@anime_type = @battler.anime_type
# bitmap 窶堙ーニ鱈ニ槌槌鍛ニ歎ニ停ヲ窶ーツサ
path = @anime_type[0].to_s + "#" + @battler.pattern.to_s
if not @bitmaps.include?(path) or @bitmaps[path].disposed?
# ニ稚ニ叩ニ辰ニ停ケ窶督シ窶堋ゥツ色窶佛窶堋ェナ陳サツ催昶堙娯堙窶堙娯堙ヒテ吮堙遺堙ゥツ
湘ェツ坂。
change = (@battler.character_name != @battler_name or @battler.character_hue != @battler_hue)
if change
# ニ池ニ鍛ニ暖ニ筑ニ鍛ニ致窶堙ーナステヲ窶慊セツ、ツ静昶凖ィ
@battler_name = @battler.character_name
@battler_hue = @battler.character_hue
@bitmap = RPG::Cache.character(@battler_name, @battler_hue)
@width = @bitmap.width / 4
@height = @bitmap.height / 4
self.ox = @width / 2
self.oy = @height / 2
@battler.height = @height
@flag = true
# ツ静ュ窶慊ャ窶「s窶\窶堙懌堋ス窶堙坂ーB窶堙ェツ湘ウ窶佚披堙遺堙ァ窶「s窶慊ァ窶督セ窶忸窶堙ー 0 窶堙俄堋キ窶堙ゥ
if @battler.dead? or @battler.hidden
self.opacity = 0
end
end
if (@anime_type[0] != @battler_condition or
@battler.pattern != @battler_pattern or flag)
# ニ池ニ鍛ニ暖ニ筑ニ鍛ニ致窶堙ーナステヲ窶慊セツ、ツ静昶凖ィ
@battler_condition = @anime_type[0]
@battler_pattern = @battler.pattern
@sx = @battler.pattern * @width
@sy = @anime_type[0] % 4 * @height
self.bitmap = Bitmap.new(@width,@height)
self.bitmap.blt(0,0, @bitmap,Rect.new(@sx, @sy, @width, @height))
@bitmaps[path] = self.bitmap
flag = false
end
end
self.bitmap = @bitmaps[path]
# 窶敕イツ行
update_fly
# ニ歎ニ巽ニ辰ニ誰
update_shake
# 窶ーテア窶彎
update_turning
# 窶敖ス窶彎
update_reverse
# ヒテ壺慊ョ
update_moving
# 窶凖窶ーテニ但ニ男ニ陳
update_add_anime
# ニ竪ニ稚ニ巽ニ誰ニ暖ナ津ク窶ーテ岩堙娯廳窶廃
update_effect
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停 ID 窶堋ェナ陳サツ催昶堙娯堙窶堙娯堙ヒテ吮堙遺堙ゥツ湘ェツ坂。
flag = RTAB ? true : @battler.damage == nil
if flag and @battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
# ニ歎ニ巽ニ辰ニ誰
if @battler.shake
self.start_shake(5, 5, 5)
@battler.shake = false
end
# 窶督セ窶禿
if @battler.blink
blink_on
else
blink_off
end
# 窶「s窶ーテでス窶ケ窶堙個湘ェツ坂。
unless @battler_visible
flag = RTAB ? (@battler.damage.size < 2 or @battler.damage_pop.size < 2) :
(@battler.damage == nil or @battler.damage_pop)
# ツ出ナ陳サ
if not @battler.hidden and not @battler.dead? and flag
appear
@battler_visible = true
end
end
if RTAB
# ニ胆ニ陳ツーニ淡
for battler in @battler.damage_pop
if battler[0].class == Array
if battler[0][1] >= 0
$scene.skill_se
else
$scene.levelup_se
end
damage(@battler.damage[battler[0]], false, 2)
else
damage(@battler.damage[battler[0]], @battler.critical[battler[0]])
end
if @battler.damage_sp.include?(battler[0])
damage(@battler.damage_sp[battler[0]],
@battler.critical[battler[0]], 1)
@battler.damage_sp.delete(battler[0])
end
@battler.damage_pop.delete(battler[0])
@battler.damage.delete(battler[0])
@battler.critical.delete(battler[0])
end
end
# 窶ーテでス窶ケ窶堙個湘ェツ坂。
if @battler_visible
# 窶慊ヲ窶倪
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
# 窶昶卮稚ニ停ーニ鍛ニ歎ニ停ヲ
if @battler.white_flash
whiten
@battler.white_flash = false
end
if RTAB
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停
if !@battler.animation.empty?
for animation in @battler.animation.reverse
if animation[2]
animation($data_animations[animation[0]], animation[1], true)
else
animation($data_animations[animation[0]], animation[1])
end
@battler.animation.delete(animation)
end
end
else
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
end
# ニ胆ニ陳ツーニ淡
if !RTAB and @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
flag = RTAB ? (@battler.damage.empty? and $scene.dead_ok?(@battler)) :
@battler.damage == nil
# ニ坦ニ停ーニ致ニ湛
if flag and @battler.dead?
if @battler.is_a?(Game_Actor)
$game_system.se_play($data_system.actor_collapse_se)
elsif @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
end
collapse
@battler_visible = false
end
end
# ニ湛ニ致ニ停ーニ辰ニ暖窶堙個催窶「W窶堙ーツ静昶凖ィ
self.x = @battler.screen_x + @effect_ox
self.y = @battler.screen_y + @effect_oy
self.z = @battler.screen_z
self.zoom_x = @battler.real_zoom
self.zoom_y = @battler.real_zoom
# ニ脱ニ巽ニ辰ニ暖ニ谷ニ脱ニ停愴暖窶堙ーナ陳ク窶堙ァ窶堋キ
@battler.wait_count -= 1
@battler.wait_count2 -= 1
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停懌佚停堋ソナスナセナテ版ステヲ窶慊セ
@battler.animation_duration = @_animation_duration
if @battler.is_a?(Game_Actor)
self.zoom_x *= CHAR_ZOOM
self.zoom_y *= CHAR_ZOOM
end
# 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳
if @battler.flying_anime != [0,0,false,false] and @flying.nil?
@flying = Sprite_Flying.new(self.viewport, @battler)
elsif @battler.flying_anime == [0,0,false,false] and !@flying.nil?
@flying.dispose
@flying = nil
end
if @flying != nil
@flying.battler = @battler
@flying.update
end
if @battler.is_a?(Game_Actor)
# 窶「ツ税テュニ但ニ男ニ陳
if @battler.weapon_anime_type1 and @weapon.nil?
@weapon = Sprite_Weapon.new(self.viewport, @battler)
elsif !@battler.weapon_anime_type1 and !@weapon.nil?
@weapon.dispose
@weapon = nil
end
if @weapon != nil
@weapon.battler = @battler
@weapon.update
@weapon.opacity = self.opacity
@weapon.x = self.x + BLZ_X[@battler.weapon_anime_type3][@battler.pattern]
@weapon.y = self.y + BLZ_Y[@battler.weapon_anime_type3][@battler.pattern]
@weapon.angle = BLZ_ANGLE[@battler.weapon_anime_type3][@battler.pattern]
if self.mirror
@weapon.angle += @weapon.angle - 180
end
end
end
# ナスc窶佛
if @battler.shadow
if Graphics.frame_count % 2 == 0
shadow = ::Sprite.new(self.viewport)
shadow.bitmap = self.bitmap.dup
shadow.x = self.x
shadow.y = self.y
shadow.ox = self.ox
shadow.oy = self.oy
shadow.mirror = self.mirror
shadow.angle = self.angle
shadow.opacity = 160
shadow.zoom_x = self.zoom_x
shadow.zoom_y = self.zoom_y
if @battler.is_a?(Game_Actor)
shadow.src_rect.set(@sx, @sy, @width, @height)
else
shadow.src_rect.set(0, 0, @width, @height)
end
@shadow.push([shadow,duration = 10,@battler.true_x + @effect_ox,@battler.true_y + @effect_oy])
end
end
for s in @shadow
if !s[0].disposed?
s[0].update
s[1] -= 1
if s[1] < 1
if s[0].bitmap != nil
s[0].bitmap.dispose
end
s[0].dispose
else
s[0].x = @battler.screen_x(s[2])
s[0].y = @battler.screen_y(s[3])
end
else
s = nil
end
end
@shadow.compact!
end
#--------------------------------------------------------------------------
# ツナ ニ竪ニ稚ニ巽ニ誰ニ暖窶堙俄堙ヲ窶堙ゥツ催窶「Wナ地窶堙個更ツ新
#--------------------------------------------------------------------------
def update_effect
# ナp窶忸窶堙個修ツ青ウ
if @_upside_down
self.angle = (@_turning + 180) % 360
else
self.angle = @_turning
end
# X ツ催窶「W窶堙個修ツ青ウ窶冤
@effect_ox = @_shake + @_moving[0]
# Y ツ催窶「W窶堙個修ツ青ウ窶冤
@effect_oy = -@fly + @_moving[1]
if @_animation == nil or (RTAB and @_animation.empty?)
self.effect_clear
end
end
#--------------------------------------------------------------------------
# ツナ ニ歎ニ巽ニ辰ニ誰ツ更ツ新
#--------------------------------------------------------------------------
def update_shake
if @_shake_duration >= 1 or @_shake != 0
delta = (@_shake_power * @_shake_speed * @_shake_direction) / 10.0
if @_shake_duration <= 1 and @_shake * (@_shake + delta) < 0
@_shake = 0
else
@_shake += delta
end
if @_shake > @_shake_power * 2
@_shake_direction = -1
end
if @_shake < - @_shake_power * 2
@_shake_direction = 1
end
if @_shake_duration >= 1
@_shake_duration -= 1
end
end
end
#--------------------------------------------------------------------------
# ツナ 窶敕イツ行ツ更ツ新
#--------------------------------------------------------------------------
def update_fly
if @rand > 0
@rand -= 1
return
end
if @battler.fly != 0
if @fly < @battler.fly / 4
@fly_direction = 1
elsif @fly > @battler.fly / 2
@fly_direction = -1
end
@fly += 0.5 * @fly_direction
end
end
#--------------------------------------------------------------------------
# ツナ 窶ーテア窶彎ツ更ツ新
#--------------------------------------------------------------------------
def update_turning
if @_turning_duration > 0 or @_turning != 0
@_turning += @_turning_direction * @_turning_speed / 2.0
# ナスc窶堙ィ窶ーテア窶彎ツ絶昶堙ーナ陳ク窶堙ァ窶堋キ
if @_turning_direction == -1
if @_turning_duration > 0 and @_turning < 0
@_turning_duration -= 1
end
elsif @_turning_direction == 1
if @_turning_duration > 0 and @_turning >= 360
@_turning_duration -= 1
end
end
# ヒテ遺ーツコ窶「テ「ツ青ウ
while @_turning < 0
@_turning += 360
end
if @_turning_duration <= 0
@_turning = 0
end
@_turning %= 360
end
end
#--------------------------------------------------------------------------
# ツナ ツ債カ窶ーE窶敖ス窶彎ツ更ツ新
#--------------------------------------------------------------------------
def update_reverse
if @last_reverse != (@_reverse or @battler.reverse)
self.mirror = (@_reverse or @battler.reverse)
@last_reverse = (@_reverse or @battler.reverse)
end
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョツ更ツ新
#--------------------------------------------------------------------------
def update_moving
@move_distance = (@_move_coordinates[2] - @_move_coordinates[0]).abs +
(@_move_coordinates[3] - @_move_coordinates[1]).abs
if @move_distance > 0
return if @_moving[0] == @_move_coordinates[0] and @_moving[1] == @_move_coordinates[1]
array = @_move_coordinates
x = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @_move_duration) / @move_distance.to_f).to_i
y = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @_move_duration) / @move_distance.to_f).to_i
@_moving = [x, y]
if @_move_quick_return and @_move_duration == 0
@_move_coordinates = [0,0,array[0],array[1]]
@_move_duration = @move_distance
end
@_move_duration -= @_move_speed
@_move_duration = [@_move_duration, 0].max
end
end
#--------------------------------------------------------------------------
# ツナ 窶凖窶ーテニ但ニ男ニ陳ツ更ツ新 (RTABナ津窶凖ィ窶ケ@窶\)
#--------------------------------------------------------------------------
def update_add_anime
if RTAB
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停
if @_add_anime_id != 0
animation = $data_animations[@_add_anime_id]
animation(animation, true)
@_add_anime_id = 0
end
end
end
#--------------------------------------------------------------------------
# ツナ ニ竪ニ稚ニ巽ニ誰ニ暖ツ鞘ーナテコ窶ーツサ
#--------------------------------------------------------------------------
def effect_clear
@_effect_ox = 0
@_effect_oy = 0
@_shake_power = 0
@_shake_speed = 0
@_shake_duration = 0
@_shake_direction = 1
@_shake = 0
@_upside_down = false
@_reverse = false
@_turning_direction = 1
@_turning_speed = 0
@_turning_duration = 0
@_turning = 0
@_move_quick_return = true
@_move_speed = 0
@_move_coordinates = [0,0,0,0]
@_move_jump = false
@_move_duration = 0
@_moving = [0,0]
@_add_anime_id = 0
end
#--------------------------------------------------------------------------
# ツナ ニ歎ニ巽ニ辰ニ誰窶堙固Jナスn
# power : 窶ケツュ窶堋ウ
# speed : 窶伉ャ窶堋ウ
# duration : ナスナセナテ
#--------------------------------------------------------------------------
def start_shake(power, speed, duration)
@_shake_power = power
@_shake_speed = speed
@_shake_duration = duration
end
#--------------------------------------------------------------------------
# ツナ ツ湘」窶ーツコ窶敖ス窶彎窶堙ーナJナスn
#--------------------------------------------------------------------------
def start_upside_down
@_upside_down = @_upside_down ? false : true
end
#--------------------------------------------------------------------------
# ツナ ツ債カ窶ーE窶敖ス窶彎窶堙ーナJナスn
#--------------------------------------------------------------------------
def start_reverse
@_reverse = @_reverse ? false : true
end
#--------------------------------------------------------------------------
# ツナ 窶ーテア窶彎窶堙ーナJナスn
# direction: 窶「テサナ津シ
# speed : 窶伉ャ窶堋ウ
# duration : ナスナセナテ
#--------------------------------------------------------------------------
def start_turning(direction, speed, duration)
@_turning_direction = direction
@_turning_speed = speed
@_turning_duration = duration
@_turning = @_turning_direction == 1 ? 0 : 360
end
#--------------------------------------------------------------------------
# ツナ ヒテ壺慊ョ窶堙ーナJナスn
# quick_return : 窶禿溪堙ゥ窶堋ゥ窶堙窶堋、窶堋ゥ
# speed : 窶伉ャ窶堋ウ
# x : X ツ催窶「W
# y : Y ツ催窶「W
#--------------------------------------------------------------------------
def start_moving(quick_return, speed, x, y)
@_move_quick_return = quick_return == 0 ? false : true
@_move_speed = speed
@_move_coordinates = [x,y,@_move_coordinates[0],@_move_coordinates[1]]
distance = (@_move_coordinates[2] - @_move_coordinates[0]).abs +
(@_move_coordinates[3] - @_move_coordinates[1]).abs
@_move_duration = distance
end
#--------------------------------------------------------------------------
# ツナ ニ但ニ男ニ陳≫凖窶ーテ≫堙ーナJナスn
# id : ID
# hit : 窶督ス窶吮ニ稚ニ停ーニ鍛ニ丹
#--------------------------------------------------------------------------
def start_add_anime(id)
@_add_anime_id = id
end
#--------------------------------------------------------------------------
# ツナ ナeナステュニ竪ニ稚ニ巽ニ誰ニ暖窶堙固Jナスn窶敖サ窶凖ィ
#--------------------------------------------------------------------------
if !method_defined?("side_view_animation_process_timing")
alias side_view_animation_process_timing animation_process_timing
end
def animation_process_timing(timing, hit)
side_view_animation_process_timing(timing, hit)
if (timing.condition == 0) or
(timing.condition == 1 and hit == true) or
(timing.condition == 2 and hit == false)
if timing.se.name =~ SHAKE_FILE
names = timing.se.name.split(/#/)
power = names[1].nil? ? SHAKE_POWER : names[1].to_i
speed = names[2].nil? ? SHAKE_SPEED : names[2].to_i
duration = names[3].nil? ? SHAKE_DURATION : names[3].to_i
# ニ歎ニ巽ニ辰ニ誰窶堙ーナJナスn
self.start_shake(power, speed, duration)
end
if timing.se.name == UPSIDE_DOWN_FILE
# ツ湘」窶ーツコ窶敖ス窶彎窶堙ーナJナスn
self.start_upside_down
end
if timing.se.name == REVERSE_FILE
# ツ債カ窶ーE窶敖ス窶彎窶堙ーナJナスn
self.start_reverse
end
if timing.se.name =~ TURNING_FILE
names = timing.se.name.split(/#/)
direction = names[1].nil? ? TURNING_DIRECTION : names[1].to_i
speed = names[2].nil? ? TURNING_SPEED : names[2].to_i
duration = names[3].nil? ? TURNING_DURATION : names[3].to_i
# 窶ーテア窶彎窶堙ーナJナスn
self.start_turning(direction, speed, duration)
end
if timing.se.name =~ MOVE_FILE
names = timing.se.name.split(/#/)
quick_return= names[1].nil? ? MOVE_RETURN : names[1].to_i
speed = names[2].nil? ? MOVE_SPEED : names[2].to_i
x = names[3].nil? ? MOVE_COORDINATES[0] : names[3].to_i
y = names[3].nil? ? MOVE_COORDINATES[1] : names[4].to_i
# ヒテ壺慊ョ窶堙ーナJナスn
self.start_moving(quick_return, speed, x, y)
end
if timing.se.name =~ ADD_ANIME_FILE
names = timing.se.name.split(/#/)
id = names[1].nil? ? ADD_ANIME_ID : names[1].to_i
# ニ但ニ男ニ陳≫凖窶ーテ≫堙ーナJナスn
self.start_add_anime(id)
end
end
end
end
#==============================================================================
# ツツ。 Sprite_Weapon
#------------------------------------------------------------------------------
# ツ ニ弛ニ暖ニ停ーツー窶「\ナスツヲ窶廃窶堙姑湛ニ致ニ停ーニ辰ニ暖窶堙窶堋キツ。Game_Battler ニ誰ニ停ーニ湛窶堙姑辰ニ停愴湛ニ耽ニ停愴湛窶堙ーナテナス窶ケ窶堋オツ、
# ニ湛ニ致ニ停ーニ辰ニ暖窶堙個湘ウ窶佚披堙ーナスツゥ窶慊ョ窶廬窶堙俄「テ鞘ーツサ窶堋ウ窶堋ケ窶堙懌
堋キツ。
#==============================================================================
class Sprite_Weapon < ::Sprite
include Side_view
#--------------------------------------------------------------------------
# ツナ ナ津カナJニ辰ニ停愴湛ニ耽ニ停愴湛窶「テ渉絶
#--------------------------------------------------------------------------
attr_accessor :battler # ニ弛ニ暖ニ停ーツー
attr_reader :cw # ニ丹ニ停ーニ稚ニ達ニ鍛ニ誰窶堙娯「ツ
attr_reader :ch # ニ丹ニ停ーニ稚ニ達ニ鍛ニ誰窶堙個坂壺堋ウ
#--------------------------------------------------------------------------
# ツナ ニ棚ニ置ニ淡ニ巽ニ誰ニ暖ツ鞘ーナテコ窶ーツサ
# viewport : ニ池ニ停ヲツーニ竹ツーニ暖
# battler : ニ弛ニ暖ニ停ーツー (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
end
#--------------------------------------------------------------------------
# ツナ 窶ーテー窶「テコ
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新
#--------------------------------------------------------------------------
def update
super
# ニ弛ニ暖ニ停ーツー窶堋ェ nil 窶堙個湘ェツ坂。
if @battler == nil or !@battler.is_a?(Game_Actor)
self.bitmap = nil
return
end
# ニ脱ニ竪ニ竹ニ停愴但ニ男ニ陳≫堙姑断ツーニ耽ナステヲ窶慊セ
@weapon_anime_type = @battler.weapon_anime_type
# ツ静昶凖ィ窶堋ェツ「窶敕ア窶「\ナスツヲツ」窶堙個湘ェツ坂。
if !@weapon_anime_type[1] or @weapon_anime_type[0].nil?
self.visible = false
return
else
self.visible = true
end
# ニ稚ニ叩ニ辰ニ停ケ窶督シ窶堋ェナ陳サツ催昶堙娯堙窶堙娯堙ヒテ吮堙遺堙ゥツ湘ェツ坂。
if @weapon_anime_type[0] != @weapon_name
@weapon_name = @weapon_anime_type[0]
# ニ池ニ鍛ニ暖ニ筑ニ鍛ニ致窶堙ーナステヲ窶慊セツ、ツ静昶凖ィ
self.bitmap = RPG::Cache.icon(@weapon_name)
@width = bitmap.width
@height = bitmap.height
@flag = true
end
# ナ陳サツ催敞但ニ男ニ陳ニ恥ニ耽ツーニ停懌堋ェナ陳サツ催昶堙娯堙窶堙娯堙ヒテ吮堙遺堙ゥツ
湘ェツ坂。
if @pattern != @battler.pattern or @flag or @condition != @battler.condition
@pattern = @battler.pattern
@condition = @battler.condition
self.ox = @width
self.oy = @height
self.z = battler.screen_z
self.zoom_x = @battler.real_zoom * CHAR_ZOOM
self.zoom_y = @battler.real_zoom * CHAR_ZOOM
self.src_rect.set(0, 0, @width, @height)
self.opacity = 255
# ニ弛ニ暖ニ停ーツー窶堙ヲ窶堙ィナスティ窶楼窶堙俄「\ナスツヲ
if @weapon_anime_type[2]
self.z += 10
# ニ弛ニ暖ニ停ーツー窶堙ヲ窶堙ィ窶ーナ凪堙俄「\ナスツヲ
else
self.z -= 10
end
@flag = false
end
end
end
#==============================================================================
# ツツ。 Sprite_Flying
#------------------------------------------------------------------------------
# ツ ニ弛ニ暖ニ停ーツー窶「\ナスツヲ窶廃窶堙姑湛ニ致ニ停ーニ辰ニ暖窶堙窶堋キツ。Game_Battler ニ誰ニ停ーニ湛窶堙姑辰ニ停愴湛ニ耽ニ停愴湛窶堙ーナテナス窶ケ窶堋オツ、
# ニ湛ニ致ニ停ーニ辰ニ暖窶堙個湘ウ窶佚披堙ーナスツゥ窶慊ョ窶廬窶堙俄「テ鞘ーツサ窶堋ウ窶堋ケ窶堙懌
堋キツ。
#==============================================================================
class Sprite_Flying < RPG::Sprite
include Side_view
LATE_COUNT = 20
#--------------------------------------------------------------------------
# ツナ ナ津カナJニ辰ニ停愴湛ニ耽ニ停愴湛窶「テ渉絶
#--------------------------------------------------------------------------
attr_accessor :battler # ニ弛ニ暖ニ停ーツー
#--------------------------------------------------------------------------
# ツナ ニ棚ニ置ニ淡ニ巽ニ誰ニ暖ツ鞘ーナテコ窶ーツサ
# viewport : ニ池ニ停ヲツーニ竹ツーニ暖
# battler : ニ弛ニ暖ニ停ーツー (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
@later = LATE_COUNT
end
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新
#--------------------------------------------------------------------------
def update
super
# ニ弛ニ暖ニ停ーツー窶堋ェ nil 窶堙個湘ェツ坂。
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
# 窶ー窶懌ケ窶披板」ニ但ニ男ニ陳
flying_animation = @battler.flying_animation
flying_start = flying_animation[0]
flying_end = flying_animation[1]
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停 ID 窶堋ェナ陳サツ催昶堙娯堙窶堙娯堙ヒテ吮堙遺堙ゥツ湘ェツ坂。
if @anime_id != @battler.flying_anime[0]
@anime_id = @battler.flying_anime[0]
@animation = $data_animations[@anime_id]
end
# ニ但ニ男ニ陳ツーニ歎ニ停。ニ停 ナJナスn
if flying_start
animation(@animation,true)
elsif flying_end
# ツ湘≫ケナス窶堙ー窶凅窶堙ァ窶堋ケ窶堙窶堙昶堋ス窶堙ィ窶堋キ窶堙ゥ
@later -= 1
if @later < 0
animation(nil, true)
@later = LATE_COUNT
end
end
self.x = @battler.flying_x
self.y = @battler.flying_y
self.z = @battler.screen_z + 1000
end
end
module RPG
class Skill
#--------------------------------------------------------------------------
# ツナ 窶凪壺邸窶堋ゥ窶堙窶堋、窶堋ゥ窶堙娯敖サ窶冉
#--------------------------------------------------------------------------
def magic?
if @atk_f == 0
return true
else
return false
end
end
end
end
# ニ但ニ陳債ーニ谷ツーニ\ニ停ケ窶堙戸テ岩冰ツ修ツ青ウ
class Arrow_Actor < Arrow_Base
include Side_view
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新
#--------------------------------------------------------------------------
alias side_view_update update
def update
side_view_update
# ニ湛ニ致ニ停ーニ辰ニ暖窶堙個催窶「W窶堙ーツ静昶凖ィ
if self.actor != nil && (self.x != self.actor.screen_x + ARROW_OX or self.y != self.actor.screen_y + ARROW_OY)
self.x = self.actor.screen_x + ARROW_OX
self.y = self.actor.screen_y + ARROW_OY
end
end
end
class Arrow_Enemy < Arrow_Base
include Side_view
#--------------------------------------------------------------------------
# ツナ ニ稚ニ椎陳ーニ停ぎツ更ツ新
#--------------------------------------------------------------------------
alias side_view_update update
def update
side_view_update
# ニ湛ニ致ニ停ーニ辰ニ暖窶堙個催窶「W窶堙ーツ静昶凖ィ
if self.enemy != nil && (self.x != self.enemy.screen_x + ARROW_OX or self.y != self.enemy.screen_y + ARROW_OY)
self.x = self.enemy.screen_x + ARROW_OX
self.y = self.enemy.screen_y + ARROW_OY
end
end
end