Project1

标题: 属性防御的修正值问题 [打印本页]

作者: 老夫子    时间: 2011-6-3 23:10
标题: 属性防御的修正值问题

系统默认的属性防御就像防御那样是1/2伤害,
我想把属性防御改为完全防御该属性,也就是把修正值改为0
不过那句脚本语言在哪啊?rtab的,找不到

作者: jhhuang    时间: 2011-6-3 23:55
Game_Actor类
    # 获取对应属性有效度的数值
    table = [0,200,150,100,50,0,-100]
改成
    # 获取对应属性有效度的数值
    table = [0,200,150,100,0,0,-100],那样一件装备属性防御伤害就变成0%
作者: 老夫子    时间: 2011-6-4 00:05
jhhuang 发表于 2011-6-3 23:55
Game_Actor类
    # 获取对应属性有效度的数值
    table = [0,200,150,100,50,0,-100]

那个状态也有效吗?我就是要弄一个绝对防御的状态
作者: jhhuang    时间: 2011-6-4 00:11
本帖最后由 jhhuang 于 2011-6-4 00:12 编辑
老夫子 发表于 2011-6-4 00:05
那个状态也有效吗?我就是要弄一个绝对防御的状态


比如说1件装备火属性防御,那么火属性防御+1
1个状态火属性防御+1
一共+2
[0,200,150,100,50,0,-100]
伤害就是0%这样算的.
火伤害攻击有效1级150%伤害,有效2级,就200%.

鸟解?

PS:注意上面公式= =如果火属性防御达到3级(比如2件火防装+1个火防状态.),那么伤害会变成负100%,伤害变成补血
作者: 希望化身    时间: 2011-6-4 00:30
楼上……假若我们使用默认的elements_rate
table = [0,200,150,100,50,0,-100]
从装备/状态上获得的属性防御,不是如你所说的那么计算……
用你举的例子,一个火属性魔法,打某人(该人物的火属性有效度=C[100%])
假定伤害为 1000
这个人穿着盔甲,赋予火属性防御  ----->   受到伤害 500
这个人被附加状态,火属性防御    ------>  受到伤害 250
这个人又穿着一盾牌,赋予火属性防御 -->  受到伤害 125

综上可以得到结论:
属性防御,所做的是根据 table里面 D 等级的数量进行修正,每次防御多修正一次。
上述例子有3件火属性防御(注意,并非人物设置里面的那个等级,而是装备/状态栏划勾的属性防御)
则,对于1000点火属性伤害进行属性修正:
根据table D [50%] 3次修正
1000*0.5*0.5*0.5 = 125

作者: jhhuang    时间: 2011-6-4 00:46
本帖最后由 jhhuang 于 2011-6-4 00:52 编辑
老夫子 发表于 2011-6-4 00:05
那个状态也有效吗?我就是要弄一个绝对防御的状态


越是了解深入的东西...过往的基础就忘记了= =
上面那个发错了...那个是职业代入的属性有效度伤害.
下面那句
    # 状态能防御本属性的情况下效果减半
    for i in @states
      if $data_states.guard_element_set.include?(element_id)
        result /= 2
      end
    end
----------------------------------------------------
result /= 2
改成
result = 0


Game_Enemy类是敌人的,也是
result /= 2
改成
result = 0



[0,200,150,100,50,0,-100]
这东西是人物职业或敌人设置的属性有效度....
A=200%B=150%C=100%D=50E=0F=负100%
就是当受到那个属性时受到的伤害.
作者: 后知后觉    时间: 2011-6-4 01:06
本帖最后由 后知后觉 于 2011-6-4 11:51 编辑

那个 table 只是给 属性有效度 用的
属性防御是直接 / 2 的.

全局搜索(Shift+Ctrl+F)
  1. def element_rate
复制代码
默认情况下能搜索到2个结果.一个角色的.一个敌人的.
在角色的定义里有2行  
result /= 2

把这2行 result /= 2 改成
  1. result = 0;break
复制代码
而在敌人的定义里就只有1行.因为敌人没有状态防御.但有属性防御.
把敌人的那行 result /= 2 也改成上面那样.
当然了.你用的不是默认系统.所以在搜索出来不只2个结果的时候就需要在更靠近 Main 的地方进行修改.
不过要注意这个 result 是百分比 而不是直接值.
这样直接设置为 0 的话 虽然直接结果是等于 0 了.
不过也把 其他的一些 伤害吸收(加血)的效果给屏蔽了(同时携带时).
该怎么改你自己试试吧.




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