Project1

标题: 目前不显示战斗动画了 求修改 [打印本页]

作者: huangke    时间: 2017-12-4 21:03
标题: 目前不显示战斗动画了 求修改
  1. # ■ Scene_Battle (分割定义 4)
  2. #------------------------------------------------------------------------------
  3. #  处理战斗画面的类。
  4. #==============================================================================
  5. Xianfengstate = 50

  6. module RPG
  7.   class Weapon
  8.     def name
  9.       return @name.split(/@/)[2]
  10.     end
  11.   end
  12. end

  13.   #--------------------------------------------------------------------------
  14.   # ● 去后缀处理
  15.   #--------------------------------------------------------------------------
  16. class Window_Base < Window
  17.   def draw_item_name(item, x, y)
  18.     if item == nil
  19.       return
  20.     end
  21.     bitmap = RPG::Cache.icon(item.icon_name)
  22.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  23.     self.contents.font.color = normal_color
  24.     self.contents.draw_text(x + 28, y, 212, 32, item.name.split("@")[0])
  25.   end
  26. end

  27. class Game_Enemy < Game_Battler
  28.   def name
  29.     return $data_enemies[@enemy_id].name.split("@")[0]
  30.   end
  31.   def ifQungong
  32.     ###如果要改变敌人群体攻击属性的后缀,改下面
  33.     return $data_enemies[@enemy_id].name.split("@")[1] == "群攻"
  34.   end
  35.     def ifXianfeng
  36.     ###如果要改变敌人群体攻击属性的后缀,改下面
  37.     return $data_enemies[@enemy_id].name.split("@")[2] == "仙风"
  38.   end
  39. end
  40. class Scene_Battle
  41.   #--------------------------------------------------------------------------
  42.   # ● 开始主回合
  43.   #--------------------------------------------------------------------------
  44.   def start_phase4  
  45.     # 转移到回合 4
  46.     $game_variables[22] = 0
  47.     $game_variables[33] = 0#策略清零
  48.     $game_variables[34] = 0
  49.     $game_variables[35] = 0
  50.     $game_variables[36] = 0
  51.     $game_variables[37] = 0
  52.     $game_variables[21] = 0
  53.     $game_switches[30] = true#連擊數
  54.     @phase = 4
  55.     # 回合数计数
  56.     $game_temp.battle_turn += 1
  57.     # 搜索全页的战斗事件
  58.     for index in 0...$data_troops[@troop_id].pages.size
  59.       # 获取事件页
  60.       page = $data_troops[@troop_id].pages[index]
  61.       # 本页的范围是 [回合] 的情况下
  62.       if page.span == 1
  63.         # 设置已经执行标志
  64.         $game_temp.battle_event_flags[index] = false
  65.       end
  66.     end
  67.     # 设置角色为非选择状态
  68.     @actor_index = -1
  69.     @active_battler = nil
  70.     # 有效化同伴指令窗口
  71.     @party_command_window.active = false
  72.     @party_command_window.visible = false
  73.     # 无效化角色指令窗口
  74.     @actor_command_window.active = false
  75.     @actor_command_window.visible = false
  76.     # 设置主回合标志
  77.     $game_temp.battle_main_phase = true
  78.     # 生成敌人行动
  79.     for enemy in $game_troop.enemies
  80.       enemy.make_action
  81.     end
  82.     # 生成行动顺序
  83.     make_action_orders
  84.     # 移动到步骤 1
  85.     @phase4_step = 1
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 生成行动循序
  89.   #--------------------------------------------------------------------------
  90.   def make_action_orders

  91.     # 初始化序列 @action_battlers
  92.     @action_battlers = []
  93.     # 添加敌人到 @action_battlers 序列
  94.     for enemy in $game_troop.enemies
  95.       @action_battlers.push(enemy)
  96.       if enemy.ifXianfeng
  97.         @action_battlers.push(enemy)
  98.       end
  99.     end
  100.     # 添加角色到 @action_battlers 序列
  101.     for actor in $game_party.actors
  102.       @action_battlers.push(actor)
  103.      # weapon_id=$data_weapons[actor.weapon_id]
  104.      # if @actor.weapon_id !=nil
  105.       if (actor.current_action.basic == 0 and actor.restriction == 0 and  $data_weapons[actor.weapon_id].name.split("@")[2] == "仙风")
  106.       @action_battlers.push(actor)
  107.      else
  108.      if actor.state?(Xianfengstate)
  109.        @action_battlers.push(actor)
  110.      end
  111.      end
  112. #  end
  113.    end

  114.     # 确定全体的行动速度
  115.     for battler in @action_battlers
  116.       battler.make_action_speed
  117.     end
  118.     # 按照行动速度从大到小排列
  119.     @action_battlers.sort! {|a,b|
  120.       b.current_action.speed - a.current_action.speed }
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 刷新画面 (主回合)
  124.   #--------------------------------------------------------------------------
  125.   def update_phase4
  126.     case @phase4_step
  127.     when 1
  128.       update_phase4_step1
  129.     when 2
  130.       update_phase4_step2
  131.     when 3
  132.       update_phase4_step3
  133.     when 4
  134.       update_phase4_step4
  135.     when 5
  136.       update_phase4_step5
  137.     when 6
  138.       update_phase4_step6
  139.     end
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  143.   #--------------------------------------------------------------------------
  144.   def update_phase4_step1
  145.     # 隐藏帮助窗口
  146.     @help_window.visible = false
  147.     # 判定胜败
  148.     if judge
  149.       # 胜利或者失败的情况下 : 过程结束
  150.       return
  151.     end
  152.     # 强制行动的战斗者不存在的情况下
  153.     if $game_temp.forcing_battler == nil
  154.       # 设置战斗事件
  155.       setup_battle_event
  156.       # 执行战斗事件中的情况下
  157.       if $game_system.battle_interpreter.running?
  158.         return
  159.       end
  160.     end
  161.     # 强制行动的战斗者存在的情况下
  162.     if $game_temp.forcing_battler != nil
  163.       # 在头部添加后移动
  164.       @action_battlers.delete($game_temp.forcing_battler)
  165.       @action_battlers.unshift($game_temp.forcing_battler)
  166.     end
  167.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  168.     if @action_battlers.size == 0
  169.     # 开始同伴命令回合
  170.     if $game_variables[402] > 0
  171.       $game_variables[402] -= 1
  172.     end  
  173.     if $game_variables[402] == 0
  174.      if $game_variables[401] == 0
  175.        $game_variables[401] = rand(20)
  176.      end
  177.      if $game_variables[401] == 1
  178.        $game_variables[401] = rand(10)+10
  179.      end
  180.      if $game_variables[401] == 2
  181.        $game_variables[401] = rand(20)
  182.      end
  183.      if $game_variables[401] == 3
  184.        $game_variables[401] = rand(10)+10
  185.      end     
  186.      if $game_variables[401] <= 10
  187.         $game_variables[401] = 0
  188.      end
  189.      if $game_variables[401] > 10 and $game_variables[151] <= 13
  190.         $game_variables[401] = 1
  191.      end
  192.      if $game_variables[401] > 13 and $game_variables[151] <= 17
  193.         $game_variables[401] = 2
  194.      end
  195.      if $game_variables[401] > 17 and $game_variables[151] <= 20
  196.         $game_variables[401] = 3
  197.      end
  198.      $game_screen.weather($game_variables[401], 9, 1)
  199.       start_phase2
  200.       return
  201.      end
  202.     end
  203.     # 初始化动画 ID 和公共事件 ID
  204.     @animation1_id = 0
  205.     @animation2_id = 0
  206.     @common_event_id = 0
  207.     # 未行动的战斗者移动到序列的头部
  208.     @active_battler = @action_battlers.shift
  209.     # 如果已经在战斗之外的情况下
  210.     if @active_battler.index == nil
  211.       return
  212.     end         
  213.     # 连续伤害
  214.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  215.       @active_battler.slip_damage_effect
  216.       if $game_switches[35] == false and $game_variables[4] != 0
  217.        @active_battler.damage_pop = true
  218.       end
  219.     end
  220.     # 自然解除状态
  221.     if  @active_battler.state?(2) or @active_battler.state?(4) or
  222.         @active_battler.state?(19) or @active_battler.state?(20) or
  223.         @active_battler.state?(21) or @active_battler.state?(22)
  224.       @active_battler.remove_states_auto
  225.     end
  226.     if $game_switches[35] == false and $game_switches[47] == true
  227.         $game_switches[42] = true
  228.         if $game_variables[60] == 2
  229.           @help_window.set_text2(@active_battler.name + "擺脫了疑心計","","",1)  
  230.           @wait_count = 30
  231.         end
  232.         if $game_variables[60] == 4
  233.           @help_window.set_text2(@active_battler.name + "擺脫了混亂計","","",1)  
  234.           @wait_count = 30
  235.         end        
  236.         $game_switches[47] = false
  237.         $game_variables[60] = 0
  238.       end
  239.    
  240.    
  241.     # 刷新状态窗口
  242.     @status_window.refresh
  243.     # 移至步骤 2
  244.     @phase4_step = 2
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  248.   #--------------------------------------------------------------------------
  249.   def update_phase4_step2
  250.     # 如果不是强制行动
  251.     unless @active_battler.current_action.forcing
  252.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  253.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  254.         # 设置行动为攻击
  255.         @active_battler.current_action.kind = 0
  256.         @active_battler.current_action.basic = 0
  257.       end
  258.       # 限制为 [不能行动] 的情况下
  259.       if @active_battler.restriction == 4
  260.         # 清除行动强制对像的战斗者
  261.         $game_temp.forcing_battler = nil
  262.         # 移至步骤 1
  263.         @phase4_step = 1
  264.         return
  265.       end
  266.     end
  267.     # 清除对像战斗者
  268.     @target_battlers = []
  269.     # 行动种类分支
  270.     case @active_battler.current_action.kind
  271.     when 0  # 基本
  272.       make_basic_action_result
  273.     when 1  # 特技
  274.       make_skill_action_result
  275.     when 2  # 物品
  276.       make_item_action_result
  277.     end
  278.     # 移至步骤 3
  279.     if @phase4_step == 2
  280.       @phase4_step = 3
  281.     end
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● 生成基本行动结果
  285.   #--------------------------------------------------------------------------
  286.   def make_basic_action_result
  287.     # 攻击的情况下
  288.     if @active_battler.current_action.basic == 0
  289.       
  290.       # 设置攻击 ID
  291.       @animation1_id = @active_battler.animation1_id
  292.       @animation2_id = @active_battler.animation2_id     
  293.       
  294.       #雷暴
  295.       leiyu = 0  
  296.       
  297.       if @active_battler.element_rate(13) == 50 #追风呼雷豹
  298.         leiyu += 30
  299.       end
  300.       if @active_battler.element_rate(41) == 50
  301.         leiyu += 7
  302.       end
  303.       if @active_battler.element_rate(42) == 50
  304.         leiyu += 8
  305.       end
  306.       if @active_battler.element_rate(43) == 50
  307.         leiyu += 9
  308.       end
  309.       if @active_battler.element_rate(44) == 50
  310.         leiyu += 10
  311.       end     
  312.       if @active_battler.element_rate(181) == 50
  313.         leiyu += 100
  314.       end
  315.       if @active_battler.element_rate(351) == 50
  316.         leiyu += 100
  317.       end
  318.       if $game_troop.random_target_enemy.element_rate(24) == 50
  319.         leiyu -= 999
  320.       end
  321.       if $game_troop.random_target_enemy.element_rate(185) == 50
  322.         leiyu -= 999
  323.       end
  324.       if $game_troop.random_target_enemy.element_rate(122) == 50
  325.         leiyu -= 999
  326.       end
  327.       
  328.     if @active_battler.element_rate(41) < 100 and rand(100) <= 10 + leiyu
  329.       $game_variables[40] = 1      
  330.     end
  331.     if @active_battler.element_rate(42) < 100 and rand(100) <= 10 + leiyu
  332.       $game_variables[40] = 2      
  333.     end
  334.     if @active_battler.element_rate(43) < 100 and rand(100) <= 10 + leiyu
  335.       $game_variables[40] = 3      
  336.     end
  337.     if @active_battler.element_rate(44) < 100 and rand(100) <= 10 + leiyu
  338.       $game_variables[40] = 4      
  339.     end
  340.     if @active_battler.element_rate(201) < 100 and rand(100) <= 30
  341.       $game_variables[40] = 5
  342.     end
  343.     if @active_battler.element_rate(201) < 100 and rand(100) <= 30
  344.       $game_variables[40] = 6
  345.     end   
  346.       
  347.       # 行动方的战斗者是敌人的情况下
  348.       if @active_battler.is_a?(Game_Enemy)
  349.         if @active_battler.restriction == 3
  350.           target = $game_troop.random_target_enemy
  351.         elsif @active_battler.restriction == 2
  352.           target = $game_party.random_target_actor
  353.         else
  354.           #雷玉
  355.           if $game_variables[40] >= 1  
  356.             for actor in $game_party.actors
  357.               if actor.exist?
  358.                 if $game_variables[201] != 5
  359.                     $game_switches[39] = true
  360.                 end
  361.                 if $game_variables[230] != 5
  362.                     $game_switches[39] = true
  363.                 end  
  364.                 @target_battlers.push(actor)
  365.               end
  366.             end
  367.           else  
  368.             index = @active_battler.current_action.target_index
  369.             target = $game_party.smooth_target_actor(index)
  370.           end
  371.         end
  372.       end
  373.       # 行动方的战斗者是角色的情况下
  374.       if @active_battler.is_a?(Game_Actor)
  375.          if @active_battler.restriction == 3
  376.           target = $game_party.random_target_actor
  377.         elsif @active_battler.restriction == 2
  378.           target = $game_troop.random_target_enemy
  379.         else   
  380.             #雷玉
  381.             if $game_variables[40] >= 1  
  382.               for enemy in $game_troop.enemies
  383.                 if enemy.exist?
  384.                   if $game_variables[201] != 5
  385.                     $game_switches[39] = true
  386.                   end
  387.                   if $game_variables[230] != 5
  388.                     $game_switches[39] = true
  389.                   end
  390.                   @target_battlers.push(enemy)
  391.                 end
  392.               end
  393.             else
  394.               if @active_battler.element_rate(214) == 50 and rand(100) < 50
  395.                 index = rand(5)
  396.                 @target_battlers.push($game_troop.smooth_target_enemy(index))
  397.                 index = rand(5)
  398.                 @target_battlers.push($game_troop.smooth_target_enemy(index))
  399.                 index = @active_battler.current_action.target_index
  400.                 @target_battlers.push($game_troop.smooth_target_enemy(index))
  401.                else
  402.                 index = @active_battler.current_action.target_index
  403.                 target = $game_troop.smooth_target_enemy(index)
  404.               end
  405.             end
  406.         end
  407.       end
  408.       if @target_battlers == []
  409.       # 设置对像方的战斗者序列
  410.       @target_battlers = [target]
  411.        # 如果敌人有“群攻”标记
  412.       if @active_battler.is_a?(Game_Enemy)
  413.         if @active_battler.ifQungong
  414.           if @active_battler.restriction == 0
  415.             @target_battlers = []
  416.             for target in $game_party.actors
  417.               if target.exist?
  418.                 @target_battlers.push(target)
  419.               end
  420.             end
  421.           end
  422.         end
  423.       end
  424.     end
  425.      # 如果角色标有群攻或者武器含有“群攻”标记
  426.       if @active_battler.is_a?(Game_Actor)
  427.         ###如果要改变武器群体攻击属性的后缀,改下面
  428.        if $data_weapons[@active_battler.weapon_id].name.split("@")[1] == "群攻"
  429.           if @active_battler.restriction == 0
  430.             @target_battlers = []
  431.             for target in $game_troop.enemies
  432.               if target.exist?
  433.                 @target_battlers.push(target)
  434.               end
  435.             end
  436.           end
  437.         end
  438.       end

  439.    
  440.       
  441.       # 应用通常攻击效果
  442.       for target in @target_battlers
  443.         target.attack_effect(@active_battler)
  444.       end
  445.       
  446.       if @active_battler.is_a?(Game_Actor)
  447.         explus
  448.       end
  449.         text1 = "攻擊"
  450.         text7 = ""
  451.       if $game_switches[36] == true
  452.         text1 = "會心一擊"
  453.       end
  454.       
  455.       if $game_switches[37] == true
  456.         text2 = " 烈風"
  457.         text7 = "發動"
  458.       end
  459.       
  460.       if $game_switches[38] == true
  461.         text3 = " 斬擊"
  462.         text7 = "發動"
  463.       end
  464.       
  465.       if $game_switches[39] == true
  466.         text4 = " 雷暴"
  467.         text7 = "發動"
  468.       end
  469.       
  470.       if $game_switches[40] == true
  471.         text5 = " 冰霜"
  472.         text7 = "發動"
  473.       end
  474.       
  475.       if $game_switches[41] == true
  476.         text6 = " 紅蓮"
  477.         text7 = "發動"
  478.       end
  479.     if $game_switches[35] == false
  480.       $game_switches[42] = true
  481.       @help_window.set_text2(@active_battler.name + text1.to_s + text2.to_s +
  482.       text3.to_s + text4.to_s + text5.to_s + text6.to_s + text7.to_s,"","",1)      
  483.     end  
  484.    
  485.       #属性文字描述重置
  486.       $game_switches[36] = false
  487.       $game_switches[37] = false
  488.       $game_switches[38] = false
  489.       $game_switches[39] = false
  490.       $game_switches[40] = false
  491.       $game_switches[41] = false
  492.    
  493.       return
  494.     end
  495.     # 防御的情况下
  496.     if @active_battler.current_action.basic == 1      
  497.       # 帮助窗口显示"防御"
  498.       @help_window.set_text(@active_battler.name + "防禦", 1)   
  499.       Audio.se_play("Audio/SE/音效03-防御", 100, 100)
  500.       # 回復值的表示
  501.       @target_battlers.push(@active_battler)
  502.       return
  503.     end
  504.     # 逃跑的情况下
  505.     if @active_battler.is_a?(Game_Enemy) and
  506.        @active_battler.current_action.basic == 2
  507.       #  帮助窗口显示"逃跑"
  508.       #@help_window.set_text("劉備軍撤退!", 1)
  509.       # 逃跑
  510.       @active_battler.escape
  511.       return
  512.     end
  513.     # 什么也不做的情况下
  514.     if @active_battler.current_action.basic == 3
  515.       # 清除强制行动对像的战斗者
  516.       $game_temp.forcing_battler = nil
  517.       # 移至步骤 1
  518.       @phase4_step = 1
  519.       return
  520.     end
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # ● 设置物品或特技对像方的战斗者
  524.   #     scope : 特技或者是物品的范围
  525.   #--------------------------------------------------------------------------
  526.   def set_target_battlers(scope)
  527.     # 行动方的战斗者是敌人的情况下
  528.     if @active_battler.is_a?(Game_Enemy)
  529.      
  530.       xushi = 0
  531.       skill_leixing = 0
  532.       
  533.       if @skill.atk_f == 1 or @skill.atk_f == 2 or @skill.atk_f == 3
  534.         skill_leixing = 1
  535.       end
  536.       #虚实
  537.       if @active_battler.element_rate(97) < 100 and skill_leixing == 1
  538.         xushi += 2
  539.       end
  540.       
  541.       if @active_battler.element_rate(98) < 100 and skill_leixing == 1
  542.         xushi += 3
  543.       end
  544.       
  545.       if @active_battler.element_rate(99) < 100 and skill_leixing == 1
  546.         xushi += 4
  547.       end
  548.       
  549.       if @active_battler.element_rate(100) < 100 and skill_leixing == 1
  550.         xushi += 5
  551.       end
  552.       if @active_battler.element_rate(262) < 100 and skill_leixing == 1
  553.         xushi += 80
  554.       end

  555.       if @active_battler.element_rate(17) < 100 and skill_leixing == 1
  556.         xushi += 100
  557.       end
  558.       
  559.       if @active_battler.element_rate(232) < 100 and skill_leixing == 1
  560.         xushi += 100
  561.       end
  562.             
  563.       if xushi > 0
  564.         xushi += 10  
  565.       end
  566.       
  567.       if rand(100) < xushi
  568.         scope = 2
  569.       end
  570.       
  571.       #黃帝內經
  572.       if @active_battler.element_rate(30) == 50 and @skill.atk_f == 4 and rand(100) <= 50
  573.         scope = 4
  574.       end
  575.       #治疗
  576.       if @active_battler.element_rate(154) == 50 and @skill.atk_f == 4 and rand(100) <= 50
  577.         scope = 4
  578.       end
  579.       

  580.       # 效果范围分支
  581.       case scope
  582.       when 1  # 敌单体
  583.         index = @active_battler.current_action.target_index
  584.         @target_battlers.push($game_party.smooth_target_actor(index))
  585.       when 2  # 敌全体
  586.         for actor in $game_party.actors
  587.           if actor.exist?
  588.             @target_battlers.push(actor)
  589.           end
  590.         end
  591.       when 3  # 我方单体
  592.         index = @active_battler.current_action.target_index
  593.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  594.       when 4  # 我方全体
  595.         for enemy in $game_troop.enemies
  596.           if enemy.exist?
  597.             @target_battlers.push(enemy)
  598.           end
  599.         end
  600.       when 5  # 我方单体 (HP 0)
  601.         index = @active_battler.current_action.target_index
  602.         enemy = $game_troop.enemies[index]
  603.         if enemy != nil and enemy.hp0?
  604.           @target_battlers.push(enemy)
  605.         end
  606.       when 6  # 我方全体 (HP 0)
  607.         for enemy in $game_troop.enemies
  608.           if enemy != nil and enemy.hp0?
  609.             @target_battlers.push(enemy)
  610.           end
  611.         end
  612.       when 7  # 使用者
  613.         @target_battlers.push(@active_battler)
  614.       end
  615.     end
  616.     # 行动方的战斗者是角色的情况下
  617.     if @active_battler.is_a?(Game_Actor)
  618.      if @active_battler.current_action.kind == 1  
  619.       xushi = 0
  620.       skill_leixing = 0
  621.       
  622.       if @skill.atk_f == 1 or @skill.atk_f == 2 or @skill.atk_f == 3
  623.         skill_leixing = 1
  624.       end
  625.       #虚实
  626.       if @active_battler.element_rate(97) < 100 and skill_leixing == 1
  627.         xushi += 2
  628.       end
  629.       
  630.       if @active_battler.element_rate(98) < 100 and skill_leixing == 1
  631.         xushi += 3
  632.       end
  633.       
  634.       if @active_battler.element_rate(99) < 100 and skill_leixing == 1
  635.         xushi += 5
  636.       end
  637.       
  638.       if @active_battler.element_rate(100) < 100 and skill_leixing == 1
  639.         xushi += 10
  640.       end
  641.       
  642.       if @active_battler.element_rate(17) < 100 and skill_leixing == 1
  643.         xushi += 100
  644.       end
  645.             
  646.       if @active_battler.element_rate(222) < 100 and skill_leixing == 1
  647.         xushi += 100
  648.       end
  649.       
  650.       if @active_battler.element_rate(232) < 100 and skill_leixing == 1
  651.         xushi += 100
  652.       end
  653.       
  654.      if @active_battler.element_rate(262) < 100 and skill_leixing == 1
  655.         xushi += 80
  656.       end
  657.       if xushi > 0
  658.         xushi += 10  
  659.       end
  660.       
  661.       if rand(100) < xushi
  662.         scope = 2
  663.       end
  664.       
  665.       # 天雷
  666.       #黃帝內經
  667.       if @active_battler.element_rate(30) == 50 and @skill.atk_f == 4 and rand(100) <= 50
  668.         scope = 4
  669.       end
  670.       #治疗
  671.       if @active_battler.element_rate(154) == 50 and @skill.atk_f == 4 and rand(100) <= 50
  672.         scope = 4
  673.       end
  674.      end

  675.       # 效果范围分支
  676.       case scope
  677.       when 1  # 敌单体
  678.         index = @active_battler.current_action.target_index
  679.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  680.       when 2  # 敌全体
  681.         for enemy in $game_troop.enemies
  682.           if enemy.exist?
  683.             @target_battlers.push(enemy)
  684.           end
  685.         end
  686.       when 3  # 我方单体
  687.         index = @active_battler.current_action.target_index
  688.         @target_battlers.push($game_party.smooth_target_actor(index))
  689.       when 4  # 我方全体
  690.         for actor in $game_party.actors
  691.           if actor.exist?
  692.             @target_battlers.push(actor)
  693.           end
  694.         end
  695.       when 5  # 我方单体 (HP 0)
  696.         index = @active_battler.current_action.target_index
  697.         actor = $game_party.actors[index]
  698.         if actor != nil and actor.hp0?
  699.           @target_battlers.push(actor)
  700.         end
  701.       when 6  # 我方全体 (HP 0)
  702.         for actor in $game_party.actors
  703.           if actor != nil and actor.hp0?
  704.             @target_battlers.push(actor)
  705.           end
  706.         end
  707.       when 7  # 使用者
  708.         @target_battlers.push(@active_battler)
  709.       end
  710.     end
  711.   end
  712.   #--------------------------------------------------------------------------
  713.   # ● 生成特技行动结果
  714.   #--------------------------------------------------------------------------
  715.   def make_skill_action_result
  716.     # 获取特技
  717.     @skill = $data_skills[@active_battler.current_action.skill_id]
  718.     # 如果不是强制行动
  719.     unless @active_battler.current_action.forcing
  720.       # 因为 SP 耗尽而无法使用的情况下
  721.       #unless @active_battler.skill_can_use?(@skill.id)
  722.         # 清除强制行动对像的战斗者
  723.         #$game_temp.forcing_battler = nil
  724.         # 移至步骤 1
  725.         #@phase4_step = 1
  726.         #return
  727.       #end
  728.     end
  729.     # 消耗 SP
  730.     #if @skill.atk_f == 6
  731.     #   @active_battler.sp = 0
  732.     #end
  733.     #if @skill.atk_f == 7
  734.     #   @active_battler.sp -= @skill.sp_cost
  735.     #end   
  736.    
  737.     # 设置动画 ID
  738.     @animation1_id = @skill.animation1_id
  739.     @animation2_id = @skill.animation2_id
  740.     # 设置公共事件 ID
  741.     @common_event_id = @skill.common_event_id
  742.     # 设置对像侧战斗者
  743.     set_target_battlers(@skill.scope)
  744.     # 应用特技效果
  745.     for target in @target_battlers
  746.       target.skill_effect(@active_battler, @skill)
  747.     end
  748.     # 刷新状态窗口
  749.     #@status_window.refresh  
  750.     # 在帮助窗口显示特技名
  751.     if $game_switches[35] == false
  752.      $game_switches[42] = true
  753.      jicewenzi = "使用"
  754.      shenmou = ""
  755.      if $game_switches[76] == true
  756.        shenmou = "  會心一擊"
  757.      end  
  758.      $game_switches[76] = false
  759.      if @skill.atk_f == 0
  760.        jicewenzi = "佈置"
  761.      end  
  762.      @help_window.set_text2(@active_battler.name + jicewenzi + @skill.name + shenmou,"","", 1)   
  763.    end
  764.    
  765.   end
  766.   #--------------------------------------------------------------------------
  767.   # ● 生成物品行动结果
  768.   #--------------------------------------------------------------------------
  769.   def make_item_action_result
  770.     # 获取物品
  771.     @item = $data_items[@active_battler.current_action.item_id]
  772.     # 因为物品耗尽而无法使用的情况下
  773.     unless $game_party.item_can_use?(@item.id)
  774.       # 移至步骤 1
  775.       @phase4_step = 1
  776.       return
  777.     end
  778.     # 消耗品的情况下
  779.     if @item.consumable
  780.       # 使用的物品减 1
  781.       if @active_battler.element_rate(113) < 100
  782.         
  783.         else
  784.          $game_party.lose_item(@item.id, 1)
  785.       end
  786.     end
  787.     # 在帮助窗口显示物品名
  788.     if $game_switches[35] == false
  789.      $game_switches[42] = true
  790.      @help_window.set_text2(@active_battler.name + "使用" + @item.name,"","", 1)
  791.     end
  792.     # 设置动画 ID
  793.     @animation1_id = @item.animation1_id
  794.     @animation2_id = @item.animation2_id
  795.     # 设置公共事件 ID
  796.     @common_event_id = @item.common_event_id
  797.     # 确定对像
  798.     index = @active_battler.current_action.target_index
  799.     target = $game_party.smooth_target_actor(index)
  800.     # 设置对像侧战斗者
  801.     set_target_battlers(@item.scope)
  802.     # 应用物品效果
  803.     for target in @target_battlers
  804.       target.item_effect(@item)
  805.     end
  806.   end
  807.   #--------------------------------------------------------------------------
  808.   # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  809.   #--------------------------------------------------------------------------
  810.   def update_phase4_step3
  811.     if $game_switches[35] == false
  812.     # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  813.      if @animation1_id == 0
  814.       @active_battler.white_flash = true
  815.      else
  816.       @active_battler.animation_id = @animation1_id
  817.       @active_battler.animation_hit = true
  818.       
  819.       if $game_variables[23] != 0
  820.          @active_battler.animation_id = $game_variables[23]
  821.       end        
  822.      end
  823.    
  824.     end
  825.     # 设置头像
  826.     if @active_battler.is_a?(Game_Actor)
  827.       @head_window_left.set_actor_head(@active_battler)
  828.     elsif @active_battler.is_a?(Game_Enemy)
  829.       @head_window_right.set_enemy_head(@active_battler)
  830.     end
  831.     # 移至步骤 4
  832.     @phase4_step = 4
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  836.   #--------------------------------------------------------------------------
  837.   def update_phase4_step4
  838.     # 对像方动画
  839.     for target in @target_battlers
  840.       target.animation_id = @animation2_id
  841.       
  842.       if $game_variables[40] >= 1
  843.          $game_variables[39] = 203
  844.       end
  845.       
  846.       if $game_variables[39] != 0
  847.         target.animation_id = $game_variables[39]
  848.       end      

  849.       
  850.       
  851.       target.animation_hit = (target.damage != "Miss")

  852.     end  
  853.     # 设置头像
  854.     if target.is_a?(Game_Actor)
  855.       @head_window_left.set_actor_head(target)
  856.     elsif target.is_a?(Game_Enemy)
  857.       @head_window_right.set_enemy_head(target)
  858.     end   

  859.     # 移至步骤 5
  860.     @phase4_step = 5
  861.   end
  862.   #--------------------------------------------------------------------------
  863.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  864.   #--------------------------------------------------------------------------
  865.   def update_phase4_step5
  866.     # 隐藏帮助窗口
  867.     @help_window.visible = false
  868.     #觉醒动画
  869.       if $game_variables[2] == 2
  870.          @active_battler.animation_id = 282
  871.          @active_battler.animation_hit = true
  872.          @active_battler.add_state(14)
  873.       end
  874.       
  875.       if $game_variables[3] == 2
  876.          for target in @target_battlers
  877.           target.animation_id = 282
  878.           target.animation_hit = true
  879.           target.add_state(14)
  880.          end
  881.       end
  882.     # 刷新状态窗口
  883.     @status_window.refresh
  884.     # 显示伤害   
  885.      for target in @target_battlers
  886.       if target.damage != nil
  887.         target.damage_pop = true        
  888.       end
  889.      end
  890.       if $game_variables[6] == 265
  891.        for target in @target_battlers
  892.           target.animation_id = 265
  893.           target.animation_hit = true
  894.           @wait_count = 8
  895.           target.hp = 9999
  896.        end
  897.     end
  898.      #文字顯示
  899.     if target != nil
  900.      if $game_switches[35] == false and target.hp == 0
  901.      @help_window.set_text2("","",@active_battler.name + "擊敗了" + target.name,1)
  902.      # 限制动画长度、最低 8 帧
  903.      @wait_count = 20
  904.      end   
  905.     end
  906.    
  907.     # 移至步骤 6
  908.     @phase4_step = 6
  909.   end
  910.   #--------------------------------------------------------------------------
  911.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  912.   #--------------------------------------------------------------------------
  913.   def update_phase4_step6
  914.     # 清除强制行动对像的战斗者
  915.    
  916.    
  917.       
  918.       $game_variables[2] = 0
  919.       $game_variables[3] = 0
  920.       $game_variables[6] = 0
  921.       $game_variables[23] = 0
  922.       $game_variables[39] = 0
  923.       $game_variables[40] = 0  
  924.       $game_switches[44] = false

  925.       
  926.     $game_temp.forcing_battler = nil
  927.     # 公共事件 ID 有效的情况下
  928.     if @common_event_id > 0
  929.       # 设置事件
  930.       common_event = $data_common_events[@common_event_id]
  931.       $game_system.battle_interpreter.setup(common_event.list, 0)
  932.     end
  933.     # 刷新状态窗口
  934.     @status_window.refresh   
  935.     #連擊判斷
  936.     #if $game_switches[30] == true and $game_switches[32] == true
  937.     if $game_variables[22] > 0
  938.       $game_variables[22] -= 1
  939.       @phase4_step = 2      
  940.       if judge
  941.       # 胜利或者失败的情况下 : 过程结束      
  942.         return
  943.       end
  944.     else
  945.           ###为二次攻击者重新设置动作
  946.     if @active_battler.is_a?(Game_Enemy)
  947.       @active_battler.make_action
  948.     end
  949.     # 移至步骤 1         
  950.       @phase4_step = 1
  951.       $game_switches[30] = true      
  952.     end  
  953.     # 自然解除状态
  954.     if  not @active_battler.state?(2) and not @active_battler.state?(4) and
  955.         not @active_battler.state?(19) and not @active_battler.state?(20) and
  956.         not @active_battler.state?(21) and not @active_battler.state?(22)
  957.          @active_battler.remove_states_auto
  958.     end     
  959.       if $game_switches[35] == false and $game_switches[47] == true
  960.         $game_switches[42] = true        
  961.         case $game_variables[60]
  962.         when 5,6,7,8,9,10,11,12,13
  963.           @help_window.set_text2(@active_battler.name + "能力恢复正常","","",1)  
  964.           @wait_count = 30
  965.         end        
  966.         if $game_variables[60] == 3
  967.           @help_window.set_text2(@active_battler.name + "擺脫了離間計","","",1)  
  968.           @wait_count = 30
  969.         end
  970.         $game_switches[47] = false
  971.         $game_variables[60] = 0
  972.       end
  973.    
  974.   end
  975. end
复制代码




作者: huangke    时间: 2017-12-5 17:31
求修改





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1