查看: 3920|回复: 3

[已经解决] 怎样让指定状态在受到特定属性攻击时有一定几率解除(...

[复制链接]
梦石
10
星屑
7625
在线时间
684 小时
注册时间
2017-1-9
回帖
596

我没有哭开拓者

发表于 2019-1-29 14:35:41 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 世界第一中二 于 2019-1-30 16:52 编辑

rt
比如灼烧状态,在受到水属性伤害时,有90%几率解除
或者冰封状态,在受到火属性伤害时,有50%几率解除
类似这种效果应该怎么做?
ps:该伤害可以来自敌人、道具、以及自残技能,只要属性符合就能触发
这个B天天摸鱼,快点来个谁把他从被窝里拖出来
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2019-1-29 15:51:38 | 显示全部楼层
1.gif

[pre lang="ruby"]#==============================================================================
# ■ 特定属性攻击移除状态
#------------------------------------------------------------------------------
#  状态备注中写<移除属性 n,移除率 x%>
#   例 <移除属性 3,移除率 90%>
#
#   遗憾的是,目前只能设置一个移除属性
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● [别名修改]受到伤害时解除状态
  #--------------------------------------------------------------------------
  alias remove_states_by_element_damage remove_states_by_damage
  def remove_states_by_damage
    remove_states_by_element_damage                  # 调用原方法
    element_id = @result.item.damage.element_id      # 所受伤害属性
    states.each do |state|
      next unless state.remove_by_element?           # 由属性攻击移除?
      next unless state.remove_element == element_id # 是所受伤害属性?
      next unless rand(100) < state.remove_rate      # 概率符合?
      remove_state(state.id)                         # 移除状态
    end     
  end
end

class Game_ActionResult
  #--------------------------------------------------------------------------
  # ● [别名修改]生成伤害
  #--------------------------------------------------------------------------
  alias :make_damage_for_item :make_damage
  def make_damage(value, item)
    @item = item
    make_damage_for_item(value, item)
  end
  #--------------------------------------------------------------------------
  # ● [追加]物品/技能
  #--------------------------------------------------------------------------
  def item
    @item
  end
end

class RPG::State
  attr_reader :remove_element, :remove_rate
  #--------------------------------------------------------------------------
  # ● [追加]由属性攻击移除?
  #--------------------------------------------------------------------------
  def remove_by_element?
    if note =~ /<移除属性[ :=]*(\d+)[ :=,]*移除率[ :=]*(\d+)%?>/
      @remove_element, @remove_rate = $1.to_i, $2.to_i
      return true
    else
      return false
    end
  end
end[/pre]

新建工程测试通过,如果有问题请报告。
水平有限,暂时没办法做到多个属性来移除。
另外,没有测试与技能多属性脚本的兼容性,这个咱不负责0 0

点评

_(:3」∠)_不客气,这是学习的过程  发表于 2019-1-30 17:32
wwwwwww谢谢大佬!单属性够用了,实测有效~问题解决wwwwwww  发表于 2019-1-30 16:52

评分

参与人数 2星屑 +60 赞 +1 收起 理由
VIPArcher + 60 认可答案
世界第一中二 + 1 认可答案

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部