累计送礼: 0 个 累计收礼: 1 个 TA的每日心情 开心 2026-7-12 04:10
签到天数: 209 天
连续签到: 2 天
[LV.7]常住居民III
管理员
VIP
7
卡币
58883
OK点
16
推广点
0
同能卷
50
积分 68848
Relative Basic Stats
by: Rinobi
Adjusts a battler's HP, MP, and TP values to remain relative to respective maximum values when modified by buffs, states, equipment, and levels.
For Example:
Normally This Happens
Actor's HP = 800 / 1000
Buff MHP +50%
Actor's HP 800 / 1500
Although the actor's maximum HP was increased, allowing the potential for greater Health values, the actor's health percentage actually drops from 80% to 53%. The modification itself has no immediate advantage.
With This Script
Actor's HP = 800 / 1000
Buff MHP +50%
Actor's HP 1200 / 1500
Because 80% of 1500 is 1200
When the actor's maximum HP is increased, their HP value is adjusted to remain at the 80% it began with. This keeps the actor's overall condition exactly the same while providing an immediate health advantage.
The Opposite Is Also True:
Normally This Happens
Actor's HP = 800 / 1000
Debuff MHP -15%
Actor's HP = 800 / 850
By default, this has little to no effect depending on when the modification happens, and the actor's Health percentage actually increases from 80% to 94%. The Health bar will deceptively imply that the actor's condition improved.
With This Script
Actor's HP = 800 / 1000
Debuff MHP -15%
Actor's HP = 680 / 850
Because 80% of 850 is 680
The actor will also loose the equivalent health.
Spoiler: Change Log
[05/28/2017] 1.00 Public Release
[08/17/2017] 1.10 Included missing Buffs/Debuffs
[09/04/2017] 1.30 Settings added. Restriction fix.
Spoiler: Features
Plug & Play, functions as advertised.
Spoiler: Script
Code: module RINOBI module RBS # DO NOT MODIFY #============================================================================== # # RELATIVE BASIC STATS # ----------------------------------------------------------------------------- # 1.0 [06/06/2016] Completed # 1.1 [08/14/2017] Also affects buffs and debuffs. # 1.3 [09/03/2017] Settings added. Restriction fix. #- # Basic stats are HP, MP, and TP values. # # Adjusts a battler's HP, MP, and TP values to remain relative to maximum # values when modified by buffs, states, equipment, and levels. This basically # means that if a basic stat such as MAX HP is reduced or increased, the HP # value will instantly adjust to the same percentage value. #============================================================================== # # SCRIPT CALLS #------------------------------------------------------------------------------ # rbs_levels Adjust basic stats on level up/down. # rbs_classes Adjust basic stats on class change. # rbs_equipment Adjust basic stats on equipment change. # rbs_buffs Adjust basic stats on buff/debuff. # rbs_states Adjust basic stats on state add/remove. #------------------------------------------- # $game_actors[1].rbs_levels = true # $game_party.members[2].rbs_classes = false # $game_troop.members[4].rbs_buffs = true # a.rbs_states = false # b.rbs_buffs = true #============================================================================== # # TERMS OF USE #------------------------------------------------------------------------------ # 1. Preserve this header. # 2. Do not re-upload this script. # 3. Do not claim this script as your own work. # 4. Do not release modified versions of this script. # 5. You may use this script within commercial project. #============================================================================== # # SETTINGS # ----------------------------------------------------------------------------- # Adjust the below settings to your liking. #====================================================================== # >> RBS Levels # --------------------------------------------------------------------- # Basic Stat values adjusted on level up/down. #====================================================================== RBS_Levels = true #====================================================================== # >> RBS Class # --------------------------------------------------------------------- # Basic Stat values adjusted on class change. #====================================================================== RBS_Classes = true #====================================================================== # >> RBS Equipment # --------------------------------------------------------------------- # Basic Stat values adjusted on equipment change/removal. #====================================================================== RBS_Equipment = true #====================================================================== # >> RBS Buffs # --------------------------------------------------------------------- # Basic Stat values adjusted on buff/debuff. #====================================================================== RBS_Buffs = true #====================================================================== # >> RBS States # --------------------------------------------------------------------- # Basic Stat values adjusted on add/remove state. #====================================================================== RBS_States = true #============================================================================== # END OF SETTINGS #============================================================================== end end # DO NOT MODIFY #============================================================================== # ** IMPORT SCRIPT #------------------------------------------------------------------------------ $imported = {} if $imported.nil? $imported[:RIN_RBS] = true #============================================================================== # ** Game_BattlerBase #------------------------------------------------------------------------------ # This base class handles battlers. It mainly contains methods for calculating # parameters. It is used as a super class of the Game_Battler class. #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # * Alias: Object Initialization #-------------------------------------------------------------------------- alias :rbs_initialize :initialize def initialize rbs_initialize rbs_default_settings end #-------------------------------------------------------------------------- # * Set Relative Default Settings #-------------------------------------------------------------------------- def rbs_default_settings @rbs_levels = RINOBI::RBS::RBS_Levels @rbs_classes = RINOBI::RBS::RBS_Classes @rbs_equipment = RINOBI::RBS::RBS_Equipment @rbs_buffs = RINOBI::RBS::RBS_Buffs @rbs_states = RINOBI::RBS::RBS_States end #-------------------------------------------------------------------------- # * Get Relative Settings #-------------------------------------------------------------------------- def rbs_levels; @rbs_levels end def rbs_classes; @rbs_classes end def rbs_equipment; @rbs_equipment end def rbs_buffs; @rbs_buffs end def rbs_states; @rbs_states end #-------------------------------------------------------------------------- # * Alias: Erase States #-------------------------------------------------------------------------- alias :rbs_erase_state :erase_state def erase_state(state_id) get_relative_values if rbs_states rbs_erase_state(state_id) set_relative_values if rbs_states end #-------------------------------------------------------------------------- # * Get Rate Values #-------------------------------------------------------------------------- def get_relative_values @ohp_rate = hp_rate @omp_rate = mp_rate @otp_rate = tp_rate end #-------------------------------------------------------------------------- # * Set Relative Values #-------------------------------------------------------------------------- def set_relative_values @hp = [mhp * @ohp_rate, 0].max.round.to_i @mp = [mmp * @omp_rate, 0].max.round.to_i @tp = [max_tp * @otp_rate, 0].max.round.to_i end end #============================================================================== # ** Game_Battler #------------------------------------------------------------------------------ # A battler class with methods for sprites and actions added. This class # is used as a super class of the Game_Actor class and Game_Enemy class. #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :rbs_levels attr_accessor :rbs_classes attr_accessor :rbs_equipment attr_accessor :rbs_buffs attr_accessor :rbs_states #-------------------------------------------------------------------------- # * Inherit Relative Values #-------------------------------------------------------------------------- def rbs_levels; super end def rbs_classes; super end def rbs_equipment; super end def rbs_buffs; super end def rbs_states; super end def get_relative_values; super end def set_relative_values; super end #-------------------------------------------------------------------------- # * Overwrite: Add New State #-------------------------------------------------------------------------- def add_new_state(state_id) die if state_id == death_state_id get_relative_values if rbs_states @states.push(state_id) set_relative_values if rbs_states on_restrict if restriction > 0 sort_states refresh end #-------------------------------------------------------------------------- # * Alias: Add Buff #-------------------------------------------------------------------------- alias :rbs_add_buff :add_buff def add_buff(param_id, turns) get_relative_values if rbs_buffs rbs_add_buff(param_id, turns) set_relative_values if rbs_buffs end #-------------------------------------------------------------------------- # * Alias: Add Debuff #-------------------------------------------------------------------------- alias :rbs_add_debuff :add_debuff def add_debuff(param_id, turns) get_relative_values if rbs_buffs rbs_add_debuff(param_id, turns) set_relative_values if rbs_buffs end #-------------------------------------------------------------------------- # * Alias: Erase Buff/Debuff #-------------------------------------------------------------------------- alias :rbs_erase_buff :erase_buff def erase_buff(param_id) get_relative_values if rbs_buffs rbs_erase_buff(param_id) set_relative_values if rbs_buffs end end #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # This class handles actors. It is used within the Game_Actors class # ($game_actors) and is also referenced from the Game_Party class ($game_party). #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Alias: Change Class # keep_exp: Keep EXP #-------------------------------------------------------------------------- alias :rbs_change_class :change_class def change_class(class_id, keep_exp = false) get_relative_values if rbs_classes rbs_change_class(class_id, keep_exp = false) set_relative_values if rbs_classes end #-------------------------------------------------------------------------- # * Alias: Change Equipment # slot_id: Equipment slot ID # item: Weapon/armor (remove equipment if nil) #-------------------------------------------------------------------------- alias :rbs_change_equip :change_equip def change_equip(slot_id, item) get_relative_values if rbs_equipment rbs_change_equip(slot_id, item) set_relative_values if rbs_equipment end #-------------------------------------------------------------------------- # * Alias: Forcibly Change Equipment # slot_id: Equipment slot ID # item: Weapon/armor (remove equipment if nil) #-------------------------------------------------------------------------- alias :rbs_force_equip :force_change_equip def force_change_equip(slot_id, item) get_relative_values if rbs_equipment rbs_force_equip(slot_id, item) set_relative_values if rbs_equipment end #-------------------------------------------------------------------------- # * Alias: Level Up #-------------------------------------------------------------------------- alias :rbs_level_up :level_up def level_up get_relative_values if rbs_levels rbs_level_up set_relative_values if rbs_levels end #-------------------------------------------------------------------------- # * Alias: Level Down #-------------------------------------------------------------------------- alias :rbs_level_down :level_down def level_down get_relative_values if rbs_levels rbs_level_down set_relative_values if rbs_levels end #-------------------------------------------------------------------------- # * Alias: Change Level # show : Level up display flag #-------------------------------------------------------------------------- alias :rbs_change_level :change_level def change_level(level, show) get_relative_values if rbs_levels rbs_change_level(level, show) set_relative_values if rbs_levels end end 复制代码
Spoiler: Downloads
本贴来自国际rpgmaker官方论坛作者:Rinobi处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:
https://forums.rpgmakerweb.com/threads/relative-basic-stats.79197/
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x