设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2097|回复: 6
打印 上一主题 下一主题

[已经过期] 新人求救,想做一个重装机兵模式的rpg。我用的是RMxp

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2013-7-28
帖子
54
跳转到指定楼层
1
发表于 2013-7-29 11:27:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 qq526915277 于 2013-7-29 11:28 编辑

本人完全是小白。深爱重装机兵系列
前几天看到神奇RM XP 想自己动手制作一个重装机兵,。下载了一个RMxp试了一下感觉画地图、添加事件等等也能够理解,
备注:本人PS略有小成。

问题在于我下载的RMxp里面的人物战斗图是固定图片,和MM1里面的战斗方式也不一样。是竖版的。想弄成横版   百度翻阅无果特来求教。

还有希望高人能给我发电MM1的素材  最好是完整游戏的或者是类似重装机兵版本的系统   小白不甚感激!!

点评

百度搜索“FC游戏素材提取器”,可提取重装里的素材。  发表于 2013-7-29 14:22

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2013-7-28
帖子
54
2
 楼主| 发表于 2013-7-29 11:48:56 | 只看该作者
{:2_270:}不活了~~
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33492
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2013-7-29 13:43:07 | 只看该作者
百度搜索 重装机兵梦想起飞   ,貌似这个就是用 RM 做的 。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
327 小时
注册时间
2011-3-2
帖子
287
4
发表于 2013-7-29 14:19:06 | 只看该作者
重装也是我的大爱,梦想起飞貌似没有公开源码,有空自己弄个完整的重装系统
手机版RPG Maker EB官方火热测评中~~~

