Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
- # XAS - Battle Trigger
- # Version: 1.18
- # Author : LiTTleDRAgo
- #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
- #
- # List of Trigger
- #
- # Dead = Will activate when battler is dead
- # Impact ID,ID,ID = Will activate when skill (based on ID) is used
- # Impact All = Will activate when any skill is used
- # Click = Will activate when event is clicked
- # (if mouse script is present)
- # Ally ID,ID,ID = Will activate when actor (based on ID) is stepping
- # Ally All = Will activate when any ally is stepping
- #
- # Talk = Will activate when triggered by talking (*)
- #
- # Note : By placing 'Battle Trigger :' in comment, the normal trigger
- # (talking,stepping) won't work anymore, to make it work again,
- # insert 'Talk' in the trigger
- #
- #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
- $imported ||= {}
- $imported[:xas_battle_trigger] = 1.18
- class Game_Event < Game_Character
- attr_accessor :impact_id, :page
- #--------------------------------------------------------------------------
- # * battle_trigger
- #--------------------------------------------------------------------------
- def battle_trigger
- if ($imported[:drg_core_engine] || 0) >= 1.00
- trigger = @page != nil && self.note[/Battle Trigger :/]
- trigger = self.note.gsub("\n",',') if trigger
- trigger.gsub!('Battle Trigger :','') if trigger
- return trigger || ''
- end
- trigger = @page != nil && @page.list[0].code == 108 &&
- @page.list[0].parameters[0][/Battle Trigger :/]
- if trigger
- trigger,list_index = '', 0
- while [108, 408].include?(@page.list[list_index].code)
- trigger += @page.list[list_index].parameters[0] + ','
- trigger = trigger.dup.gsub('Battle Trigger :'){''}.strip
- list_index += 1
- end
- end
- return trigger || ''
- end
- #--------------------------------------------------------------------------
- # * defeated_effect
- #--------------------------------------------------------------------------
- alias defeated_effect_battle_trigger defeated_effect if $xrxs_xas
- def defeated_effect(*args)
- start if battle_trigger[/Dead/i] && @trigger == 0
- @impact_id = 'Dead'
- defeated_effect_battle_trigger(*args)
- end
- #--------------------------------------------------------------------------
- # ● Action Effect
- #--------------------------------------------------------------------------
- alias action_effect_battle_trigger action_effect if $xrxs_xas
- def action_effect(attacker, attack_id)
- if self.is_a?(Game_Event) && battle_trigger != '' && @trigger == 0 && !@erased
- @event.pages.each {|page|
- trigger = battle_trigger.dup.gsub('Impact'){''}.strip.split(',').map {|s|s.strip.downcase}
- if battle_trigger[/Impact/i] && (trigger.include?(attack_id.to_s) || trigger.include?('all'))
- hookshoot_check(attacker,attack_id) if self.event_name[/<Hookshot>/]
- self.reaction_valid_attack_id = attack_id
- @impact_id = attack_id
- self.refresh
- @trigger = 0
- self.start
- return true
- end }
- end
- return action_effect_battle_trigger(attacker, attack_id)
- end
- #--------------------------------------------------------------------------
- # ● Check Pre XY
- #--------------------------------------------------------------------------
- alias update_battle_trigger update
- def update
- update_battle_trigger
- return if @starting || @erased
- if battle_trigger[/Ally All/i]
- $game_party.actors.each {|s| ev = $game_map.actor_event(s.id) rescue nil
- return [@impact_id = "Ally #{ev.battler.id}",self.start] if !ev.nil? && !ev.erased && [@x,@y] == [ev.x,ev.y]}
- return [@impact_id = "Ally #{$game_party.actors[0].id}",self.start] if [@x,@y] == [$game_player.x,$game_player.y]
- elsif battle_trigger[/Ally/i]
- trigger = battle_trigger.dup.gsub('Ally'){''}.strip.split(',').map {|s|s.strip.downcase}
- trigger.each {|id| ac = $game_party.actors[0]
- ev = $game_map.actor_event(id.to_i) rescue nil
- return [@impact_id = "Ally #{id}",self.start] if !ev.nil? && !ev.erased && [@x,@y] == [ev.x,ev.y]
- return [@impact_id = "Ally #{id}",self.start] if !ac.nil? && ac.id.to_s == id && [@x,@y] == [$game_player.x,$game_player.y]}
- end
- end
- end
- class Game_Player < Game_Character
- #--------------------------------------------------------------------------
- # * Same Position Starting Determinant
- #--------------------------------------------------------------------------
- alias check_event_trigger_here_battle_trigger check_event_trigger_here
- def check_event_trigger_here(*args)
- event = $game_map.events.values.find_all {|e|
- e.impact_id = 'Talk' if e.battle_trigger[/Talk/i]
- ([e.x,e.y] == [@x,@y] && e.trigger == 0 && e.battle_trigger != '' && !e.battle_trigger[/Talk/i] && !e.instance_variable_get(:@throw_active))}
- return false if event.size > 0
- return check_event_trigger_here_battle_trigger(*args)
- end
- #--------------------------------------------------------------------------
- # * Front Event Starting Determinant
- #--------------------------------------------------------------------------
- alias check_event_trigger_there_battle_trigger check_event_trigger_there
- def check_event_trigger_there(*args)
- d = @direction
- xy = [@x+(d==6 ? 1 : d==4 ? -1 : 0), @y+(d==2 ? 1 : d==8 ? -1 : 0)]
- event = $game_map.events.values.find_all {|e|
- e.impact_id = 'Talk' if e.battle_trigger[/Talk/i]
- ([e.x,e.y] == xy && e.trigger == 0 && e.battle_trigger != '' && !e.battle_trigger[/Talk/i] && !e.instance_variable_get(:@throw_active)) }
- return false if event.size > 0
- return check_event_trigger_there_battle_trigger(*args)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement