赞 | 31 |
VIP | 0 |
好人卡 | 0 |
积分 | 25 |
经验 | 315 |
最后登录 | 2024-9-26 |
在线时间 | 215 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2512
- 在线时间
- 215 小时
- 注册时间
- 2017-9-27
- 帖子
- 613
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 刹那铃音 于 2020-12-29 18:14 编辑
事实上,这是经过多位朋友帮助修改过的成果
v1.1 增加了战斗中主动增加障壁值的技能的功能
v1.2 增加了直接击破或无视障壁的技能的功能
v1.3 修复了在战斗中使用物品就会发生错误的BUG
- #==============================================================================
- # 魔法障壁 刹那铃音
- #==============================================================================
- # 使用方法:
- # 1.备注:
- # 在角色或敌人的技能备注下写入<hp_def x>,战斗开始时角色或敌人获得x点障壁值。
- # 在技能备注下写入 <up_def x>,释放技能为角色或敌人增加x点障壁值。
- # 在技能备注下写入 <def_ignore>,释放带有无视障壁值的效果的技能。
- # 在技能备注下写入 <def_break>,该技能将直接击破障壁。
- # 2.事件脚本:
- #(1)通过战斗中事件的脚本指令调整障壁值的增加和减少。
- # add_battler_hp_def(actor,id,x)
- #actor:为true时指代角色,为false时指代敌人。
- #id:指第id个角色或敌人。
- # x:指定角色或敌人的障壁值增加x(x为负数时则为减少)。
- #(2)通过战斗中事件的脚本指令调整障壁值的倍数。
- # rate_battler_hp_def(actor,id,x)
- #actor:为true时指代玩角色,为false时指代敌人。
- #id:指第id个角色或敌人。
- #x:指定角色或敌人的障壁值在其基础值上乘以x。
- #==============================================================================
- # 显示的文字:
- #==============================================================================
- module Vocab
- ActorDef = "%s的障壁抵挡了%s点伤害!"
- EnemyDef = "%s的障壁抵挡了%s点伤害!"
- ActorCurrentDef = "%s当前障壁:%s!"
- EnemyCurrentDef = "%s当前障壁:%s!"
- end
- class RPG::Skill
- def hp_def
- if /<hp_def (\d+)>/i =~ @note;return $1.to_i;else;return 0;end
- end
- def up_def
- if /<up_def (\d+)>/i =~ @note;return $1.to_i;else;return 0;end
- end
- def def_ignore
- if /<def_ignore>/i =~ @note;return true;else;return false;end
- end
- def def_break
- if /<def_break>/i =~ @note;return true;else;return false;end
- end
- end
- class RPG::Enemy
- def hp_def
- if /<hp_def (\d+)>/i =~ @note;return $1.to_i;else;return 0;end
- end
- end
- class Game_ActionResult
- attr_accessor :hp_def
- #--------------------------------------------------------------------------
- # ● 清除伤害值
- #--------------------------------------------------------------------------
- alias old_804173948_clear_damage_values clear_damage_values
- def clear_damage_values
- old_804173948_clear_damage_values
- @hp_def = 0
- end
- #--------------------------------------------------------------------------
- # ● 获取 HP 抵伤的文字
- #--------------------------------------------------------------------------
- def hp_def_text
- if @hp_def > 0
- fmt = @battler.actor? ? Vocab::ActorDef : Vocab::EnemyDef
- sprintf(fmt, @battler.name, @hp_def)
- end
- end
- #--------------------------------------------------------------------------
- # ● 获取 当前障壁 文字
- #--------------------------------------------------------------------------
- def hp_current_def_text
- fmt = @battler.actor? ? Vocab::ActorCurrentDef : Vocab::ActorCurrentDef
- sprintf(fmt, @battler.name, @battler.hp_def)
- end
- end
- class Window_BattleLog < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 显示 HP 伤害
- #--------------------------------------------------------------------------
- alias old_804173948_display_hp_damage display_hp_damage
- def display_hp_damage(target, item)
- if target.result.hp_def > 0 && item && item.damage.to_hp?
- add_text(target.result.hp_def_text)
- add_text(target.result.hp_current_def_text)
- wait
- end
- old_804173948_display_hp_damage(target,item);
- end
-
- alias old_display_failure display_failure
- def display_failure(target, item)##########Overwritten
- if item.is_a?(RPG::Skill) && item.up_def < 0
- old_display_failure(target, item)
- end
- end
-
- alias old_display_action_results display_action_results
- def display_action_results(target, item)
- old_display_action_results(target, item)
- if item.is_a?(RPG::Skill) && item.up_def > 0
- add_text(target.name + "增加了#{item.up_def}点障壁值")
- add_text(target.result.hp_current_def_text)
- wait
- wait
- end
- end
- end
- class Game_BattlerBase
- attr_accessor :hp_def
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- alias old_804173948_initialize initialize
- def initialize
- old_804173948_initialize
- @hp_def = 0
- @tab_ignore = false
- @tab_break = false
- end
- end
- class Game_Battler
- #--------------------------------------------------------------------------
- #● 处理伤害
- # 调用前需要设置好
- # @result.hp_damage @result.mp_damage
- # @result.hp_drain @result.mp_drain
- #--------------------------------------------------------------------------
- def execute_damage(user)##########Overwritten
- if !@tab_ignore
- self.hp_def = 0 if @tab_break
- if @result.hp_damage > 0
- if @result.hp_damage < self.hp_def
- self.hp_def -= @result.hp_damage
- @result.hp_def = @result.hp_damage
- @result.hp_damage = 0
- else
- @result.hp_damage -= self.hp_def
- @result.hp_def = self.hp_def
- self.hp_def = 0
- end
- end
- end
- on_damage(@result.hp_damage) if @result.hp_damage > 0
- self.hp -= @result.hp_damage
- self.mp -= @result.mp_damage
- user.hp += @result.hp_drain
- user.mp += @result.mp_drain
- end
- alias old_make_damage_value make_damage_value
- def make_damage_value(user, item)
- @tab_ignore = false
- @tab_break = false
- if item.is_a?(RPG::Skill)
- @tab_ignore = item.def_ignore
- @tab_break = item.def_break
- end
- old_make_damage_value(user, item)
- end
- end
- class Game_Actor
- #--------------------------------------------------------------------------
- # ● 战斗开始处理
- #--------------------------------------------------------------------------
- def on_battle_start##########Overwritten
- super
- self.hp_def = battle_hp_def
- end
- def battle_hp_def
- sum = 0
- skills.each{|skill| sum+=skill.hp_def}
- return sum
- end
- end
- class Game_Enemy
- #--------------------------------------------------------------------------
- # ● 战斗开始处理
- #--------------------------------------------------------------------------
- def on_battle_start##########Overwritten
- super
- self.hp_def = battle_hp_def
- end
- def skills##########Overwritten
- enemy.actions.collect{|action|$data_skills[action.skill_id]}
- end
- def battle_hp_def
- sum = enemy.hp_def
- skills.each{|skill| sum+=skill.hp_def}
- return sum
- end
- end
- class Game_Interpreter
- def change_battler_hp_def(actor,id,value)
- battler = (actor ? $game_party.members[id-1] : $game_troop.members[id-1])
- battler.hp_def = value
- end
- def add_battler_hp_def(actor,id,value)
- battler = (actor ? $game_party.members[id-1] : $game_troop.members[id-1])
- battler.hp_def += value
- end
- def rate_battler_hp_def(actor,id,value)
- battler = (actor ? $game_party.members[id-1] : $game_troop.members[id-1])
- battler.hp_def = (battler.battle_hp_def * value).round
- end
- end
- class Scene_Battle < Scene_Base
- def add_battler_hp_def(actor,id,value)
- battler = (actor ? $game_party.members[id-1] : $game_troop.members[id-1])
- battler.hp_def += value
- end
- alias old_apply_item_effects apply_item_effects
- def apply_item_effects(target, item)
- return old_apply_item_effects(target, item) unless item.is_a?(RPG::Skill)##########
- add_battler_hp_def(!target.is_a?(Game_Enemy),target.index,item.up_def)
- old_apply_item_effects(target, item)
- end
- end
复制代码 |
|