猛击观看视频
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-11-18
帖子
68
5
发表于 2013-7-29 17:04:10 | 只看该作者
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. ###############################################################################

  5. #行走图横版战斗:

  6. #------------------------------------------------------------------------------                                                 #modify by darkten

  7. ###############################################################################

  8.   

  9. module Side_view

  10.   #--------------------------------------------------------------------------

  11.   # ● 是否与RATB并用 ☆自动识别(这到是不错~省了~)

  12.   #    在Scene_Battle计算方法是否是方法synthe?

  13.   #    在自动不想认识的时候,请重写。

  14.   #--------------------------------------------------------------------------

  15.   if Scene_Battle.method_defined?("synthe?")

  16.     RTAB = true

  17.   else

  18.     RTAB = false

  19.   end

  20.   #--------------------------------------------------------------------------

  21.   # ● 改正RATB中的位置误差 ☆自动识别

  22.   #    在自动不想认识的时候,请重写。

  23.   #--------------------------------------------------------------------------

  24.   def camera_correctness

  25.     return false if !RTAB

  26.     begin

  27.       return $scene.drive

  28.     rescue

  29.       return false

  30.     end

  31.   end

  32.   #--------------------------------------------------------------------------

  33.   # ● 队伍中的最大人数

  34.   #--------------------------------------------------------------------------

  35.   Party_max = 4

  36.   #--------------------------------------------------------------------------

  37.   # ● 战斗图的扩大率(1.0的时候是保持原有大小)

  38.   #--------------------------------------------------------------------------

  39.   CHAR_ZOOM = 1.0

  40.   #--------------------------------------------------------------------------

  41.   # ● 光标的位置修正(基本不需要改~)

  42.   #--------------------------------------------------------------------------

  43.   ARROW_OX = 0

  44.   ARROW_OY = 64

  45.   #--------------------------------------------------------------------------

  46.   # ● 名状态作为飞行管理的排列(不知道什么意思....)

  47.   #--------------------------------------------------------------------------

  48.   FLY_STATES = ["飛行"]

  49.   #--------------------------------------------------------------------------

  50.   # ● 战斗画面的位置

  51.   #--------------------------------------------------------------------------

  52.   PARTY_X = 455     # 队伍 X 位置

  53.   PARTY_Y = 200     # 队伍 Y 位置

  54.   FORMATION_X = 15  # 各个角色之间的间隔 X

  55.   FORMATION_Y = 35  # 各个角色之间的间隔 Y

  56.   #--------------------------------------------------------------------------

  57.   # ● 自定义常数

  58.   #--------------------------------------------------------------------------

  59.   NORMAL   = "NORMAL"

  60.   WALK_R   = "WALK_R"

  61.   WALK_L   = "WALK_L"

  62.   ATTACK   = "ATTACK"

  63.   ATTACK_R = "ATTACK_R"

  64.   ATTACK_L = "ATTACK_L"

  65.   MAGIC    = "MAGIC"

  66.   ITEM     = "ITEM"

  67.   # 动画的设定

  68.   ANIME = {

  69.     # [画像ID,是否循环,アニメスピード,动画速度,不能指向动画,武器放在右手or左手]

  70.     NORMAL            => [1,true , 0,false, true ,""    ], # 通常待击

  71.     WALK_R            => [2,true , 2,false, false,""    ], # 右移动

  72.     WALK_L            => [1,true , 2,false, false,""    ], # 左移动

  73.     ATTACK_R          => [1,false, 2,true , false,"右手"], # 右手攻击

  74.     ATTACK_L          => [1,false, 2,true , false,"左手"], # 左手攻击

  75.     MAGIC             => [1,false, 2,false, false,""    ], # 右手攻击

  76.     ITEM              => [1,false, 2,false, false,""    ], # 左手攻击

  77.     }

  78.    

  79.   # 债务不履行声明价值的设定(一个字一个字翻译的,不知道啥意思)  

  80.   ANIME.default = [1,false,12,false,"",""]

  81.   

  82.   # 在行动设定的时候 右手攻击 or 左手攻击 辨别を(这个不知道什么意思)的ANIME

  83.   # "角色动画变更#ATTACK"在玩了と(还是不知道啥意思..)的时候,辨别ATTACK_R或者ATTACK_L

  84.   DUAL_WEAPONS_ANIME = [ATTACK]

  85.   

  86.   #--------------------------------------------------------------------------

  87.   # ● 摇晃的设定

  88.   #--------------------------------------------------------------------------

  89.   SHAKE_FILE = "摇晃"  # 文件名

  90.   SHAKE_POWER = 5          # 强度

  91.   SHAKE_SPEED = 5          # 速度

  92.   SHAKE_DURATION = 5      # 时间

  93.   #--------------------------------------------------------------------------

  94.   # ● 上下反转地的设定

  95.   #--------------------------------------------------------------------------

  96.   UPSIDE_DOWN_FILE = "上下反转" # 文件名

  97.   #--------------------------------------------------------------------------

  98.   # ● 左右反转地的设定

  99.   #--------------------------------------------------------------------------

  100.   REVERSE_FILE = "左右反转" # 文件名

  101.   #--------------------------------------------------------------------------

  102.   # ● 回转地的设定

  103.   #--------------------------------------------------------------------------

  104.   TURNING_FILE = "回转" # 文件名

  105.   TURNING_DIRECTION = 1 # 方向(1.逆时针,-1.顺时针)(|||-_-汗..怎么还有用-1做带入值的...)

  106.   TURNING_SPEED = 40    # 速度

  107.   TURNING_DURATION = 1  # 回转数

  108.   #--------------------------------------------------------------------------

  109.   # ● 移动的设定

  110.   #--------------------------------------------------------------------------

  111.   MOVE_FILE = "移动"             # 文件名

  112.   MOVE_RETURN = 1                # 回到原来的位置吗?(光写了个1,也不知道不回到该怎么写?0?)

  113.   MOVE_SPEED = 32                # 速度

  114.   MOVE_COORDINATES = [0,-640]    # 原来位置的相对坐标

  115.   #--------------------------------------------------------------------------

  116.   # ● 动画追加的设定

  117.   #--------------------------------------------------------------------------

  118.   ADD_ANIME_FILE = "动画追加"  # 文件名

  119.   ADD_ANIME_ID = 0               # 动画的ID

  120.   #--------------------------------------------------------------------------

  121.   # ● 债务不履行声明和RTAB的数据转换

  122.   #--------------------------------------------------------------------------

  123.   def convert_battler

  124.     return RTAB ? @active_actor : @active_battler

  125.   end

  126.   #--------------------------------------------------------------------------

  127.   # ● 债务不履行声明和RTAB的数据转换2

  128.   #--------------------------------------------------------------------------

  129.   def convert_battler2(*arg)

  130.     return RTAB ? arg[0] : @active_battler

  131.   end

  132. end



  133. #--------------------------------------------------------------------------

  134. # ● 行动設定

  135. #--------------------------------------------------------------------------

  136. module BattleActions

  137.   

  138.   # 下のものはあくまでも一例なので

  139.   # 独自に作ってください。



  140.   Actions = {



  141.   "通常攻撃" => [

  142.   

  143.   "閃きアニメ",

  144.   "アクターアニメ変更#WALK_L",

  145.   "移動#target,32,0,64,0",

  146.   "行動アニメ",

  147.   "アクターアニメ変更#ATTACK",

  148.   "遠距離アニメ",

  149.   "対象アニメ",

  150.   "アクターアニメ変更#WALK_L",

  151.   "SEの演奏#016-Jump02,80,100",

  152.   "移動#self,0,0,48,32",

  153.   "終了"

  154.   ],



  155.   "エネミー攻撃" => [

  156.   

  157.   "閃きアニメ",

  158.   "アクターアニメ変更#WALK_L",

  159.   "移動#self,-36,0,12,0",

  160.   "行動アニメ",

  161.   "アクターアニメ変更#ATTACK",

  162.   "遠距離アニメ",

  163.   "対象アニメ",

  164.   "アクターアニメ変更#WALK_L",

  165.   "移動#self,0,0,12,0",

  166.   "終了"

  167.   ],

  168.   

  169.   "術発動" => [

  170.   

  171.   "閃きアニメ",

  172.   "アクターアニメ変更#WALK_L",

  173.   "移動#self,-32,0,4,0",

  174.   "アクターアニメ変更#MAGIC",

  175.   "行動アニメ",

  176.   "ウエイト#15",

  177.   "遠距離アニメ",

  178.   "対象アニメ",

  179.   "アクターアニメ変更#WALK_L",

  180.   "移動#self,0,0,4,2",

  181.   "終了"

  182.   ],



  183.   "アイテム使用" => [

  184.   

  185.   "閃きアニメ",

  186.   "アクターアニメ変更#WALK_L",

  187.   "移動#self,-32,0,4,0",

  188.   "行動アニメ",

  189.   "アクターアニメ変更#ITEM",

  190.   "ウエイト#15",

  191.   "遠距離アニメ",

  192.   "対象アニメ",

  193.   "アクターアニメ変更#WALK_L",

  194.   "移動#self,0,0,4,2",

  195.   "終了"

  196.   ],

  197.   

  198.   "払い抜け" => [

  199.   

  200.   "閃きアニメ",

  201.   "アクターアニメ変更#WALK_L",

  202.   "移動#target_near,50,0,48,30",  

  203.   "左右反転",

  204.   "アクターアニメ固定#ATTACK#3",

  205.   "行動アニメ",

  206.   "SEの演奏#135-Light01,100,100",

  207.   "アニメーションの表示#self,42",

  208.   "ウエイト#15",

  209.   "左右反転",

  210.   "残像表示",

  211.   "移動#target_far,-50,0,48,0",

  212.   "対象アニメ",

  213.   "残像消去",

  214.   "アニメ固定解除",

  215.   "アクターアニメ変更#WALK_L",

  216.   "移動#self,0,0,48,1,0",

  217.   "終了"

  218.   ],



  219.   "弓箭攻撃" => [

  220.   

  221.   "閃きアニメ",

  222.   "アクターアニメ変更#WALK_L",

  223.   "移動#self,-32,0,4,0",

  224.   "行動アニメ",

  225.   "アクターアニメ変更#ATTACK",

  226.   "遠距離アニメ",

  227.   "対象アニメ",

  228.   "アクターアニメ変更#WALK_L",

  229.   "移動#self,0,0,4,2",

  230.   "終了"

  231.   ],



  232.   "回旋攻撃" => [

  233.   

  234.   "閃きアニメ",

  235.   "アクターアニメ変更#WALK_L",

  236.   "移動#self,-32,0,4,0",

  237.   "行動アニメ",

  238.   "アクターアニメ変更#STAND_L",  

  239.   "遠距離アニメ",

  240.   "対象アニメ",

  241.   "アクターアニメ変更#WALK_L",

  242.   "移動#self,0,0,4,2",

  243.   "終了"

  244.   ],

  245.   

  246.   "远距离発動" => [

  247.   

  248.   "閃きアニメ",

  249.   "アクターアニメ変更#WALK_L",

  250.   "移動#self,-32,0,4,0",

  251.   "アクターアニメ変更#MAGIC",

  252.   "行動アニメ",

  253.   "アクターアニメ変更#ATTACK",

  254.   "遠距離アニメ",

  255.   "対象アニメ",

  256.   "アクターアニメ変更#WALK_L",

  257.   "移動#self,0,0,4,2",

  258.   "終了"

  259.   ],

  260.   

  261.   "回旋発動" => [

  262.   

  263.   "閃きアニメ",

  264.   "アクターアニメ変更#WALK_L",

  265.   "移動#self,-32,0,4,0",

  266.   "アクターアニメ変更#MAGIC",

  267.   "行動アニメ",

  268.   "アクターアニメ変更#STAND_L",  

  269.   "遠距離アニメ",

  270.   "対象アニメ",

  271.   "アクターアニメ変更#WALK_L",

  272.   "移動#self,0,0,4,2",

  273.   "終了"

  274.   ],



  275.   } # ここで終わり 消さないでください



  276. end

  277.   

  278. module RPG

  279.   class Weapon

  280.     #--------------------------------------------------------------------------

  281.     # ● アクション設定

  282.     #--------------------------------------------------------------------------

  283.     def battle_actions

  284.       case @id

  285.       when 17,18,19,20,21,22,23,24  # 远程武器的id回旋攻撃

  286.         return BattleActions::Actions["弓箭攻撃"]

  287.       when 34                       # 回旋武器的id

  288.         return BattleActions::Actions["回旋攻撃"]

  289.       end

  290.       else

  291.       return BattleActions::Actions["通常攻撃"]

  292.     end

  293.   end

  294.   class Skill

  295.     #--------------------------------------------------------------------------

  296.     # ● アクション設定

  297.     #--------------------------------------------------------------------------

  298.     def battle_actions

  299.       case @id

  300.       when 73,74,75,76,77,78,79,80  # 远程技能的id

  301.         return BattleActions::Actions["远距离発動"]

  302.       when 82                       # 回旋技能的id

  303.         return BattleActions::Actions["回旋発動"]

  304.       end

  305.       else

  306.       if self.magic?

  307.         return BattleActions::Actions["術発動"]

  308.       else

  309.         return BattleActions::Actions["払い抜け"]

  310.       end

  311.     end

  312.   end

  313.   class Item

  314.     #--------------------------------------------------------------------------

  315.     # ● アクション設定

  316.     #--------------------------------------------------------------------------

  317.     def battle_actions

  318.       return BattleActions::Actions["アイテム使用"]

  319.     end

  320.   end

  321. end

  322. class Game_Enemy < Game_Battler

  323.   #--------------------------------------------------------------------------

  324.   # ● アクション設定

  325.   #--------------------------------------------------------------------------

  326.   def battle_actions

  327.     return BattleActions::Actions["エネミー攻撃"]

  328.   end

  329. end

  330. =begin

  331. #--------------------------------------------------------------------------

  332. # ● 遠距離アニメーション

  333. #--------------------------------------------------------------------------

  334.  ☆ 説明

  335.   

  336.    行動者から対象者にアニメを飛ばします。

  337.    飛ばすアニメを データベース‐アニメーション で作ります。

  338.     [アニメーションID, スピード, 往復するか?,直線(false)or曲線(true)] で指定します。





  339.   ● カスタマイズ方法

  340.    

  341.     case @id

  342.     when 17,18,19,20

  343.       return [101,32,false,false]

  344.     when 21,22,23,24

  345.       return [102,32,false,false]

  346.     end

  347.     return 0

  348.    

  349.     のように描くとID別に指定可能です。

  350.    

  351.    

  352.   ● アニメーションID

  353.   

  354.   飛ばすアニメーションIDです。短い場合は繰り返しで表示されます。

  355.   

  356.    

  357.   ● スピード

  358.   

  359.   大きいほうが早い(0だとアニメは移動しません)

  360.   

  361.   1 = 1フレームで1ドット進むと考えてください。

  362.   

  363.   ● 往復するか?

  364.   

  365.   true とした場合、ブーメランのようにアニメが戻ります。

  366.   

  367.   ● 直線(false)or曲線(true)

  368.   

  369.   true  = 対象に向かって曲線で、アニメが飛びます。(修正の余地ありですが・・・)

  370.   false = 対象に向かって直線で、アニメが飛びます。

  371.    

  372. =end

  373. module RPG

  374.   class Weapon

  375.     #--------------------------------------------------------------------------

  376.     # ● 遠距離アニメーション

  377.     #--------------------------------------------------------------------------

  378.     def flying_anime

  379.       # ID 指定 の例(武器的id,分类是根据飞行武器的动画id)

  380.       case @id

  381.       when 34             #回旋武器(类似回力镖)的id

  382.         return [103,32,true,true]

  383.       when 17,18,19,20    #远程武器1(弓箭类)的id

  384.         return [101,32,false,false]

  385.       when 21,22,23,24    #远程武器2(铳类)的id

  386.         return [102,32,false,false]

  387.       end

  388.       return [0,0,false,false]

  389.     end

  390.   end

  391.   class Skill

  392.     #--------------------------------------------------------------------------

  393.     # ● 遠距離アニメーション

  394.     #--------------------------------------------------------------------------

  395.     def flying_anime

  396.       # ID 指定 の例(技能的id,分类是根据飞行武器的动画id)

  397.       case @id

  398.       when 82             #回旋技能(类似回力镖)的id

  399.         return [103,32,true,true]

  400.       when 73,74,75,76    #远程技能1(弓箭类)的id

  401.         return [101,32,false,false]

  402.       when 77,78,79,80    #远程技能2(铳类)的id

  403.         return [102,32,false,false]

  404.       end

  405.       return [0,0,false,false]

  406.     end

  407.   end

  408.   class Item

  409.     #--------------------------------------------------------------------------

  410.     # ● 遠距離アニメーション

  411.     #--------------------------------------------------------------------------

  412.     def flying_anime

  413.       case @id

  414.       when 34    #抛击类道具(如炸弹一类)的id

  415.         return [104,32,false,true]

  416.       end

  417.       return [0,0,false,false]

  418.     end

  419.   end

  420. end



  421. class Game_Enemy < Game_Battler

  422.   #--------------------------------------------------------------------------

  423.   # ● 遠距離アニメーション

  424.   #--------------------------------------------------------------------------

  425.   def flying_anime

  426.     return [0,0,false,false]

  427.   end

  428. end

  429. #==============================================================================

  430. # ■ Game_Battler

  431. #==============================================================================

  432. class Game_Battler

  433.   include Side_view

  434.   #--------------------------------------------------------------------------

  435.   # ● 追加・公開インスタンス変数

  436.   #--------------------------------------------------------------------------

  437.   attr_accessor :height                  # 画像の高さ

  438.   attr_accessor :real_x                  # X座標補正

  439.   attr_accessor :real_y                  # Y座標補正

  440.   attr_accessor :real_zoom               # 拡大率

  441.   attr_accessor :wait_count              # アニメーション 待ち時間

  442.   attr_accessor :wait_count2             # アニメーション 待ち時間2

  443.   attr_accessor :pattern                 # アニメーション カウント(キャラ)

  444.   attr_accessor :shake                   # シェイク開始フラッグ

  445.   attr_accessor :reverse                 # 左右反転フラッグ

  446.   attr_accessor :shadow                  # 残像フラッグ

  447.   attr_accessor :flash_flag              # 閃きフラッグ

  448.   attr_reader   :ox                      # X座標補正

  449.   attr_reader   :oy                      # Y座標補正

  450.   attr_reader   :flying_x                # 遠距離アニメX座標

  451.   attr_reader   :flying_y                # 遠距離アニメY座標

  452.   attr_reader   :flying_anime            # 遠距離アニメ

  453.   attr_reader   :animation1_on           # 行動アニメ開始フラッグ

  454.   attr_reader   :animation2_on           # 対象アニメ開始フラッグ

  455.   #--------------------------------------------------------------------------

  456.   # ● デフォルトのアニメーション待ち時間を取得

  457.   #--------------------------------------------------------------------------

  458.   def animation_duration=(animation_duration)

  459.     @_animation_duration = animation_duration

  460.   end

  461.   #--------------------------------------------------------------------------

  462.   # ● バトル開始時のセットアップ

  463.   #--------------------------------------------------------------------------

  464.   def start_battle

  465.     [url=home.php?mod=space&uid=291977]@height[/url] = 0

  466.     @real_x = 0

  467.     @real_y = 0

  468.     @real_zoom = 1.0

  469.     @battler_condition = ""

  470.     @action = nil

  471.     @battle_actions = []

  472.     @battler_action = false

  473.     @step = 0

  474.     @anime_on = false

  475.     @wait_count = 0

  476.     @wait_count2 = 0

  477.     @ox = 0

  478.     @oy = 0

  479.     @pattern = 0

  480.     @pattern_log = true

  481.     @pattern_freeze = false

  482.     @condition_freeze = false

  483.     @active = false

  484.     @move_distance = nil

  485.     @move_wait = 0

  486.     @move_coordinates = [0,0,0,0]

  487.     @flying_distance = nil

  488.     @flying_wait = 0

  489.     @flying_x = 0

  490.     @flying_y = 0

  491.     @flash_flag = {}

  492.     self.flying_clear

  493.   end

  494.   #--------------------------------------------------------------------------

  495.   # ● 移動中判定

  496.   #--------------------------------------------------------------------------

  497.   def moving?

  498.     # X座標補正または、Y座標補正が0でなければ、移動中

  499.     return (@ox != 0 or @oy != 0)

  500.   end

  501.   #--------------------------------------------------------------------------

  502.   # ● 移動終了判定

  503.   #--------------------------------------------------------------------------

  504.   def move_end?

  505.     return (@ox == @move_coordinates[0] and @oy == @move_coordinates[1])

  506.   end

  507.   #--------------------------------------------------------------------------

  508.   # ● アクション開始設定

  509.   #--------------------------------------------------------------------------

  510.   def action(flag = true)

  511.     @battler_action = flag

  512.     @animation1_on = false

  513.     @animation2_on = false

  514.     @step = "setup"

  515.   end   

  516.   #--------------------------------------------------------------------------

  517.   # ● アクション中判定

  518.   #--------------------------------------------------------------------------

  519.   def action?

  520.     return @battler_action

  521.   end

  522.   #--------------------------------------------------------------------------

  523.   # ● 閃き判定

  524.   #--------------------------------------------------------------------------

  525.   def flash?

  526.     return @flash_flg

  527.   end

  528.   #--------------------------------------------------------------------------

  529.   # ● 戦闘不能判定

  530.   #--------------------------------------------------------------------------

  531.   def anime_dead?

  532.     if $game_temp.in_battle and !RTAB

  533.       if [2,3,4,5].include?($scene.phase4_step)

  534.         return @last_dead

  535.       end

  536.     end

  537.     return @last_dead = self.dead?

  538.   end

  539.   #--------------------------------------------------------------------------

  540.   # ● ピンチ状態判定

  541.   #--------------------------------------------------------------------------

  542.   def crisis?

  543.     if $game_temp.in_battle and !RTAB

  544.       if [2,3,4,5].include?($scene.phase4_step)

  545.         return @last_crisis

  546.       end

  547.     end

  548.     return @last_crisis = (self.hp <= self.maxhp / 4 or badstate?)

  549.   end

  550.   #--------------------------------------------------------------------------

  551.   # ● バッドステート判定

  552.   #--------------------------------------------------------------------------

  553.   def badstate?

  554.     for i in @states

  555.       unless $data_states[i].nonresistance

  556.         return true

  557.       end

  558.     end

  559.     return false

  560.   end

  561.   #--------------------------------------------------------------------------

  562.   # ● 飛行

  563.   #--------------------------------------------------------------------------

  564.   def fly

  565.     if [url=home.php?mod=space&uid=14121]@fly[/url] != nil

  566.       return @fly

  567.     end

  568.     for id in @states

  569.       if FLY_STATES.include?($data_states[id].name)

  570.         return 60

  571.       end

  572.     end

  573.     return 0

  574.   end

  575.   #--------------------------------------------------------------------------

  576.   # ● 遠距離アニメ目標座標の計算

  577.   #--------------------------------------------------------------------------

  578.   def flying_setup

  579.     # 二度目は実行しない

  580.     return if @flying_distance != nil && !camera_correctness

  581.     if RTAB

  582.       targets = @target

  583.     else

  584.       targets = $scene.target_battlers

  585.     end

  586.     # 目的座標を計算

  587.     @f_target_x = 0

  588.     @f_target_y = 0

  589.     for t in targets

  590.       @f_target_x += t.screen_x

  591.       @f_target_y += t.screen_y

  592.     end

  593.     if targets != []

  594.       @f_target_x /= targets.size

  595.       @f_target_y /= targets.size

  596.     else

  597.       @flying_distance = 0

  598.       return

  599.     end

  600.     # 距離の計算

  601.     @flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs

  602.   end

  603.   #--------------------------------------------------------------------------

  604.   # ● 遠距離アニメ

  605.   #--------------------------------------------------------------------------

  606.   def flying_animation

  607.     # 戻る

  608.     if @step != "flying" or @flying_distance.nil?

  609.       return [false,true]

  610.     end

  611.     # あらかじめ計算

  612.     self_x = self.screen_x

  613.     self_y = self.screen_y

  614.     @flying_distance = @flying_distance == 0 ? 1 : @flying_distance

  615.     n1 = @flying_wait / @flying_distance.to_f

  616.     if @flying_distance - @flying_wait > @flying_distance / 2

  617.       n2 = 1.0 + 10.0 * @flying_wait / @flying_distance.to_f

  618.     else

  619.       n2 = 1.0 + 10.0 * (@flying_distance - @flying_wait) / @flying_distance.to_f

  620.     end

  621.     if !@flying_anime[4]

  622.       # 直線移動

  623.       x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i

  624.       y = (self_y + 1.0 * (@f_target_y - self_y) * n1).to_i

  625.     else

  626.       # 曲線移動

  627.       if !@flying_proceed_end

  628.         x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i

  629.         y = (self_y + 1.0 * (@f_target_y - self_y) * n1 - n2**2).to_i

  630.       else

  631.         x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i

  632.         y = (self_y + 1.0 * (@f_target_y - self_y) * n1 + n2**2).to_i

  633.       end

  634.     end

  635.     # 座標代入

  636.     @flying_x = x

  637.     @flying_y = y

  638.     # ウエイト

  639.     if !@flying_proceed_end

  640.       # 開始

  641.       @flying_proceed_start = @flying_wait == 0

  642.       @flying_wait += @flying_anime[1]

  643.       @flying_wait = [@flying_wait,@flying_distance].min

  644.       @flying_proceed_end = @flying_wait == @flying_distance

  645.     else

  646.       # 開始

  647.       @flying_return_start = @flying_wait == @flying_distance

  648.       @flying_wait -= @flying_anime[1]

  649.       @flying_wait = [@flying_wait,0].max

  650.       @flying_return_end = @flying_wait == 0

  651.     end

  652.     if @flying_anime[1] == 0

  653.       @flying_end = true

  654.     elsif !@flying_anime[2]

  655.       @flying_end = @flying_proceed_end

  656.     else

  657.       @flying_end = @flying_return_end

  658.     end

  659.     # 値を返す(アニメ開始,アニメ終了)

  660.     return [@flying_proceed_start,@flying_end]

  661.   end

  662.   #--------------------------------------------------------------------------

  663.   # ● 遠距離アニメ初期化

  664.   #--------------------------------------------------------------------------

  665.   def flying_clear

  666.     @flying_proceed_start = false

  667.     @flying_proceed_end = false

  668.     @flying_return_start = false

  669.     @flying_return_end = false

  670.     @flying_end = false

  671.     @flying_anime = [0,0,false]

  672.   end

  673.   #--------------------------------------------------------------------------

  674.   # ● 移動

  675.   #--------------------------------------------------------------------------

  676.   def move

  677.     # 距離の計算

  678.     @move_distance = (@move_coordinates[2] - @move_coordinates[0]).abs +

  679.                      (@move_coordinates[3] - @move_coordinates[1]).abs

  680.     if @move_distance > 0

  681.       return if @ox == @move_coordinates[0] and @oy == @move_coordinates[1]

  682.       array = @move_coordinates

  683.       # ジャンプ補正値の計算

  684.       if @move_distance - @move_wait > @move_distance / 2

  685.         jump = (@move_action[4] * @move_wait / @move_distance.to_f)**2

  686.       else

  687.         jump = (@move_action[4] * (@move_distance - @move_wait) / @move_distance.to_f)**2

  688.       end

  689.       jump = @move_action[4] > 0 ? -jump : jump

  690.       @ox = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @move_wait) / @move_distance.to_f).to_i

  691.       @oy = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @move_wait) / @move_distance.to_f + jump).to_i

  692.       # ウエイト

  693.       @move_wait -= @move_action[3]

  694.       @move_wait = [@move_wait,0].max

  695.     end

  696.   end

  697.   #--------------------------------------------------------------------------

  698.   # ● 移動アクションの取得

  699.   #--------------------------------------------------------------------------

  700.   def get_move_action

  701.     string = @action.split(/#/)[1]

  702.     string = string.split(/,/)

  703.     @move_action = [string[0],string[1].to_i,string[2].to_i,string[3].to_i,string[4].to_i,string[5].to_i]

  704.   end

  705.   #--------------------------------------------------------------------------

  706.   # ● アクションの取得

  707.   #--------------------------------------------------------------------------

  708.   def get_step

  709.     if @action.nil?

  710.       @step = "finish"

  711.       return

  712.     end

  713.     string = @action.split(/#/)[0]

  714.     if string =~ "移動"

  715.       @step = "moving_setup"

  716.     elsif string =~ "アクターアニメ実行"

  717.       @step = "action"

  718.     elsif string =~ "遠距離アニメ"

  719.       @step = "flying"

  720.     elsif string =~ "アクターアニメ変更"

  721.       @step = "change"

  722.     elsif string =~ "行動アニメ"

  723.       @step = "animation1"

  724.     elsif string =~ "対象アニメ"

  725.       @step = "animation2"

  726.     elsif string =~ "ウエイト"

  727.       @step = "wait"

  728.     elsif string =~ "左右反転"

  729.       @step = "reverse"

  730.     elsif string =~ "閃きアニメ"

  731.       @step = "flash"

  732.     elsif string =~ "残像表示"

  733.       @step = "shadow_on"

  734.     elsif string =~ "残像消去"

  735.       @step = "shadow_off"

  736.     elsif string =~ "アクターアニメ固定"

  737.       @step = "freeze"

  738.     elsif string =~ "アニメ固定解除"

  739.       @step = "freeze_lifting"

  740.     elsif string =~ "アニメーションの表示"

  741.       @step = "animation_start"

  742.     elsif string =~ "SEの演奏"

  743.       @step = "play_se"

  744.     else

  745.       @step = "finish"

  746.     end

  747.   end

  748.   #--------------------------------------------------------------------------

  749.   # ● フレーム更新 (次のアクションへ)

  750.   #--------------------------------------------------------------------------

  751.   def update_next

  752.     @action = @battle_actions.shift

  753.     @step = get_step

  754.   end

  755.   #--------------------------------------------------------------------------

  756.   # ● フレーム更新 (動作取得)

  757.   #--------------------------------------------------------------------------

  758.   def update_setup

  759.     # アクションの取得

  760.     self.get_actions

  761.     @action = @battle_actions.shift

  762.     @step = get_step

  763.   end

  764.   #--------------------------------------------------------------------------

  765.   # ● フレーム更新 (移動取得)

  766.   #--------------------------------------------------------------------------

  767.   def update_moving_setup

  768.     # 移動アクションの取得

  769.     self.get_move_action

  770.     # 移動目標の設定

  771.     self.move_setup

  772.     @step = "moving"

  773.   end

  774.   #--------------------------------------------------------------------------

  775.   # ● フレーム更新 (移動)

  776.   #--------------------------------------------------------------------------

  777.   def update_moving

  778.     # 移動

  779.     self.move

  780.     self.condition = @battler_condition

  781.     # 移動完了したら次のステップへ

  782.     if move_end?

  783.       @wait_count = 2

  784.       @action = @battle_actions.shift

  785.       @step = get_step

  786.     end

  787.   end

  788.   #--------------------------------------------------------------------------

  789.   # ● フレーム更新 (アニメ実行)

  790.   #--------------------------------------------------------------------------

  791.   def update_action

  792.     con = @action.split(/#/)[1]

  793.     # 右手・左手を分ける

  794.     if DUAL_WEAPONS_ANIME.include?(con)

  795.       if !@first_weapon and @second_weapon

  796.         con = con + "_L"

  797.       else

  798.         con = con + "_R"

  799.       end

  800.     end

  801.     # アニメ変更

  802.     self.condition = con

  803.     # ループか否か

  804.     if !ANIME[@battler_condition][1]

  805.       self.anime_on

  806.     end

  807.     @action = @battle_actions.shift

  808.     @step = get_step

  809.   end

  810.   #--------------------------------------------------------------------------

  811.   # ● フレーム更新 (遠距離アニメ)

  812.   #--------------------------------------------------------------------------

  813.   def update_flying

  814.     # 目標の設定

  815.     self.flying_setup

  816.     # 遠距離アニメ終了

  817.     if @flying_end

  818.       self.flying_clear

  819.       @action = @battle_actions.shift

  820.       @step = get_step

  821.     end

  822.   end

  823.   #--------------------------------------------------------------------------

  824.   # ● フレーム更新 (アニメ変更)

  825.   #--------------------------------------------------------------------------

  826.   def update_change

  827.     con = @action.split(/#/)[1]

  828.     # 右手・左手を分ける

  829.     if DUAL_WEAPONS_ANIME.include?(con)

  830.       if !@first_weapon and @second_weapon

  831.         con = con + "_L"

  832.       else

  833.         con = con + "_R"

  834.       end

  835.     end

  836.     # アニメ変更

  837.     self.condition = con

  838.     # ループか否か

  839.     if !ANIME[@battler_condition][1]

  840.       self.anime_on

  841.     end

  842.     @action = @battle_actions.shift

  843.     @step = get_step

  844.   end

  845.   #--------------------------------------------------------------------------

  846.   # ● フレーム更新 (行動アニメ)

  847.   #--------------------------------------------------------------------------

  848.   def update_animation1

  849.     @animation1_on = true

  850.     # 行動アニメの後に行動を開始する

  851.     if $scene.phase4_step == 3

  852.       id = RTAB ? @anime1 : $scene.animation1_id

  853.       animation = $data_animations[id]

  854.       frame_max = animation != nil ? animation.frame_max : 0

  855.       @wait_count2 = frame_max * 2

  856.       return

  857.     end

  858.     @action = @battle_actions.shift

  859.     @step = get_step

  860.   end

  861.   #--------------------------------------------------------------------------

  862.   # ● フレーム更新 (対象アニメ)

  863.   #--------------------------------------------------------------------------

  864.   def update_animation2

  865.     @animation2_on = true

  866.     # 行動アニメの後に行動を開始する

  867.     if $scene.phase4_step == 4

  868.       id = RTAB ? @anime2 : $scene.animation2_id

  869.       animation = $data_animations[id]

  870.       frame_max = animation != nil ? animation.frame_max : 0

  871.       @wait_count2 = frame_max * 2

  872.       return

  873.     end

  874.     @action = @battle_actions.shift

  875.     @step = get_step

  876.   end

  877.   #--------------------------------------------------------------------------

  878.   # ● フレーム更新 (ウエイト)

  879.   #--------------------------------------------------------------------------

  880.   def update_wait

  881.     @wait_count2 = @action.split(/#/)[1].to_i

  882.     @action = @battle_actions.shift

  883.     @step = get_step

  884.   end

  885.   #--------------------------------------------------------------------------

  886.   # ● フレーム更新 (残像表示)

  887.   #--------------------------------------------------------------------------

  888.   def update_shadow_on

  889.     [url=home.php?mod=space&uid=31758]@Shadow[/url] = true

  890.     @action = @battle_actions.shift

  891.     @step = get_step

  892.   end

  893.   #--------------------------------------------------------------------------

  894.   # ● フレーム更新 (残像消去)

  895.   #--------------------------------------------------------------------------

  896.   def update_shadow_off

  897.     @shadow = false

  898.     @action = @battle_actions.shift

  899.     @step = get_step

  900.   end

  901.   #--------------------------------------------------------------------------

  902.   # ● フレーム更新 (左右反転)

  903.   #--------------------------------------------------------------------------

  904.   def update_reverse

  905.     [url=home.php?mod=space&uid=30269]@reverse[/url] = @reverse ? false : true

  906.     @action = @battle_actions.shift

  907.     @step = get_step

  908.   end

  909.   #--------------------------------------------------------------------------

  910.   # ● フレーム更新 (閃きアニメ)

  911.   #--------------------------------------------------------------------------

  912.   def update_flash

  913.     # 閃きアニメの後に行動を開始する

  914.     if @flash_flag["normal"]

  915.       @wait_count = $scene.flash_duration

  916.       @flash_flag["normal"] = false

  917.       return

  918.     end

  919.     @action = @battle_actions.shift

  920.     @step = get_step

  921.   end

  922.   #--------------------------------------------------------------------------

  923.   # ● フレーム更新 (SEの演奏)

  924.   #--------------------------------------------------------------------------

  925.   def update_play_se

  926.     data = @action.split(/#/)[1]

  927.     data = data.split(/,/)

  928.     # SE を演奏

  929.     Audio.se_play("Audio/SE/" + data[0], data[1].to_i, data[2].to_i)

  930.     @action = @battle_actions.shift

  931.     @step = get_step

  932.   end

  933.   #--------------------------------------------------------------------------

  934.   # ● フレーム更新 (アクターアニメ固定)

  935.   #--------------------------------------------------------------------------

  936.   def update_freeze

  937.     con = @action.split(/#/)[1]

  938.     # 右手・左手を分ける

  939.     if DUAL_WEAPONS_ANIME.include?(con)

  940.       if !@first_weapon and @second_weapon

  941.         con = con + "_L"

  942.       else

  943.         con = con + "_R"

  944.       end

  945.     end

  946.     # アニメ変更

  947.     self.condition = con

  948.     @pattern = @action.split(/#/)[2].to_i

  949.     @pattern_freeze = true

  950.     @condition_freeze = true

  951.     @action = @battle_actions.shift

  952.     @step = get_step

  953.   end

  954.   #--------------------------------------------------------------------------

  955.   # ● フレーム更新 (アクターアニメ固定解除)

  956.   #--------------------------------------------------------------------------

  957.   def update_freeze_lifting

  958.     @pattern_freeze = false

  959.     @condition_freeze = false

  960.     @action = @battle_actions.shift

  961.     @step = get_step

  962.   end

  963.   #--------------------------------------------------------------------------

  964.   # ● フレーム更新 (アニメーションの表示)

  965.   #--------------------------------------------------------------------------

  966.   def update_animation_start

  967.     data = @action.split(/#/)[1]

  968.     data = data.split(/,/)

  969.     target = data[0]

  970.     animation_id = data[1].to_i

  971.     if RTAB

  972.       case target

  973.       when "self"

  974.         @animation.push([animation_id,true])

  975.       when "target"

  976.         for tar in @target

  977.           tar.animation.push([animation_id, true])

  978.         end

  979.       end

  980.     else

  981.       case target

  982.       when "self"

  983.         @animation_id = animation_id

  984.         @animation_hit = true

  985.       when "target"

  986.         for tar in $scene.target_battlers

  987.           tar.animation_id = animation_id

  988.           tar.animation_hit = true

  989.         end

  990.       end

  991.     end

  992.     @action = @battle_actions.shift

  993.     @step = get_step

  994.   end

  995.   #--------------------------------------------------------------------------

  996.   # ● フレーム更新 (動作終了)

  997.   #--------------------------------------------------------------------------

  998.   def update_finish

  999.     # 動作終了

  1000.     @battler_action = false

  1001.     @step = "setup"

  1002.   end

  1003.   #--------------------------------------------------------------------------

  1004.   # ● バトラーの状態 変更(バトラーグラフィックのタイプ)

  1005.   #--------------------------------------------------------------------------

  1006.   def condition=(condition)

  1007.     return if @condition_freeze

  1008.     @battler_condition = condition

  1009.     @wait_count = ANIME[condition][2]

  1010.   end

  1011.   #--------------------------------------------------------------------------

  1012.   # ● バトラーの状態(バトラーグラフィックのタイプ)

  1013.   #--------------------------------------------------------------------------

  1014.   def condition

  1015.     return @battler_condition

  1016.   end

  1017.   #--------------------------------------------------------------------------

  1018.   # ● フレーム更新

  1019.   #--------------------------------------------------------------------------

  1020.   def update

  1021.     # ウェイト中の場合

  1022.     if @wait_count > 0

  1023.       return

  1024.     end

  1025.     # パターン更新

  1026.     self.char_animation

  1027.     # ウェイト中の場合

  1028.     if @wait_count2 > 0

  1029.       return

  1030.     end

  1031.    

  1032.     # 行動アニメーション

  1033.     if @battler_action

  1034.       method("update_" + @step).call

  1035.       return

  1036.     end

  1037.    

  1038.     # データ初期化

  1039.     @animation1_on = false

  1040.     @animation2_on = false

  1041.     @action = nil

  1042.     @battle_actions = []

  1043.     @move_wait = 0

  1044.     @move_distance = nil

  1045.     @flying_wait = 0

  1046.     @flying_distance = nil

  1047.     [url=home.php?mod=space&uid=14082]@Flash[/url] = false



  1048.     # RTAB対応

  1049.     # 通常・待機

  1050.     return self.condition = NORMAL

  1051.   end

  1052.   #--------------------------------------------------------------------------

  1053.   # ● アクションの取得

  1054.   #--------------------------------------------------------------------------

  1055.   def get_actions

  1056.     skill = $data_skills[self.current_action.skill_id]

  1057.     item = $data_items[self.current_action.item_id]

  1058.     kind = self.current_action.kind

  1059.     # 動作取得

  1060.     @battle_actions = []

  1061.     # スキル

  1062.     if skill != nil && kind == 1

  1063.       @battle_actions = skill.battle_actions.dup

  1064.       @flying_anime = skill.flying_anime

  1065.     # アイテム

  1066.     elsif item != nil && kind == 2

  1067.       @battle_actions = item.battle_actions.dup

  1068.       @flying_anime = item.flying_anime

  1069.     # 左手攻撃

  1070.     elsif !@first_weapon and @second_weapon and self.is_a?(Game_Actor)

  1071.       @battle_actions = self.battle_actions2.dup

  1072.       @flying_anime = self.flying_anime2

  1073.     # 右手攻撃

  1074.     elsif self.current_action.basic == 0 and

  1075.       self.is_a?(Game_Actor) and self.current_action.kind == 0

  1076.       @battle_actions = self.battle_actions1.dup

  1077.       @flying_anime = self.flying_anime1

  1078.     # 通常攻撃

  1079.     elsif self.current_action.basic == 0 and self.current_action.kind == 0

  1080.       @battle_actions = self.battle_actions.dup

  1081.       @flying_anime = self.flying_anime

  1082.     else

  1083.       @battle_actions = ["終了"]

  1084.       @flying_anime = [0,0,false,false]

  1085.     end

  1086.   end

  1087.   #--------------------------------------------------------------------------

  1088.   # ● ループしないアニメのセット

  1089.   #--------------------------------------------------------------------------

  1090.   def anime_on

  1091.     @pattern = 0

  1092.     @pattern_log = true

  1093.     return

  1094.   end

  1095.   #--------------------------------------------------------------------------

  1096.   # ● パターン更新

  1097.   #--------------------------------------------------------------------------

  1098.   def char_animation

  1099.     # パタン固定の場合もどる

  1100.     return if @pattern_freeze

  1101.     # ループしないアニメの場合 1234 で止まる

  1102.     if !ANIME[@battler_condition][1] && @pattern == 3

  1103.       return

  1104.     end

  1105.     # アニメさせない場合 1 で止まる

  1106.     if ANIME[@battler_condition][4]

  1107.       @pattern = 0

  1108.       return

  1109.     end

  1110.     @pattern = (@pattern + 1) % 4

  1111.   end

  1112.   #--------------------------------------------------------------------------

  1113.   # ● アニメタイプ

  1114.   #--------------------------------------------------------------------------

  1115.   def anime_type

  1116.     return ANIME[self.condition] != nil ? ANIME[self.condition][0] : 0

  1117.   end

  1118. end
  1119. #==============================================================================

  1120. # ■ Game_Actor

  1121. #==============================================================================

  1122. class Game_Actor < Game_Battler

  1123.   include Side_view

  1124.   #--------------------------------------------------------------------------

  1125.   # ● セットアップ

  1126.   #--------------------------------------------------------------------------

  1127.   alias side_view_setup setup

  1128.   def setup(actor_id)

  1129.     side_view_setup(actor_id)

  1130.     start_battle

  1131.   end

  1132.   #--------------------------------------------------------------------------

  1133.   # ● 二刀武器のID取得 ※エラー回避用

  1134.   #--------------------------------------------------------------------------

  1135.   def weapon2_id

  1136.     return @weapon2_id != nil ? @weapon2_id : 0

  1137.   end

  1138.   #--------------------------------------------------------------------------

  1139.   # ● X方向 ポジション 取得 (陣形スクリプト拡張用)

  1140.   #--------------------------------------------------------------------------

  1141.   def position

  1142.     return $data_classes[@class_id].position

  1143.   end

  1144.   #--------------------------------------------------------------------------

  1145.   # ● Y方向 ポジション 取得 (陣形スクリプト拡張用)

  1146.   #--------------------------------------------------------------------------

  1147.   def position2

  1148.     return self.index

  1149.   end

  1150.   #--------------------------------------------------------------------------

  1151.   # ● 武器アニメタイプ

  1152.   #--------------------------------------------------------------------------

  1153.   def weapon_anime_type(type)

  1154.     file_name  = weapon_anime_type0(type)

  1155.     visible   = weapon_anime_type1(type)

  1156.     z         = weapon_anime_type2(type)

  1157.     return [file_name,visible,z]

  1158.   end

  1159.   # 武器アイコン取得

  1160.   def weapon_anime_type0(type)

  1161.     type = ANIME[type][5]

  1162.     return weapon_anime1 if type == "右手"

  1163.     return weapon_anime2 if type == "左手"

  1164.     return nil

  1165.   end

  1166.   # 表示・非表示の取得

  1167.   def weapon_anime_type1(type)

  1168.     return ANIME[type][3]

  1169.   end

  1170.   # バトラーより上に表示するかどうか

  1171.   def weapon_anime_type2(type)

  1172.     type = ANIME[type][5]

  1173.     return true if type == "左手"

  1174.     return false

  1175.   end

  1176.   #--------------------------------------------------------------------------

  1177.   # ● バトル画面 X 座標の取得(カメラ補正無し)

  1178.   #--------------------------------------------------------------------------

  1179.   def true_x

  1180.     return PARTY_X + position * FORMATION_X + @ox

  1181.   end

  1182.   #--------------------------------------------------------------------------

  1183.   # ● バトル画面 Y 座標の取得(カメラ補正無し)

  1184.   #--------------------------------------------------------------------------

  1185.   def true_y

  1186.     # パーティ内の並び順から Y 座標を計算して返す

  1187.     if self.index != nil

  1188.       y = position2 * FORMATION_Y + PARTY_Y + @oy - @height / 2

  1189.       return y

  1190.     else

  1191.       return 0

  1192.     end

  1193.   end

  1194.   #--------------------------------------------------------------------------

  1195.   # ● バトル画面 X 座標の取得

  1196.   #--------------------------------------------------------------------------

  1197.   def screen_x(true_x = self.true_x)

  1198.     return 320 + (true_x - 320) * @real_zoom + @real_x

  1199.   end

  1200.   #--------------------------------------------------------------------------

  1201.   # ● バトル画面 Y 座標の取得

  1202.   #--------------------------------------------------------------------------

  1203.   def screen_y(true_y = self.true_y)

  1204.     return true_y * @real_zoom + @real_y

  1205.   end

  1206.   #--------------------------------------------------------------------------

  1207.   # ● バトル画面 Z 座標の取得

  1208.   #--------------------------------------------------------------------------

  1209.   def screen_z

  1210.     return screen_y + 1000

  1211.   end

  1212.   #--------------------------------------------------------------------------

  1213.   # ● バトル画面 X 座標の取得(移動などしていない場合)

  1214.   #--------------------------------------------------------------------------

  1215.   def base_x

  1216.     return 320 + (true_x - @ox - 320) * @real_zoom + @real_x

  1217.   end

  1218.   #--------------------------------------------------------------------------

  1219.   # ● バトル画面 Y 座標の取得

  1220.   #--------------------------------------------------------------------------

  1221.   def base_y

  1222.     return (true_y - @oy) * @real_zoom + @real_y

  1223.   end

  1224.   #--------------------------------------------------------------------------

  1225.   # ● バトル画面 拡大率の取得

  1226.   #--------------------------------------------------------------------------

  1227.   def zoom

  1228.     return ($scene.zoom_rate[1] - $scene.zoom_rate[0]) *

  1229.                           (true_x + @fly) / 480 + $scene.zoom_rate[0]

  1230.   end

  1231.   #--------------------------------------------------------------------------

  1232.   # ● 攻撃用、バトル画面 X 座標の取得

  1233.   #--------------------------------------------------------------------------

  1234.   def attack_x(z)

  1235.     return (320 - true_x) * z * 0.75

  1236.   end

  1237.   #--------------------------------------------------------------------------

  1238.   # ● 攻撃用、バトル画面 Y 座標の取得

  1239.   #--------------------------------------------------------------------------

  1240.   def attack_y(z)

  1241.     return (160 - (true_y + fly / 4) * z + @height * zoom * z / 2) * 0.75

  1242.   end

  1243.   #--------------------------------------------------------------------------

  1244.   # ● 閃き待ち時間

  1245.   #--------------------------------------------------------------------------

  1246.   def flash_duration

  1247.     return $scene.flash_duration

  1248.   end

  1249.   #--------------------------------------------------------------------------

  1250.   # ● アニメーション取得

  1251.   #--------------------------------------------------------------------------

  1252.   def battle_actions1

  1253.     weapon = $data_weapons[@weapon_id]

  1254.     return weapon != nil ? weapon.battle_actions : BattleActions::Actions["通常攻撃"]

  1255.   end

  1256.   #--------------------------------------------------------------------------

  1257.   # ● アニメーション取得

  1258.   #--------------------------------------------------------------------------

  1259.   def battle_actions2

  1260.     weapon = $data_weapons[@weapon2_id]

  1261.     return weapon != nil ? weapon.battle_actions : BattleActions::Actions["通常攻撃"]

  1262.   end

  1263.   #--------------------------------------------------------------------------

  1264.   # ● 武器アニメーション取得

  1265.   #--------------------------------------------------------------------------

  1266.   def weapon_anime1

  1267.     weapon = $data_weapons[@weapon_id]

  1268.     return weapon != nil ? weapon.icon_name : ""

  1269.   end

  1270.   #--------------------------------------------------------------------------

  1271.   # ● 武器アニメーション取得

  1272.   #--------------------------------------------------------------------------

  1273.   def weapon_anime2

  1274.     weapon = $data_weapons[@weapon2_id]

  1275.     return weapon != nil ? weapon.icon_name : ""

  1276.   end

  1277.   #--------------------------------------------------------------------------

  1278.   # ● 遠距離アニメーション取得

  1279.   #--------------------------------------------------------------------------

  1280.   def flying_anime1

  1281.     weapon = $data_weapons[@weapon_id]

  1282.     return weapon != nil ? weapon.flying_anime : [0,0,false,false]

  1283.   end

  1284.   #--------------------------------------------------------------------------

  1285.   # ● 遠距離アニメーション取得

  1286.   #--------------------------------------------------------------------------

  1287.   def flying_anime2

  1288.     weapon = $data_weapons[@weapon2_id]

  1289.     return weapon != nil ? weapon.flying_anime : [0,0,false,false]

  1290.   end

  1291.   #--------------------------------------------------------------------------

  1292.   # ● 移動目標座標の計算

  1293.   #--------------------------------------------------------------------------

  1294.   def move_setup

  1295.     if RTAB

  1296.       targets = @target

  1297.     else

  1298.       targets = $scene.target_battlers

  1299.     end

  1300.     case @move_action[0]

  1301.     when "self" # 自分

  1302.       @target_x = self.base_x

  1303.       @target_y = self.base_y

  1304.     when "target_near" # 一番近くのターゲット

  1305.       targets.sort!{|a,b| a.screen_x<=>b.screen_x }

  1306.       targets.reverse!

  1307.       if targets != []

  1308.         @target_x = targets[0].screen_x

  1309.         @target_y = targets[0].screen_y

  1310.       else

  1311.         @target_x = self.base_x

  1312.         @target_y = self.base_y

  1313.       end

  1314.     when "target_far" # 一番遠くのターゲット

  1315.       targets.sort!{|a,b| a.screen_x<=>b.screen_x }

  1316.       if targets != []

  1317.         @target_x = targets[0].screen_x

  1318.         @target_y = targets[0].screen_y

  1319.       else

  1320.         @target_x = self.base_x

  1321.         @target_y = self.base_y

  1322.       end

  1323.     when "target" # ターゲット中央

  1324.       @target_x = 0

  1325.       @target_y = 0

  1326.       for t in targets

  1327.         @target_x += t.screen_x

  1328.         @target_y += t.screen_y

  1329.       end

  1330.       if targets != []

  1331.         @target_x /= targets.size

  1332.         @target_y /= targets.size

  1333.       end

  1334.     when "troop" # "トループ中央"

  1335.       @target_x = 0

  1336.       @target_y = 0

  1337.       for t in $game_troop.enemies

  1338.         @target_x += t.screen_x

  1339.         @target_y += t.screen_y

  1340.       end

  1341.       if $game_troop.enemies != []

  1342.         @target_x /= $game_troop.enemies.size

  1343.         @target_y /= $game_troop.enemies.size

  1344.       end

  1345.     when "party" # "パーティ中央"

  1346.       @target_x = 0

  1347.       @target_y = 0

  1348.       for t in $game_party.actors

  1349.         @target_x += t.screen_x

  1350.         @target_y += t.screen_y

  1351.       end

  1352.       if $game_party.actors != []

  1353.         @target_x /= $game_party.actors.size

  1354.         @target_y /= $game_party.actors.size

  1355.       end

  1356.     when "screen" # "画面"

  1357.       @target_x = self.base_x

  1358.       @target_y = self.base_y

  1359.     end

  1360.     # 補正

  1361.     @target_x += @move_action[1] - self.base_x

  1362.     @target_y += @move_action[2] - self.base_y

  1363.     # 移動目標の座標をセット

  1364.     @move_coordinates = [@target_x.to_i,@target_y.to_i,@move_coordinates[0],@move_coordinates[1]]

  1365.     # 距離の計算(ウエイトの設定)

  1366.     @move_wait     = (@move_coordinates[2] - @move_coordinates[0]).abs +

  1367.                      (@move_coordinates[3] - @move_coordinates[1]).abs

  1368.   end

  1369. end
  1370. #==============================================================================

  1371. # ■ Game_Enemy

  1372. #==============================================================================

  1373. class Game_Enemy < Game_Battler

  1374.   #--------------------------------------------------------------------------

  1375.   # ● セットアップ

  1376.   #--------------------------------------------------------------------------

  1377.   alias side_view_initialize initialize

  1378.   def initialize(troop_id, member_index)

  1379.     side_view_initialize(troop_id, member_index)

  1380.     start_battle

  1381.   end

  1382.   #--------------------------------------------------------------------------

  1383.   # ● 移動

  1384.   #--------------------------------------------------------------------------

  1385.   def move

  1386.     # 距離の計算

  1387.     @move_distance = (@move_coordinates[2] - @move_coordinates[0]).abs +

  1388.                      (@move_coordinates[3] - @move_coordinates[1]).abs

  1389.     if @move_distance > 0

  1390.       return if @ox == @move_coordinates[0] and @oy == @move_coordinates[1]

  1391.       array = @move_coordinates

  1392.       # ジャンプ補正値の計算

  1393.       if @move_distance - @move_wait > @move_distance / 2

  1394.         jump = (@move_action[4] * @move_wait / @move_distance.to_f)**2

  1395.       else

  1396.         jump = (@move_action[4] * (@move_distance - @move_wait) / @move_distance.to_f)**2

  1397.       end

  1398.       jump = @move_action[4] > 0 ? -jump : jump

  1399.       @ox = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @move_wait) / @move_distance.to_f).to_i

  1400.       @oy = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @move_wait) / @move_distance.to_f + jump).to_i

  1401.       # ウエイト

  1402.       @move_wait -= @move_action[3]

  1403.       @move_wait = [@move_wait,0].max

  1404.     end

  1405.   end

  1406.   #--------------------------------------------------------------------------

  1407.   # ● 移動目標座標の計算

  1408.   #--------------------------------------------------------------------------

  1409.   def move_setup

  1410.     if RTAB

  1411.       targets = @target

  1412.     else

  1413.       targets = $scene.target_battlers

  1414.     end

  1415.     case @move_action[0]

  1416.     when "self" # 自分

  1417.       @target_x = self.base_x

  1418.       @target_y = self.base_y

  1419.     when "target_near" # 一番近くのターゲット

  1420.       targets.sort!{|a,b| a.screen_x<=>b.screen_x }

  1421.       if targets != []

  1422.         @target_x = targets[0].screen_x

  1423.         @target_y = targets[0].screen_y

  1424.       else

  1425.         @target_x = self.base_x

  1426.         @target_y = self.base_y

  1427.       end

  1428.     when "target_far" # 一番遠くのターゲット

  1429.       targets.sort!{|a,b| a.screen_x<=>b.screen_x }

  1430.       targets.reverse!

  1431.       if targets != []

  1432.         @target_x = targets[0].screen_x

  1433.         @target_y = targets[0].screen_y

  1434.       else

  1435.         @target_x = self.base_x

  1436.         @target_y = self.base_y

  1437.       end

  1438.     when "target" # ターゲット中央

  1439.       @target_x = 0

  1440.       @target_y = 0

  1441.       for t in targets

  1442.         @target_x += t.screen_x

  1443.         @target_y += t.screen_y

  1444.       end

  1445.       if targets != []

  1446.         @target_x /= targets.size

  1447.         @target_y /= targets.size

  1448.       end

  1449.     when  "party" # "トループ中央"

  1450.       @target_x = 0

  1451.       @target_y = 0

  1452.       for t in $game_troop.enemies

  1453.         @target_x += t.screen_x

  1454.         @target_y += t.screen_y

  1455.       end

  1456.       if $game_troop.enemies != []

  1457.         @target_x /= $game_troop.enemies.size

  1458.         @target_y /= $game_troop.enemies.size

  1459.       end

  1460.     when "troop" # "パーティ中央"

  1461.       @target_x = 0

  1462.       @target_y = 0

  1463.       for t in $game_party.actors

  1464.         @target_x += t.screen_x

  1465.         @target_y += t.screen_y

  1466.       end

  1467.       if $game_party.actors != []

  1468.         @target_x /= $game_party.actors.size

  1469.         @target_y /= $game_party.actors.size

  1470.       end

  1471.     when "screen" # "画面"

  1472.       @target_x = self.base_x

  1473.       @target_y = self.base_y

  1474.     end

  1475.     # 補正

  1476.     @target_x -= @move_action[1] + self.base_x

  1477.     @target_y -= @move_action[2] + self.base_y

  1478.     # 移動目標の座標をセット

  1479.     @move_coordinates = [@target_x.to_i,@target_y.to_i,@move_coordinates[0],@move_coordinates[1]]

  1480.     # 距離の計算(ウエイトの設定)

  1481.     @move_wait     = (@move_coordinates[2] - @move_coordinates[0]).abs +

  1482.                      (@move_coordinates[3] - @move_coordinates[1]).abs

  1483.   end

  1484.   if RTAB

  1485.   alias original_x true_x

  1486.   alias original_y true_y

  1487.   else

  1488.   alias original_x screen_x

  1489.   alias original_y screen_y

  1490.   end

  1491.   #--------------------------------------------------------------------------

  1492.   # ● バトル画面 X 座標の取得(カメラ補正無し)

  1493.   #--------------------------------------------------------------------------

  1494.   def true_x

  1495.     return original_x + @ox

  1496.   end

  1497.   #--------------------------------------------------------------------------

  1498.   # ● バトル画面 Y 座標の取得(カメラ補正無し)

  1499.   #--------------------------------------------------------------------------

  1500.   def true_y

  1501.     return original_y - @height / 2 + @oy

  1502.   end

  1503.   #--------------------------------------------------------------------------

  1504.   # ● バトル画面 X 座標の取得

  1505.   #--------------------------------------------------------------------------

  1506.   def screen_x(true_x = self.true_x)

  1507.     return true_x * @real_zoom + @real_x

  1508.   end

  1509.   #--------------------------------------------------------------------------

  1510.   # ● バトル画面 Y 座標の取得

  1511.   #--------------------------------------------------------------------------

  1512.   def screen_y(true_y = self.true_y)

  1513.     return true_y * @real_zoom + @real_y

  1514.   end

  1515.   #--------------------------------------------------------------------------

  1516.   # ● バトル画面 X 座標の取得(移動などしていない場合)

  1517.   #--------------------------------------------------------------------------

  1518.   def base_x(true_x = self.true_x)

  1519.     return (true_x - @ox) * @real_zoom + @real_x

  1520.   end

  1521.   #--------------------------------------------------------------------------

  1522.   # ● バトル画面 Y 座標の取得(移動などしていない場合)

  1523.   #--------------------------------------------------------------------------

  1524.   def base_y(true_y = self.true_y)

  1525.     return (true_y - @oy) * @real_zoom + @real_y

  1526.   end

  1527. end

  1528. #==============================================================================

  1529. # ■ Game_Party

  1530. #==============================================================================

  1531. class Game_Party

  1532.   #--------------------------------------------------------------------------

  1533.   # ● アクターを加える

  1534.   #     actor_id : アクター ID

  1535.   #--------------------------------------------------------------------------

  1536.   alias side_view_add_actor add_actor

  1537.   def add_actor(actor_id)

  1538.     # アクターを取得

  1539.     actor = $game_actors[actor_id]

  1540.     # サイドビューデータの初期化

  1541.     actor.start_battle

  1542.     # 戻す

  1543.     side_view_add_actor(actor_id)

  1544.   end

  1545. end

  1546. #==============================================================================

  1547. # ■ Scene_Battle

  1548. #==============================================================================

  1549. class Scene_Battle

  1550.   include Side_view

  1551.   #--------------------------------------------------------------------------

  1552.   # ● 公開インスタンス変数

  1553.   #--------------------------------------------------------------------------

  1554.   attr_reader   :phase            # フェーズ

  1555.   attr_reader   :phase4_step      # フェーズ4ステップ

  1556.   attr_reader   :active_battler   # 対象の配列

  1557.   attr_reader   :target_battlers  # 対象の配列

  1558.   attr_reader   :animation1_id    # 行動アニメID

  1559.   attr_reader   :animation2_id    # 対象アニメID

  1560.   #--------------------------------------------------------------------------

  1561.   # ● メイン処理

  1562.   #--------------------------------------------------------------------------

  1563.   alias side_view_main main

  1564.   def main

  1565.     # バトラー初期化

  1566.     for battler in $game_party.actors + $game_troop.enemies

  1567.       battler.start_battle

  1568.     end

  1569.     # 戻す

  1570.     side_view_main

  1571.   end

  1572.   #--------------------------------------------------------------------------

  1573.   # ● 閃き判定

  1574.   #--------------------------------------------------------------------------

  1575.   def flash?

  1576.     return @flash_flag ? true : false

  1577.   end  

  1578.   #--------------------------------------------------------------------------

  1579.   # ● 閃きアニメ待ち時間取得

  1580.   #--------------------------------------------------------------------------

  1581.   def flash_duration

  1582.     animation = nil

  1583.     if FLASH_ANIME

  1584.       animation = $data_animations[FLASH_ANIMATION_ID]

  1585.     end

  1586.     return animation != nil ? animation.frame_max * 2 + 2 : 0

  1587.   end

  1588.   #--------------------------------------------------------------------------

  1589.   # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)

  1590.   #--------------------------------------------------------------------------

  1591.   alias side_view_update_phase4_step2 update_phase4_step2

  1592.   def update_phase4_step2(*arg)

  1593.     battler = convert_battler2(*arg)

  1594.     battler.action

  1595.     side_view_update_phase4_step2(*arg)

  1596.   end

  1597.   #--------------------------------------------------------------------------

  1598.   # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)

  1599.   #--------------------------------------------------------------------------

  1600.   alias side_view_update_phase4_step3 update_phase4_step3

  1601.   def update_phase4_step3(*arg)

  1602.     battler = convert_battler2(*arg)

  1603.     return if !battler.animation1_on and battler.action? and !battler.flash?

  1604.     if battler.flash? and FLASH_ANIME

  1605.       battler.flash_flag["normal"] = true

  1606.     end

  1607.     side_view_update_phase4_step3(*arg)

  1608.   end

  1609.   #--------------------------------------------------------------------------

  1610.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)

  1611.   #--------------------------------------------------------------------------

  1612.   alias side_view_update_phase4_step4 update_phase4_step4

  1613.   def update_phase4_step4(*arg)

  1614.     battler = convert_battler2(*arg)

  1615.     targets = RTAB ? battler.target : @target_battlers

  1616.     return if !battler.animation2_on and battler.action?

  1617.     side_view_update_phase4_step4(*arg)

  1618.     for target in targets

  1619.       if RTAB

  1620.         value = nil

  1621.         if target.damage_sp.include?(battler)

  1622.           value = target.damage_sp[battler]

  1623.         end

  1624.         if target.damage.include?(battler)

  1625.           if value == nil or value == "Miss"

  1626.             value = target.damage[battler]

  1627.           elsif value.is_a?(Numeric) && value > 0

  1628.             value = target.damage[battler] == "Miss" ? value : target.damage[battler]

  1629.           end

  1630.         end

  1631.       else

  1632.         value = target.damage

  1633.       end

  1634.       if target.is_a?(Game_Actor)

  1635.         # ダメージの場合

  1636.         if value.is_a?(Numeric) && value > 0

  1637.           # シェイクを開始

  1638.           target.shake = true

  1639.         end

  1640.       elsif target.is_a?(Game_Enemy)

  1641.         # ダメージの場合

  1642.         if value.is_a?(Numeric) && value > 0

  1643.           # シェイクを開始

  1644.           target.shake = true

  1645.         end

  1646.       end

  1647.     end

  1648.   end

  1649.   #--------------------------------------------------------------------------

  1650.   # ● プレバトルフェーズ開始

  1651.   #--------------------------------------------------------------------------

  1652.   alias start_phase1_correct start_phase1

  1653.   def start_phase1

  1654.     # カメラの設定

  1655.     # 元々フロントビュー向けの数値になっているため

  1656.     @zoom_rate = [1.0, 1.0]

  1657.     start_phase1_correct

  1658.   end

  1659.   #--------------------------------------------------------------------------

  1660.   # ● アクターコマンドフェーズ開始

  1661.   #--------------------------------------------------------------------------

  1662.   alias start_phase3_correct start_phase3

  1663.   def start_phase3

  1664.     battler = convert_battler

  1665.     start_phase3_correct

  1666.     if RTAB

  1667.       # カメラの設定

  1668.       # 元々フロントビュー向けの数値になっているため

  1669.       @camera = "command"

  1670.       @spriteset.screen_target(0, 0, 1.0)

  1671.     end

  1672.   end

  1673. end



  1674. class Spriteset_Battle

  1675.   include Side_view

  1676.   #--------------------------------------------------------------------------

  1677.   # ● オブジェクト初期化

  1678.   #--------------------------------------------------------------------------

  1679.   alias side_veiw_initialize initialize

  1680.   def initialize

  1681.     side_veiw_initialize

  1682.     # アクタースプライトを解放

  1683.     for sprite in @actor_sprites

  1684.       sprite.dispose

  1685.     end

  1686.     # アクタースプライトを作成

  1687.     @actor_sprites = []

  1688.     for i in 1..Party_max

  1689.       @actor_sprites.push(Sprite_Battler.new(@viewport1))

  1690.     end

  1691.     update

  1692.   end

  1693.   #--------------------------------------------------------------------------

  1694.   # ● 画面のスクロール

  1695.   #--------------------------------------------------------------------------

  1696.   if method_defined?("screen_scroll")

  1697.   alias side_view_screen_scroll screen_scroll

  1698.   def screen_scroll

  1699.     side_view_screen_scroll

  1700.     # アクターの位置補正

  1701.     for actor in $game_party.actors

  1702.       actor.real_x = @real_x

  1703.       actor.real_y = @real_y

  1704.       actor.real_zoom = @real_zoom

  1705.     end

  1706.   end

  1707.   end

  1708. end



  1709. class Sprite_Battler < RPG::Sprite

  1710.   include Side_view

  1711.   #--------------------------------------------------------------------------

  1712.   # ● オブジェクト初期化

  1713.   #     viewport : ビューポート

  1714.   #     battler  : バトラー (Game_Battler)

  1715.   #--------------------------------------------------------------------------

  1716.   def initialize(viewport, battler = nil)

  1717.     super(viewport)

  1718.     @battler = battler

  1719.     @battler_visible = false

  1720.     @weapon = Sprite_Weapon.new(viewport, battler)

  1721.     @flying = Sprite_Flying.new(viewport, battler)

  1722.     @shadow = []

  1723.     @fly = 0

  1724.     @fly_direction = 1

  1725.     @rand = rand(10)

  1726.     self.effect_clear

  1727.   end

  1728.   #--------------------------------------------------------------------------

  1729.   # ● 解放

  1730.   #--------------------------------------------------------------------------

  1731.   alias side_view_dispose dispose

  1732.   def dispose

  1733.     side_view_dispose

  1734.     @weapon.dispose

  1735.     @flying.dispose

  1736.     if @_target_sprite != nil

  1737.       @_target_sprite.bitmap.dispose

  1738.       @_target_sprite.dispose

  1739.       @_target_sprite = nil

  1740.     end

  1741.   end

  1742.   #--------------------------------------------------------------------------

  1743.   # ● フレーム更新

  1744.   #--------------------------------------------------------------------------

  1745.   def update

  1746.     super

  1747.     # バトラーが nil の場合

  1748.     if @battler == nil

  1749.       self.bitmap = nil

  1750.       @weapon.bitmap = nil

  1751.       loop_animation(nil)

  1752.       return

  1753.     end

  1754.     # バトラー更新

  1755.     @battler.update

  1756.     # バトラーアニメのデータ取得

  1757.     @anime_type = @battler.anime_type

  1758.     # ファイル名か色相が現在のものと異なる場合

  1759.     if @battler.is_a?(Game_Actor)

  1760.       change = (@battler.character_name != @battler_name or @battler.character_hue != @battler_hue)

  1761.     elsif @battler.is_a?(Game_Enemy)

  1762.       change = (@battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue)

  1763.     else

  1764.       return

  1765.     end

  1766.     if change

  1767.       # ビットマップを取得、設定

  1768.       if @battler.is_a?(Game_Actor)

  1769.         @battler_name = @battler.character_name

  1770.         @battler_hue = @battler.character_hue

  1771.         self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)

  1772.         @width = bitmap.width / 4

  1773.         @height = bitmap.height / 4

  1774.       else

  1775.         @battler_name = @battler.battler_name

  1776.         @battler_hue = @battler.battler_hue

  1777.         self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)

  1778.         @width = bitmap.width

  1779.         @height = bitmap.height

  1780.       end

  1781.       self.ox = @width / 2

  1782.       self.oy = @height / 2

  1783.       @battler.height = @height

  1784.       @flag = true

  1785.       # 戦闘不能または隠れ状態なら不透明度を 0 にする

  1786.       if @battler.dead? or @battler.hidden

  1787.         self.opacity = 0

  1788.       end

  1789.     end

  1790.     if @battler.is_a?(Game_Actor) and

  1791.       (@battler.anime_type != @anime_type or @battler.pattern != @pattern or @flag)

  1792.       # ビットマップを取得、設定

  1793.       @pattern = @battler.pattern

  1794.       self.ox = @width / 2

  1795.       self.oy = @height / 2

  1796.       @sx = @pattern * @width

  1797.       @sy = @anime_type % 4 * @height

  1798.       self.src_rect.set(@sx, @sy, @width, @height)

  1799.       self.zoom_x = CHAR_ZOOM

  1800.       self.zoom_y = CHAR_ZOOM

  1801.       @battler.height = @height

  1802.       @flag = false

  1803.     end

  1804.     # 飛行

  1805.     update_fly

  1806.     # シェイク

  1807.     update_shake

  1808.     # 回転

  1809.     update_turning

  1810.     # 反転

  1811.     update_reverse   

  1812.     # 移動

  1813.     update_moving

  1814.     # 追加アニメ

  1815.     update_add_anime

  1816.     # エフェクト効果の適用

  1817.     update_effect

  1818.     # アニメーション ID が現在のものと異なる場合

  1819.     flag = RTAB ? true : @battler.damage == nil

  1820.     if flag and @battler.state_animation_id != @state_animation_id

  1821.       @state_animation_id = @battler.state_animation_id

  1822.       loop_animation($data_animations[@state_animation_id])

  1823.     end

  1824.     # シェイク

  1825.     if @battler.shake

  1826.       self.start_shake(5, 5, 5)

  1827.       @battler.shake = false

  1828.     end

  1829.     # 明滅

  1830.     if @battler.blink

  1831.       blink_on

  1832.     else

  1833.       blink_off

  1834.     end

  1835.     # 不可視の場合

  1836.     unless @battler_visible

  1837.       flag = RTAB ? (@battler.damage.size < 2 or @battler.damage_pop.size < 2) :

  1838.                     (@battler.damage == nil or @battler.damage_pop)

  1839.       # 出現

  1840.       if not @battler.hidden and not @battler.dead? and flag

  1841.         appear

  1842.         @battler_visible = true

  1843.       end

  1844.     end

  1845.     if RTAB

  1846.     # ダメージ

  1847.     for battler in @battler.damage_pop

  1848.       if battler[0].class == Array

  1849.         if battler[0][1] >= 0

  1850.           $scene.skill_se

  1851.         else

  1852.           $scene.levelup_se

  1853.         end

  1854.         damage(@battler.damage[battler[0]], false, 2)

  1855.       else

  1856.         damage(@battler.damage[battler[0]], @battler.critical[battler[0]])

  1857.       end

  1858.       if @battler.damage_sp.include?(battler[0])

  1859.         damage(@battler.damage_sp[battler[0]],

  1860.                 @battler.critical[battler[0]], 1)

  1861.         @battler.damage_sp.delete(battler[0])

  1862.       end

  1863.       @battler.damage_pop.delete(battler[0])

  1864.       @battler.damage.delete(battler[0])

  1865.       @battler.critical.delete(battler[0])

  1866.     end

  1867.     end

  1868.     # 可視の場合

  1869.     if @battler_visible

  1870.       # 武器アニメ

  1871.       @weapon.battler = @battler

  1872.       @weapon.update

  1873.       # 遠距離アニメ

  1874.       @flying.battler = @battler

  1875.       @flying.update

  1876.       # 逃走

  1877.       if @battler.hidden

  1878.         $game_system.se_play($data_system.escape_se)

  1879.         escape

  1880.         @battler_visible = false

  1881.       end

  1882.       # 白フラッシュ

  1883.       if @battler.white_flash

  1884.         whiten

  1885.         @battler.white_flash = false

  1886.       end

  1887.       if RTAB

  1888.       # アニメーション

  1889.       if [email protected]?

  1890.         for animation in @battler.animation.reverse

  1891.           if animation[2]

  1892.             animation($data_animations[animation[0]], animation[1], true)

  1893.           else

  1894.             animation($data_animations[animation[0]], animation[1])

  1895.           end

  1896.           @battler.animation.delete(animation)

  1897.         end

  1898.       end

  1899.       else

  1900.       # アニメーション

  1901.       if @battler.animation_id != 0

  1902.         animation = $data_animations[@battler.animation_id]

  1903.         animation(animation, @battler.animation_hit)

  1904.         @battler.animation_id = 0

  1905.       end

  1906.       end

  1907.       # ダメージ

  1908.       if !RTAB and @battler.damage_pop

  1909.         damage(@battler.damage, @battler.critical)

  1910.         @battler.damage = nil

  1911.         @battler.critical = false

  1912.         @battler.damage_pop = false

  1913.       end

  1914.       flag = RTAB ? (@battler.damage.empty? and $scene.dead_ok?(@battler)) :

  1915.                      @battler.damage == nil

  1916.       # コラプス

  1917.       if flag and @battler.dead?

  1918.         if @battler.is_a?(Game_Actor)

  1919.           $game_system.se_play($data_system.actor_collapse_se)

  1920.         elsif @battler.is_a?(Game_Enemy)

  1921.           $game_system.se_play($data_system.enemy_collapse_se)

  1922.         end

  1923.         collapse

  1924.         @battler_visible = false

  1925.       end

  1926.     end

  1927.     # スプライトの座標を設定

  1928.     self.x = @battler.screen_x + @effect_ox

  1929.     self.y = @battler.screen_y + @effect_oy

  1930.     self.z = @battler.screen_z

  1931.     self.zoom_x = @battler.real_zoom

  1932.     self.zoom_y = @battler.real_zoom

  1933.     # ウェイトカウントを減らす

  1934.     @battler.wait_count -= 1

  1935.     @battler.wait_count2 -= 1

  1936.     # アニメーション待ち時間取得

  1937.     @battler.animation_duration = @_animation_duration

  1938.     if @battler.is_a?(Game_Actor)

  1939.       self.zoom_x *= CHAR_ZOOM

  1940.       self.zoom_y *= CHAR_ZOOM

  1941.       @weapon.x = self.x + 2

  1942.       @weapon.y = self.y + 6

  1943.       @weapon.angle = 75 - (4 - @battler.pattern) * 45

  1944.       if self.mirror

  1945.         @weapon.angle += @weapon.angle - 180

  1946.       end

  1947.     end

  1948.     # 残像

  1949.     if @battler.shadow

  1950.       if Graphics.frame_count % 2 == 0

  1951.         shadow = ::Sprite.new(self.viewport)

  1952.         shadow.bitmap = self.bitmap.dup

  1953.         shadow.x = self.x

  1954.         shadow.y = self.y

  1955.         shadow.ox = self.ox

  1956.         shadow.oy = self.oy

  1957.         shadow.mirror = self.mirror

  1958.         shadow.angle = self.angle

  1959.         shadow.opacity = 160

  1960.         shadow.zoom_x = self.zoom_x

  1961.         shadow.zoom_y = self.zoom_y

  1962.         if @battler.is_a?(Game_Actor)

  1963.           shadow.src_rect.set(@sx, @sy, @width, @height)

  1964.         else

  1965.           shadow.src_rect.set(0, 0, @width, @height)

  1966.         end

  1967.         @shadow.push([shadow,duration = 10,@battler.true_x + @effect_ox,@battler.true_y + @effect_oy])

  1968.       end

  1969.     end

  1970.     for s in @shadow

  1971.       if !s[0].disposed?

  1972.         s[0].update

  1973.         s[1] -= 1

  1974.         if s[1] < 1

  1975.           if s[0].bitmap != nil

  1976.             s[0].bitmap.dispose

  1977.           end

  1978.           s[0].dispose

  1979.         else

  1980.           s[0].x = @battler.screen_x(s[2])

  1981.           s[0].y = @battler.screen_y(s[3])

  1982.         end

  1983.       else

  1984.         s = nil

  1985.       end

  1986.     end

  1987.     @shadow.compact!

  1988.   end

  1989.   #--------------------------------------------------------------------------

  1990.   # ● エフェクトによる座標系の更新

  1991.   #--------------------------------------------------------------------------

  1992.   def update_effect

  1993.     # 角度の修正

  1994.     if @_upside_down

  1995.       self.angle = (@_turning + 180) % 360

  1996.     else

  1997.       self.angle = @_turning

  1998.     end

  1999.     # X 座標の修正値

  2000.     @effect_ox = @_shake + @_moving[0]

  2001.     # Y 座標の修正値

  2002.     @effect_oy = -@fly + @_moving[1]

  2003.     if  @_animation == nil or (RTAB and @_animation.empty?)

  2004.       self.effect_clear

  2005.     end

  2006.   end

  2007.   #--------------------------------------------------------------------------

  2008.   # ● シェイク更新

  2009.   #--------------------------------------------------------------------------

  2010.   def update_shake

  2011.     if @_shake_duration >= 1 or @_shake != 0

  2012.       delta = (@_shake_power * @_shake_speed * @_shake_direction) / 10.0

  2013.       if @_shake_duration <= 1 and @_shake * (@_shake + delta) < 0

  2014.         @_shake = 0

  2015.       else

  2016.         @_shake += delta

  2017.       end

  2018.       if @_shake > @_shake_power * 2

  2019.         @_shake_direction = -1

  2020.       end

  2021.       if @_shake < - @_shake_power * 2

  2022.         @_shake_direction = 1

  2023.       end

  2024.       if @_shake_duration >= 1

  2025.         @_shake_duration -= 1

  2026.       end

  2027.     end

  2028.   end

  2029.   #--------------------------------------------------------------------------

  2030.   # ● 飛行更新

  2031.   #--------------------------------------------------------------------------

  2032.   def update_fly

  2033.     if @rand > 0

  2034.       @rand -= 1

  2035.       return

  2036.     end

  2037.     if @battler.fly != 0

  2038.       if @fly < @battler.fly / 4

  2039.         @fly_direction = 1

  2040.       elsif @fly > @battler.fly / 2

  2041.         @fly_direction = -1

  2042.       end

  2043.       @fly += 0.5 * @fly_direction

  2044.     end

  2045.   end

  2046.   #--------------------------------------------------------------------------

  2047.   # ● 回転更新

  2048.   #--------------------------------------------------------------------------

  2049.   def update_turning

  2050.     if @_turning_duration > 0 or @_turning != 0

  2051.       @_turning += @_turning_direction * @_turning_speed / 2.0

  2052.       # 残り回転数を減らす

  2053.       if @_turning_direction == -1

  2054.         if @_turning_duration > 0 and @_turning < 0

  2055.           @_turning_duration -= 1

  2056.         end

  2057.       elsif @_turning_direction == 1

  2058.         if @_turning_duration > 0 and @_turning >= 360

  2059.           @_turning_duration -= 1

  2060.         end

  2061.       end

  2062.       # 以下補正

  2063.       while @_turning < 0

  2064.         @_turning += 360

  2065.       end

  2066.       if @_turning_duration <= 0

  2067.         @_turning = 0

  2068.       end

  2069.       @_turning %= 360

  2070.     end

  2071.   end

  2072.   #--------------------------------------------------------------------------

  2073.   # ● 左右反転更新

  2074.   #--------------------------------------------------------------------------

  2075.   def update_reverse

  2076.     if @last_reverse != (@_reverse or @battler.reverse)

  2077.       self.mirror = (@_reverse or @battler.reverse)

  2078.       @last_reverse = (@_reverse or @battler.reverse)

  2079.     end

  2080.   end

  2081.   #--------------------------------------------------------------------------

  2082.   # ● 移動更新

  2083.   #--------------------------------------------------------------------------

  2084.   def update_moving

  2085.     @move_distance = (@_move_coordinates[2] - @_move_coordinates[0]).abs +

  2086.                      (@_move_coordinates[3] - @_move_coordinates[1]).abs

  2087.     if @move_distance > 0

  2088.       return if @_moving[0] == @_move_coordinates[0] and @_moving[1] == @_move_coordinates[1]

  2089.       array = @_move_coordinates

  2090.       x = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @_move_duration) / @move_distance.to_f).to_i

  2091.       y = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @_move_duration) / @move_distance.to_f).to_i

  2092.       @_moving = [x, y]

  2093.       if @_move_quick_return and @_move_duration == 0

  2094.         @_move_coordinates = [0,0,array[0],array[1]]

  2095.         @_move_duration = @move_distance

  2096.       end

  2097.       @_move_duration -= @_move_speed

  2098.       @_move_duration = [@_move_duration, 0].max

  2099.     end

  2100.   end

  2101.   #--------------------------------------------------------------------------

  2102.   # ● 追加アニメ更新 (RTAB限定機能)

  2103.   #--------------------------------------------------------------------------

  2104.   def update_add_anime

  2105.     if RTAB

  2106.     # アニメーション

  2107.     if @_add_anime_id != 0

  2108.       animation = $data_animations[@_add_anime_id]

  2109.       animation(animation, true)

  2110.       @_add_anime_id = 0

  2111.     end

  2112.     end

  2113.   end

  2114.   #--------------------------------------------------------------------------

  2115.   # ● エフェクト初期化

  2116.   #--------------------------------------------------------------------------

  2117.   def effect_clear

  2118.     @_effect_ox = 0

  2119.     @_effect_oy = 0

  2120.     @_shake_power = 0

  2121.     @_shake_speed = 0

  2122.     @_shake_duration = 0

  2123.     @_shake_direction = 1

  2124.     @_shake = 0

  2125.     @_upside_down = false

  2126.     @_reverse = false

  2127.     @_turning_direction = 1

  2128.     @_turning_speed = 0

  2129.     @_turning_duration = 0

  2130.     @_turning = 0

  2131.     @_move_quick_return = true

  2132.     @_move_speed = 0

  2133.     @_move_coordinates = [0,0,0,0]

  2134.     @_move_jump = false

  2135.     @_move_duration = 0

  2136.     @_moving = [0,0]

  2137.     @_add_anime_id = 0

  2138.   end

  2139.   #--------------------------------------------------------------------------

  2140.   # ● シェイクの開始

  2141.   #     power    : 強さ

  2142.   #     speed    : 速さ

  2143.   #     duration : 時間

  2144.   #--------------------------------------------------------------------------

  2145.   def start_shake(power, speed, duration)

  2146.     @_shake_power = power

  2147.     @_shake_speed = speed

  2148.     @_shake_duration = duration

  2149.   end

  2150.   #--------------------------------------------------------------------------

  2151.   # ● 上下反転を開始

  2152.   #--------------------------------------------------------------------------

  2153.   def start_upside_down

  2154.     @_upside_down = @_upside_down ? false : true

  2155.   end

  2156.   #--------------------------------------------------------------------------

  2157.   # ● 左右反転を開始

  2158.   #--------------------------------------------------------------------------

  2159.   def start_reverse

  2160.     @_reverse = @_reverse ? false : true

  2161.   end

  2162.   #--------------------------------------------------------------------------

  2163.   # ● 回転を開始

  2164.   #     direction: 方向

  2165.   #     speed    : 速さ

  2166.   #     duration : 時間

  2167.   #--------------------------------------------------------------------------

  2168.   def start_turning(direction, speed, duration)

  2169.     @_turning_direction = direction

  2170.     @_turning_speed = speed

  2171.     @_turning_duration = duration

  2172.     @_turning = @_turning_direction == 1 ? 0 : 360

  2173.   end

  2174.   #--------------------------------------------------------------------------

  2175.   # ● 移動を開始

  2176.   #     quick_return : 戻るかどうか

  2177.   #     speed        : 速さ

  2178.   #     x            : X 座標

  2179.   #     y            : Y 座標

  2180.   #--------------------------------------------------------------------------

  2181.   def start_moving(quick_return, speed, x, y)

  2182.     @_move_quick_return = quick_return == 0 ? false : true

  2183.     @_move_speed = speed

  2184.     @_move_coordinates = [x,y,@_move_coordinates[0],@_move_coordinates[1]]

  2185.     distance = (@_move_coordinates[2] - @_move_coordinates[0]).abs +

  2186.                (@_move_coordinates[3] - @_move_coordinates[1]).abs

  2187.     @_move_duration = distance

  2188.   end

  2189.   #--------------------------------------------------------------------------

  2190.   # ● アニメ追加を開始

  2191.   #     id           : ID

  2192.   #     hit          : 命中フラッグ

  2193.   #--------------------------------------------------------------------------

  2194.   def start_add_anime(id)

  2195.     @_add_anime_id = id

  2196.   end

  2197.   #--------------------------------------------------------------------------

  2198.   # ● 各種エフェクトの開始判定

  2199.   #--------------------------------------------------------------------------

  2200.   if !method_defined?("side_view_animation_process_timing")

  2201.     alias side_view_animation_process_timing animation_process_timing

  2202.   end

  2203.   def animation_process_timing(timing, hit)

  2204.     side_view_animation_process_timing(timing, hit)

  2205.     if (timing.condition == 0) or

  2206.        (timing.condition == 1 and hit == true) or

  2207.        (timing.condition == 2 and hit == false)

  2208.       if timing.se.name =~ SHAKE_FILE

  2209.         names = timing.se.name.split(/#/)

  2210.         power    = names[1].nil? ? SHAKE_POWER    : names[1].to_i

  2211.         speed    = names[2].nil? ? SHAKE_SPEED    : names[2].to_i

  2212.         duration = names[3].nil? ? SHAKE_DURATION : names[3].to_i

  2213.         # シェイクを開始

  2214.         self.start_shake(power, speed, duration)

  2215.       end

  2216.       if timing.se.name == UPSIDE_DOWN_FILE

  2217.         # 上下反転を開始

  2218.         self.start_upside_down

  2219.       end

  2220.       if timing.se.name == REVERSE_FILE

  2221.         # 左右反転を開始

  2222.         self.start_reverse

  2223.       end

  2224.       if timing.se.name =~ TURNING_FILE

  2225.         names = timing.se.name.split(/#/)

  2226.         direction = names[1].nil? ? TURNING_DIRECTION : names[1].to_i

  2227.         speed     = names[2].nil? ? TURNING_SPEED     : names[2].to_i

  2228.         duration  = names[3].nil? ? TURNING_DURATION  : names[3].to_i

  2229.         # 回転を開始

  2230.         self.start_turning(direction, speed, duration)

  2231.       end

  2232.       if timing.se.name =~ MOVE_FILE

  2233.         names = timing.se.name.split(/#/)

  2234.         quick_return= names[1].nil? ? MOVE_RETURN      : names[1].to_i

  2235.         speed       = names[2].nil? ? MOVE_SPEED       : names[2].to_i

  2236.         x           = names[3].nil? ? MOVE_COORDINATES[0] : names[3].to_i

  2237.         y           = names[3].nil? ? MOVE_COORDINATES[1] : names[4].to_i

  2238.         # 移動を開始

  2239.         self.start_moving(quick_return, speed, x, y)

  2240.       end

  2241.       if timing.se.name =~ ADD_ANIME_FILE

  2242.         names = timing.se.name.split(/#/)

  2243.         id = names[1].nil? ? ADD_ANIME_ID      : names[1].to_i

  2244.         # アニメ追加を開始

  2245.         self.start_add_anime(id)

  2246.       end

  2247.     end

  2248.   end

  2249. end

  2250. #==============================================================================

  2251. # ■ Sprite_Weapon

  2252. #------------------------------------------------------------------------------

  2253. #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、

  2254. # スプライトの状態を自動的に変化させます。

  2255. #==============================================================================



  2256. class Sprite_Weapon < RPG::Sprite

  2257.   include Side_view

  2258.   #--------------------------------------------------------------------------

  2259.   # ● 公開インスタンス変数

  2260.   #--------------------------------------------------------------------------

  2261.   attr_accessor :battler                  # バトラー

  2262.   attr_reader   :cw                       # グラフィックの幅

  2263.   attr_reader   :ch                       # グラフィックの高さ

  2264.   #--------------------------------------------------------------------------

  2265.   # ● オブジェクト初期化

  2266.   #     viewport : ビューポート

  2267.   #     battler  : バトラー (Game_Battler)

  2268.   #--------------------------------------------------------------------------

  2269.   def initialize(viewport, battler = nil)

  2270.     super(viewport)

  2271.     @battler = battler

  2272.     @battler_visible = false

  2273.   end

  2274.   #--------------------------------------------------------------------------

  2275.   # ● 解放

  2276.   #--------------------------------------------------------------------------

  2277.   def dispose

  2278.     if self.bitmap != nil

  2279.       self.bitmap.dispose

  2280.     end

  2281.     super

  2282.   end

  2283.   #--------------------------------------------------------------------------

  2284.   # ● フレーム更新

  2285.   #--------------------------------------------------------------------------

  2286.   def update

  2287.     super

  2288.     # バトラーが nil の場合

  2289.     if @battler == nil or [email protected]_a?(Game_Actor)

  2290.       self.bitmap = nil

  2291.       return

  2292.     end

  2293.     # ウエポンアニメのデータ取得

  2294.     @weapon_anime_type = @battler.weapon_anime_type(@battler.condition)

  2295.     # 設定が「非表示」の場合

  2296.     if !@weapon_anime_type[1] or @weapon_anime_type[0].nil?

  2297.       self.visible = false

  2298.       return

  2299.     else

  2300.       self.visible = true

  2301.     end

  2302.     # ファイル名が現在のものと異なる場合

  2303.     if @weapon_anime_type[0] != @weapon_name

  2304.       @weapon_name = @weapon_anime_type[0]

  2305.       # ビットマップを取得、設定

  2306.       self.bitmap = RPG::Cache.icon(@weapon_name)

  2307.       @width = bitmap.width

  2308.       @height = bitmap.height

  2309.       @flag = true

  2310.     end

  2311.     # 現在アニメパターンが現在のものと異なる場合

  2312.     if @pattern != @battler.pattern or @flag or @condition != @battler.condition

  2313.       @pattern = @battler.pattern

  2314.       @condition = @battler.condition

  2315.       self.ox = @width

  2316.       self.oy = @height

  2317.       self.z = battler.screen_z

  2318.       self.zoom_x = @battler.real_zoom * CHAR_ZOOM

  2319.       self.zoom_y = @battler.real_zoom * CHAR_ZOOM

  2320.       self.src_rect.set(0, 0, @width, @height)

  2321.       self.opacity = 255

  2322.       # バトラーより手前に表示

  2323.       if @weapon_anime_type[2]

  2324.         self.z += 10

  2325.       # バトラーより奥に表示

  2326.       else

  2327.         self.z -= 10

  2328.       end

  2329.       @flag = false

  2330.     end

  2331.   end

  2332. end



  2333. #==============================================================================

  2334. # ■ Sprite_Flying

  2335. #------------------------------------------------------------------------------

  2336. #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、

  2337. # スプライトの状態を自動的に変化させます。

  2338. #==============================================================================



  2339. class Sprite_Flying < RPG::Sprite

  2340.   include Side_view

  2341.   #--------------------------------------------------------------------------

  2342.   # ● 公開インスタンス変数

  2343.   #--------------------------------------------------------------------------

  2344.   attr_accessor :battler                  # バトラー

  2345.   #--------------------------------------------------------------------------

  2346.   # ● オブジェクト初期化

  2347.   #     viewport : ビューポート

  2348.   #     battler  : バトラー (Game_Battler)

  2349.   #--------------------------------------------------------------------------

  2350.   def initialize(viewport, battler = nil)

  2351.     super(viewport)

  2352.     @battler = battler

  2353.     @battler_visible = false

  2354.   end

  2355.   #--------------------------------------------------------------------------

  2356.   # ● 解放

  2357.   #--------------------------------------------------------------------------

  2358.   def dispose

  2359.     if self.bitmap != nil

  2360.       self.bitmap.dispose

  2361.     end

  2362.     super

  2363.   end

  2364.   #--------------------------------------------------------------------------

  2365.   # ● フレーム更新

  2366.   #--------------------------------------------------------------------------

  2367.   def update

  2368.     super

  2369.     # バトラーが nil の場合

  2370.     if @battler == nil

  2371.       self.bitmap = nil

  2372.       loop_animation(nil)

  2373.       return

  2374.     end

  2375.     # 遠距離アニメ

  2376.     flying_animation = @battler.flying_animation

  2377.     flying_start = flying_animation[0]

  2378.     flying_end   = flying_animation[1]

  2379.     # アニメーション ID が現在のものと異なる場合

  2380.     if @anime_id != @battler.flying_anime[0]

  2381.       @anime_id = @battler.flying_anime[0]

  2382.       @animation = $data_animations[@anime_id]

  2383.     end

  2384.     # アニメーション 開始

  2385.     if flying_start

  2386.       loop_animation(@animation)

  2387.     elsif flying_end

  2388.       loop_animation(nil)

  2389.     end

  2390.     self.x = @battler.flying_x

  2391.     self.y = @battler.flying_y

  2392.     self.z = @battler.screen_z + 1000

  2393.   end

  2394. end



  2395. module RPG

  2396.   class Skill

  2397.     #--------------------------------------------------------------------------

  2398.     # ● 魔法かどうかの判断

  2399.     #--------------------------------------------------------------------------

  2400.     def magic?

  2401.       if @atk_f == 0

  2402.         return true

  2403.       else

  2404.         return false

  2405.       end

  2406.     end

  2407.   end

  2408. end



  2409. # アローカーソルの位置修正



  2410. class Arrow_Actor < Arrow_Base

  2411.   include Side_view

  2412.   #--------------------------------------------------------------------------

  2413.   # ● フレーム更新

  2414.   #--------------------------------------------------------------------------

  2415.   alias side_view_update update

  2416.   def update

  2417.     side_view_update

  2418.     # スプライトの座標を設定

  2419.     if self.actor != nil && (self.x != self.actor.screen_x + ARROW_OX or self.y != self.actor.screen_y + ARROW_OY)

  2420.       self.x = self.actor.screen_x + ARROW_OX

  2421.       self.y = self.actor.screen_y + ARROW_OY

  2422.     end

  2423.   end

  2424. end

  2425. class Arrow_Enemy < Arrow_Base

  2426.   include Side_view

  2427.   #--------------------------------------------------------------------------

  2428.   # ● フレーム更新

  2429.   #--------------------------------------------------------------------------

  2430.   alias side_view_update update

  2431.   def update

  2432.     side_view_update

  2433.     # スプライトの座標を設定

  2434.     if self.enemy != nil && self.y != self.enemy.screen_y + self.enemy.height/2

  2435.       self.x = self.enemy.screen_x

  2436.       self.y = self.enemy.screen_y + self.enemy.height/2

  2437.     end

  2438.   end

  2439. end
  2440. #==============================================================================
  2441. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  2442. #==============================================================================
复制代码

点评

看透别说透......  发表于 2013-8-8 12:01
每行代码空2行……实际只有一半不到%……  发表于 2013-8-8 09:26
4917行代码吊炸了不明觉厉啊的说  发表于 2013-7-29 17:09
横版战斗脚本  发表于 2013-7-29 17:04

评分

参与人数 1星屑 +98 收起 理由
弗雷德 + 98 感谢回答!

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2013-7-28
帖子
54
6
 楼主| 发表于 2013-7-30 16:47:42 | 只看该作者
a821615644 发表于 2013-7-29 17:04

这个待吗要放在什么位置?本人小白。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-11-18
帖子
68
7
发表于 2013-7-30 20:41:41 | 只看该作者
qq526915277 发表于 2013-7-30 16:47
这个待吗要放在什么位置?本人小白。

直接在Main按Insert,然后复制粘贴就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-28 11:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表