Project1

标题: 不死身或固定保底HP的主角? [打印本页]

作者: 银河拱门    时间: 2020-6-29 08:33
标题: 不死身或固定保底HP的主角?
我的计划是做一名不死身的主角,
意即他就算 HP=0 也可以继续战斗,也不会触发 GameOver 之类的判定。

本来是在数据库里为他设置了 免疫[死亡]状态 的BUFF… 效果在回合制战斗里非常成功地实现了,
但现在换了(Moghunter的)Schala_ATB战斗后就… 铛铛!出毛病了!
他HP归零后会卡住不动… ATB系统大概还是把他算作无法行动的角色了…

在论坛里找到了免疫死亡状态的脚本,但还是不行。

因为很想保存ATB系统,所以得解决这个问题。
或许我也可以退一步,把主角设置成 “HP掉到1后就无法再继续掉下去了” 的感觉。
但也不知道这种要怎样办…?
作者: stidus    时间: 2020-6-29 08:56
建议把脚步贴出来,坛里的大佬们才好帮你解决
你试试再做个公共事件 每当角色hp等于0的时候 自动加一点血 看行不行
作者: 银河拱门    时间: 2020-6-29 09:42
本帖最后由 银河拱门 于 2020-6-28 17:45 编辑
MOG_ATB
MOG_ATB_Schala

是用到的ATB脚本↑
作者: 开关关    时间: 2020-6-29 16:02
根据3楼贴出来的脚本,我无脑查找了一下“hp”这个关键词,就找到了这一系列脚本片段......

以下列出我认为需要修改的片段。

脚本作者没有使用一个统一的方法判断角色是否死亡,这导致以下每个方法都要修改。

以下片段是从3楼脚本中复制出来的,尚未修改。

作者: cinderelmini    时间: 2020-6-29 17:36
处理hp=0时将角色设置为死亡状态的地方在Game_BattlerBase的refresh里,
如果要弄成1血不死的话,也许可以这样做……
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 刷新
  4.   #--------------------------------------------------------------------------
  5.   def refresh
  6.     state_resist_set.each {|state_id| erase_state(state_id) }
  7.     @hp = [[@hp, mhp].min, 0].max
  8.     @mp = [[@mp, mmp].min, 0].max
  9.     if self.actor? and self.id == 1 # 各种条件,精确判定到指定角色身上
  10.         @hp = 1 if @hp == 0
  11.     else
  12.       @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
  13.     end
  14.   end
  15. end
复制代码

作者: 银河拱门    时间: 2020-7-1 08:16
cinderelmini 发表于 2020-6-29 01:36
处理hp=0时将角色设置为死亡状态的地方在Game_BattlerBase的refresh里,
如果要弄成1血不死的话,也许可以这 ...

呜哇… 这好厉害!谢谢你><!




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