Project1

标题: 普通攻击与力量特技合并,求解 [打印本页]

作者: guoyq1988    时间: 2013-8-20 02:05
标题: 普通攻击与力量特技合并,求解
本帖最后由 guoyq1988 于 2013-8-22 13:57 编辑

因为鄙人的游戏里有可以反弹物理和魔法的技能
但,貌似只能反弹力量特技,我想把普通攻击和物理特技归类在一起,或者说把它们的公式定义为一样
求前辈指点,可行么?

反弹物理特技脚本
RUBY 代码复制
  1. # ▼▲▼ xrxs27a. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼
  2. # by 桜雅 在土, clum-sea
  3.  
  4. #==============================================================================
  5. # □ カスタマイズポイント
  6. #==============================================================================
  7. class Scene_Battle
  8.   SKILL_REFREX_STATE_NAME         = "攻击反弹"   # 「魔法反射」ステート名
  9.   SKILL_REFREX_ANIMATION_ID       =  97          #  魔法反射のアニメーションID
  10.   REFREX_PENETRATION_SKILL_ELEMENT_NAME = "攻击反弹"   # 「反射貫通」属性名
  11. end
  12. class Scene_Battle
  13.   #--------------------------------------------------------------------------
  14.   # ○ スキルが魔法であるかどうか
  15.   #--------------------------------------------------------------------------
  16.   def skill1_is_a_magic?(skill)
  17.     return false unless skill.is_a?(RPG::Skill)
  18.     return (skill.int_f > skill.str_f)
  19.   end
  20. end
  21.  
  22. #=============================================================================
  23. # ◇ 「魔法反射」ステート by 桜雅 在土
  24. #=============================================================================
  25. class Scene_Battle
  26.   #--------------------------------------------------------------------------
  27.   # ● スキルまたはアイテムの対象側バトラー設定
  28.   #--------------------------------------------------------------------------
  29.   alias xrxs_skill_refrex_set_target_battlers set_target_battlers
  30.   def set_target_battlers(scope)
  31.     xrxs_skill_refrex_set_target_battlers(scope)
  32.     # スキル使用時
  33.     if @active_battler.current_action.kind == 1
  34.       # 魔法である場合
  35.       unless skill1_is_a_magic?(@skill)
  36.         element_id = get_refrex_skill_penetration_id
  37.         # スキルに反射貫通が付加されているか。
  38.         skill_state_penetration_skill(@skill, element_id, @active_battler)
  39.         if @active_battler.penetration != true
  40.           # 検索
  41.           for target in @target_battlers.dup
  42.             # 魔法反射ステートにかかっているか?
  43.             state_id = get_skillal_refrex_id
  44.             if state_id != nil and target.state?(state_id)
  45.               # 反射---
  46.               target.refrexed = true
  47.               @target_battlers.delete(target)
  48.               unless @target_battlers.include?(@active_battler)
  49.                 @target_battlers.push(@active_battler)
  50.               end
  51.               # ---反射の設定完了
  52.             end
  53.           end
  54.         end
  55.       end
  56.     end
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● スキルに反射貫通属性が付加されているか
  60.   #--------------------------------------------------------------------------
  61.   def skill_state_penetration_skill(skill, element_id, user)
  62.     if skill.element_set.include?(element_id)
  63.       # 反射フラグリセット
  64.       user.refrexed = false
  65.       # 貫通フラグをセット
  66.       user.penetration = true
  67.     end
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  71.   #--------------------------------------------------------------------------
  72.   alias xrxs_skill_refrex_update_phase4_step4 update_phase4_step4
  73.   def update_phase4_step4
  74.     # 対象側アニメーション
  75.     xrxs_skill_refrex_update_phase4_step4
  76.     # 魔法反射(貫通しない場合)
  77.     for target in $game_party.actors + $game_troop.enemies - @target_battlers
  78.       next if target.refrexed == nil or target.refrexed == false
  79.       target.animation_id = SKILL_REFREX_ANIMATION_ID
  80.       target.animation_hit = (target.damage != "Miss")
  81.       # 反射フラグリセット
  82.       target.refrexed = false
  83.     end
  84.     for target in @target_battlers
  85.       # 反射フラグリセット
  86.       target.refrexed = false
  87.     end
  88.     # 貫通フラグリセット
  89.     @active_battler.penetration = false
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ○ 魔法反射ステートのID取得
  93.   #--------------------------------------------------------------------------
  94.   def get_skillal_refrex_id
  95.     if @xrxs27a_skill_refrex_state_id == nil
  96.       result = nil
  97.       for i in 1 ... $data_states.size
  98.         if $data_states[i].name[/\A#{SKILL_REFREX_STATE_NAME}\Z/]
  99.           result = $data_states[i].id
  100.           break
  101.         end
  102.       end
  103.       @xrxs27a_skill_refrex_state_id = result
  104.     end
  105.     return @xrxs27a_skill_refrex_state_id
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ○ 反射貫通属性のID取得
  109.   #--------------------------------------------------------------------------
  110.   def get_refrex_skill_penetration_id
  111.     if @xrxs27a_refrex_penetration_element_id == nil
  112.       result = nil
  113.       for i in 1 ... $data_system.elements.size
  114.         if $data_system.elements[i] == REFREX_PENETRATION_SKILL_ELEMENT_NAME
  115.           result = i
  116.           break
  117.         end
  118.       end
  119.       @xrxs27a_refrex_penetration_element_id = result
  120.     end
  121.     return @xrxs27a_refrex_penetration_element_id
  122.   end
  123. end
  124. #==============================================================================
  125. # ■ Game_Battler
  126. #==============================================================================
  127. class Game_Battler
  128.   attr_accessor :refrexed
  129.   attr_accessor :penetration
  130. end

作者: guoyq1988    时间: 2013-8-20 12:15
没人来指点,要沉了么?
作者: 芯☆淡茹水    时间: 2013-8-20 18:26
可以实现的啊,其实也很简单。把普通攻击和物理特技算在一起,把魔法特技算在一起。
但是别人的脚本看起来很费劲,没处下手修改。
作者: guoyq1988    时间: 2013-8-20 21:19
@芯☆淡茹水   求修改方法,我自己修改看看
谢谢
作者: 芯☆淡茹水    时间: 2013-8-21 18:22
没看你的原脚本,所以改就无从说起。
在默认脚本上改,Game_Batter 3 里德应用普通攻击效果和应用特技攻击效果里改。在减少 HP 之前条件分歧,如果满足反射的条件(如反射装备等),普通攻击就直接是
物理伤害才反射,特技效果里需要再分歧,判断特技的威力(威力大于0,是攻击技能)和攻击力是否大于0。(等于0是魔法技能;大于0是物理技能),然后再反射给攻击者
的伤害百分比
作者: guoyq1988    时间: 2013-8-21 20:12
芯☆淡茹水 发表于 2013-8-21 18:22
没看你的原脚本,所以改就无从说起。
在默认脚本上改,Game_Batter 3 里德应用普通攻击效果和应用特技攻击 ...

用的是你的芯式战斗系统,应该是默认的Game_Batter 3
谢谢芯大的指点,虽然有点迷茫,但我放弃这个想法了,原因嘛,如果BOSS或主角用了一个能反魔反特连普通攻击都能反的技能,是不是有点变态,所以想把普通攻击留下,再把特技伤害搞高点就好了

请问芯大,芯式战斗系统里的随机两体攻击能否变成3体4体乃至7体这样的修改




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