#============================================================================== # CUT ACTIONS BY ELEMENT # Author Molegato # Version 1.0 #------------------------------------------------------------------------------ # If an enemy gets a hit from a determined element, and didnt attack yet, # his turn gets invalidated. #============================================================================== $imported = {} if $imported.nil? $imported['Molegato-cut actions by element'] = true #============================================================================== # CONFIGURATION, YOU CAN TOUCH THIS #============================================================================== module MOLEGATO_ACTION_CUT STUN_TEXT = ' has been knocked down!' PLAY_SOUND = true STUN_SOUND = 'Evasion2' end #============================================================================== # END OF CONFIGURATION. EVERYTHING UNDER HERE IS A HELLISH MESS OF DEFICIENT # AMATEUR SCRIPTING. BE AWARE THAT MESSING WITH IT CAN RESULT IN DISASTER #============================================================================== module BattleManager def self.action_battlers return @action_battlers end def self.delete_battler_from_turn(battler) @action_battlers.delete(battler) end end class Scene_Battle < Scene_Base alias action_cutter_apply_item_effects apply_item_effects def apply_item_effects(target, item) if target.actor? data_target=target.actor else data_target=target.enemy end if item.damage.element_id==-1 elements = @subject.atk_elements else elements = [item.damage.element_id] end if data_target.has_tag?("action_cutted")==true cutters=data_target.tag_check_multiple_multivalues("action_cutted") cutters.each do |current_cutter| p item.damage.element_id if elements.any? {|i| i==current_cutter[0].to_i()} and rand(100)<=current_cutter[1].to_i() if BattleManager.action_battlers.count(target)>0 BattleManager.delete_battler_from_turn(target) if MOLEGATO_ACTION_CUT::PLAY_SOUND RPG:: SE.new( MOLEGATO_ACTION_CUT::STUN_SOUND ).play end @log_window.add_text(target.name + MOLEGATO_ACTION_CUT::STUN_TEXT) end end end end action_cutter_apply_item_effects(target,item) end end #============================================================================== # MOLEGATO TAG METHODS # Author Molegato # Version 1.0 #------------------------------------------------------------------------------ # Several methods for using tags. Needed by some of my scripts. #------------------------------------------------------------------------------ # Included in some of my scripts. #============================================================================== $imported = {} if $imported.nil? $imported['Molegato-Sudden death'] = true class RPG::BaseItem def has_tag?(tag) if self.note[/<#{tag}>/mi] return true else return false end end def tag_check_value(tag) if self.note[/<#{tag}: (.*?)>/mi] return $1 else return false end end def tag_check_multivalues(tag) if self.note[/<#{tag}: (.*?)>/mi] return $1.split(',') else return false end end def tag_check_multivalues(string, tag) if string[/<#{tag}: (.*?)>/mi] return $1.split(',') else return false end end def tag_get_block(tag) if self.note[/<#{tag}>(.*?)<\\#{tag}>/mi] return $1 else return false end end def tag_multiple(tag) if tag_get_block(tag) var=tag_get_block(tag) return var.split(';') else return false end end def tag_check_multiple_multivalues(tag) if tag_multiple(tag) array=[] tag_multiple(tag).each do |each| array.push(tag_check_multivalues(each,tag)) end return array else return false end end end class RPG::Map def has_tag?(tag) if self.note[/<#{tag}>/mi] return true else return false end end def tag_check_value(tag) if self.note[/<#{tag}: (.*?)>/mi] return $1 else return false end end def tag_check_multivalues(tag) if self.note[/<#{tag}: (.*?)>/mi] return $1.split(',') else return false end end def tag_check_multivalues(string, tag) if string[/<#{tag}: (.*?)>/mi] return $1.split(',') else return false end end def tag_get_block(tag) if self.note[/<#{tag}>(.*?)<\\#{tag}>/mi] return $1 else return false end end def tag_multiple(tag) if tag_get_block(tag) var=tag_get_block(tag) return var.split(';') else return false end end def tag_check_multiple_multivalues(tag) if tag_multiple(tag) array=[] tag_multiple(tag).each do |each| array.push(tag_check_multivalues(each,tag)) end return array else return false end end end