赞 | 153 |
VIP | 10 |
好人卡 | 39 |
积分 | 93 |
经验 | 146191 |
最后登录 | 2024-5-6 |
在线时间 | 2504 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 9280
- 在线时间
- 2504 小时
- 注册时间
- 2011-5-20
- 帖子
- 15389
|
- #==============================================================================
- # ■ 修改属性设置,允许属性吸收等效果
- #------------------------------------------------------------------------------
- # RPG VX Ace默认不允许属性被吸收,最低的属性有效度为0,最高为10倍(可叠乘)
- # 本脚本的原理:将属性设置的叠乘计算改为叠加计算,从而允许属性吸收效果
- # 数据库设置:
- # 1.当只有1条属性抵抗起作用时,和原来的算法相同
- # 2.当有多条属性抵抗起作用时,其效果倍率各自减100%后叠加计算,
- # 如“[冰]*200”和“[冰]*250”叠加的效果为“[冰]*350”
- # 如“[冰]*150”和“[冰]*50”叠加的效果为“[冰]*100”
- # 3.现在“某属性*0”的效果为倍率-1,所以如果要实现属性100%吸收,可如下设置
- # “[冰]*0”和“[冰]*0”叠加,效果即为倍率减2,即“[冰]*-100”
- # 类似的,若“[冰]*0”三重叠加,效果即为倍率减3,即“[冰]*-200”,双倍吸收
- # 4.如果要实现属性X%吸收(X<100),可如下设置
- # “[冰]*0”和“[冰]*(100-x)”叠加
- #==============================================================================
- class Game_BattlerBase
- #--------------------------------------------------------------------------
- # ● 计算属性抵抗
- #--------------------------------------------------------------------------
- def features_elem(code, id)
- features_with_id(code, id).inject(1.0) {|r, ft| r += ft.value - 1}
- end
- #--------------------------------------------------------------------------
- # ● 获取属性抗性
- #--------------------------------------------------------------------------
- def element_rate(element_id)
- features_elem(FEATURE_ELEMENT_RATE, element_id)
- end
- end
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 获取属性的最大修正值,返回所有属性中最有效的一个
- # elements : 属性 ID 数组
- #--------------------------------------------------------------------------
- def elements_max_rate(elements)
- elements.inject([]) {|r, i| r.push(element_rate(i)) }.max
- end
- end
- module Vocab
- ActorDrainRev = "%s逆向吸取了%s点%s!"
- EnemyDrainRev = "%s逆向吸取了%s点%s!"
- end
- class Game_ActionResult
- alias sailcat_hp_damage_text hp_damage_text
- alias sailcat_mp_damage_text mp_damage_text
- #--------------------------------------------------------------------------
- # ● 获取 HP 伤害的文字
- #--------------------------------------------------------------------------
- def hp_damage_text
- if @hp_drain < 0
- fmt = @battler.actor? ? Vocab::ActorDrainRev : Vocab::EnemyDrainRev
- sprintf(fmt, @battler.name, -@hp_drain, Vocab::hp)
- else
- sailcat_hp_damage_text
- end
- end
- #--------------------------------------------------------------------------
- # ● 获取 MP 伤害的文字
- #--------------------------------------------------------------------------
- def mp_damage_text
- if @mp_drain < 0
- fmt = @battler.actor? ? Vocab::ActorDrainRev : Vocab::EnemyDrainRev
- sprintf(fmt, @battler.name, -@mp_drain, Vocab::mp)
- else
- sailcat_mp_damage_text
- end
- end
- end
复制代码 我不确定这个是不是你要的那种··· |
|