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

Project1

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

[已经过期] 如何更改默认能力强化的效果?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1394
在线时间
267 小时
注册时间
2017-2-18
帖子
101

开拓者

跳转到指定楼层
1
发表于 2018-5-5 22:18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
VA默认的“能力强化”技能效果可以叠加2层,每层强化25%能力。我想更改这个数值,比如强化攻击1级强化15%,强化防御1级强化30%,该如何修改预置脚本?

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
2
发表于 2018-5-5 22:23:15 | 只看该作者
Game_BattlerBase里
  1. #--------------------------------------------------------------------------
  2.   # ● 获取普通能力的强化/弱化变化率
  3.   #--------------------------------------------------------------------------
  4.   def param_buff_rate(param_id)
  5.     @buffs[param_id] * 0.25 + 1.0
  6.   end
复制代码

这里修改,根据param_id来做判断更改比率
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
14790
在线时间
2106 小时
注册时间
2017-9-28
帖子
662
3
发表于 2018-5-6 15:24:50 | 只看该作者
本帖最后由 Nil2018 于 2018-5-6 15:26 编辑

还需要更多设定的话,可以使用yanfly (汉化合集:https://rpg.blue/thread-404903-1-1.html)的这个脚本:


RUBY 代码复制
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - 能力值变化&状态拓展 v1.07
  4. # -- 最后更新: 2012.01.26
  5. # -- 使用难度: 普通
  6. # -- 需要脚本: 无
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-Buff&StateManager"] = true
  12.  
  13. #==============================================================================
  14. # ▼ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2012.01.26 - Bug Fixed: Remaining turns aren't drawn in excess.
  17. # 2012.01.23 - Compatibility Update: Doppelganger
  18. # 2012.01.11 - Compatibility Update: Field State Effects
  19. # 2012.01.09 - Bug Fixed: Remaining turns weren't drawn properly again.
  20. # 2012.01.07 - Bug Fixed: Remaining turns weren't drawn properly.
  21. # 2011.12.30 - Bug Fixed: Decimals are no longer shown on states turns.
  22. # 2011.12.28 - Added <state x turn: +y> for actors, classes, weapons, armours,
  23. #              enemies, and states.
  24. # 2011.12.27 - Started Script and Finished.
  25. #
  26. #==============================================================================
  27. # ▼ 介绍
  28. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  29. # 本脚本可以让你能够对能力值变化&状态进行更多设定.
  30. #
  31. #==============================================================================
  32. # ▼ 安装方式
  33. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  34. # 打开脚本编辑器,将本脚本拷贝/复制到一个在▼ 插件脚本之下▼ Main之上的新
  35. # 脚本页/槽中.记得保存你的工程以使脚本生效.
  36. #
  37. # -----------------------------------------------------------------------------
  38. # 角色备注 - 在数据库-角色中可以使用的备注.
  39. # -----------------------------------------------------------------------------
  40. # <最大 强化次数 n: +x>
  41. # <最大 强化次数 n: -x>
  42. # 增加/减少该角色某能力可强化的等级数(可强化次数).注意最大等级数会被:
  43. # MAXIMUM_BUFF_LIMIT的设定限制.
  44. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  45. # 或 "ALL" .
  46. #
  47. # <最大 弱化次数 n: +x>
  48. # <最大 弱化次数 n: -x>
  49. # 增加/减少该角色某能力可弱化的等级数(可强化次数).注意最大等级数会被:
  50. # MAXIMUM_BUFF_LIMIT的设定限制.
  51. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  52. # 或 "ALL" .
  53. #
  54. # <状态 x 回合: +y>
  55. # <状态 x 回合: -y>
  56. # 增加/减少该角色被x号状态附加的持续回合数.此操作不会将状态持续回合数改变为0以下.
  57. #
  58. # -----------------------------------------------------------------------------
  59. # 职业备注 - 在数据库-角色中可以使用的备注.
  60. # -----------------------------------------------------------------------------
  61. # <最大 强化次数 n: +x>
  62. # <最大 强化次数 n: -x>
  63. # 增加/减少该职业的角色某能力可强化的等级数(可强化次数).注意最大等级数会被:
  64. # MAXIMUM_BUFF_LIMIT的设定限制.
  65. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  66. # 或 "ALL" .
  67. #
  68. # <最大 弱化次数 n: +x>
  69. # <最大 弱化次数 n: -x>
  70. # 增加/减少该职业的角色某能力可弱化的等级数(可强化次数).注意最大等级数会被:
  71. # MAXIMUM_BUFF_LIMIT的设定限制.
  72. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  73. # 或 "ALL" .
  74. #
  75. # <状态 x 回合: +y>
  76. # <状态 x 回合: -y>
  77. # 增加/减少该职业的角色被x号状态附加的持续回合数.此操作不会将状态持续回合数改变
  78. # 为0以下.
  79. #
  80. # -----------------------------------------------------------------------------
  81. # 技能备注 - 在数据库-技能中可以使用的备注.
  82. # -----------------------------------------------------------------------------
  83. # <状态 x 回合: +y>
  84. # <状态 x 回合: -y>
  85. # 增加/减少技能目标身上x号状态附加的剩余回合数.此操作不会将状态持续回合数改变
  86. # 为0以下.
  87. #
  88. # <强化次数 n 回合: +x>
  89. # <强化次数 n 回合: -x>
  90. # 当目标身上有某强化能力时,增加/减少该能力的持续回合数.
  91. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  92. # 或 "ALL" .
  93. #
  94. # <弱化次数 n 回合: +x>
  95. # <弱化次数 n 回合: -x>
  96. # 当目标身上有某弱化能力时,增加/减少该能力的持续回合数.
  97. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  98. # 或 "ALL" .
  99. #
  100. # -----------------------------------------------------------------------------
  101. # 物品备注 - 在数据库-物品中可以使用的备注.
  102. # -----------------------------------------------------------------------------
  103. # <状态 x 回合: +y>
  104. # <状态 x 回合: -y>
  105. # 增加/减少物品目标身上x号状态附加的剩余回合数.此操作不会将状态持续回合数改变
  106. # 为0以下.
  107. #
  108. # <强化次数 n 回合: +x>
  109. # <强化次数 n 回合: -x>
  110. # 当目标身上有某强化能力时,增加/减少该能力的持续回合数.
  111. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  112. # 或 "ALL" .
  113. #
  114. # <弱化次数 n 回合: +x>
  115. # <弱化次数 n 回合: -x>
  116. # 当目标身上有某弱化能力时,增加/减少该能力的持续回合数.
  117. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  118. # 或 "ALL" .
  119. #
  120. # -----------------------------------------------------------------------------
  121. # 武器备注 - 在数据库-武器中可以使用的备注.
  122. # -----------------------------------------------------------------------------
  123. # <最大 强化次数 n: +x>
  124. # <最大 强化次数 n: -x>
  125. # 增加/减少装备该武器的角色某能力可强化的等级数(可强化次数).注意最大等级数会被:
  126. # MAXIMUM_BUFF_LIMIT的设定限制.
  127. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  128. # 或 "ALL" .
  129. #
  130. # <最大 弱化次数 n: +x>
  131. # <最大 弱化次数 n: -x>
  132. # 增加/减少装备该武器的角色某能力可弱化的等级数(可强化次数).注意最大等级数会被:
  133. # MAXIMUM_BUFF_LIMIT的设定限制.
  134. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  135. # 或 "ALL" .
  136. #
  137. # <状态 x 回合: +y>
  138. # <状态 x 回合: -y>
  139. # 增加/减少装备该武器的角色被x号状态附加的持续回合数.此操作不会将状态持续回合数
  140. # 改变为0以下.
  141. #
  142. # -----------------------------------------------------------------------------
  143. # 护甲备注 - 在数据库-护甲中可以使用的备注.
  144. # -----------------------------------------------------------------------------
  145. # <最大 强化次数 n: +x>
  146. # <最大 强化次数 n: -x>
  147. # 增加/减少装备该护甲的角色某能力可强化的等级数(可强化次数).注意最大等级数会被:
  148. # MAXIMUM_BUFF_LIMIT的设定限制.
  149. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  150. # 或 "ALL" .
  151. #
  152. # <最大 弱化次数 n: +x>
  153. # <最大 弱化次数 n: -x>
  154. # 增加/减少装备该护甲的角色某能力可弱化的等级数(可强化次数).注意最大等级数会被:
  155. # MAXIMUM_BUFF_LIMIT的设定限制.
  156. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  157. # 或 "ALL" .
  158. #
  159. # <状态 x 回合: +y>
  160. # <状态 x 回合: -y>
  161. # 增加/减少装备该护甲的角色被x号状态附加的持续回合数.此操作不会将状态持续回合数
  162. # 改变为0以下.
  163. #
  164. # -----------------------------------------------------------------------------
  165. # 敌人备注 - 在数据库-敌人中可以使用的备注.
  166. # -----------------------------------------------------------------------------
  167. # <最大 强化次数 n: +x>
  168. # <最大 强化次数 n: -x>
  169. # 增加/减少装备该敌人某能力可强化的等级数(可强化次数).注意最大等级数会被:
  170. # MAXIMUM_BUFF_LIMIT的设定限制.
  171. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  172. # 或 "ALL" .
  173. #
  174. # <最大 弱化次数 n: +x>
  175. # <最大 弱化次数 n: -x>
  176. # 增加/减少装备该敌人某能力可弱化的等级数(可强化次数).注意最大等级数会被:
  177. # MAXIMUM_BUFF_LIMIT的设定限制.
  178. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  179. # 或 "ALL" .
  180. #
  181. # <状态 x 回合: +y>
  182. # <状态 x 回合: -y>
  183. # 增加/减少该敌人被x号状态附加的持续回合数.此操作不会将状态持续回合数改变为0以下.
  184. #
  185. # -----------------------------------------------------------------------------
  186. # 状态备注 - 在数据库-状态中可以使用的备注.
  187. # -----------------------------------------------------------------------------
  188. # <最大 强化次数 n: +x>
  189. # <最大 强化次数 n: -x>
  190. # 增加/减少目标被该状态附加时,某能力可强化的等级数(可强化次数).注意最大等级数
  191. # 会被:MAXIMUM_BUFF_LIMIT的设定限制.
  192. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  193. # 或 "ALL" .
  194. #
  195. # <最大 弱化次数 n: +x>
  196. # <最大 弱化次数 n: -x>
  197. # 增加/减少目标被该状态附加时,某能力可弱化的等级数(可强化次数).注意最大等级数
  198. # 会被:MAXIMUM_BUFF_LIMIT的设定限制.
  199. # 将"n"替换为 "MAXHP", "MAXMP", "ATK", "DEF","MAT", "MDF", "AGI", "LUK",
  200. # 或 "ALL" .
  201. #
  202. # <无回合数变化>
  203. # 当此状态附加于某对象,且该对象身上已经存在相同的状态时,不改变此状态剩余的持
  204. # 续回合数.
  205. #
  206. # <回合数重置>
  207. # 当此状态附加于某对象,且该对象身上已经存在相同的状态时,此状态剩余的持续回合
  208. # 数变为最大持续回合数.
  209. #
  210. # <回合数相加>
  211. # 当此状态附加于某对象,且该对象身上已经存在相同的状态时,此状态剩余的持续回合
  212. # 数变为当前剩余回合数与最大持续回合数的和.
  213. #
  214. # <状态 x 回合: +y>
  215. # <状态 x 回合: -y>
  216. # 当目标附加此状态时,增加/减少x号状态附加的剩余回合数.此操作不会将状态持续回合数
  217. # 改变为0以下.
  218. #
  219. #==============================================================================
  220. # ▼ 兼容性
  221. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  222. # 本脚本仅为RPG Maker VX Ace编写.极不可能在无任何修改的情况下运行于RPG Maker VX.
  223. #
  224. #==============================================================================
  225.  
  226. module YEA
  227.   module BUFF_STATE_MANAGER
  228.  
  229.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  230.     # - 状态图标剩余回合数字 -
  231.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  232.  
  233.     SHOW_REMAINING_TURNS = true     # 是否在状态图标中显示状态剩余回合数字?
  234.     TURNS_REMAINING_SIZE = 18       # 剩余回合数字的字体大小.
  235.     TURNS_REMAINING_Y    = -4       # 调整数字位置.
  236.  
  237.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  238.     # - 强化/弱化能力设置 -
  239.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  240.  
  241.     DEFAULT_BUFF_LIMIT = 4     # 强化能力的普通次数. 默认: 2 (?)
  242.     MAXIMUM_BUFF_LIMIT = 8     # 强化能力的最大次数. 默认: 2
  243.  
  244.     # 强化/弱化能力的计算公式.
  245.     BUFF_BOOST_FORMULA = "buff_level(param_id) * 0.25 + 1.0"
  246.  
  247.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  248.     # - 状态重复附加设置 -
  249.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  250.     #  调整同一状态重复附加的效果.
  251.     #
  252.     #   0 - 无变化. 默认 VX 的设置.
  253.     #   1 - 将剩余回合数重置为最大回合数. 默认 VX Ace 的设置.
  254.     #   2 - 回合数相加.
  255.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  256.     REAPPLY_STATE_RULES = 1
  257.  
  258.   end # BUFF_STATE_MANAGER
  259. end # YEA
  260.  
  261. #==============================================================================
  262. # ▼ 编辑以下内容可能会出现电脑损坏、死机,电脑主人脑袋爆炸、昏迷、死亡或口臭
  263. # 所以编辑了后果自负。
  264. #==============================================================================
  265.  
  266. module YEA
  267.   module REGEXP
  268.   module BASEITEM
  269.  
  270.     MAX_BUFF = /<(?:MAX_BUFF|最大 强化次数)[ ](.*):[ ]([\+\-]\d+)>/i
  271.     MAX_DEBUFF = /<(?:MAX_DEBUFF|最大 弱化次数)[ ](.*):[ ]([\+\-]\d+)>/i
  272.     CHANGE_STATE_TURN = /<(?:STATES|状态)[ ](\d+)[ ](?:TURN|回合):[ ]([\+\-]\d+)>/i
  273.     STATE_REAPPLY_IGNORE = /<(?:REAPPLY_IGNORE|无回合数变化)>/i
  274.     STATE_REAPPLY_RESET = /<(?:REAPPLY_RESET|回合数重置)>/i
  275.     STATE_REAPPLY_TOTAL = /<(?:REAPPLY_TOTAL|回合数相加)>/i
  276.  
  277.   end # BASEITEM
  278.   module USABLEITEM
  279.  
  280.     CHANGE_STATE_TURN = /<(?:状态)[ ](\d+)[ ](?:TURN|回合):[ ]([\+\-]\d+)>/i
  281.     CHANGE_BUFF_TURN = /<(?:强化次数)[ ](.*)[ ](?:TURN|回合):[ ]([\+\-]\d+)>/i
  282.     CHANGE_DEBUFF_TURN = /<(?:弱化次数)[ ](.*)[ ](?:TURN|回合):[ ]([\+\-]\d+)>/i
  283.  
  284.   end # USABLEITEM
  285.   end # REGEXP
  286. end # YEA
  287.  
  288. #==============================================================================
  289. # ■ DataManager
  290. #==============================================================================
  291.  
  292. module DataManager
  293.  
  294.   #--------------------------------------------------------------------------
  295.   # alias method: load_database
  296.   #--------------------------------------------------------------------------
  297.   class <<self; alias load_database_bsm load_database; end
  298.   def self.load_database
  299.     load_database_bsm
  300.     load_notetags_bsm
  301.   end
  302.  
  303.   #--------------------------------------------------------------------------
  304.   # new method: load_notetags_bsm
  305.   #--------------------------------------------------------------------------
  306.   def self.load_notetags_bsm
  307.     groups = [$data_actors, $data_classes, $data_weapons, $data_armors,
  308.       $data_enemies, $data_states, $data_skills, $data_items]
  309.     for group in groups
  310.       for obj in group
  311.         next if obj.nil?
  312.         obj.load_notetags_bsm
  313.       end
  314.     end
  315.   end
  316.  
  317. end # DataManager
  318.  
  319. #==============================================================================
  320. # ■ RPG::BaseItem
  321. #==============================================================================
  322.  
  323. class RPG::BaseItem
  324.  
  325.   #--------------------------------------------------------------------------
  326.   # public instance variables
  327.   #--------------------------------------------------------------------------
  328.   attr_accessor :max_buff
  329.   attr_accessor :max_debuff
  330.   attr_accessor :change_state_turns
  331.   attr_accessor :state_reapply_rules
  332.  
  333.   #--------------------------------------------------------------------------
  334.   # common cache: load_notetags_bsm
  335.   #--------------------------------------------------------------------------
  336.   def load_notetags_bsm
  337.     @change_state_turns = {}
  338.     @max_buff = {
  339.       0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0 }
  340.     @max_debuff = {
  341.       0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0 }
  342.     if self.is_a?(RPG::State)
  343.       @state_reapply_rules = YEA::BUFF_STATE_MANAGER::REAPPLY_STATE_RULES
  344.     end
  345.     #---
  346.     self.note.split(/[\r\n]+/).each { |line|
  347.       case line
  348.       #---
  349.       when YEA::REGEXP::BASEITEM::MAX_BUFF
  350.         case $1.upcase
  351.         when "MAXHP", "MHP", "HP"
  352.           @max_buff[0] = $2.to_i
  353.         when "MAXMP", "MMP", "MP", "MAXSP", "SP", "MSP"
  354.           @max_buff[1] = $2.to_i
  355.         when "ATK"
  356.           @max_buff[2] = $2.to_i
  357.         when "DEF"
  358.           @max_buff[3] = $2.to_i
  359.         when "MAT", "INT", "SPI"
  360.           @max_buff[4] = $2.to_i
  361.         when "MDF", "RES"
  362.           @max_buff[5] = $2.to_i
  363.         when "AGI"
  364.           @max_buff[6] = $2.to_i
  365.         when "LUK"
  366.           @max_buff[7] = $2.to_i
  367.         when "ALL"
  368.           for i in 0...8; @max_buff[i] = $2.to_i; end
  369.         end
  370.       #---
  371.       when YEA::REGEXP::BASEITEM::MAX_DEBUFF
  372.         case $1.upcase
  373.         when "MAXHP", "MHP", "HP"
  374.           @max_debuff[0] = $2.to_i
  375.         when "MAXMP", "MMP", "MP", "MAXSP", "SP", "MSP"
  376.           @max_debuff[1] = $2.to_i
  377.         when "ATK"
  378.           @max_debuff[2] = $2.to_i
  379.         when "DEF"
  380.           @max_debuff[3] = $2.to_i
  381.         when "MAT", "INT", "SPI"
  382.           @max_debuff[4] = $2.to_i
  383.         when "MDF", "RES"
  384.           @max_debuff[5] = $2.to_i
  385.         when "AGI"
  386.           @max_debuff[6] = $2.to_i
  387.         when "LUK"
  388.           @max_debuff[7] = $2.to_i
  389.         when "ALL"
  390.           for i in 0...8; @max_debuff[i] = $2.to_i; end
  391.         end
  392.       #---
  393.       when YEA::REGEXP::BASEITEM::CHANGE_STATE_TURN
  394.         @change_state_turns[$1.to_i] = $2.to_i
  395.       #---
  396.       when YEA::REGEXP::BASEITEM::STATE_REAPPLY_IGNORE
  397.         next unless self.is_a?(RPG::State)
  398.         @state_reapply_rules = 0
  399.       when YEA::REGEXP::BASEITEM::STATE_REAPPLY_RESET
  400.         next unless self.is_a?(RPG::State)
  401.         @state_reapply_rules = 1
  402.       when YEA::REGEXP::BASEITEM::STATE_REAPPLY_TOTAL
  403.         next unless self.is_a?(RPG::State)
  404.         @state_reapply_rules = 2
  405.       #---
  406.       end
  407.     } # self.note.split
  408.     #---
  409.   end
  410.  
  411. end # RPG::BaseItem
  412.  
  413. #==============================================================================
  414. # ■ RPG::UsableItem
  415. #==============================================================================
  416.  
  417. class RPG::UsableItem < RPG::BaseItem
  418.  
  419.   #--------------------------------------------------------------------------
  420.   # public instance variables
  421.   #--------------------------------------------------------------------------
  422.   attr_accessor :change_state_turns
  423.   attr_accessor :change_buff_turns
  424.   attr_accessor :change_debuff_turns
  425.  
  426.   #--------------------------------------------------------------------------
  427.   # common cache: load_notetags_bsm
  428.   #--------------------------------------------------------------------------
  429.   def load_notetags_bsm
  430.     @change_state_turns = {}
  431.     @change_buff_turns = {}
  432.     @change_debuff_turns = {}
  433.     #---
  434.     self.note.split(/[\r\n]+/).each { |line|
  435.       case line
  436.       #---
  437.       when YEA::REGEXP::USABLEITEM::CHANGE_STATE_TURN
  438.         @change_state_turns[$1.to_i] = $2.to_i
  439.       when YEA::REGEXP::USABLEITEM::CHANGE_BUFF_TURN
  440.         case $1.upcase
  441.         when "MAXHP", "MHP", "HP"
  442.           @change_buff_turns[0] = $2.to_i
  443.         when "MAXMP", "MMP", "MP", "MAXSP", "SP", "MSP"
  444.           @change_buff_turns[1] = $2.to_i
  445.         when "ATK"
  446.           @change_buff_turns[2] = $2.to_i
  447.         when "DEF"
  448.           @change_buff_turns[3] = $2.to_i
  449.         when "MAT", "INT", "SPI"
  450.           @change_buff_turns[4] = $2.to_i
  451.         when "MDF", "RES"
  452.           @change_buff_turns[5] = $2.to_i
  453.         when "AGI"
  454.           @change_buff_turns[6] = $2.to_i
  455.         when "LUK"
  456.           @change_buff_turns[7] = $2.to_i
  457.         when "ALL"
  458.           for i in 0...8; @change_buff_turns[i] = $2.to_i; end
  459.         end
  460.       when YEA::REGEXP::USABLEITEM::CHANGE_DEBUFF_TURN
  461.         case $1.upcase
  462.         when "MAXHP", "MHP", "HP"
  463.           @change_debuff_turns[0] = $2.to_i
  464.         when "MAXMP", "MMP", "MP", "MAXSP", "SP", "MSP"
  465.           @change_debuff_turns[1] = $2.to_i
  466.         when "ATK"
  467.           @change_debuff_turns[2] = $2.to_i
  468.         when "DEF"
  469.           @change_debuff_turns[3] = $2.to_i
  470.         when "MAT", "INT", "SPI"
  471.           @change_debuff_turns[4] = $2.to_i
  472.         when "MDF", "RES"
  473.           @change_debuff_turns[5] = $2.to_i
  474.         when "AGI"
  475.           @change_debuff_turns[6] = $2.to_i
  476.         when "LUK"
  477.           @change_debuff_turns[7] = $2.to_i
  478.         when "ALL"
  479.           for i in 0...8; @change_debuff_turns[i] = $2.to_i; end
  480.         end
  481.       end
  482.     } # self.note.split
  483.     #---
  484.   end
  485.  
  486. end # class RPG::UsableItem
  487.  
  488. #==============================================================================
  489. # ■ Game_BattlerBase
  490. #==============================================================================
  491.  
  492. class Game_BattlerBase
  493.  
  494.   #--------------------------------------------------------------------------
  495.   # overwrite method: param_buff_rate
  496.   #--------------------------------------------------------------------------
  497.   def param_buff_rate(param_id)
  498.     return eval(YEA::BUFF_STATE_MANAGER::BUFF_BOOST_FORMULA)
  499.   end
  500.  
  501.   #--------------------------------------------------------------------------
  502.   # new method: max_buff_limit
  503.   #--------------------------------------------------------------------------
  504.   def max_buff_limit(param_id)
  505.     n = YEA::BUFF_STATE_MANAGER::DEFAULT_BUFF_LIMIT
  506.     if actor?
  507.       n += self.actor.max_buff[param_id]
  508.       n += self.class.max_buff[param_id]
  509.       for equip in equips
  510.         next if equip.nil?
  511.         n += equip.max_buff[param_id]
  512.       end
  513.     else
  514.       n += self.enemy.max_buff[param_id]
  515.       if $imported["YEA-Doppelganger"] && !self.class.nil?
  516.         n += self.class.max_buff[param_id]
  517.       end
  518.     end
  519.     for state in states
  520.       next if state.nil?
  521.       n += state.max_buff[param_id]
  522.     end
  523.     return [[n.to_i, 0].max, YEA::BUFF_STATE_MANAGER::MAXIMUM_BUFF_LIMIT].min
  524.   end
  525.  
  526.   #--------------------------------------------------------------------------
  527.   # new method: max_debuff_limit
  528.   #--------------------------------------------------------------------------
  529.   def max_debuff_limit(param_id)
  530.     n = YEA::BUFF_STATE_MANAGER::DEFAULT_BUFF_LIMIT
  531.     if actor?
  532.       n += self.actor.max_debuff[param_id]
  533.       n += self.class.max_debuff[param_id]
  534.       for equip in equips
  535.         next if equip.nil?
  536.         n += equip.max_debuff[param_id]
  537.       end
  538.     else
  539.       n += self.enemy.max_debuff[param_id]
  540.       if $imported["YEA-Doppelganger"] && !self.class.nil?
  541.         n += self.class.max_debuff[param_id]
  542.       end
  543.     end
  544.     for state in states
  545.       next if state.nil?
  546.       n += state.max_debuff[param_id]
  547.     end
  548.     return [[n.to_i, 0].max, YEA::BUFF_STATE_MANAGER::MAXIMUM_BUFF_LIMIT].min
  549.   end
  550.  
  551.   #--------------------------------------------------------------------------
  552.   # overwrite method: buff_icon_index
  553.   #--------------------------------------------------------------------------
  554.   def buff_icon_index(buff_level, param_id)
  555.     if buff_level > 0
  556.       return ICON_BUFF_START + ([buff_level - 1, 1].min) * 8 + param_id
  557.     elsif buff_level < 0
  558.       return ICON_DEBUFF_START + ([-buff_level - 1, -1].max) * 8 + param_id
  559.     else
  560.       return 0
  561.     end
  562.   end
  563.  
  564.   #--------------------------------------------------------------------------
  565.   # new method: buff_turns
  566.   #--------------------------------------------------------------------------
  567.   def buff_turns(param_id)
  568.     return @buff_turns.include?(param_id) ? @buff_turns[param_id] : 0
  569.   end
  570.  
  571.   #--------------------------------------------------------------------------
  572.   # new method: buff_level
  573.   #--------------------------------------------------------------------------
  574.   def buff_level(param_id)
  575.     return 0 if @buffs[param_id].nil?
  576.     buff_maximum = max_buff_limit(param_id)
  577.     debuff_maximum = max_debuff_limit(param_id)
  578.     return [[@buffs[param_id], buff_maximum].min, -debuff_maximum].max
  579.   end
  580.  
  581.   #--------------------------------------------------------------------------
  582.   # new method: buff_change_turns
  583.   #--------------------------------------------------------------------------
  584.   def buff_change_turns(param_id, value)
  585.     @buff_turns[param_id] = 0 if @buff_turns[param_id].nil?
  586.     @buff_turns[param_id] = [value, 0].max
  587.   end
  588.  
  589.   #--------------------------------------------------------------------------
  590.   # new method: state_turns
  591.   #--------------------------------------------------------------------------
  592.   def state_turns(state_id)
  593.     state_id = state_id.id if state_id.is_a?(RPG::State)
  594.     return @state_turns.include?(state_id) ? @state_turns[state_id] : 0
  595.   end
  596.  
  597.   #--------------------------------------------------------------------------
  598.   # new method: state_steps
  599.   #--------------------------------------------------------------------------
  600.   def state_steps(state_id)
  601.     state_id = state_id.id if state_id.is_a?(RPG::State)
  602.     return @state_steps.include?(state_id) ? @state_steps[state_id] : 0
  603.   end
  604.  
  605.   #--------------------------------------------------------------------------
  606.   # new method: state_change_turns
  607.   #--------------------------------------------------------------------------
  608.   def state_change_turns(state_id, value)
  609.     state_id = state_id.id if state_id.is_a?(RPG::State)
  610.     @state_turns[state_id] = 0 if @state_turns[state_id].nil?
  611.     @state_turns[state_id] = [value, 0].max
  612.   end
  613.  
  614.   #--------------------------------------------------------------------------
  615.   # new method: state_turn_mod
  616.   #--------------------------------------------------------------------------
  617.   def state_turn_mod(state_id)
  618.     return 0 if $data_states[state_id].nil?
  619.     state = $data_states[state_id]
  620.     n = state.min_turns + rand(1 + [state.max_turns - state.min_turns, 0].max)
  621.     if actor?
  622.       if self.actor.change_state_turns.include?(state_id)
  623.         n += self.actor.change_state_turns[state_id]
  624.       end
  625.       if self.class.change_state_turns.include?(state_id)
  626.         n += self.class.change_state_turns[state_id]
  627.       end
  628.       for equip in equips
  629.         next if equip.nil?
  630.         next unless equip.change_state_turns.include?(state_id)
  631.         n += equip.change_state_turns[state_id]
  632.       end
  633.     else
  634.       if self.enemy.change_state_turns.include?(state_id)
  635.         n += self.enemy.change_state_turns[state_id]
  636.       end
  637.       if $imported["YEA-Doppelganger"] && !self.class.nil?
  638.         if self.class.change_state_turns.include?(state_id)
  639.           n += self.class.change_state_turns[state_id]
  640.         end
  641.       end
  642.     end
  643.     for state in states
  644.       next if state.nil?
  645.       next unless state.change_state_turns.include?(state_id)
  646.       n += state.change_state_turns[state_id]
  647.     end
  648.     return [n, 0].max
  649.   end
  650.  
  651. end # Game_BattlerBase
  652.  
  653. #==============================================================================
  654. # ■ Game_Battler
  655. #==============================================================================
  656.  
  657. class Game_Battler < Game_BattlerBase
  658.  
  659.   #--------------------------------------------------------------------------
  660.   # overwrite method: buff_max?
  661.   #--------------------------------------------------------------------------
  662.   def buff_max?(param_id)
  663.     return @buffs[param_id] == max_buff_limit(param_id)
  664.   end
  665.  
  666.   #--------------------------------------------------------------------------
  667.   # overwrite method: debuff_max?
  668.   #--------------------------------------------------------------------------
  669.   def debuff_max?(param_id)
  670.     return @buffs[param_id] == -max_debuff_limit(param_id)
  671.   end
  672.  
  673.   #--------------------------------------------------------------------------
  674.   # overwrite method: add_state
  675.   #--------------------------------------------------------------------------
  676.   def add_state(state_id)
  677.     return if $data_states[state_id].nil?
  678.     state_rules = $data_states[state_id].state_reapply_rules
  679.     return if state_rules == 0 && state?(state_id)
  680.     if state_addable?(state_id)
  681.       add_new_state(state_id) unless state?(state_id)
  682.       reset_state_counts(state_id) if state_rules == 1
  683.       total_state_counts(state_id) if state_rules == 2
  684.       @result.added_states.push(state_id).uniq!
  685.     end
  686.   end
  687.  
  688.   #--------------------------------------------------------------------------
  689.   # overwrite method: state_removed?
  690.   #--------------------------------------------------------------------------
  691.   def state_removed?(state_id)
  692.     return false
  693.   end
  694.  
  695.   #--------------------------------------------------------------------------
  696.   # overwrite method: reset_state_counts
  697.   #--------------------------------------------------------------------------
  698.   def reset_state_counts(state_id)
  699.     state = $data_states[state_id]
  700.     @state_turns[state_id] = state_turn_mod(state_id)
  701.     @state_steps[state_id] = state.steps_to_remove
  702.   end
  703.  
  704.   #--------------------------------------------------------------------------
  705.   # new method: total_state_counts
  706.   #--------------------------------------------------------------------------
  707.   def total_state_counts(state_id)
  708.     state = $data_states[state_id]
  709.     value = state_turn_mod(state_id)
  710.     state_change_turns(state_id, value + state_turns(state_id))
  711.   end
  712.  
  713.   #--------------------------------------------------------------------------
  714.   # alias method: item_user_effect
  715.   #--------------------------------------------------------------------------
  716.   alias game_battler_item_user_effect_bsm item_user_effect
  717.   def item_user_effect(user, item)
  718.     game_battler_item_user_effect_bsm(user, item)
  719.     apply_state_turn_changes(user, item)
  720.     apply_buff_turn_changes(user, item)
  721.     apply_debuff_turn_changes(user, item)
  722.   end
  723.  
  724.   #--------------------------------------------------------------------------
  725.   # new method: apply_state_turn_changes
  726.   #--------------------------------------------------------------------------
  727.   def apply_state_turn_changes(user, item)
  728.     return if item.nil?
  729.     return unless $game_party.in_battle
  730.     for key in item.change_state_turns
  731.       state_id = key[0]
  732.       next if field_state?(state_id)
  733.       next unless state?(state_id)
  734.       next unless $data_states[state_id].auto_removal_timing > 0
  735.       state_change_turns(state_id, key[1] + state_turns(state_id))
  736.       remove_state(state_id) if state_turns(state_id) <= 0
  737.       @result.success = true
  738.     end
  739.   end
  740.  
  741.   #--------------------------------------------------------------------------
  742.   # new method: field_state?
  743.   #--------------------------------------------------------------------------
  744.   def field_state?(state_id)
  745.     return false unless $imported["YEA-FieldStateEffects"]
  746.     return false unless $game_party.in_battle
  747.     return false unless SceneManager.scene_is?(Scene_Battle)
  748.     return BattleManager.field_state?(state_id)
  749.   end
  750.  
  751.   #--------------------------------------------------------------------------
  752.   # new method: apply_buff_turn_changes
  753.   #--------------------------------------------------------------------------
  754.   def apply_buff_turn_changes(user, item)
  755.     return if item.nil?
  756.     return unless $game_party.in_battle
  757.     for key in item.change_buff_turns
  758.       param_id = key[0]
  759.       next unless buff?(param_id)
  760.       buff_change_turns(param_id, key[1] + buff_turns(param_id))
  761.       remove_buff(param_id) if buff_turns(param_id) < 0
  762.       @result.success = true
  763.     end
  764.   end
  765.  
  766.   #--------------------------------------------------------------------------
  767.   # new method: apply_debuff_turn_changes
  768.   #--------------------------------------------------------------------------
  769.   def apply_debuff_turn_changes(user, item)
  770.     return if item.nil?
  771.     return unless $game_party.in_battle
  772.     for key in item.change_debuff_turns
  773.       param_id = key[0]
  774.       next unless debuff?(param_id)
  775.       buff_change_turns(param_id, key[1] + buff_turns(param_id))
  776.       remove_buff(param_id) if buff_turns(param_id) < 0
  777.       @result.success = true
  778.     end
  779.   end
  780.  
  781. end # Game_Battler
  782.  
  783. #==============================================================================
  784. # ■ Window_Base
  785. #==============================================================================
  786.  
  787. class Window_Base < Window
  788.  
  789.   #--------------------------------------------------------------------------
  790.   # alias method: draw_actor_icons
  791.   #--------------------------------------------------------------------------
  792.   alias window_base_draw_actor_icons_bsm draw_actor_icons
  793.   def draw_actor_icons(actor, dx, dy, dw = 96)
  794.     window_base_draw_actor_icons_bsm(actor, dx, dy, dw)
  795.     draw_actor_icon_turns(actor, dx, dy, dw)
  796.   end
  797.  
  798.   #--------------------------------------------------------------------------
  799.   # new method: draw_actor_icon_turns
  800.   #--------------------------------------------------------------------------
  801.   def draw_actor_icon_turns(actor, dx, dy, dw)
  802.     return unless YEA::BUFF_STATE_MANAGER::SHOW_REMAINING_TURNS
  803.     return unless SceneManager.scene_is?(Scene_Battle)
  804.     reset_font_settings
  805.     contents.font.out_color.alpha = 255
  806.     contents.font.bold = true
  807.     contents.font.size = YEA::BUFF_STATE_MANAGER::TURNS_REMAINING_SIZE
  808.     bx = dx
  809.     dy += YEA::BUFF_STATE_MANAGER::TURNS_REMAINING_Y
  810.     #---
  811.     for state in actor.states
  812.       break if dx + 24 >= dw + bx
  813.       next if state.icon_index <= 0
  814.       turns = actor.state_turns(state.id).to_i
  815.       if $imported["YEA-FieldStateEffects"] &&
  816.       BattleManager.field_state?(state.id)
  817.         turns = BattleManager.field_state_turns(state.id)
  818.       end
  819.       if state.auto_removal_timing > 0 && turns < 100
  820.         draw_text(dx, dy, 24, line_height, turns, 2)
  821.       end
  822.       dx += 24
  823.     end
  824.     #---
  825.     for i in 0...8
  826.       break if dx + 24 >= dw + bx
  827.       next if actor.buff_icon_index(actor.buff_level(i), i) == 0
  828.       turns = actor.buff_turns(i).to_i
  829.       draw_text(dx, dy, 24, line_height, turns, 2) if turns < 100
  830.       dx += 24
  831.     end
  832.     #---
  833.     contents.font.out_color = Font.default_out_color
  834.     reset_font_settings
  835.   end
  836.  
  837. end # Window_Base
  838.  
  839. #==============================================================================
  840. #
  841. # ▼ End of File
  842. #
  843. #==============================================================================
VA外站脚本汉化群:226308173   |    部分远古文件备份:https://wwzv.lanzoue.com/b02rac5pc  密码:acgm
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 06:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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