Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
| # Manashield | |
| # This will make a manashield state which allow actor takes damage to mana | |
| # instead of health points. | |
| # Usage: use this notetag inside a state <manashield: X, Y%> | |
| # X is damage absorb per mana point. | |
| # Y is damage percentage which can be absorbed. | |
| # Free for all using purposes. | |
| # Credit: Archeia Nessiah for the allowance. | |
| module REGEXP | |
| module MANASHIELD | |
| MANASHIELD = /<manashield:[ ]*(\d+),[ ]*(\d+)[%“]?>/i | |
| end # MANASHIELD | |
| end # REGEXP | |
| #============================================================================== | |
| # ¡ DataManager | |
| #============================================================================== | |
| module DataManager | |
| #-------------------------------------------------------------------------- | |
| # alias method: load_database | |
| #-------------------------------------------------------------------------- | |
| class <<self; alias load_database_manashield load_database; end | |
| def self.load_database | |
| load_database_manashield | |
| initialize_manashield | |
| end | |
| #-------------------------------------------------------------------------- | |
| # new method: initialize_manashield | |
| #-------------------------------------------------------------------------- | |
| def self.initialize_manashield | |
| groups = [$data_states] | |
| groups.each { |group| | |
| group.each { |obj| | |
| next if obj.nil? | |
| obj.initialize_manashield | |
| } | |
| } | |
| end | |
| end # DataManager | |
| #============================================================================== | |
| # ¡ RPG::BaseItem | |
| #============================================================================== | |
| class RPG::BaseItem | |
| #-------------------------------------------------------------------------- | |
| # * Public Instance Variables | |
| #-------------------------------------------------------------------------- | |
| attr_accessor :manashield | |
| #-------------------------------------------------------------------------- | |
| # new method: initialize_manashield | |
| #-------------------------------------------------------------------------- | |
| def initialize_manashield | |
| #--- | |
| self.note.split(/[\r\n]+/).each { |line| | |
| case line | |
| when REGEXP::MANASHIELD::MANASHIELD | |
| @manashield = [$1.to_i, [$2.to_i, 100].min] | |
| end | |
| } | |
| end | |
| end # RPG::BaseItem | |
| #============================================================================== | |
| # ¡ Game_ActionResult | |
| #============================================================================== | |
| class Game_ActionResult | |
| #-------------------------------------------------------------------------- | |
| # alias method: make_damage | |
| #-------------------------------------------------------------------------- | |
| alias manashield_make_damage make_damage | |
| def make_damage(value, item) | |
| manashield_make_damage(value, item) | |
| #--- | |
| if @battler.manashield && @battler.mp > 0 | |
| dpm = @battler.manashield[0] | |
| percent = @battler.manashield[1] | |
| shield = (@hp_damage * percent.to_f) / 100.0 | |
| shield = shield / dpm.to_f | |
| shield = [shield, @battler.mp.to_f].min | |
| @hp_damage -= (shield * dpm.to_f).to_i | |
| @mp_damage += shield.to_i | |
| end | |
| end | |
| end # Game_ActionResult | |
| #============================================================================== | |
| # ¡ Game_Battler | |
| #============================================================================== | |
| class Game_Battler < Game_BattlerBase | |
| #-------------------------------------------------------------------------- | |
| # new method: manashield | |
| #-------------------------------------------------------------------------- | |
| def manashield | |
| mns = nil | |
| states.each { |state| | |
| next unless state.manashield | |
| mns = state.manashield | |
| break | |
| } | |
| return mns ? mns : false | |
| end | |
| end # Game_Battler |