赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 4 |
经验 | 0 |
最后登录 | 2019-6-14 |
在线时间 | 15 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 353
- 在线时间
- 15 小时
- 注册时间
- 2019-4-14
- 帖子
- 31
|
本帖最后由 活气寒露 于 2019-4-16 21:16 编辑
使用正则表达式很简单就能实现了。
附上脚本:
- #==============================================================================
- # ■ State
- #==============================================================================
- module State
- State_Reflect = /\<反彈傷害[ ]([\+\-]?\d+)\>/
- end
- #==============================================================================
- # ■ RPG::State
- #==============================================================================
- class RPG::State
- #--------------------------------------------------------------------------
- # * create_state_angel_cache
- #--------------------------------------------------------------------------
- def create_state_angel_cache
- @state_reflect = 0
- self.note.each_line { |line|
- case line
- when State::State_Reflect
- @state_reflect = ($1 != nil ? $1.to_i : 0)
- end
- }
- end
- #--------------------------------------------------------------------------
- # * state_reflect
- #--------------------------------------------------------------------------
- def state_reflect
- create_state_angel_cache if @state_reflect == nil
- return @state_reflect
- end
- end
- #==============================================================================
- # ** Vocab
- #==============================================================================
- module Vocab
- ReflectDamage = "%s受到了%s點反彈傷害。"
- end
- #==============================================================================
- # ** Game_Battler
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # * reflect
- #--------------------------------------------------------------------------
- def reflect
- n = 0
- states.compact.each { |state| n += state.state_reflect }
- return n
- end
- #--------------------------------------------------------------------------
- # * execute_damage
- #--------------------------------------------------------------------------
- alias angel_execute_damage execute_damage
- def execute_damage(user)
- $reflect = 0
- angel_execute_damage(user)
- if self.reflect > 0
- if @hp_damage > 0
- $reflect = (@hp_damage * self.reflect) / 100
- user.hp -= $reflect
- end
- end
- end
- end
- #==============================================================================
- # ** Scene_Battle
- #==============================================================================
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # * 顯示HP傷害資訊 display_hp_damage
- #--------------------------------------------------------------------------
- def display_hp_damage(target, obj = nil)
- if target.hp_damage == 0 # 無HP傷害
- return if obj != nil and obj.damage_to_mp
- return if obj != nil and obj.base_damage == 0
- fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
- text = sprintf(fmt, target.name)
- elsif target.absorbed # HP被汲取
- fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
- text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
- elsif target.hp_damage > 0 # HP傷害
- if target.actor?
- text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage)
- Sound.play_actor_damage
- $game_troop.screen.start_shake(5, 5, 10)
- else
- text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage)
- Sound.play_enemy_damage
- target.blink = true
- end
- if $reflect > 0
- @message_window.add_instant_text(text)
- wait(30)
- text = sprintf(Vocab::ReflectDamage, @active_battler.name, "#{$reflect}")
- end
- else # HP恢復
- fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
- text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
- Sound.play_recovery
- end
- @message_window.add_instant_text(text)
- wait(30)
- end
- end
复制代码
使用方法:在所需装备的备注里填写<反彈傷害 数值>
则处于该状态时就会反弹数值/100 的伤害指数。
|
|