查看: 76|回复: 0

[转载发布] 【低创】将抗性降到0以下的插件

[复制链接]
  • TA的每日心情
    开心
    昨天 10:15
  • 签到天数: 73 天

    连续签到: 1 天

    [LV.6]常住居民II

    2044

    主题

    86

    回帖

    8602

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    -2
    卡币
    6460
    OK点
    16
    积分
    8602
    发表于 2024-4-12 16:53:39 | 显示全部楼层 |阅读模式
    抗性降到0以下,也就是越打血越多
    这种抖m行为不符合大众的价值观,于是就被禁止了
    [Ruby] 纯文本查看 复制代码
    =begin
    伤害吸收插件
    by 炽天裁决
    挨打回血,天子快乐插件
    使用说明
    在备注栏填入<dam_absorb: 属性:抗性数值(,+)>
    例如<dam_absorb: 3:-0.5,1:0.2>
    属性中 -1 代表普通攻击,0,代表无属性
    填入低于 -1 的值可以适用于所有伤害
    游戏中,持有此装备/状态/职业/角色ID的角色会用备注中的抗性结算(会覆盖掉原有的设定)
    所有抗性会在全部抗性中取最优(这一点和预设是相反的,不然无法实现效果)
    =end
     
    class RPG::BaseItem
     
      def dam_absorb
        if @dam_absorb.nil?
              @dam_absorb = []
              if @note =~ /<dam_absorb:[ ](.*)>/i
                for x in $1.split(",")
            a = []
            for y in x.split(":")
              a += [y.to_f]
            end
                      @dam_absorb += [a]
                end
              end
        end
        @dam_absorb
      end
     
    end
    class Game_Battler
      alias absorb_element_rate element_rate
      def element_rate(i)
        r = e_absorb_value(i)
        er = absorb_element_rate(i)
        if r != nil
          er = r if r < er
        end
     
        return er
      end
     
      def item_element_rate(user, item)
        r = nil
        a = element_absorb
        a.each{|x|
        if x[0] < -1 
          r = x[1] if r == nil
          r = x[1] if x[1] <= r
        end
        }
        if item.damage.element_id < 0
          if user.atk_elements.empty?
            er = element_rate(-1)
          else
            er = elements_max_rate(user.atk_elements)
          end
        else
          er = element_rate(item.damage.element_id)
        end
        if r != nil
          er = r if r < er
        end
     
        return er
      end
     
      def elements_max_rate(elements)
        r = elements.inject([]) {|r, i| r.push(element_rate(i)) }.min
        r = 1.0 if r == nil
        return r
      end
     
      def element_absorb
        return []
      end
      def e_absorb_value(id)
        r = nil
        absorb = element_absorb
        absorb.each{|i|
          if i[0] == id
            r = i[1] if r == nil
            r = i[1] if i[1] < r
          end
          }
        return r
      end
     
    end
    class Game_Actor < Game_Battler
      def element_absorb
        absorb = self.class.dam_absorb + actor.dam_absorb
        equips.each do |eq|
              absorb += eq.dam_absorb unless eq.nil?
        end
        states.each do |st|
              absorb += st.dam_absorb
        end
        absorb  = absorb .uniq
        return absorb 
      end
    end
     
    class Game_Enemy < Game_Battler
      def element_absorb
        absorb = enemy.dam_absorb
        states.each do |st|
              absorb += st.dam_absorb
        end
        absorb  = absorb .uniq
        return absorb 
      end
    end
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-9-21 16:44 , Processed in 0.052089 second(s), 40 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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