Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================#
- # ● IEX2 - Mp-Exhaust [VX]
- #==============================================================================#
- # // • Created By : IceDragon
- # // • Data Created : 04/08/2012
- # // • Data Modified : 04/08/2012
- # // • Version : 0.5
- # // • RGSS.design : 2 (VX-Default)
- #==============================================================================#
- # ● Installation
- # Below
- # Material
- # Above
- # Main
- #==============================================================================#
- # ● How to Use
- # In a skill's notebox:
- # <exhaust>
- # User can use skill regardless of costs
- # If the user does not have enough MP it will be taken from its HP
- # The user will use the skill regardless if it takes its life in the
- # process.
- #
- #==============================================================================#
- # ● Change Log
- # ♣ 04/08/2012 V0.5
- # Completed Script
- #==============================================================================#
- class RPG::Skill
- def hp_cost()
- @hp_cost||=(self.note.match(/<HP(?:_COST| COST):[ ]*(\d+)>/i)||["",0])[1].to_i
- end unless method_defined? :hp_cost
- attr_writer :hp_cost unless method_defined? :hp_cost=
- def mp_exhaust?()
- if(@mp_exhaust.nil?)
- @mp_exhaust = !!(self.note =~ /<EXHAUST>/i)
- end
- @mp_exhaust
- end
- attr_writer :mp_exhaust
- end
- class Game_Battler
- def skill_can_use?(skill)
- return false unless skill.is_a?(RPG::Skill)
- return false unless movable?
- return false if silent? and skill.spi_f > 0
- return false unless skill_cost_payable?(skill)
- if $game_temp.in_battle
- return skill.battle_ok?
- else
- return skill.menu_ok?
- end
- end
- # // VXA Style
- def skill_cost_payable?(item)
- return true if(item.mp_exhaust?())
- return false if(calc_mp_cost(item) > mp)
- return false if(calc_hp_cost(item) > hp)
- return true
- end
- def use_item(item)
- pay_skill_cost(item) if(item.is_a?(RPG::Skill))
- consume_item(item) if(item.is_a?(RPG::Item))
- end
- def pay_skill_cost(item)
- cmp = calc_mp_cost(item)
- self.mp = cmp = self.mp - cmp
- self.hp -= calc_hp_cost(item)
- self.hp -= [-cmp,0].max if(item.mp_exhaust?) # // Exhaust
- end
- def consume_item(item)
- $game_party.consume_item(item)
- end unless method_defined? :consume_item
- def calc_hp_cost(item)
- item.hp_cost
- end
- end
- class Window_Skill
- def draw_item(index)
- rect = item_rect(index)
- self.contents.clear_rect(rect)
- skill = @data[index]
- if skill != nil
- rect.width -= 4
- enabled = @actor.skill_can_use?(skill)
- draw_item_name(skill, rect.x, rect.y, enabled)
- draw_skill_cost(skill, rect)
- end
- end
- def draw_skill_cost(skill,rect)
- hcost = @actor.calc_hp_cost(skill)
- mcost = @actor.calc_mp_cost(skill)
- oldc = self.contents.font.color
- if(mcost > 0) && (hcost > 0)
- self.contents.font.color = hp_gauge_color2
- self.contents.draw_text(rect, hcost, 2)
- rect.width -= 40
- self.contents.font.color = mp_gauge_color2
- self.contents.draw_text(rect, mcost, 2)
- elsif(hcost > 0)
- self.contents.font.color = hp_gauge_color2
- self.contents.draw_text(rect, hcost, 2)
- elsif(mcost > 0)
- self.contents.font.color = mp_gauge_color2
- self.contents.draw_text(rect, mcost, 2)
- end
- self.contents.font.color = oldc
- end
- end
- class Scene_Skill
- def use_skill_nontarget
- Sound.play_use_skill
- @actor.use_item(@skill) # //
- @status_window.refresh
- @skill_window.refresh
- @target_window.refresh
- if $game_party.all_dead?
- $scene = Scene_Gameover.new
- elsif @skill.common_event_id > 0
- $game_temp.common_event_id = @skill.common_event_id
- $scene = Scene_Map.new
- end
- end
- end
- class Scene_Battle
- def execute_action_skill
- skill = @active_battler.action.skill
- text = @active_battler.name + skill.message1
- @message_window.add_instant_text(text)
- unless skill.message2.empty?
- wait(10)
- @message_window.add_instant_text(skill.message2)
- end
- targets = @active_battler.action.make_targets
- display_animation(targets, skill.animation_id)
- @active_battler.use_item(skill) # //
- $game_temp.common_event_id = skill.common_event_id
- for target in targets
- target.skill_effect(@active_battler, skill)
- display_action_effects(target, skill)
- end
- end
- end
- #=■==========================================================================■=#
- # // ● End of File ● // #
- #=■==========================================================================■=#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement