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

Project1

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

[已经解决] 又是关于状态的问题。。。

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1288
在线时间
354 小时
注册时间
2009-9-14
帖子
328
跳转到指定楼层
1
发表于 2018-4-25 14:46:14 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 CR~ 于 2018-4-25 14:47 编辑

这几天天天被状态困扰,,,好不容易快弄完了,,今天测试的时候,又发现了一个问题。。。

因为我用了CP战斗,就有出现了一个毛病,就是角色如果有个状态,在积攒CP条的时候,这个状态还存在,然后CP条积满,轮到角色行动时,技能释放前,自然解除状态,状态刷新。。。
就导致了虽然积攒CP条时状态还在,但是技能没有状态的加成。。。
就如图这样。。。技能并没有状态的加成。。。


然后我就把自然解除状态,状态刷新这两句放在了最后的步骤6。。。
然后发现,,,如果角色被上了个睡眠之类的BUFF
因为不能主动行动,,,然后永远都不能刷新自己的状态了。。

Scene_Battle 4
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始主回合
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :active_battler
  12.   attr_reader   :target_battlers
  13.   attr_reader   :help_window
  14.   def start_phase4
  15.     # 转移到回合 4
  16.     @phase = 4
  17.     # 回合数计数
  18.     $game_temp.battle_turn += 1
  19.     # 搜索全页的战斗事件
  20.     for index in 0...$data_troops[@troop_id].pages.size
  21.       # 获取事件页
  22.       page = $data_troops[@troop_id].pages[index]
  23.       # 本页的范围是 [回合] 的情况下
  24.       if page.span == 1
  25.         # 设置已经执行标志
  26.         $game_temp.battle_event_flags[index] = false
  27.       end
  28.     end
  29.     # 设置角色为非选择状态
  30.     @actor_index = -1
  31.     @active_battler = nil
  32.     # 有效化同伴指令窗口
  33.     @party_command_window.active = false
  34.     @party_command_window.visible = false
  35.     # 无效化角色指令窗口
  36.     @actor_command_window.active = false
  37.     @actor_command_window.visible = false
  38.     # 设置主回合标志
  39.     $game_temp.battle_main_phase = true
  40.     # 生成敌人行动
  41.     for enemy in $game_troop.enemies
  42.       enemy.make_action
  43.     end
  44.     # 生成行动顺序
  45.     make_action_orders
  46.     # 移动到步骤 1
  47.     @phase4_step = 1
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 生成行动循序
  51.   #--------------------------------------------------------------------------
  52.   def make_action_orders
  53.     # 初始化序列 @action_battlers
  54.     @action_battlers = []
  55.     # 添加敌人到 @action_battlers 序列
  56.     for enemy in $game_troop.enemies
  57.       @action_battlers.push(enemy)
  58.     end
  59.     # 添加角色到 @action_battlers 序列
  60.     for actor in $game_party.actors
  61.       @action_battlers.push(actor)
  62.     end
  63.     # 确定全体的行动速度
  64.     for battler in @action_battlers
  65.       battler.make_action_speed
  66.     end
  67.     # 按照行动速度从大到小排列
  68.     @action_battlers.sort! {|a,b|
  69.       b.current_action.speed - a.current_action.speed }
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 刷新画面 (主回合)
  73.   #--------------------------------------------------------------------------
  74.   def update_phase4
  75.     case @phase4_step
  76.     when 1
  77.       update_phase4_step1
  78.     when 2
  79.       update_phase4_step2
  80.     when 3
  81.       update_phase4_step3
  82.     when 4
  83.       update_phase4_step4
  84.     when 5
  85.       update_phase4_step5
  86.     when 6
  87.       update_phase4_step6
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  92.   #--------------------------------------------------------------------------
  93.   def update_phase4_step1
  94.     # 隐藏帮助窗口
  95.     @help_window.visible = false
  96.     # 判定胜败
  97.     if judge
  98.       # 胜利或者失败的情况下 : 过程结束
  99.       return
  100.     end
  101.     # 强制行动的战斗者不存在的情况下
  102.     if $game_temp.forcing_battler == nil
  103.       # 设置战斗事件
  104.       setup_battle_event
  105.       # 执行战斗事件中的情况下
  106.       if $game_system.battle_interpreter.running?
  107.         return
  108.       end
  109.     end
  110.     # 强制行动的战斗者存在的情况下
  111.     if $game_temp.forcing_battler != nil
  112.       # 在头部添加后移动
  113.       @action_battlers.delete($game_temp.forcing_battler)
  114.       @action_battlers.unshift($game_temp.forcing_battler)
  115.     end
  116.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  117.     if @action_battlers.size == 0
  118.       # 开始同伴命令回合
  119.       start_phase2
  120.       return
  121.     end
  122.     # 初始化动画 ID 和公共事件 ID
  123.     @animation1_id = 0
  124.     @animation2_id = 0
  125.     @common_event_id = 0
  126.     # 未行动的战斗者移动到序列的头部
  127.     @active_battler = @action_battlers.shift
  128.     # 如果已经在战斗之外的情况下
  129.     if @active_battler.index == nil
  130.       return
  131.     end
  132.     # 连续伤害
  133.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  134.       @active_battler.slip_damage_effect
  135.       @active_battler.damage_pop = true
  136.     end
  137.         # 自然解除状态
  138.     @active_battler.remove_states_auto
  139.     # 刷新状态窗口
  140.     @status_window.refresh
  141.     # 移至步骤 2
  142.     @phase4_step = 2
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  146.   #--------------------------------------------------------------------------
  147.   def update_phase4_step2
  148.     # 如果不是强制行动
  149.     unless @active_battler.current_action.forcing
  150.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  151.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  152.         # 设置行动为攻击
  153.         @active_battler.current_action.kind = 0
  154.         @active_battler.current_action.basic = 0
  155.       end
  156.       # 限制为 [不能行动] 的情况下
  157.       if @active_battler.restriction == 4
  158.         # 清除行动强制对像的战斗者
  159.         $game_temp.forcing_battler = nil
  160.         # 移至步骤 1
  161.         @phase4_step = 1
  162.         return
  163.       end
  164.     end
  165.     # 清除对像战斗者
  166.     @target_battlers = []
  167.     # 行动种类分支
  168.     case @active_battler.current_action.kind
  169.     when 0  # 基本
  170.       make_basic_action_result
  171.     when 1  # 特技
  172.       make_skill_action_result
  173.     when 2  # 物品
  174.       make_item_action_result
  175.     end
  176.     # 移至步骤 3
  177.     if @phase4_step == 2
  178.       @phase4_step = 3
  179.     end
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 生成基本行动结果
  183.   #--------------------------------------------------------------------------
  184.   def make_basic_action_result
  185.     # 攻击的情况下
  186.     if @active_battler.current_action.basic == 0
  187.       # 设置攻击 ID
  188.       @animation1_id = @active_battler.animation1_id
  189.       @animation2_id = @active_battler.animation2_id
  190.       # 行动方的战斗者是敌人的情况下
  191.       if @active_battler.is_a?(Game_Enemy)
  192.         if @active_battler.restriction == 3
  193.           target = $game_troop.random_target_enemy
  194.         elsif @active_battler.restriction == 2
  195.           target = $game_party.random_target_actor
  196.         else
  197.           index = @active_battler.current_action.target_index
  198.           target = $game_party.smooth_target_actor(index)
  199.         end
  200.       end
  201.       # 行动方的战斗者是角色的情况下
  202.       if @active_battler.is_a?(Game_Actor)
  203.         if @active_battler.restriction == 3
  204.           target = $game_party.random_target_actor
  205.         elsif @active_battler.restriction == 2
  206.           target = $game_troop.random_target_enemy
  207.         else
  208.           index = @active_battler.current_action.target_index
  209.           target = $game_troop.smooth_target_enemy(index)
  210.         end
  211.       end
  212.       # 设置对像方的战斗者序列
  213.       @target_battlers = [target]
  214.       # 应用通常攻击效果
  215.       for target in @target_battlers
  216.         target.attack_effect(@active_battler)
  217.       end
  218.       return
  219.     end
  220.     # 防御的情况下
  221.     if @active_battler.current_action.basic == 1
  222.       # 帮助窗口显示"防御"
  223.       @help_window.set_text($data_system.words.guard, 1)
  224.       return
  225.     end
  226.     # 逃跑的情况下
  227.     if @active_battler.is_a?(Game_Enemy) and
  228.        @active_battler.current_action.basic == 2
  229.       #  帮助窗口显示"逃跑"
  230.       @help_window.set_text("逃跑", 1)
  231.       # 逃跑
  232.       @active_battler.escape
  233.       return
  234.     end
  235.     # 什么也不做的情况下
  236.     if @active_battler.current_action.basic == 3
  237.       # 清除强制行动对像的战斗者
  238.       $game_temp.forcing_battler = nil
  239.       # 移至步骤 1
  240.       @phase4_step = 1
  241.       return
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 设置物品或特技对像方的战斗者
  246.   #     scope : 特技或者是物品的范围
  247.   #--------------------------------------------------------------------------
  248.   def set_target_battlers(scope)
  249.     # 行动方的战斗者是敌人的情况下
  250.     if @active_battler.is_a?(Game_Enemy)
  251.       # 效果范围分支
  252.       case scope
  253.       when 1  # 敌单体
  254.         index = @active_battler.current_action.target_index
  255.         @target_battlers.push($game_party.smooth_target_actor(index))
  256.       when 2  # 敌全体
  257.         for actor in $game_party.actors
  258.           if actor.exist?
  259.             @target_battlers.push(actor)
  260.           end
  261.         end
  262.       when 3  # 我方单体
  263.         index = @active_battler.current_action.target_index
  264.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  265.       when 4  # 我方全体
  266.         for enemy in $game_troop.enemies
  267.           if enemy.exist?
  268.             @target_battlers.push(enemy)
  269.           end
  270.         end
  271.       when 5  # 我方单体 (HP 0)
  272.         index = @active_battler.current_action.target_index
  273.         enemy = $game_troop.enemies[index]
  274.         if enemy != nil and enemy.hp0?
  275.           @target_battlers.push(enemy)
  276.         end
  277.       when 6  # 我方全体 (HP 0)
  278.         for enemy in $game_troop.enemies
  279.           if enemy != nil and enemy.hp0?
  280.             @target_battlers.push(enemy)
  281.           end
  282.         end
  283.       when 7  # 使用者
  284.         @target_battlers.push(@active_battler)
  285.       end
  286.     end
  287.     # 行动方的战斗者是角色的情况下
  288.     if @active_battler.is_a?(Game_Actor)
  289.       # 效果范围分支
  290.       case scope
  291.       when 1  # 敌单体
  292.         index = @active_battler.current_action.target_index
  293.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  294.       when 2  # 敌全体
  295.         for enemy in $game_troop.enemies
  296.           if enemy.exist?
  297.             @target_battlers.push(enemy)
  298.           end
  299.         end
  300.       when 3  # 我方单体
  301.         index = @active_battler.current_action.target_index
  302.         @target_battlers.push($game_party.smooth_target_actor(index))
  303.       when 4  # 我方全体
  304.         for actor in $game_party.actors
  305.           if actor.exist?
  306.             @target_battlers.push(actor)
  307.           end
  308.         end
  309.       when 5  # 我方单体 (HP 0)
  310.         index = @active_battler.current_action.target_index
  311.         actor = $game_party.actors[index]
  312.         if actor != nil and actor.hp0?
  313.           @target_battlers.push(actor)
  314.         end
  315.       when 6  # 我方全体 (HP 0)
  316.         for actor in $game_party.actors
  317.           if actor != nil and actor.hp0?
  318.             @target_battlers.push(actor)
  319.           end
  320.         end
  321.       when 7  # 使用者
  322.         @target_battlers.push(@active_battler)
  323.       end
  324.     end
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 生成特技行动结果
  328.   #--------------------------------------------------------------------------
  329.   def make_skill_action_result
  330.     # 获取特技
  331.     @skill = $data_skills[@active_battler.current_action.skill_id]
  332.     # 如果不是强制行动
  333.     unless @active_battler.current_action.forcing
  334.       # 因为 SP 耗尽而无法使用的情况下
  335.       unless @active_battler.skill_can_use?(@skill.id)
  336.         # 清除强制行动对像的战斗者
  337.         $game_temp.forcing_battler = nil
  338.         # 移至步骤 1
  339.         @phase4_step = 1
  340.         return
  341.       end
  342.     end
  343.     # 消耗 SP
  344.     @active_battler.sp -= @skill.sp_cost
  345.     # 刷新状态窗口
  346.     @status_window.refresh
  347.     # 在帮助窗口显示特技名
  348.     @help_window.set_text(@skill.name, 1)
  349.         #####################################################################
  350.     if @skill.id == 118
  351.       common_event = $data_common_events[71]
  352.       $game_system.battle_interpreter.setup(common_event.list, 0)
  353.     end
  354.     if @skill.id == 127
  355.       common_event = $data_common_events[72]
  356.       $game_system.battle_interpreter.setup(common_event.list, 0)
  357.     end
  358.     if @skill.id == 129
  359.       common_event = $data_common_events[74]
  360.       $game_system.battle_interpreter.setup(common_event.list, 0)
  361.     end
  362.     if @skill.id == 130
  363.       common_event = $data_common_events[73]
  364.       $game_system.battle_interpreter.setup(common_event.list, 0)
  365.     end
  366.     if @skill.id == 131
  367.       common_event = $data_common_events[75]
  368.       $game_system.battle_interpreter.setup(common_event.list, 0)
  369.     end
  370.     if @skill.id == 132
  371.       common_event = $data_common_events[76]
  372.       $game_system.battle_interpreter.setup(common_event.list, 0)
  373.     end
  374.     if @skill.id == 135
  375.       common_event = $data_common_events[77]
  376.       $game_system.battle_interpreter.setup(common_event.list, 0)
  377.     end
  378.     if @skill.id == 152
  379.       common_event = $data_common_events[78]
  380.       $game_system.battle_interpreter.setup(common_event.list, 0)
  381.     end
  382.     if @skill.id == 154
  383.       common_event = $data_common_events[79]
  384.       $game_system.battle_interpreter.setup(common_event.list, 0)
  385.     end
  386.     if @skill.id == 401
  387.       common_event = $data_common_events[45]
  388.       $game_system.battle_interpreter.setup(common_event.list, 0)
  389.     end
  390.     if @skill.id == 168
  391.       common_event = $data_common_events[80]
  392.       $game_system.battle_interpreter.setup(common_event.list, 0)
  393.     end
  394.     if @skill.id == 169
  395.       common_event = $data_common_events[81]
  396.       $game_system.battle_interpreter.setup(common_event.list, 0)
  397.     end
  398.     if @skill.id == 171
  399.       common_event = $data_common_events[82]
  400.       $game_system.battle_interpreter.setup(common_event.list, 0)
  401.     end
  402.     if @skill.id == 172
  403.       common_event = $data_common_events[83]
  404.       $game_system.battle_interpreter.setup(common_event.list, 0)
  405.     end
  406.     if @skill.id == 176
  407.       common_event = $data_common_events[84]
  408.       $game_system.battle_interpreter.setup(common_event.list, 0)
  409.     end
  410.         if @skill.id == 189
  411.       common_event = $data_common_events[85]
  412.       $game_system.battle_interpreter.setup(common_event.list, 0)
  413.     end
  414.         if @skill.id == 190
  415.       common_event = $data_common_events[86]
  416.       $game_system.battle_interpreter.setup(common_event.list, 0)
  417.     end
  418.             if @skill.id == 192
  419.       common_event = $data_common_events[87]
  420.       $game_system.battle_interpreter.setup(common_event.list, 0)
  421.     end
  422.                 if @skill.id == 194
  423.       common_event = $data_common_events[88]
  424.       $game_system.battle_interpreter.setup(common_event.list, 0)
  425.     end
  426.     if @skill.id == 330
  427.       common_event = $data_common_events[89]
  428.       $game_system.battle_interpreter.setup(common_event.list, 0)
  429.     end
  430.         if @skill.id == 332
  431.       common_event = $data_common_events[90]
  432.       $game_system.battle_interpreter.setup(common_event.list, 0)
  433.     end
  434.             if @skill.id == 333
  435.       common_event = $data_common_events[91]
  436.       $game_system.battle_interpreter.setup(common_event.list, 0)
  437.     end
  438.                 if @skill.id == 334
  439.       common_event = $data_common_events[89]
  440.       $game_system.battle_interpreter.setup(common_event.list, 0)
  441.     end
  442.                     if @skill.id == 210
  443.       common_event = $data_common_events[92]
  444.       $game_system.battle_interpreter.setup(common_event.list, 0)
  445.     end
  446.                         if @skill.id == 211
  447.       common_event = $data_common_events[92]
  448.       $game_system.battle_interpreter.setup(common_event.list, 0)
  449.     end
  450.                             if @skill.id == 212
  451.       common_event = $data_common_events[92]
  452.       $game_system.battle_interpreter.setup(common_event.list, 0)
  453.     end
  454.                                 if @skill.id == 851
  455.       common_event = $data_common_events[93]
  456.       $game_system.battle_interpreter.setup(common_event.list, 0)
  457.     end
  458.                                     if @skill.id == 852
  459.       common_event = $data_common_events[93]
  460.       $game_system.battle_interpreter.setup(common_event.list, 0)
  461.     end
  462.                                     if @skill.id == 853
  463.       common_event = $data_common_events[93]
  464.       $game_system.battle_interpreter.setup(common_event.list, 0)
  465.     end
  466.                                     if @skill.id == 854
  467.       common_event = $data_common_events[93]
  468.       $game_system.battle_interpreter.setup(common_event.list, 0)
  469.     end
  470.                                     if @skill.id == 855
  471.       common_event = $data_common_events[93]
  472.       $game_system.battle_interpreter.setup(common_event.list, 0)
  473.     end
  474.                                         if @skill.id == 850
  475.       common_event = $data_common_events[93]
  476.       $game_system.battle_interpreter.setup(common_event.list, 0)
  477.     end
  478.                                             if @skill.id == 871
  479.       common_event = $data_common_events[93]
  480.       $game_system.battle_interpreter.setup(common_event.list, 0)
  481.     end
  482.                                             if @skill.id == 872
  483.       common_event = $data_common_events[93]
  484.       $game_system.battle_interpreter.setup(common_event.list, 0)
  485.     end
  486.                                             if @skill.id == 873
  487.       common_event = $data_common_events[93]
  488.       $game_system.battle_interpreter.setup(common_event.list, 0)
  489.     end
  490.                                             if @skill.id == 874
  491.       common_event = $data_common_events[93]
  492.       $game_system.battle_interpreter.setup(common_event.list, 0)
  493.     end
  494.                                             if @skill.id == 875
  495.       common_event = $data_common_events[93]
  496.       $game_system.battle_interpreter.setup(common_event.list, 0)
  497.     end
  498.                                                 if @skill.id == 876
  499.       common_event = $data_common_events[93]
  500.       $game_system.battle_interpreter.setup(common_event.list, 0)
  501.     end
  502.                                                 if @skill.id == 877
  503.       common_event = $data_common_events[93]
  504.       $game_system.battle_interpreter.setup(common_event.list, 0)
  505.     end
  506.                                                 if @skill.id == 878
  507.       common_event = $data_common_events[93]
  508.       $game_system.battle_interpreter.setup(common_event.list, 0)
  509.     end
  510.                                                 if @skill.id == 879
  511.       common_event = $data_common_events[93]
  512.       $game_system.battle_interpreter.setup(common_event.list, 0)
  513.     end
  514.                                                 if @skill.id == 880
  515.       common_event = $data_common_events[93]
  516.       $game_system.battle_interpreter.setup(common_event.list, 0)
  517.       end
  518.                                                       if @skill.id == 508
  519.       common_event = $data_common_events[94]
  520.       $game_system.battle_interpreter.setup(common_event.list, 0)
  521.     end
  522.                                                           if @skill.id == 510
  523.       common_event = $data_common_events[94]
  524.       $game_system.battle_interpreter.setup(common_event.list, 0)
  525.     end
  526.                                                           if @skill.id == 509
  527.       common_event = $data_common_events[95]
  528.       $game_system.battle_interpreter.setup(common_event.list, 0)
  529.     end
  530.                                                               if @skill.id == 360
  531.       common_event = $data_common_events[96]
  532.       $game_system.battle_interpreter.setup(common_event.list, 0)
  533.     end
  534.                 if @skill.id == 361
  535.       common_event = $data_common_events[96]
  536.       $game_system.battle_interpreter.setup(common_event.list, 0)
  537.     end
  538.                     if @skill.id == 362
  539.       common_event = $data_common_events[97]
  540.       $game_system.battle_interpreter.setup(common_event.list, 0)
  541.     end
  542.                         if @skill.id == 382
  543.       common_event = $data_common_events[98]
  544.       $game_system.battle_interpreter.setup(common_event.list, 0)
  545.     end
  546.                             if @skill.id == 384
  547.       common_event = $data_common_events[98]
  548.       $game_system.battle_interpreter.setup(common_event.list, 0)
  549.     end
  550.                             if @skill.id == 385
  551.       common_event = $data_common_events[98]
  552.       $game_system.battle_interpreter.setup(common_event.list, 0)
  553.     end
  554.                             if @skill.id == 386
  555.       common_event = $data_common_events[98]
  556.       $game_system.battle_interpreter.setup(common_event.list, 0)
  557.     end
  558.                             if @skill.id == 388
  559.       common_event = $data_common_events[99]
  560.       $game_system.battle_interpreter.setup(common_event.list, 0)
  561.     end
  562.                                 if @skill.id == 1515
  563.       common_event = $data_common_events[100]
  564.       $game_system.battle_interpreter.setup(common_event.list, 0)
  565.     end
  566.                                     if @skill.id == 1516
  567.       common_event = $data_common_events[101]
  568.       $game_system.battle_interpreter.setup(common_event.list, 0)
  569.     end
  570.                                         if @skill.id == 1521
  571.       common_event = $data_common_events[102]
  572.       $game_system.battle_interpreter.setup(common_event.list, 0)
  573.     end
  574.                                           if @skill.id == 1522
  575.       common_event = $data_common_events[102]
  576.       $game_system.battle_interpreter.setup(common_event.list, 0)
  577.     end
  578.                                           if @skill.id == 1526
  579.       common_event = $data_common_events[102]
  580.       $game_system.battle_interpreter.setup(common_event.list, 0)
  581.     end
  582.                                           if @skill.id == 1530
  583.       common_event = $data_common_events[102]
  584.       $game_system.battle_interpreter.setup(common_event.list, 0)
  585.     end
  586.                                               if @skill.id == 1547
  587.       common_event = $data_common_events[103]
  588.       $game_system.battle_interpreter.setup(common_event.list, 0)
  589.     end
  590.                                                   if @skill.id == 1549
  591.       common_event = $data_common_events[104]
  592.       $game_system.battle_interpreter.setup(common_event.list, 0)
  593.     end
  594.                                                       if @skill.id == 1550
  595.       common_event = $data_common_events[106]
  596.       $game_system.battle_interpreter.setup(common_event.list, 0)
  597.     end
  598.                                                           if @skill.id == 1553
  599.       common_event = $data_common_events[105]
  600.       $game_system.battle_interpreter.setup(common_event.list, 0)
  601.     end
  602.                                    if @skill.id == 1554
  603.       common_event = $data_common_events[105]
  604.       $game_system.battle_interpreter.setup(common_event.list, 0)
  605.     end
  606.     ########
  607.     ##############################################################
  608.     # 设置动画 ID
  609.     @animation1_id = @skill.animation1_id
  610.     @animation2_id = @skill.animation2_id
  611.     # 设置公共事件 ID
  612.     @common_event_id = @skill.common_event_id
  613.     # 设置对像侧战斗者
  614.     set_target_battlers(@skill.scope)
  615.     # 应用特技效果
  616.     for target in @target_battlers
  617.       target.skill_effect(@active_battler, @skill)
  618.     end
  619.   end
  620.   #--------------------------------------------------------------------------
  621.   # ● 生成物品行动结果
  622.   #--------------------------------------------------------------------------
  623.   def make_item_action_result
  624.     # 获取物品
  625.     @item = $data_items[@active_battler.current_action.item_id]
  626.     # 因为物品耗尽而无法使用的情况下
  627.     unless $game_party.item_can_use?(@item.id)
  628.       # 移至步骤 1
  629.       @phase4_step = 1
  630.       return
  631.     end
  632.     # 消耗品的情况下
  633.     if @item.consumable
  634.       # 使用的物品减 1
  635.       $game_party.lose_item(@item.id, 1)
  636.     end
  637.     # 在帮助窗口显示物品名
  638.     @help_window.set_text(@item.name, 1)
  639.     # 设置动画 ID
  640.     @animation1_id = @item.animation1_id
  641.     @animation2_id = @item.animation2_id
  642.     # 设置公共事件 ID
  643.     @common_event_id = @item.common_event_id
  644.     # 确定对像
  645.     index = @active_battler.current_action.target_index
  646.     target = $game_party.smooth_target_actor(index)
  647.     # 设置对像侧战斗者
  648.     set_target_battlers(@item.scope)
  649.     # 应用物品效果
  650.     for target in @target_battlers
  651.       target.item_effect(@item)
  652.     end
  653.   end
  654. #--------------------------------------------------------------------------
  655.    # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  656.    #--------------------------------------------------------------------------
  657.    def update_phase4_step3
  658.      # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  659.      if @animation1_id == 0
  660.        @active_battler.white_flash = true
  661.      else
  662.        @active_battler.animation_id = @animation1_id
  663.        @active_battler.animation_hit = true
  664.      end
  665.      # 对像方动画
  666.      for target in @target_battlers
  667.        target.animation_id = @animation2_id
  668.        target.animation_hit = (target.damage != "Miss")
  669.      end
  670.      # 移至步骤 4
  671.      @phase4_step = 4
  672.    end
  673.    #--------------------------------------------------------------------------
  674.    # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  675.    #--------------------------------------------------------------------------
  676.    def update_phase4_step4
  677.      # 限制动画长度、最低 8 帧
  678.      @wait_count = 8
  679.      # 移至步骤 5
  680.      @phase4_step = 5
  681.    end
  682.  
  683.   #--------------------------------------------------------------------------
  684.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  685.   #--------------------------------------------------------------------------
  686.   def update_phase4_step5
  687.     # 隐藏帮助窗口
  688.     @help_window.visible = false
  689.     # 刷新状态窗口
  690.     @status_window.refresh
  691.     # 显示伤害
  692.     for target in @target_battlers
  693.       if target.damage != nil
  694.         target.damage_pop = true
  695.       end
  696.     end
  697.     # 移至步骤 6
  698.     @phase4_step = 6
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  702.   #--------------------------------------------------------------------------
  703.   def update_phase4_step6
  704.     # 清除强制行动对像的战斗者
  705.     $game_temp.forcing_battler = nil
  706.         # 公共事件 ID 有效的情况下
  707.     if @common_event_id > 0
  708.       # 设置事件
  709.       common_event = $data_common_events[@common_event_id]
  710.       $game_system.battle_interpreter.setup(common_event.list, 0)
  711.     end
  712.     $game_variables[581] = 0
  713.     $game_variables[582] = 0
  714.     $game_variables[583] = $scene.active_battler.atk
  715.     $game_variables[584] = $scene.active_battler.str
  716.     $game_variables[585] = $scene.active_battler.dex
  717.     $game_variables[586] = $scene.active_battler.int
  718.     if $scene.target_battlers[0] == nil
  719.       $game_variables[587] = 0
  720.       $game_variables[588] = 0
  721.     else
  722.       $game_variables[587] = $scene.target_battlers[0].pdef
  723.       $game_variables[588] = $scene.target_battlers[0].mdef
  724.     end
  725.     # 移至步骤 1
  726.     @phase4_step = 1
  727.   end
  728. end



CP战斗1
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始主回合
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :active_battler
  12.   attr_reader   :target_battlers
  13.   attr_reader   :help_window
  14.   def start_phase4
  15.     # 转移到回合 4
  16.     @phase = 4
  17.     # 回合数计数
  18.     $game_temp.battle_turn += 1
  19.     # 搜索全页的战斗事件
  20.     for index in 0...$data_troops[@troop_id].pages.size
  21.       # 获取事件页
  22.       page = $data_troops[@troop_id].pages[index]
  23.       # 本页的范围是 [回合] 的情况下
  24.       if page.span == 1
  25.         # 设置已经执行标志
  26.         $game_temp.battle_event_flags[index] = false
  27.       end
  28.     end
  29.     # 设置角色为非选择状态
  30.     @actor_index = -1
  31.     @active_battler = nil
  32.     # 有效化同伴指令窗口
  33.     @party_command_window.active = false
  34.     @party_command_window.visible = false
  35.     # 无效化角色指令窗口
  36.     @actor_command_window.active = false
  37.     @actor_command_window.visible = false
  38.     # 设置主回合标志
  39.     $game_temp.battle_main_phase = true
  40.     # 生成敌人行动
  41.     for enemy in $game_troop.enemies
  42.       enemy.make_action
  43.     end
  44.     # 生成行动顺序
  45.     make_action_orders
  46.     # 移动到步骤 1
  47.     @phase4_step = 1
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 生成行动循序
  51.   #--------------------------------------------------------------------------
  52.   def make_action_orders
  53.     # 初始化序列 @action_battlers
  54.     @action_battlers = []
  55.     # 添加敌人到 @action_battlers 序列
  56.     for enemy in $game_troop.enemies
  57.       @action_battlers.push(enemy)
  58.     end
  59.     # 添加角色到 @action_battlers 序列
  60.     for actor in $game_party.actors
  61.       @action_battlers.push(actor)
  62.     end
  63.     # 确定全体的行动速度
  64.     for battler in @action_battlers
  65.       battler.make_action_speed
  66.     end
  67.     # 按照行动速度从大到小排列
  68.     @action_battlers.sort! {|a,b|
  69.       b.current_action.speed - a.current_action.speed }
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 刷新画面 (主回合)
  73.   #--------------------------------------------------------------------------
  74.   def update_phase4
  75.     case @phase4_step
  76.     when 1
  77.       update_phase4_step1
  78.     when 2
  79.       update_phase4_step2
  80.     when 3
  81.       update_phase4_step3
  82.     when 4
  83.       update_phase4_step4
  84.     when 5
  85.       update_phase4_step5
  86.     when 6
  87.       update_phase4_step6
  88.     end
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  92.   #--------------------------------------------------------------------------
  93.   def update_phase4_step1
  94.     # 隐藏帮助窗口
  95.     @help_window.visible = false
  96.     # 判定胜败
  97.     if judge
  98.       # 胜利或者失败的情况下 : 过程结束
  99.       return
  100.     end
  101.     # 强制行动的战斗者不存在的情况下
  102.     if $game_temp.forcing_battler == nil
  103.       # 设置战斗事件
  104.       setup_battle_event
  105.       # 执行战斗事件中的情况下
  106.       if $game_system.battle_interpreter.running?
  107.         return
  108.       end
  109.     end
  110.     # 强制行动的战斗者存在的情况下
  111.     if $game_temp.forcing_battler != nil
  112.       # 在头部添加后移动
  113.       @action_battlers.delete($game_temp.forcing_battler)
  114.       @action_battlers.unshift($game_temp.forcing_battler)
  115.     end
  116.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  117.     if @action_battlers.size == 0
  118.       # 开始同伴命令回合
  119.       start_phase2
  120.       return
  121.     end
  122.     # 初始化动画 ID 和公共事件 ID
  123.     @animation1_id = 0
  124.     @animation2_id = 0
  125.     @common_event_id = 0
  126.     # 未行动的战斗者移动到序列的头部
  127.     @active_battler = @action_battlers.shift
  128.     # 如果已经在战斗之外的情况下
  129.     if @active_battler.index == nil
  130.       return
  131.     end
  132.     # 连续伤害
  133.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  134.       @active_battler.slip_damage_effect
  135.       @active_battler.damage_pop = true
  136.     end
  137.         # 自然解除状态
  138.     @active_battler.remove_states_auto
  139.     # 刷新状态窗口
  140.     @status_window.refresh
  141.     # 移至步骤 2
  142.     @phase4_step = 2
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 刷新画面 (主回合步骤 2 : 开始行动)
  146.   #--------------------------------------------------------------------------
  147.   def update_phase4_step2
  148.     # 如果不是强制行动
  149.     unless @active_battler.current_action.forcing
  150.       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下
  151.       if @active_battler.restriction == 2 or @active_battler.restriction == 3
  152.         # 设置行动为攻击
  153.         @active_battler.current_action.kind = 0
  154.         @active_battler.current_action.basic = 0
  155.       end
  156.       # 限制为 [不能行动] 的情况下
  157.       if @active_battler.restriction == 4
  158.         # 清除行动强制对像的战斗者
  159.         $game_temp.forcing_battler = nil
  160.         # 移至步骤 1
  161.         @phase4_step = 1
  162.         return
  163.       end
  164.     end
  165.     # 清除对像战斗者
  166.     @target_battlers = []
  167.     # 行动种类分支
  168.     case @active_battler.current_action.kind
  169.     when 0  # 基本
  170.       make_basic_action_result
  171.     when 1  # 特技
  172.       make_skill_action_result
  173.     when 2  # 物品
  174.       make_item_action_result
  175.     end
  176.     # 移至步骤 3
  177.     if @phase4_step == 2
  178.       @phase4_step = 3
  179.     end
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ● 生成基本行动结果
  183.   #--------------------------------------------------------------------------
  184.   def make_basic_action_result
  185.     # 攻击的情况下
  186.     if @active_battler.current_action.basic == 0
  187.       # 设置攻击 ID
  188.       @animation1_id = @active_battler.animation1_id
  189.       @animation2_id = @active_battler.animation2_id
  190.       # 行动方的战斗者是敌人的情况下
  191.       if @active_battler.is_a?(Game_Enemy)
  192.         if @active_battler.restriction == 3
  193.           target = $game_troop.random_target_enemy
  194.         elsif @active_battler.restriction == 2
  195.           target = $game_party.random_target_actor
  196.         else
  197.           index = @active_battler.current_action.target_index
  198.           target = $game_party.smooth_target_actor(index)
  199.         end
  200.       end
  201.       # 行动方的战斗者是角色的情况下
  202.       if @active_battler.is_a?(Game_Actor)
  203.         if @active_battler.restriction == 3
  204.           target = $game_party.random_target_actor
  205.         elsif @active_battler.restriction == 2
  206.           target = $game_troop.random_target_enemy
  207.         else
  208.           index = @active_battler.current_action.target_index
  209.           target = $game_troop.smooth_target_enemy(index)
  210.         end
  211.       end
  212.       # 设置对像方的战斗者序列
  213.       @target_battlers = [target]
  214.       # 应用通常攻击效果
  215.       for target in @target_battlers
  216.         target.attack_effect(@active_battler)
  217.       end
  218.       return
  219.     end
  220.     # 防御的情况下
  221.     if @active_battler.current_action.basic == 1
  222.       # 帮助窗口显示"防御"
  223.       @help_window.set_text($data_system.words.guard, 1)
  224.       return
  225.     end
  226.     # 逃跑的情况下
  227.     if @active_battler.is_a?(Game_Enemy) and
  228.        @active_battler.current_action.basic == 2
  229.       #  帮助窗口显示"逃跑"
  230.       @help_window.set_text("逃跑", 1)
  231.       # 逃跑
  232.       @active_battler.escape
  233.       return
  234.     end
  235.     # 什么也不做的情况下
  236.     if @active_battler.current_action.basic == 3
  237.       # 清除强制行动对像的战斗者
  238.       $game_temp.forcing_battler = nil
  239.       # 移至步骤 1
  240.       @phase4_step = 1
  241.       return
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 设置物品或特技对像方的战斗者
  246.   #     scope : 特技或者是物品的范围
  247.   #--------------------------------------------------------------------------
  248.   def set_target_battlers(scope)
  249.     # 行动方的战斗者是敌人的情况下
  250.     if @active_battler.is_a?(Game_Enemy)
  251.       # 效果范围分支
  252.       case scope
  253.       when 1  # 敌单体
  254.         index = @active_battler.current_action.target_index
  255.         @target_battlers.push($game_party.smooth_target_actor(index))
  256.       when 2  # 敌全体
  257.         for actor in $game_party.actors
  258.           if actor.exist?
  259.             @target_battlers.push(actor)
  260.           end
  261.         end
  262.       when 3  # 我方单体
  263.         index = @active_battler.current_action.target_index
  264.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  265.       when 4  # 我方全体
  266.         for enemy in $game_troop.enemies
  267.           if enemy.exist?
  268.             @target_battlers.push(enemy)
  269.           end
  270.         end
  271.       when 5  # 我方单体 (HP 0)
  272.         index = @active_battler.current_action.target_index
  273.         enemy = $game_troop.enemies[index]
  274.         if enemy != nil and enemy.hp0?
  275.           @target_battlers.push(enemy)
  276.         end
  277.       when 6  # 我方全体 (HP 0)
  278.         for enemy in $game_troop.enemies
  279.           if enemy != nil and enemy.hp0?
  280.             @target_battlers.push(enemy)
  281.           end
  282.         end
  283.       when 7  # 使用者
  284.         @target_battlers.push(@active_battler)
  285.       end
  286.     end
  287.     # 行动方的战斗者是角色的情况下
  288.     if @active_battler.is_a?(Game_Actor)
  289.       # 效果范围分支
  290.       case scope
  291.       when 1  # 敌单体
  292.         index = @active_battler.current_action.target_index
  293.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  294.       when 2  # 敌全体
  295.         for enemy in $game_troop.enemies
  296.           if enemy.exist?
  297.             @target_battlers.push(enemy)
  298.           end
  299.         end
  300.       when 3  # 我方单体
  301.         index = @active_battler.current_action.target_index
  302.         @target_battlers.push($game_party.smooth_target_actor(index))
  303.       when 4  # 我方全体
  304.         for actor in $game_party.actors
  305.           if actor.exist?
  306.             @target_battlers.push(actor)
  307.           end
  308.         end
  309.       when 5  # 我方单体 (HP 0)
  310.         index = @active_battler.current_action.target_index
  311.         actor = $game_party.actors[index]
  312.         if actor != nil and actor.hp0?
  313.           @target_battlers.push(actor)
  314.         end
  315.       when 6  # 我方全体 (HP 0)
  316.         for actor in $game_party.actors
  317.           if actor != nil and actor.hp0?
  318.             @target_battlers.push(actor)
  319.           end
  320.         end
  321.       when 7  # 使用者
  322.         @target_battlers.push(@active_battler)
  323.       end
  324.     end
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 生成特技行动结果
  328.   #--------------------------------------------------------------------------
  329.   def make_skill_action_result
  330.     # 获取特技
  331.     @skill = $data_skills[@active_battler.current_action.skill_id]
  332.     # 如果不是强制行动
  333.     unless @active_battler.current_action.forcing
  334.       # 因为 SP 耗尽而无法使用的情况下
  335.       unless @active_battler.skill_can_use?(@skill.id)
  336.         # 清除强制行动对像的战斗者
  337.         $game_temp.forcing_battler = nil
  338.         # 移至步骤 1
  339.         @phase4_step = 1
  340.         return
  341.       end
  342.     end
  343.     # 消耗 SP
  344.     @active_battler.sp -= @skill.sp_cost
  345.     # 刷新状态窗口
  346.     @status_window.refresh
  347.     # 在帮助窗口显示特技名
  348.     @help_window.set_text(@skill.name, 1)
  349.         #####################################################################
  350.     if @skill.id == 118
  351.       common_event = $data_common_events[71]
  352.       $game_system.battle_interpreter.setup(common_event.list, 0)
  353.     end
  354.     if @skill.id == 127
  355.       common_event = $data_common_events[72]
  356.       $game_system.battle_interpreter.setup(common_event.list, 0)
  357.     end
  358.     if @skill.id == 129
  359.       common_event = $data_common_events[74]
  360.       $game_system.battle_interpreter.setup(common_event.list, 0)
  361.     end
  362.     if @skill.id == 130
  363.       common_event = $data_common_events[73]
  364.       $game_system.battle_interpreter.setup(common_event.list, 0)
  365.     end
  366.     if @skill.id == 131
  367.       common_event = $data_common_events[75]
  368.       $game_system.battle_interpreter.setup(common_event.list, 0)
  369.     end
  370.     if @skill.id == 132
  371.       common_event = $data_common_events[76]
  372.       $game_system.battle_interpreter.setup(common_event.list, 0)
  373.     end
  374.     if @skill.id == 135
  375.       common_event = $data_common_events[77]
  376.       $game_system.battle_interpreter.setup(common_event.list, 0)
  377.     end
  378.     if @skill.id == 152
  379.       common_event = $data_common_events[78]
  380.       $game_system.battle_interpreter.setup(common_event.list, 0)
  381.     end
  382.     if @skill.id == 154
  383.       common_event = $data_common_events[79]
  384.       $game_system.battle_interpreter.setup(common_event.list, 0)
  385.     end
  386.     if @skill.id == 401
  387.       common_event = $data_common_events[45]
  388.       $game_system.battle_interpreter.setup(common_event.list, 0)
  389.     end
  390.     if @skill.id == 168
  391.       common_event = $data_common_events[80]
  392.       $game_system.battle_interpreter.setup(common_event.list, 0)
  393.     end
  394.     if @skill.id == 169
  395.       common_event = $data_common_events[81]
  396.       $game_system.battle_interpreter.setup(common_event.list, 0)
  397.     end
  398.     if @skill.id == 171
  399.       common_event = $data_common_events[82]
  400.       $game_system.battle_interpreter.setup(common_event.list, 0)
  401.     end
  402.     if @skill.id == 172
  403.       common_event = $data_common_events[83]
  404.       $game_system.battle_interpreter.setup(common_event.list, 0)
  405.     end
  406.     if @skill.id == 176
  407.       common_event = $data_common_events[84]
  408.       $game_system.battle_interpreter.setup(common_event.list, 0)
  409.     end
  410.         if @skill.id == 189
  411.       common_event = $data_common_events[85]
  412.       $game_system.battle_interpreter.setup(common_event.list, 0)
  413.     end
  414.         if @skill.id == 190
  415.       common_event = $data_common_events[86]
  416.       $game_system.battle_interpreter.setup(common_event.list, 0)
  417.     end
  418.             if @skill.id == 192
  419.       common_event = $data_common_events[87]
  420.       $game_system.battle_interpreter.setup(common_event.list, 0)
  421.     end
  422.                 if @skill.id == 194
  423.       common_event = $data_common_events[88]
  424.       $game_system.battle_interpreter.setup(common_event.list, 0)
  425.     end
  426.     if @skill.id == 330
  427.       common_event = $data_common_events[89]
  428.       $game_system.battle_interpreter.setup(common_event.list, 0)
  429.     end
  430.         if @skill.id == 332
  431.       common_event = $data_common_events[90]
  432.       $game_system.battle_interpreter.setup(common_event.list, 0)
  433.     end
  434.             if @skill.id == 333
  435.       common_event = $data_common_events[91]
  436.       $game_system.battle_interpreter.setup(common_event.list, 0)
  437.     end
  438.                 if @skill.id == 334
  439.       common_event = $data_common_events[89]
  440.       $game_system.battle_interpreter.setup(common_event.list, 0)
  441.     end
  442.                     if @skill.id == 210
  443.       common_event = $data_common_events[92]
  444.       $game_system.battle_interpreter.setup(common_event.list, 0)
  445.     end
  446.                         if @skill.id == 211
  447.       common_event = $data_common_events[92]
  448.       $game_system.battle_interpreter.setup(common_event.list, 0)
  449.     end
  450.                             if @skill.id == 212
  451.       common_event = $data_common_events[92]
  452.       $game_system.battle_interpreter.setup(common_event.list, 0)
  453.     end
  454.                                 if @skill.id == 851
  455.       common_event = $data_common_events[93]
  456.       $game_system.battle_interpreter.setup(common_event.list, 0)
  457.     end
  458.                                     if @skill.id == 852
  459.       common_event = $data_common_events[93]
  460.       $game_system.battle_interpreter.setup(common_event.list, 0)
  461.     end
  462.                                     if @skill.id == 853
  463.       common_event = $data_common_events[93]
  464.       $game_system.battle_interpreter.setup(common_event.list, 0)
  465.     end
  466.                                     if @skill.id == 854
  467.       common_event = $data_common_events[93]
  468.       $game_system.battle_interpreter.setup(common_event.list, 0)
  469.     end
  470.                                     if @skill.id == 855
  471.       common_event = $data_common_events[93]
  472.       $game_system.battle_interpreter.setup(common_event.list, 0)
  473.     end
  474.                                         if @skill.id == 850
  475.       common_event = $data_common_events[93]
  476.       $game_system.battle_interpreter.setup(common_event.list, 0)
  477.     end
  478.                                             if @skill.id == 871
  479.       common_event = $data_common_events[93]
  480.       $game_system.battle_interpreter.setup(common_event.list, 0)
  481.     end
  482.                                             if @skill.id == 872
  483.       common_event = $data_common_events[93]
  484.       $game_system.battle_interpreter.setup(common_event.list, 0)
  485.     end
  486.                                             if @skill.id == 873
  487.       common_event = $data_common_events[93]
  488.       $game_system.battle_interpreter.setup(common_event.list, 0)
  489.     end
  490.                                             if @skill.id == 874
  491.       common_event = $data_common_events[93]
  492.       $game_system.battle_interpreter.setup(common_event.list, 0)
  493.     end
  494.                                             if @skill.id == 875
  495.       common_event = $data_common_events[93]
  496.       $game_system.battle_interpreter.setup(common_event.list, 0)
  497.     end
  498.                                                 if @skill.id == 876
  499.       common_event = $data_common_events[93]
  500.       $game_system.battle_interpreter.setup(common_event.list, 0)
  501.     end
  502.                                                 if @skill.id == 877
  503.       common_event = $data_common_events[93]
  504.       $game_system.battle_interpreter.setup(common_event.list, 0)
  505.     end
  506.                                                 if @skill.id == 878
  507.       common_event = $data_common_events[93]
  508.       $game_system.battle_interpreter.setup(common_event.list, 0)
  509.     end
  510.                                                 if @skill.id == 879
  511.       common_event = $data_common_events[93]
  512.       $game_system.battle_interpreter.setup(common_event.list, 0)
  513.     end
  514.                                                 if @skill.id == 880
  515.       common_event = $data_common_events[93]
  516.       $game_system.battle_interpreter.setup(common_event.list, 0)
  517.       end
  518.                                                       if @skill.id == 508
  519.       common_event = $data_common_events[94]
  520.       $game_system.battle_interpreter.setup(common_event.list, 0)
  521.     end
  522.                                                           if @skill.id == 510
  523.       common_event = $data_common_events[94]
  524.       $game_system.battle_interpreter.setup(common_event.list, 0)
  525.     end
  526.                                                           if @skill.id == 509
  527.       common_event = $data_common_events[95]
  528.       $game_system.battle_interpreter.setup(common_event.list, 0)
  529.     end
  530.                                                               if @skill.id == 360
  531.       common_event = $data_common_events[96]
  532.       $game_system.battle_interpreter.setup(common_event.list, 0)
  533.     end
  534.                 if @skill.id == 361
  535.       common_event = $data_common_events[96]
  536.       $game_system.battle_interpreter.setup(common_event.list, 0)
  537.     end
  538.                     if @skill.id == 362
  539.       common_event = $data_common_events[97]
  540.       $game_system.battle_interpreter.setup(common_event.list, 0)
  541.     end
  542.                         if @skill.id == 382
  543.       common_event = $data_common_events[98]
  544.       $game_system.battle_interpreter.setup(common_event.list, 0)
  545.     end
  546.                             if @skill.id == 384
  547.       common_event = $data_common_events[98]
  548.       $game_system.battle_interpreter.setup(common_event.list, 0)
  549.     end
  550.                             if @skill.id == 385
  551.       common_event = $data_common_events[98]
  552.       $game_system.battle_interpreter.setup(common_event.list, 0)
  553.     end
  554.                             if @skill.id == 386
  555.       common_event = $data_common_events[98]
  556.       $game_system.battle_interpreter.setup(common_event.list, 0)
  557.     end
  558.                             if @skill.id == 388
  559.       common_event = $data_common_events[99]
  560.       $game_system.battle_interpreter.setup(common_event.list, 0)
  561.     end
  562.                                 if @skill.id == 1515
  563.       common_event = $data_common_events[100]
  564.       $game_system.battle_interpreter.setup(common_event.list, 0)
  565.     end
  566.                                     if @skill.id == 1516
  567.       common_event = $data_common_events[101]
  568.       $game_system.battle_interpreter.setup(common_event.list, 0)
  569.     end
  570.                                         if @skill.id == 1521
  571.       common_event = $data_common_events[102]
  572.       $game_system.battle_interpreter.setup(common_event.list, 0)
  573.     end
  574.                                           if @skill.id == 1522
  575.       common_event = $data_common_events[102]
  576.       $game_system.battle_interpreter.setup(common_event.list, 0)
  577.     end
  578.                                           if @skill.id == 1526
  579.       common_event = $data_common_events[102]
  580.       $game_system.battle_interpreter.setup(common_event.list, 0)
  581.     end
  582.                                           if @skill.id == 1530
  583.       common_event = $data_common_events[102]
  584.       $game_system.battle_interpreter.setup(common_event.list, 0)
  585.     end
  586.                                               if @skill.id == 1547
  587.       common_event = $data_common_events[103]
  588.       $game_system.battle_interpreter.setup(common_event.list, 0)
  589.     end
  590.                                                   if @skill.id == 1549
  591.       common_event = $data_common_events[104]
  592.       $game_system.battle_interpreter.setup(common_event.list, 0)
  593.     end
  594.                                                       if @skill.id == 1550
  595.       common_event = $data_common_events[106]
  596.       $game_system.battle_interpreter.setup(common_event.list, 0)
  597.     end
  598.                                                           if @skill.id == 1553
  599.       common_event = $data_common_events[105]
  600.       $game_system.battle_interpreter.setup(common_event.list, 0)
  601.     end
  602.                                    if @skill.id == 1554
  603.       common_event = $data_common_events[105]
  604.       $game_system.battle_interpreter.setup(common_event.list, 0)
  605.     end
  606.     ########
  607.     ##############################################################
  608.     # 设置动画 ID
  609.     @animation1_id = @skill.animation1_id
  610.     @animation2_id = @skill.animation2_id
  611.     # 设置公共事件 ID
  612.     @common_event_id = @skill.common_event_id
  613.     # 设置对像侧战斗者
  614.     set_target_battlers(@skill.scope)
  615.     # 应用特技效果
  616.     for target in @target_battlers
  617.       target.skill_effect(@active_battler, @skill)
  618.     end
  619.   end
  620.   #--------------------------------------------------------------------------
  621.   # ● 生成物品行动结果
  622.   #--------------------------------------------------------------------------
  623.   def make_item_action_result
  624.     # 获取物品
  625.     @item = $data_items[@active_battler.current_action.item_id]
  626.     # 因为物品耗尽而无法使用的情况下
  627.     unless $game_party.item_can_use?(@item.id)
  628.       # 移至步骤 1
  629.       @phase4_step = 1
  630.       return
  631.     end
  632.     # 消耗品的情况下
  633.     if @item.consumable
  634.       # 使用的物品减 1
  635.       $game_party.lose_item(@item.id, 1)
  636.     end
  637.     # 在帮助窗口显示物品名
  638.     @help_window.set_text(@item.name, 1)
  639.     # 设置动画 ID
  640.     @animation1_id = @item.animation1_id
  641.     @animation2_id = @item.animation2_id
  642.     # 设置公共事件 ID
  643.     @common_event_id = @item.common_event_id
  644.     # 确定对像
  645.     index = @active_battler.current_action.target_index
  646.     target = $game_party.smooth_target_actor(index)
  647.     # 设置对像侧战斗者
  648.     set_target_battlers(@item.scope)
  649.     # 应用物品效果
  650.     for target in @target_battlers
  651.       target.item_effect(@item)
  652.     end
  653.   end
  654. #--------------------------------------------------------------------------
  655.    # ● 刷新画面 (主回合步骤 3 : 行动方动画)
  656.    #--------------------------------------------------------------------------
  657.    def update_phase4_step3
  658.      # 行动方动画 (ID 为 0 的情况下是白色闪烁)
  659.      if @animation1_id == 0
  660.        @active_battler.white_flash = true
  661.      else
  662.        @active_battler.animation_id = @animation1_id
  663.        @active_battler.animation_hit = true
  664.      end
  665.      # 对像方动画
  666.      for target in @target_battlers
  667.        target.animation_id = @animation2_id
  668.        target.animation_hit = (target.damage != "Miss")
  669.      end
  670.      # 移至步骤 4
  671.      @phase4_step = 4
  672.    end
  673.    #--------------------------------------------------------------------------
  674.    # ● 刷新画面 (主回合步骤 4 : 对像方动画)
  675.    #--------------------------------------------------------------------------
  676.    def update_phase4_step4
  677.      # 限制动画长度、最低 8 帧
  678.      @wait_count = 8
  679.      # 移至步骤 5
  680.      @phase4_step = 5
  681.    end
  682.  
  683.   #--------------------------------------------------------------------------
  684.   # ● 刷新画面 (主回合步骤 5 : 显示伤害)
  685.   #--------------------------------------------------------------------------
  686.   def update_phase4_step5
  687.     # 隐藏帮助窗口
  688.     @help_window.visible = false
  689.     # 刷新状态窗口
  690.     @status_window.refresh
  691.     # 显示伤害
  692.     for target in @target_battlers
  693.       if target.damage != nil
  694.         target.damage_pop = true
  695.       end
  696.     end
  697.     # 移至步骤 6
  698.     @phase4_step = 6
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  702.   #--------------------------------------------------------------------------
  703.   def update_phase4_step6
  704.     # 清除强制行动对像的战斗者
  705.     $game_temp.forcing_battler = nil
  706.         # 公共事件 ID 有效的情况下
  707.     if @common_event_id > 0
  708.       # 设置事件
  709.       common_event = $data_common_events[@common_event_id]
  710.       $game_system.battle_interpreter.setup(common_event.list, 0)
  711.     end
  712.     $game_variables[581] = 0
  713.     $game_variables[582] = 0
  714.     $game_variables[583] = $scene.active_battler.atk
  715.     $game_variables[584] = $scene.active_battler.str
  716.     $game_variables[585] = $scene.active_battler.dex
  717.     $game_variables[586] = $scene.active_battler.int
  718.     if $scene.target_battlers[0] == nil
  719.       $game_variables[587] = 0
  720.       $game_variables[588] = 0
  721.     else
  722.       $game_variables[587] = $scene.target_battlers[0].pdef
  723.       $game_variables[588] = $scene.target_battlers[0].mdef
  724.     end
  725.     # 移至步骤 1
  726.     @phase4_step = 1
  727.   end
  728. end



