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

Project1

 找回密码
 注册会员
搜索
查看: 1666|回复: 1

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
635
在线时间
24 小时
注册时间
2020-4-22
帖子
29
发表于 2020-11-14 21:58:04 | 显示全部楼层 |阅读模式

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

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

x
抗性降到0以下,也就是越打血越多
这种抖m行为不符合大众的价值观,于是就被禁止了
RUBY 代码复制
  1. =begin
  2. 伤害吸收插件
  3. by 炽天裁决
  4. 挨打回血,天子快乐插件
  5. 使用说明
  6. 在备注栏填入<dam_absorb: 属性:抗性数值(,+)>
  7. 例如<dam_absorb: 3:-0.5,1:0.2>
  8. 属性中 -1 代表普通攻击,0,代表无属性
  9. 填入低于 -1 的值可以适用于所有伤害
  10. 游戏中,持有此装备/状态/职业/角色ID的角色会用备注中的抗性结算(会覆盖掉原有的设定)
  11. 所有抗性会在全部抗性中取最优(这一点和预设是相反的,不然无法实现效果)
  12. =end
  13.  
  14. class RPG::BaseItem
  15.  
  16.   def dam_absorb
  17.     if @dam_absorb.nil?
  18.           @dam_absorb = []
  19.           if @note =~ /<dam_absorb:[ ](.*)>/i
  20.             for x in $1.split(",")
  21.         a = []
  22.         for y in x.split(":")
  23.           a += [y.to_f]
  24.         end
  25.                   @dam_absorb += [a]
  26.             end
  27.           end
  28.     end
  29.     @dam_absorb
  30.   end
  31.  
  32. end
  33. class Game_Battler
  34.   alias absorb_element_rate element_rate
  35.   def element_rate(i)
  36.     r = e_absorb_value(i)
  37.     er = absorb_element_rate(i)
  38.     if r != nil
  39.       er = r if r < er
  40.     end
  41.  
  42.     return er
  43.   end
  44.  
  45.   def item_element_rate(user, item)
  46.     r = nil
  47.     a = element_absorb
  48.     a.each{|x|
  49.     if x[0] < -1
  50.       r = x[1] if r == nil
  51.       r = x[1] if x[1] <= r
  52.     end
  53.     }
  54.     if item.damage.element_id < 0
  55.       if user.atk_elements.empty?
  56.         er = element_rate(-1)
  57.       else
  58.         er = elements_max_rate(user.atk_elements)
  59.       end
  60.     else
  61.       er = element_rate(item.damage.element_id)
  62.     end
  63.     if r != nil
  64.       er = r if r < er
  65.     end
  66.  
  67.     return er
  68.   end
  69.  
  70.   def elements_max_rate(elements)
  71.     r = elements.inject([]) {|r, i| r.push(element_rate(i)) }.min
  72.     r = 1.0 if r == nil
  73.     return r
  74.   end
  75.  
  76.   def element_absorb
  77.     return []
  78.   end
  79.   def e_absorb_value(id)
  80.     r = nil
  81.     absorb = element_absorb
  82.     absorb.each{|i|
  83.       if i[0] == id
  84.         r = i[1] if r == nil
  85.         r = i[1] if i[1] < r
  86.       end
  87.       }
  88.     return r
  89.   end
  90.  
  91. end
  92. class Game_Actor < Game_Battler
  93.   def element_absorb
  94.     absorb = self.class.dam_absorb + actor.dam_absorb
  95.     equips.each do |eq|
  96.           absorb += eq.dam_absorb unless eq.nil?
  97.     end
  98.     states.each do |st|
  99.           absorb += st.dam_absorb
  100.     end
  101.     absorb  = absorb .uniq
  102.     return absorb
  103.   end
  104. end
  105.  
  106. class Game_Enemy < Game_Battler
  107.   def element_absorb
  108.     absorb = enemy.dam_absorb
  109.     states.each do |st|
  110.           absorb += st.dam_absorb
  111.     end
  112.     absorb  = absorb .uniq
  113.     return absorb
  114.   end
  115. end


无技术含量,权当是记录生活吧





Lv5.捕梦者

梦石
0
星屑
24057
在线时间
4983 小时
注册时间
2016-3-8
帖子
1613
发表于 2020-11-14 22:34:32 | 显示全部楼层
本帖最后由 alexncf125 于 2020-11-15 21:15 编辑

https://www.rpgmakercentral.com/ ... b-elemental-damage/

如何吸收元素伤害

在数据库编辑器中,您将找到一个称为“元素率”的功能。

因此,如果我们将百分比视为乘数,我们将得到

0%= 0#乘以0,即:无损坏
50%= 0.5#乘以0.5,即:一半伤害
100%= 1.0#乘以1.0,即:完全伤害
200%= 2.0#乘以2.0,即:双倍伤害

但是,具有负元素率意味着什么呢?

-50%= -0.5

这意味着伤害将乘以负数,这意味着目标实际上得到了治愈。

数据库编辑器不支持负值。但是,使用功能管理器(http://himeworks.com/2012/10/13/feature-manager/),这不是问题。



只需标记一个对象

<ft:element_rate element_id rate>

其中element_id是与每个元素相对应的ID,您可以在“条款”标签中查找。

比率只是百分比,指定为浮点数。

例如,如果您希望演员吸收100%的火焰元素伤害,则可以查找元素表,然后使用

<ft:element_rate 3 -1.0>

您将需要适当地设置技能或物品的伤害元素,或确保正确设置了突袭元素的功能。 Tsukihime编辑于2015年3月20日
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 18:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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