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

Project1

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

[有事请教] YEA属性吸收的拓展需求(固定属性有效度和拓展增伤)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
112
在线时间
68 小时
注册时间
2024-1-8
帖子
18
跳转到指定楼层
1
发表于 2025-2-2 16:05:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
100星屑
本帖最后由 神隐的主犯 于 2025-2-6 19:40 编辑

厚着脸皮继续求助。首先先粘贴一下我的yea的属性吸收代码。

首先是在下的需求是——在我方(或者敌人)持有xx状态或者装备了xx装备,习得xx被动技能的情况下
属性有效度会固定锁死。

(固定有效度方面)、

(举个例子,假如敌人目前已经持有了yea这个脚本的火属性吸收效果,如果此时玩家给敌人挂了一个龙炎buff————效果为火有效度锁定为200%)

(那么实际效果是吸收效果会消失,用伤害为100的火技能去打会扣200血。)

(如果多个锁定效果同时生效,取最大的有效度。比如火有效锁定为50%和火属性有效度锁定为200%,实际效果是火属性有效度200%)



(拓展增伤方面)

(我之前试了老鹰大佬的属性减抗与比例加成,但是老鹰佬的代码和yea的吸收冲突了。应用加成后吸收就会出错。)

(预想的效果为————主角获得xxbuff或者装备了某个饰品,自身造成xx属性伤害时增伤一定比例,多个效果为加法计算)【本效果不无视有效度】

