Project1

标题: 关于技能属性的问题,大触才进来 [打印本页]

作者: 黄谊洲    时间: 2015-12-25 12:44
标题: 关于技能属性的问题,大触才进来
本帖最后由 黄谊洲 于 2015-12-25 13:02 编辑

众所周知,护甲类所附加的攻击时附加某属性,那么这个攻击时附加的属性只有普通攻击有效,那么我想请教的问题是,如何让这个护甲类所附加的攻击时附加的属性   在该角色的其他技能上生效呢?
作者: taroxd    时间: 2015-12-25 12:49
技能的使用效果里写附加状态 - 普通攻击 100%


作者: 御曹司    时间: 2015-12-25 13:03
本帖最后由 御曹司 于 2015-12-25 13:09 编辑

技能的伤害的属性 改为 普通攻击

作者: jianyulei    时间: 2015-12-28 19:39
  1. #==============================================================================
  2. # ■ RGSS3 スキル・アイテムへの追加属性 Ver1.00 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 一定確率で指定したスキル・アイテム使用時のダメージ属性が
  5. # 本来エディタ上で指定された物から更に追加されるようにします。
  6. # 使い方によっては特定スキル・アイテムに
  7. # 一定確率で他の属性を追加する特徴が作成できるようにもなります。
  8. #
  9. # 例.スキルのメモ欄に
  10. # <追加属性:3>
  11. # 100%の確率でそのスキル・アイテムに
  12. # 属性ID3の属性が追加される。
  13. #
  14. # <追加属性:4,50>
  15. # 50%の確率でそのスキル・アイテムに
  16. # 属性ID4の属性が追加される。
  17. #
  18. # <追加属性:5,user.element_rate(17)*100-100>
  19. # 使用者の属性ID17の属性有効度から100を引いた確率で
  20. # そのスキル・アイテムに属性ID5の属性が追加される。
  21. #------------------------------------------------------------------------------
  22. # ももまるLabs様のXPスタイルバトルと併用される場合
  23. # XPスタイルバトルより上に配置して下さい。
  24. # そうする事で、弱点/耐性ダメージ表示が正常に稼働します。
  25. #
  26. # 数値指定の2番目は確率処理ですが、evalを用いているので
  27. # 上のuser.element_rate(17)*100-100等のように、計算式を用いる事が可能です。
  28. # 装備品等で追加属性を設定する際は、これをうまく利用して下さい。
  29. #==============================================================================
  30. module EX_ELEM
  31.   
  32.   #追加属性で弱点や耐性が発生した時の属性計算方法の指定
  33.   #0……各属性で最も高い有効度を属性有効度として扱う。
  34.   #1……全属性の有効度の乗算を属性有効度として扱う。
  35.   #2……基本有効度を0とし、全属性の有効度から100を引いた値を
  36.   #     基本有効度に加算した値を属性有効度として扱う。
  37.   
  38.   TYPE = 0
  39.   
  40.   
  41.   #追加属性として同じ属性が多重付与された場合の処理
  42.   #true……全て有効にする。
  43.   #false……一回分のみ有効とする。
  44.   #なお、TYPEが0の場合は、強制的にfalseになります。
  45.   
  46.   DUAL1 = false
  47.   
  48.   
  49.   #スキル・アイテムと同じ属性が多重付与された場合の処理
  50.   #true……有効にする。
  51.   #false……無効とする。
  52.   #なお、TYPEが0の場合は、強制的にfalseになります。
  53.   
  54.   DUAL2 = false
  55.   
  56.   
  57.   #属性有効度下限
  58.   #(負の値も指定可能。
  59.   #  ただし、TYPEを2にしない限り、通常環境下では0以下にはならない。
  60.   #  設定しない場合、nilを指定)
  61.   
  62.   BTM  = 0
  63.   
  64.   
  65.   #属性有効度上限
  66.   #(設定しない場合、nilを指定)
  67.   
  68.   TOP  = 10000
  69.   
  70.   
  71.   #設定用キーワード(変更不要)
  72.   
  73.   WORD = "追加属性"
  74.   
  75. end
  76. class Game_Battler < Game_BattlerBase
  77.   alias item_element_rate_extra_element item_element_rate
  78.   def item_element_rate(user, item)
  79.     @exelem = []
  80.     data = item_element_rate_extra_element(user, item)
  81.     #追加属性がない時は処理を飛ばす
  82.     if !item.extra_element.empty?
  83.       #追加属性を確率で判定
  84.       for i in 0...item.extra_element.size
  85.         next unless eval(item.extra_element[i][1]) > rand(100)
  86.         @exelem.push(item.extra_element[i][0].to_i)
  87.       end
  88.       #多重付与された追加属性を削除(設定による)
  89.       @exelem.uniq! if !EX_ELEM::DUAL1 or EX_ELEM::TYPE == 0
  90.       #追加属性内から、元々スキル・アイテム内にある属性を削除(設定による)
  91.       if !EX_ELEM::DUAL2 or EX_ELEM::TYPE == 0
  92.         if item.damage.element_id < 0 && !user.atk_elements.empty?
  93.           user.atk_elements.each do |i|
  94.             @exelem.delete(i) if @exelem.include?(i)
  95.           end
  96.         else
  97.           @exelem.delete(item.damage.element_id) if @exelem.include?(item.damage.element_id)
  98.         end
  99.       end
  100.       #追加属性がある場合、タイプ別に属性有効度計算処理
  101.       if [email protected]?
  102.         for i in @exelem
  103.           data2 = element_rate(i)
  104.           if EX_ELEM::TYPE == 0
  105.             data = data2 if data < data2
  106.           elsif EX_ELEM::TYPE == 1
  107.             data *= data2
  108.           elsif EX_ELEM::TYPE == 2
  109.             data += data2 - 1.0
  110.           end
  111.         end
  112.       end
  113.     end
  114.     #属性有効度最大値チェック
  115.     data = [data, EX_ELEM::TOP / 100.0].min if EX_ELEM::TOP != nil
  116.     #属性有効度最低値チェック
  117.     data = [data, EX_ELEM::BTM / 100.0].max if EX_ELEM::BTM != nil
  118.     return data
  119.   end
  120. end
  121. class RPG::UsableItem < RPG::BaseItem
  122.   def extra_element
  123.     #キャッシュがある場合は読み込み処理を飛ばす
  124.     return @extra_element if @extra_element != nil
  125.     data = []
  126.     #メモ欄から読み込み
  127.     self.note.each_line { |line|
  128.     memo = line.scan(/<#{EX_ELEM::WORD}[::](\S+)>/)
  129.     memo = memo.flatten
  130.     if memo != nil and not memo.empty?
  131.       memo = memo[0].split(/\s*,\s*/)
  132.       #2番目の値がない場合は100%追加
  133.       memo.push("100") if memo[1] == nil
  134.       data.push(memo)
  135.     end
  136.     }
  137.     @extra_element = data
  138.     return @extra_element
  139.   end
  140. end
复制代码





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