CP战斗2
RUBY 代码复制
  1. # ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
  2. # by 桜雅 在土
  3.  
  4. #==============================================================================
  5. # □ カスタマイズポイント
  6. #==============================================================================
  7. class XRXS65A
  8.   #--------------------------------------------------------------------------
  9.   # 「アイコン設定」
  10.   #--------------------------------------------------------------------------
  11.   DEFAULT = "046-Skill03" # ディフォルトアイコン
  12.   # アイコンハッシュ  記述方式 : アクターID=>アイコン名
  13.   ICONS = {
  14.     1=>"1号集气",
  15.     2=>"2号集气",
  16.     3=>"3号集气",
  17.     10=>"1号集气",
  18.     13=>"2号集气"
  19.   }
  20.   # アイコンハッシュE  記述方式 : エネミーID=>アイコン名
  21.   ICONE = {
  22.     1=>"046-Skill03",
  23.     2=>"046-Skill03",
  24.   }
  25.   #--------------------------------------------------------------------------
  26.   # 「シンセ・ゲージ」
  27.   #--------------------------------------------------------------------------
  28.   SKIN = "123"  # スキン
  29.   X    =  1         # X 座標
  30.   Y    =  67         # Y 座標
  31. end
  32. #==============================================================================
  33. # --- CP メーターをまとめて管理するクラス、表示関係はすべてココ --- [再定義]
  34. #==============================================================================
  35. class CP_Meters
  36.   #--------------------------------------------------------------------------
  37.   # ○ オブジェクト初期化
  38.   #--------------------------------------------------------------------------
  39.   def initialize
  40.     # シンセゲージの生成
  41.     @base = Sprite.new
  42.     @base.bitmap = RPG::Cache.windowskin(XRXS65A::SKIN).dup
  43.     @base.x = XRXS65A::X
  44.     @base.y = XRXS65A::Y
  45.     @base.z = XRXS65A::X
  46.     @width  = @base.bitmap.width
  47.     @height = @base.bitmap.height
  48.     @icon_set = []
  49.     refresh
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ○ リフレッシュ
  53.   #--------------------------------------------------------------------------
  54.   def refresh
  55.     # 生成すべきバトラーの取得
  56.     need_initializes = []
  57.     for battler in $game_party.actors + $game_troop.enemies
  58.       exist = false
  59.       for set in @icon_set
  60.         exist |= (set[1] == battler)
  61.       end
  62.       need_initializes.push(battler) unless exist
  63.     end
  64.     for battler in need_initializes
  65.       iconname = nil
  66.       if battler.is_a?(Game_Actor)
  67.         iconname = XRXS65A::ICONS[battler.id]
  68.       else
  69.         iconname = XRXS65A::ICONE[battler.id]
  70.       end
  71.       if iconname == nil
  72.         iconname = XRXS65A::DEFAULT
  73.       end
  74.       sprite = Sprite.new
  75.       sprite.bitmap = RPG::Cache.icon(iconname).dup
  76.       sprite.y = XRXS65A::Y + @height / 2 - 12
  77.       @icon_set.push([sprite, battler])
  78.     end
  79.     # 更新
  80.     for set in @icon_set
  81.       set[0].x = XRXS65A::X + @width * set[1].cp / set[1].max_cp - 12
  82.       set[0].z = set[0].x
  83.       set[0].visible = false if set[1].dead? or !set[1].exist?
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ○ 可視状態
  88.   #--------------------------------------------------------------------------
  89.   def visible=(b)
  90.     @base.visible = b
  91.     @icon_set.each{|set| set[0].visible = b }
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ○ 解放
  95.   #--------------------------------------------------------------------------
  96.   def dispose
  97.     @base.dispose
  98.     @icon_set.each{|set| set[0].dispose }
  99.   end
  100. end

评分

参与人数 1+1 收起 理由
21世纪游戏吧 + 1 塞糖

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1288
在线时间
354 小时
注册时间
2009-9-14
帖子
328
3
 楼主| 发表于 2018-4-25 16:13:55 | 只看该作者
灯笼菜刀王 发表于 2018-4-25 15:44
那就在限制不能行动 return之前清除一次状态呗

# 限制为 [不能行动] 的情况下

谢谢大神
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
38732
在线时间
5702 小时
注册时间
2006-11-10
帖子
6608
2
发表于 2018-4-25 15:44:12 | 只看该作者
那就在限制不能行动 return之前清除一次状态呗

# 限制为 [不能行动] 的情况下
      if @active_battler.restriction == 4
        # 清除行动强制对像的战斗者
        $game_temp.forcing_battler = nil
       这里也塞一句状态自然解除
        # 移至步骤 1
        @phase4_step = 1
        return
      end

评分

参与人数 3星屑 +50 +2 收起 理由
21世纪游戏吧 + 1 塞糖
guoxiaomi + 50 认可答案
CR~ + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 15:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表