Project1

标题: 请问在地图上移动一格就自动扣除SP的效果要怎么实现呢? [打印本页]

作者: 水舞沨流    时间: 2021-6-15 07:17
标题: 请问在地图上移动一格就自动扣除SP的效果要怎么实现呢?
本帖最后由 水舞沨流 于 2021-6-15 07:19 编辑

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

另一方面也有点好奇有没有办法给中毒状态一个“血量保护”,让它扣血扣到指定数值就锁血,防止角色被毒死啥的
比如设置公共事件-条件是进入中毒状态后一旦血量低于50则强制让血量=50之类的……
有更加便捷简练的做法吗?
作者: 灯笼菜刀王    时间: 2021-6-15 10:27
  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 这个脚本前即可




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