Project1
标题:
如何做到血量越少某种属性越高或受到攻击时增加某种属性
[打印本页]
作者:
giligilieye
时间:
2018-5-5 16:20
标题:
如何做到血量越少某种属性越高或受到攻击时增加某种属性
求问:
如何做到血量越少某种属性越高 或受到攻击时增加某种属性
用公共事件做不出来,没办法出来求助。
希望得到大佬帮助,万分感谢!
作者:
骷髅岛遗老
时间:
2018-5-5 16:20
# 战斗开始前附加状态或者HP到达一定比率时附加状态
#--------------------------------------------------------------------------
# ● 战斗开始前附加状态
#--------------------------------------------------------------------------
# 用法是在角色|职业|装备|敌人的备注栏
# 备注<被动状态:状态ID> 例如<被动状态:18> 那么就会在战斗开始前
# 会为该角色附加18号状态,战斗结束时移除这个状态。同时装备2个以
# 上的有被动状态的装备亦可叠加,都会附加上对应的状态。
#--------------------------------------------------------------------------
# ● HP到达一定比率时附加状态
#--------------------------------------------------------------------------
# 用法是在角色|职业|装备|敌人的备注栏
# 设定34行处设定HP比率并备注<危机:状态ID>可在设定的HP比率下附加状态
# 例:比率0.2 <危机:19> 就会在该角色HP低于20%的情况下附加19号状态
# 并于战斗结束时移除这个状态。
# 设定的状态请勾选战斗结束时解除
# <危机1:19>是HP低于50% <危机2:19>是25% <危机3:19> 是10%
#如果想低于特定HP自行设定,hp_rate改成mp_rate可以设置成MP低于某比例
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 战斗开始处理
#--------------------------------------------------------------------------
alias state_battle_start on_battle_start
def on_battle_start
state_battle_start
self.feature_objects.each {|obj|
self.add_state($1.to_i) if obj.note =~ /<被动状态:\s*(\d+)>/}
end
#--------------------------------------------------------------------------
# ● 重新整理
#--------------------------------------------------------------------------
def refresh
state_resist_set.each {|state_id| erase_state(state_id) }
@hp = [[@hp, mhp].min, 0].max
@mp = [[@mp, mmp].min, 0].max
if hp_rate <= 0.2 #设定触发状态的生命比率
self.feature_objects.each {|obj|
self.add_state($1.to_i) if obj.note =~ /<危机:\s*(\d+)>/}
else
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机:\s*(\d+)>/}
end
if hp_rate <= 0.5 #设定触发状态的生命比率
self.feature_objects.each {|obj|
self.add_state($1.to_i) if obj.note =~ /<危机1:\s*(\d+)>/}
else
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机1:\s*(\d+)>/}
end
if hp_rate <= 0.25 #设定触发状态的生命比率
self.feature_objects.each {|obj|
self.add_state($1.to_i) if obj.note =~ /<危机2:\s*(\d+)>/}
else
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机2:\s*(\d+)>/}
end
if hp_rate <= 0.01 #设定触发状态的生命比率
self.feature_objects.each {|obj|
self.add_state($1.to_i) if obj.note =~ /<危机3:\s*(\d+)>/}
else
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机3:\s*(\d+)>/}
end
@hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
end
#--------------------------------------------------------------------------
# ● 战斗结束时的处理
#--------------------------------------------------------------------------
alias state_on_battle_end on_battle_end
def on_battle_end
state_on_battle_end
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<被动状态:\s*(\d+)>/}
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机:\s*(\d+)>/}
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机1:\s*(\d+)>/}
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机2:\s*(\d+)>/}
self.feature_objects.each {|obj|
self.remove_state($1.to_i) if obj.note =~ /<危机3:\s*(\d+)>/}
end
end
复制代码
有一个这样的脚本,需要什么效果照着设置就行了
作者:
骷髅岛遗老
时间:
2018-5-5 18:06
还有一种比较蛇皮的方法是在Game_Battler计算伤害那栏end之前插入各种
if self.hp_rate <=0.2
self.add_state(66)
end #被攻击者HP比率低于20时,被攻击时附加66号状态,把这个66号状态设定成一个无限回合战斗结束时结束的加某种属性的状态就行了
这样不用额外插脚本担心啥时候出毛病冲突,想写还是挺简单的,就是这里加一点那里加一点就一大堆了
作者:
giligilieye
时间:
2018-5-5 18:26
骷髅岛遗老 发表于 2018-5-5 16:20
有一个这样的脚本,需要什么效果照着设置就行了
已经解决了问题,谢谢,把危机复制一下就好了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1