Project1
标题:
消耗当前TP值的问题
[打印本页]
作者:
hijl1990
时间:
2015-9-17 10:50
标题:
消耗当前TP值的问题
问题是如果做一个消耗当前TP值的技能?
比如:角色当前的TP值为80,那么该技能就是消耗80的TP值,造成80%伤害。
搜索了后找到了这个答案:
https://rpg.blue/thread-366142-1-1.html
但是如那贴里所说,如果敌人不是单人的话就会没效果,请问要怎么改?
作者:
cinderelmini
时间:
2015-9-17 16:34
本帖最后由 cinderelmini 于 2015-9-21 14:43 编辑
Game_Battler里面的【计算伤害】部分:
#--------------------------------------------------------------------------
# ● 计算伤害
#--------------------------------------------------------------------------
def make_damage_value(user, item)
value = item.damage.eval(user, self, $game_variables)
value *= item_element_rate(user, item)
value *= pdr if item.physical?
value *= mdr if item.magical?
value *= rec if item.damage.recover?
value = apply_critical(value) if @result.critical
value = apply_variance(value, item.damage.variance)
value = apply_guard(value)
if user.is_a?(Game_Actor)
if item.id == 50 # 消耗全部TP的技能ID分歧,多技能的话请用include?的方式
value *= 1 + user.tp_rate
end
end
@result.make_damage(value.to_i, item)
end
复制代码
计算伤害的部分,然后技能设置的时候这个技能的TP消耗设定为0。
(清楚tp的那句还是不要放在这里了。)
之后去【Scene_Battle】里(用了别的战斗系统的话就去新的战斗系统里)找到“use_item”方法,然后把
@subject.use_item(item)
refresh_status
复制代码
这两句放到方法的最后去,这样应该真的就可以了。。。。
PS:为了让这个行为可逆,请用复制和注释的方式,以免忘记它们原来的位置(雾
include?的用法的话,如果自己有module的话,
就可以在module里写个技能组,如:
module XXX
TP_SKILL_IDS = []
for i in 50..100
TP_SKILL_IDS.push(i)
end
end
复制代码
如果没有自己的模块的话,就在mian脚本里面找个空白的地方写:
$tp_skill_ids = []
for i in 50..100
$tp_skill_ids.push(i)
end
复制代码
然后用的时候,像这样就行:
if XXX::TP_SKILL_IDS.include?(skill.id)
# 或者:
if $tp_skill_ids.include?(skill.id)
复制代码
唔。。就这样。。。
总之就是先建个数组,把包含的ID全塞进去,再判断这个数组是不是包含了当前的技能ID……
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1