(举例1——————敌人火抗200%,主角持有火伤增加50%的buff。使用100火伤的机能时伤害为100*2*1.5=300

举例2——————敌人持有yea的火吸收,主角持有火伤增加50%的buff。使用100火伤的机能时伤害为100*2*1.5*吸收=BOSS回血300点

举例3————敌人持有yea的火吸收,但是同时持有(固定火抗为200%),主角持有火伤增加50%的buff,使用100火伤的机能时伤害为100*2*1.5=300





ps——如果不方便同时搞,优先能实现和yea吸收不冲突的固定属性有效度也行








RUBY 代码复制
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - 属性吸收 v1.02
  4. # -- 最后更新: 2012.08.23
  5. # -- 使用难度: 简单
  6. # -- 需要脚本: 无
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-Element Absorb"] = true
  12.  
  13. #==============================================================================
  14. # ▼ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2012.01.23 - Compatibility Update: Doppelganger
  17. # 2011.12.14 - Started Script and Finished.
  18. #
  19. #==============================================================================
  20. # ▼ 介绍
  21. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  22. # 属性吸收是一个被RPG Maker VX Ace抛弃的,之前RM都有的功能.
  23. # 本脚本将重新为角色,职业,武器,护甲,敌人,状态增加属性吸收的特性。
  24. #
  25. # 如果目标有高于100%属性抗性的特性,则会吸收更多的伤害,有低于100%属性抗性的特性,
  26. # 会吸收较少的伤害.
  27. #
  28. #==============================================================================
  29. # ▼ 安装方式
  30. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  31. # 打开脚本编辑器,将本脚本拷贝/复制到一个在▼ 插件脚本之下▼ Main之上的新
  32. # 脚本页/槽中.记得保存你的工程以使脚本生效.
  33. #
  34. # -----------------------------------------------------------------------------
  35. # 角色备注 - 在数据库-角色中可以使用的备注.
  36. # -----------------------------------------------------------------------------
  37. # <属性吸收: x>
  38. # <属性吸收: x, x>
  39. # x号属性的伤害会被该角色吸收.
  40. #
  41. # -----------------------------------------------------------------------------
  42. # 职业备注 - 在数据库-职业中可以使用的备注.
  43. # -----------------------------------------------------------------------------
  44. # <属性吸收: x>
  45. # <属性吸收: x, x>
  46. # x号属性的伤害会被该职业吸收.
  47. #
  48. # -----------------------------------------------------------------------------
  49. # 武器备注 - 在数据库-武器中可以使用的备注.
  50. # -----------------------------------------------------------------------------
  51. # <属性吸收: x>
  52. # <属性吸收: x, x>
  53. # x号属性的伤害会被装备该武器的角色吸收.
  54. #
  55. # -----------------------------------------------------------------------------
  56. # 护甲备注 - 在数据库-护甲中可以使用的备注.
  57. # -----------------------------------------------------------------------------
  58. # <属性吸收: x>
  59. # <属性吸收: x, x>
  60. # x号属性的伤害会被装备该胡杰的角色吸收.
  61. #
  62. # -----------------------------------------------------------------------------
  63. # 敌人备注 - 在数据库-敌人中可以使用的备注.
  64. # -----------------------------------------------------------------------------
  65. # <属性吸收: x>
  66. # <属性吸收: x, x>
  67. # x号属性的伤害会被该敌人吸收.
  68. #
  69. # -----------------------------------------------------------------------------
  70. # 状态备注 - 在数据库-状态中可以使用的备注.
  71. # -----------------------------------------------------------------------------
  72. # <属性吸收: x>
  73. # <属性吸收: x, x>
  74. # x号属性的伤害会被获得该状态的角色/敌人吸收.
  75. #
  76. #==============================================================================
  77. # ▼ 兼容性
  78. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  79. # 本脚本仅为RPG Maker VX Ace编写.极不可能在无任何修改的情况下运行于RPG Maker VX.
  80. #
  81. #==============================================================================
  82.  
  83. module YEA
  84.   module ELEMENT_ABSORB
  85.  
  86.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  87.     # - 吸收设置 -
  88.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  89.     # 设定多属性伤害的最终效果。设定为true为属性吸收优先,false为无视属性吸收
  90.     # 伤害照常计算。
  91.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  92.     MULTI_ELEMENT_ABSORB_PRIORITY = true
  93.  
  94.   end # ELEMENT_ABSORB
  95. end # YEA
  96.  
  97. #==============================================================================
  98. # ▼ 编辑以下内容可能会出现电脑损坏、死机,电脑主人脑袋爆炸、昏迷、死亡或口臭
  99. # 所以编辑了后果自负。
  100. #==============================================================================
  101.  
  102. module YEA
  103.   module REGEXP
  104.   module BASEITEM
  105.  
  106.     ELE_ABSORB = /<(?:ELEMENT_ABSORB|属性吸收):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  107.  
  108.   end # BASEITEM
  109.   end # REGEXP
  110. end # YEA
  111.  
  112. #==============================================================================
  113. # ■ DataManager
  114. #==============================================================================
  115.  
  116. module DataManager
  117.  
  118.   #--------------------------------------------------------------------------
  119.   # alias method: load_database
  120.   #--------------------------------------------------------------------------
  121.   class <<self; alias load_database_eabs load_database; end
  122.   def self.load_database
  123.     load_database_eabs
  124.     load_notetags_eabs
  125.   end
  126.  
  127.   #--------------------------------------------------------------------------
  128.   # new method: load_notetags_eabs
  129.   #--------------------------------------------------------------------------
  130.   def self.load_notetags_eabs
  131.     groups = [$data_actors, $data_classes, $data_weapons, $data_armors,
  132.       $data_enemies, $data_states]
  133.     for group in groups
  134.       for obj in group
  135.         next if obj.nil?
  136.         obj.load_notetags_eabs
  137.       end
  138.     end
  139.   end
  140.  
  141. end # DataManager
  142.  
  143. #==============================================================================
  144. # ■ RPG::BaseItem
  145. #==============================================================================
  146.  
  147. class RPG::BaseItem
  148.  
  149.   #--------------------------------------------------------------------------
  150.   # public instance variables
  151.   #--------------------------------------------------------------------------
  152.   attr_accessor :element_absorb
  153.  
  154.   #--------------------------------------------------------------------------
  155.   # common cache: load_notetags_eabs
  156.   #--------------------------------------------------------------------------
  157.   def load_notetags_eabs
  158.     @element_absorb = []
  159.     #---
  160.     self.note.split(/[\r\n]+/).each { |line|
  161.       case line
  162.       #---
  163.       when YEA::REGEXP::BASEITEM::ELE_ABSORB
  164.         $1.scan(/\d+/).each { |num|
  165.         @element_absorb.push(num.to_i) if num.to_i > 0 }
  166.       #---
  167.       end
  168.     } # self.note.split
  169.     #---
  170.   end
  171.  
  172. end # RPG::BaseItem
  173.  
  174. #==============================================================================
  175. # ■ Game_BattlerBase
  176. #==============================================================================
  177.  
  178. class Game_BattlerBase
  179.  
  180.   #--------------------------------------------------------------------------
  181.   # alias method: element_rate
  182.   #--------------------------------------------------------------------------
  183.   alias game_battler_element_rate_eabs element_rate
  184.   def element_rate(element_id)
  185.     result = game_battler_element_rate_eabs(element_id)
  186.     if element_absorb?(element_id)
  187.       result = [result - 2.0, -0.01].min
  188.     end
  189.     return result
  190.   end
  191.  
  192.   #--------------------------------------------------------------------------
  193.   # new method: element_absorb?
  194.   #--------------------------------------------------------------------------
  195.   def element_absorb?(element_id)
  196.     if actor?
  197.       return true if self.actor.element_absorb.include?(element_id)
  198.       return true if self.class.element_absorb.include?(element_id)
  199.       for equip in equips
  200.         next if equip.nil?
  201.         return true if equip.element_absorb.include?(element_id)
  202.       end
  203.     else
  204.       return true if self.enemy.element_absorb.include?(element_id)
  205.       if $imported["YEA-Doppelganger"] && !self.class.nil?
  206.         return true if self.class.element_absorb.include?(element_id)
  207.       end
  208.     end
  209.     for state in states
  210.       next if state.nil?
  211.       return true if state.element_absorb.include?(element_id)
  212.     end
  213.     return false
  214.   end
  215.  
  216. end # Game_BattlerBase
  217.  
  218. #==============================================================================
  219. # ■ Game_Battler
  220. #==============================================================================
  221.  
  222. class Game_Battler < Game_BattlerBase
  223.  
  224.   #--------------------------------------------------------------------------
  225.   # alias method: elements_max_rate
  226.   #--------------------------------------------------------------------------
  227.   alias game_battler_elements_max_rate_eabs elements_max_rate
  228.   def elements_max_rate(elements)
  229.     result = game_battler_elements_max_rate_eabs(elements)
  230.     if YEA::ELEMENT_ABSORB::MULTI_ELEMENT_ABSORB_PRIORITY
  231.       for element_id in elements
  232.         next unless element_absorb?(element_id)
  233.         result = [result - 2.0, -0.01].min
  234.         return result
  235.       end
  236.     end
  237.     return result
  238.   end
  239.  
  240. end # Game_Battler
  241.  
  242. #==============================================================================
  243. #
  244. # ▼ End of File
  245. #
  246. #==============================================================================

Lv3.寻梦者

梦石
0
星屑
3135
在线时间
2506 小时
注册时间
2012-3-1
帖子
764
2
发表于 2025-2-4 03:42:26 | 只看该作者
本帖最后由 卡奥尼特 于 2025-2-5 21:19 编辑

嗯…… 关于这个,目前有一个类似的脚本,就是这个

说起来。

前阵子有个大佬给我写了类似的脚本,但是没有任何注释与使用说明,我根据自己的理解将注释部分进行了补充。

我把这个脚本贴出来。

脚本部分
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
68 小时
注册时间
2024-1-8
帖子
18
3
 楼主| 发表于 2025-2-5 19:13:47 | 只看该作者
卡奥尼特 发表于 2025-2-4 03:42
嗯…… 关于这个,目前有一个类似的脚本,就是这个。

说起来。

试了一下…………果然覆盖掉了yea的这个吸收属性……

点评

这样嗷,害。  发表于 2025-2-5 19:52
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3135
在线时间
2506 小时
注册时间
2012-3-1
帖子
764
4
发表于 2025-2-5 20:17:39 | 只看该作者
本帖最后由 卡奥尼特 于 2025-2-5 21:05 编辑
神隐的主犯 发表于 2025-2-5 19:13
试了一下…………果然覆盖掉了yea的这个吸收属性……



隐藏




姆,我好像搞反了,这个改的是攻击方的,不是对手方。
只适用于元素增伤。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-23 20:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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