Project1

标题: 发一种属性修正计算方式。 [打印本页]

作者: lucifer4223    时间: 2013-10-29 18:49
标题: 发一种属性修正计算方式。
纯粹无聊的新人脚本。。。顺便还有 普攻,技能的暴击修正,如果有人顶我就发上来。

这种算法是,武器或者技能物品,其属性,与敌人的属性防御做比较,
克制可以抵消 吸收和 免疫,全部乘算。吸收最优先,其次是 免疫。
当 克制的数量完全抵消 吸收和免疫,并还能多出来的时候,
剩余一个克制就 2倍伤害,两个就 4倍,三个就 8倍。。。

脚本里都有注释,你可以很方便地修改,如果觉得乘算方式太夸张,也可以改成加算。
比如 三个克制就 6倍,四个克制就 8倍。

RUBY 代码复制
  1. class Game_Battler
  2.  
  3.   #== ◆ 属性修正 ============================================
  4.   def elements_correct(element_set)
  5.     if element_set == []
  6.       return 100 # 没有任何属性对应,就 100%
  7.     end
  8.     a = []
  9.     b = 1.0
  10.     for i in element_set
  11.       e_r = self.element_rate(i) # [200,150,100,50,0,-100]
  12.       a.push(e_r)
  13.     end
  14.  
  15.     n = a.collect{|x|(x +200)*2}
  16.     # 简单转换[800 u, 700 s, 600普, 500 t, 400 w, 200 v]
  17.     s = n.to_s.count"7" # 几个强
  18.     s == 0 ? sn = 1 : sn = 1.5**s
  19.     t = n.to_s.count"5" # 几个弱,没有就用 1,有就乘几次
  20.     t == 0 ? tn = 1 : tn = 0.5**t
  21.  
  22.     u = n.to_s.count"8" # 数出有几个克制
  23.     v = n.to_s.count"2" # 数出有几个吸收
  24.     w = n.to_s.count"4" # 数出有几个免疫
  25.     #p u.to_s+"克" + v.to_s+"吸" +w.to_s+"免" +s.to_s+"强" +t.to_s+"弱"
  26.  
  27.     if (u - v) < 0 # 吸收 比 克制多,几倍吸收,绝对优先
  28.       b = u - v
  29.     elsif ((u - v)- w) < 0 # 抵消吸收后,剩下的无法抵消免疫
  30.       b = 0
  31.     elsif (u -v -w) > 0 # 克很多,抵消吸收后还能抵消免疫,剩余几个克
  32.       b = 2**(u -v -w) *sn *tn # 一个弱 会抵掉一个剩余的 克
  33.     elsif (u -v -w) == 0 # 完全抵消。
  34.       b = sn *tn
  35.     else # 还会有这种情况吗?
  36.       p "???"
  37.     end
  38.     #p b
  39.     return (b *100).to_i
  40.   end
  41. end

作者: lucifer4223    时间: 2013-10-30 22:41





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