Project1

标题: 如何做出特定条件下免疫阵亡的效果? [打印本页]

作者: MireniamuYuki    时间: 2018-2-18 13:04
标题: 如何做出特定条件下免疫阵亡的效果?
本帖最后由 MireniamuYuki 于 2018-2-22 15:55 编辑

我想做出类似Rabi-Ribi的“根性”的状态:角色受到比当前HP大的伤害时不会立刻死亡(保留1点HP),当角色HP=1时无效。前提是角色需要装备这个根性饰品。

我的思路就是条件判断:先做出一个免疫阵亡的状态;战斗时自动附加这个阵亡状态,当战斗中角色HP=1时去掉这个状态
比较蠢的一个方法就是事件的条件分歧套用
但是这样一来所有的敌群都要加上这个事件页,非常的繁琐麻烦,于是乎就想用脚本来解决
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 解除状态
  3.   #--------------------------------------------------------------------------
  4.   def remove_state(state_id)
  5.     if state?(state_id)
  6.       revive if state_id == death_state_id
  7.       erase_state(state_id)
  8.       refresh
  9.       @result.removed_states.push(state_id).uniq!
  10.     end
  11.   end

大概就应该在Game_Battler解除状态这里添什么,然而自己脚本盲不太懂……
-----答案------
感谢回答,自己再修改了一下就是这样了,在Game_ActionResult的73行下添加
RUBY 代码复制
  1. if @battler.state?(30) &&
  2.       @hp_damage > @battler.hp && @battler.hp > 1
  3.       @hp_damage = @battler.hp - 1
  4.     end

QQ截图20180218123400.png (7.52 KB, 下载次数: 24)

QQ截图20180218123400.png

作者: 百里_飞柳    时间: 2018-2-18 16:18
在 class Game_ActionResult 中的 make_damage 方法就是定下用于最后进行hp扣除的值
在方法后面加上
  1.     if @battler.state?(30) &&
  2.       @hp_damage > @battler.hp && @battler.hp_rate > 0.25
  3.       @hp_damage = @battler.hp - 1
  4.       @battler.remove_state(30)
  5.     end
复制代码

里面的 30 就是在非危机下受到致命一击时强制留下1点HP(本质是把行动结果的hp_damage变更为hp-1)的状态id
作者: 2256538860    时间: 2018-2-18 21:03
好帖强顶赞 w(゚Д゚)w
作者: MireniamuYuki    时间: 2018-2-21 19:50
结贴吧,解决了




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