设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3308|回复: 3
打印 上一主题 下一主题

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

[复制链接]

Lv4.逐梦者

梦石
10
星屑
7687
在线时间
689 小时
注册时间
2017-1-9
帖子
636

我没有哭开拓者

跳转到指定楼层
1
发表于 2019-1-29 14:35:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2019-1-29 15:51:38 | 只看该作者


RUBY 代码复制
  1. #==============================================================================
  2. # ■ 特定属性攻击移除状态
  3. #------------------------------------------------------------------------------
  4. #  状态备注中写<移除属性 n,移除率 x%>
  5. #   例 <移除属性 3,移除率 90%>
  6. #
  7. #   遗憾的是,目前只能设置一个移除属性
  8. #==============================================================================
  9. class Game_Battler
  10.   #--------------------------------------------------------------------------
  11.   # ● [别名修改]受到伤害时解除状态
  12.   #--------------------------------------------------------------------------
  13.   alias remove_states_by_element_damage remove_states_by_damage
  14.   def remove_states_by_damage
  15.     remove_states_by_element_damage                  # 调用原方法
  16.     element_id = @result.item.damage.element_id      # 所受伤害属性
  17.     states.each do |state|
  18.       next unless state.remove_by_element?           # 由属性攻击移除?
  19.       next unless state.remove_element == element_id # 是所受伤害属性?
  20.       next unless rand(100) < state.remove_rate      # 概率符合?
  21.       remove_state(state.id)                         # 移除状态
  22.     end     
  23.   end
  24. end
  25.  
  26. class Game_ActionResult
  27.   #--------------------------------------------------------------------------
  28.   # ● [别名修改]生成伤害
  29.   #--------------------------------------------------------------------------
  30.   alias :make_damage_for_item :make_damage
  31.   def make_damage(value, item)
  32.     @item = item
  33.     make_damage_for_item(value, item)
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● [追加]物品/技能
  37.   #--------------------------------------------------------------------------
  38.   def item
  39.     @item
  40.   end
  41. end
  42.  
  43. class RPG::State
  44.   attr_reader :remove_element, :remove_rate
  45.   #--------------------------------------------------------------------------
  46.   # ● [追加]由属性攻击移除?
  47.   #--------------------------------------------------------------------------
  48.   def remove_by_element?
  49.     if note =~ /<移除属性[ :=]*(\d+)[ :=,]*移除率[ :=]*(\d+)%?>/
  50.       @remove_element, @remove_rate = $1.to_i, $2.to_i
  51.       return true
  52.     else
  53.       return false
  54.     end
  55.   end
  56. end


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

点评

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

评分

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

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-13 10:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表