Project1

标题: 求教一下设计一个不能吃药的角色问题 [打印本页]

作者: 踢腿水上飘    时间: 2018-11-28 21:13
标题: 求教一下设计一个不能吃药的角色问题
本帖最后由 踢腿水上飘 于 2018-11-29 06:41 编辑

我想设计一个不能对其使用恢复道具的角色
本来我的思路是在
RUBY 代码复制
  1. def item_test(user, item)
  2.     return false if item.for_dead_friend? != dead?
  3.     return true if $game_party.in_battle
  4.     return true if item.for_opponent?
  5.     return true if item.damage.recover? && item.damage.to_hp? && hp < mhp
  6.     return true if item.damage.recover? && item.damage.to_mp? && mp < mmp
  7.     return true if item_has_any_valid_effects?(user, item)
  8.     return false
  9.   end

里面插入一行
RUBY 代码复制
  1. return false if self ==  $game_actors[2]


结果发现战斗是还是可以对该角色使用恢复道具,只不过是不会产生效果罢了,离目标还差一点
如何才能做到直接不让对他用药?
作者: 余音·魔眼    时间: 2018-11-28 21:32
RUBY 代码复制
  1. class Game_Actor
  2.   alias hawkeye_no_recovery_item_item_conditions_met? item_conditions_met?
  3.   def item_conditions_met?(item)
  4.     hawkeye_no_recovery_item_item_conditions_met?(item) && !(/<禁用恢复道具>/ =~ actor.note && /<恢复道具>/ =~ item.note)
  5.   end
  6. end


使用方法:在恢复道具的备注区写<恢复道具>,在禁用恢复道具的角色的备注区写<禁用恢复道具>
作者: 踢腿水上飘    时间: 2018-11-29 06:41
余音·魔眼 发表于 2018-11-28 21:32
class Game_Actor
  alias hawkeye_no_recovery_item_item_conditions_met? item_conditions_met?
  def it ...

你这个和我的方法效果一样啊,在战斗中还是可以给她用药,只是用了药也没效果而已~
作者: 梦想家大魔王    时间: 2018-11-29 09:28
我觉得你应该在“选择使用物品的目标”这一步上做筛选。
作者: 余音·魔眼    时间: 2018-11-30 17:18
RUBY 代码复制
  1. class Game_Actor
  2.   alias hawkeye_no_recovery_item_item_test item_test
  3.   def item_test(user, item)
  4.     return false if /<禁用恢复道具>/ =~ actor.note && /<恢复道具>/ =~ item.note
  5.     hawkeye_no_recovery_item_item_test(user, item)
  6.   end
  7. end
  8. class Window_BattleItem
  9.   alias hawkeye_no_recovery_item_enable? enable?
  10.   def enable?(item)
  11.     actor = BattleManager.actor.actor
  12.     hawkeye_no_recovery_item_enable?(item) && !(/<禁用恢复道具>/ =~ actor.note && /<恢复道具>/ =~ item.note)
  13.   end
  14. end





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