Project1
标题:
属性修正值的计算方法改动
[打印本页]
作者:
cftx
时间:
2006-8-11 16:13
标题:
属性修正值的计算方法改动
RMXP的默认属性修正值计算方法是依次检查所有防具和状态,只要拥有该属性防御那么该属性有效度就减半,这样的计算方法局限性很大,比如本来是正值的属性有效度无论如何也不会变成负值(属性吸收),本来是吸收100%火属性(有效度为-100%)的人再装备上火属性抵抗的装备吸收效果反而会下降,因此,我做了一些改动,自己用的,也发上来给大家看看......
属性修正的计算在Game_Actor107行和Game_Enemy118行处,因此我在这里动了手脚.
Game_Actor里的内容为
#--------------------------------------------------------------------------
# ● 取得属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_classes[@class_id].element_ranks[element_id]]
# 防具能防御本属性的情况下效果减半
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(element_id)
result /= 2
end
end
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# 过程结束
return result
end
复制代码
我把它改成
#--------------------------------------------------------------------------
# ● 取得属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_classes[@class_id].element_ranks[element_id]]
# 防具能防御本属性的情况下
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
beishu=1
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(37)
beishu=2
elsif armor != nil and armor.guard_element_set.include?(38)
beishu=3
elsif armor != nil and armor.guard_element_set.include?(39)
beishu=4
end
if armor != nil and armor.guard_element_set.include?(40)
beishu *= -1
end
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(element_id)
result -= 35*beishu
if result > 200 then result=200
elsif result <-100 then result =-100
end
end
end
# 状态能防御本属性的情况下
for i in @states
beishu=1
if $data_states[i].guard_element_set.include?(37)
beishu= 2
elsif $data_states[i].guard_element_set.include?(38)
beishu= 3
elsif $data_states[i].guard_element_set.include?(39)
beishu= 4
end
if $data_states[i].guard_element_set.include?(40)
beishu *= -1
end
if $data_states[i].guard_element_set.include?(element_id)
result -= 35*beishu
if result > 200 then result=200
elsif result <-100 then result =-100
end
end
end
# 过程结束
return result
end
复制代码
这样修改的效果是,每个拥有属性防御的装备或者状态会使其防御的属性的属性有效度下降35%,另外如果它的属性防御里包括37号属性,那么效果加倍,如果包括38号,效果3倍,如果包括39号,效果4倍,如果包括40号,效果变成属性有效度增加.
另外,某人物的属性有效度上限为200%,下限为-100%,以防出现不可预期的错误......
例如:
抗炎戒指的属性防御中包括001(炎)和037,那么其装备效果为对该人物火属性有效度下降70%(35%×2)
全金属盔甲的属性防御中包括003(雷)和040,那么其装备效果为对该人物雷属性有效度
上升
35%(-35%)
状态"神之护盾"的属性防御中包括001~008(所有属性)和039,那么其装备效果为对该人物所有属性有效度下降140%(35%×4)
状态"光暗脆弱"的属性防御中包括007(光)、008(暗)、038、040,那么其装备效果为对该人物光和暗属性有效度
上升
105(-35%×3)
某人物初始所有属性有效度为100%(C),装备全金属盔甲(雷有效+35%)、抗炎戒指(火有效-70%),拥有状态神之护盾(全有效下降140%)、光暗脆弱(光暗有效+105%)。则其最终属性有效度为光、暗65%,雷-5%,火-100%(低于-100%,自动修正),其余属性都是-40%。
[本贴由 雷欧纳德 于 2006-11-20 18:55:35 进行了编辑]
作者:
cftx
时间:
2006-8-11 16:13
标题:
属性修正值的计算方法改动
RMXP的默认属性修正值计算方法是依次检查所有防具和状态,只要拥有该属性防御那么该属性有效度就减半,这样的计算方法局限性很大,比如本来是正值的属性有效度无论如何也不会变成负值(属性吸收),本来是吸收100%火属性(有效度为-100%)的人再装备上火属性抵抗的装备吸收效果反而会下降,因此,我做了一些改动,自己用的,也发上来给大家看看......
属性修正的计算在Game_Actor107行和Game_Enemy118行处,因此我在这里动了手脚.
Game_Actor里的内容为
#--------------------------------------------------------------------------
# ● 取得属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_classes[@class_id].element_ranks[element_id]]
# 防具能防御本属性的情况下效果减半
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(element_id)
result /= 2
end
end
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# 过程结束
return result
end
复制代码
我把它改成
#--------------------------------------------------------------------------
# ● 取得属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_classes[@class_id].element_ranks[element_id]]
# 防具能防御本属性的情况下
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
beishu=1
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(37)
beishu=2
elsif armor != nil and armor.guard_element_set.include?(38)
beishu=3
elsif armor != nil and armor.guard_element_set.include?(39)
beishu=4
end
if armor != nil and armor.guard_element_set.include?(40)
beishu *= -1
end
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(element_id)
result -= 35*beishu
if result > 200 then result=200
elsif result <-100 then result =-100
end
end
end
# 状态能防御本属性的情况下
for i in @states
beishu=1
if $data_states[i].guard_element_set.include?(37)
beishu= 2
elsif $data_states[i].guard_element_set.include?(38)
beishu= 3
elsif $data_states[i].guard_element_set.include?(39)
beishu= 4
end
if $data_states[i].guard_element_set.include?(40)
beishu *= -1
end
if $data_states[i].guard_element_set.include?(element_id)
result -= 35*beishu
if result > 200 then result=200
elsif result <-100 then result =-100
end
end
end
# 过程结束
return result
end
复制代码
这样修改的效果是,每个拥有属性防御的装备或者状态会使其防御的属性的属性有效度下降35%,另外如果它的属性防御里包括37号属性,那么效果加倍,如果包括38号,效果3倍,如果包括39号,效果4倍,如果包括40号,效果变成属性有效度增加.
另外,某人物的属性有效度上限为200%,下限为-100%,以防出现不可预期的错误......
例如:
抗炎戒指的属性防御中包括001(炎)和037,那么其装备效果为对该人物火属性有效度下降70%(35%×2)
全金属盔甲的属性防御中包括003(雷)和040,那么其装备效果为对该人物雷属性有效度
上升
35%(-35%)
状态"神之护盾"的属性防御中包括001~008(所有属性)和039,那么其装备效果为对该人物所有属性有效度下降140%(35%×4)
状态"光暗脆弱"的属性防御中包括007(光)、008(暗)、038、040,那么其装备效果为对该人物光和暗属性有效度
上升
105(-35%×3)
某人物初始所有属性有效度为100%(C),装备全金属盔甲(雷有效+35%)、抗炎戒指(火有效-70%),拥有状态神之护盾(全有效下降140%)、光暗脆弱(光暗有效+105%)。则其最终属性有效度为光、暗65%,雷-5%,火-100%(低于-100%,自动修正),其余属性都是-40%。
[本贴由 雷欧纳德 于 2006-11-20 18:55:35 进行了编辑]
作者:
cftx
时间:
2006-8-11 16:15
差点忘了,还有敌人部分......
Game_Enemy中118行起
#--------------------------------------------------------------------------
# ● 获取属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# 过程结束
return result
end
复制代码
改为
#--------------------------------------------------------------------------
# ● 获取属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
# 状态能防御本属性的情况下效果减半
for i in @states
beishu=1
if $data_states[i].guard_element_set.include?(37)
beishu= 2
elsif $data_states[i].guard_element_set.include?(38)
beishu= 3
elsif $data_states[i].guard_element_set.include?(39)
beishu= 4
end
if $data_states[i].guard_element_set.include?(40)
beishu *= -1
end
if $data_states[i].guard_element_set.include?(element_id)
result -= 35*beishu
if result > 200 then result=200
elsif result <-100 then result =-100
end
end
end
# 过程结束
return result
end
复制代码
作者:
OCTSJimmy
时间:
2006-8-11 20:16
嗯!不错不错!!!
这个想法很棒!!!!
作者:
cftx
时间:
2006-8-12 04:01
问题是这个脚本还是只能实现8个属性变动,不够自由......
而且无法设定单一装备或者状态对多个属性有不同的影响效果(比如火+70%,水-35%......)
想不到这些问题的简单解决方法,盼望高手指导..............
作者:
MogStar
时间:
2006-8-12 16:54
提示:
作者被禁止或删除 内容自动屏蔽
作者:
cftx
时间:
2006-8-12 17:01
只能如此了..............比如状态"潮湿@火-100@水+100"之类的,可是我不会这方面的代码......
作者:
柳柳
时间:
2006-11-11 12:26
提前一下……等待发布……
作者:
heiman
时间:
2007-3-2 17:58
提示:
作者被禁止或删除 内容自动屏蔽
作者:
伊卡路斯公爵
时间:
2007-3-2 18:10
提示:
作者被禁止或删除 内容自动屏蔽
作者:
cftx
时间:
2007-3-2 19:53
回上上楼,不会的,因为这只是动了装备和状态对属性有效的修正,基础的属性有效度部分没有动
回上楼,其实我也是这样................
作者:
gpra8764
时间:
2007-3-3 03:19
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1