查看: 4021|回复: 2

[已经解决] 请问在地图上移动一格就自动扣除SP的效果要怎么实现呢?

[复制链接]
梦石
0
星屑
1399
在线时间
147 小时
注册时间
2015-7-19
回帖
31
发表于 2021-6-15 07:17:50 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 水舞沨流 于 2021-6-15 07:19 编辑

简单来说就是“中毒状态”的变体,主要也很好奇中毒状态的实现原理,想知道可否根据它的原理举一反三出更多的效果来。
——————————————————————————————————————————————————————————————————————————————————

另一方面也有点好奇有没有办法给中毒状态一个“血量保护”,让它扣血扣到指定数值就锁血,防止角色被毒死啥的
比如设置公共事件-条件是进入中毒状态后一旦血量低于50则强制让血量=50之类的……
有更加便捷简练的做法吗?
梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2021-6-15 10:27:26 | 显示全部楼层
  1. LOCK_HP_SLIP_DAMAGE = 10  #锁血的比例,即中毒后HP低于10%不扣血
  2. #-------------------------------------------------------------------------
  3. class Game_Paryt
  4.   def check_map_slip_damage
  5.     for actor in @actors
  6.       if actor.hp > actor.maxhp.to_f/LOCK_HP_SLIP_DAMAGE and actor.slip_damage?
  7.         actor.hp -= [actor.maxhp / 100, 1].max
  8.         $game_screen.start_flash(Color.new(255,0,0,128), 4)
  9.       end
  10.     end
  11.     $game_temp.gameover = $game_party.all_dead?
  12.   end
  13.   def slip_sp
  14.     @actors.each{|i| i.sp -= 1 unless i.dead?}
  15.   end
  16. end
  17. class Game_Battler
  18.   def slip_damage_effect
  19.     self.damage = self.maxhp / 10
  20.     if self.damage.abs > self.maxhp.to_f/LOCK_HP_SLIP_DAMAGE
  21.       amp = [self.damage.abs * 15 / 100, 1].max
  22.       self.damage += rand(amp+1) + rand(amp+1) - amp
  23.     end
  24.     self.hp -= self.damage
  25.     return true
  26.   end
  27. end
  28. class Game_Player < Game_Character
  29.   alias oxox_steps increase_steps
  30.   def increase_steps
  31.     oxox_steps
  32.     $game_party.slip_sp
  33.   end
  34. end
复制代码


把它塞到 Main 这个脚本前即可

点评

感激!!!!抱歉今天才看到消息提醒!  发表于 2021-8-5 11:39

评分

参与人数 2星屑 +50 赞 +2 收起 理由
RyanBern + 50 + 1 我很赞同
taeckle + 1 大神威武!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部