Complications with Reflected Multi-Target Abilities

pxldrm

Famed Mimic Gogo
Member
Joined
Mar 13, 2014
Messages
17
Reaction score
1
First Language
English
Primarily Uses
I am using DoubleX Reflect State Script along with the Compatibility Fix for Battle Symphony for a Final Fantasy style reflect mechanic. It works great but I am having just a few problems with it and would appreciate some help.

Scripts in question:

Battle Engine Symphony

DoubleX RMVXA Reflect State

DoubleX RMVXA Reflect State Compatibility Fix

  • I would like for reflect to use the caster's stats (a.mat) vs. the target's stats (b.mdf) when an ability is reflected. (Sort of solved)
I have changed 'Reflect State Compatibility Fix' to use the caster's stats rather than the target's stats when an ability is reflected. This solution works great (as far as I can tell) for reflected abilities that target only one.

  • I would like multi-target abilities that are reflected to continue playing their animation and dealing damage after the caster has been killed by its own reflected ability. Discontinuing the ability after death would also work, as if the caster has to be alive for its magic to continue.

Problems begin to occur when an ability that targets all is used. If the caster kills itself with the reflected ability before the reflect cycle ends then this error occurs.



If there are no more targets for a reflected ability (all targets are dead before each reflected hit is successful) then this error occurs.



I have played around with it a bit and have come up with somewhat of a solution *cough cough* but even stranger things occur then.

LIST OF EVENTS LEADING UP TO PROBLEMS:

  • Entire actor party and enemy troop have reflect status.
  • Enemy caster uses a multi-target ability on actor party.
  • Ability is reflected properly (a random target on opposite side) until stopped when the caster dies.
  • Actor caster uses a multi-target ability on enemy troop.
  • The first hit occasionally ignores reflect and inflicts damage.
  • The ability then seems to reflect properly.
  • Occasionally when the battle is won, after the victory aftermath, damage from the ability is dealt back to actor caster.

ORIGINAL SCRIPT SEGMENT:

#----------------------------------------------------------------------------| # Rewrite method: invoke_reflect_state | #----------------------------------------------------------------------------| def invoke_reflect_state(target, item) @log_window.display_reflection(target, item) # This part is rewritten by this script to fix compatibility issues with Yami Engine Symphony - Battle Symphony last_subject = @subject @reflect_subject = target @subject = target @subject.backup_actions @subject.make_actions if item.is_a?(RPG::Skill); @subject.current_action.set_skill(item.id) else; @subject.current_action.set_item(item.id); end actions_list = SYMPHONY::DEFAULT_ACTIONS::REFLECT_ACTION if last_subject.opposite?(target) if DoubleX_RMVXA::Reflect_State::REFLECT_TO_ENEMY_CASTER reflect_subject = last_subject else reflect_subject = last_subject.friends_unit.random_target end else reflect_subject = last_subject.opponents_unit.random_target end perform_actions_list(actions_list, [reflect_subject]) @subject.clear_actions @subject = last_subject @reflect_subject.restore_actions @reflect_subject = nil @log_window.display_action_results(reflect_subject, item) refresh_status perform_collapse_check(reflect_subject) perform_collapse_check(target) # end # invoke_reflect_stateALTERED SCRIPT SEGMENT OF 'Reflect State Compatibility Fix' (works good with single target abilities):

#----------------------------------------------------------------------------| # Rewrite method: invoke_reflect_state | #----------------------------------------------------------------------------| def invoke_reflect_state(target, item) if @subject.opposite?(target) reflect_subject = @subject.friends_unit.random_target else reflect_subject = @subject.opponents_unit.random_target end actions_list = SYMPHONY::DEFAULT_ACTIONS::REFLECT_ACTION perform_actions_list(actions_list, [reflect_subject]) refresh_status perform_collapse_check(reflect_subject) perform_collapse_check(target) end # invoke_reflect_stateEVEN MORE ALTERED SCRIPT SEGMENT OF 'Reflect State Compatibility Fix' (I've attempted to force the cycle to end but this creates more problems):
('$game_switches[442]' is always false in this situation)
('all_dead?' is redefined to accept other states for defeat)
('enemies_dead?' is the same as the original 'all_dead?')

Code:
  #----------------------------------------------------------------------------|  #  Rewrite method: invoke_reflect_state                                          |  #----------------------------------------------------------------------------|  def invoke_reflect_state(target, item)    if $game_party.all_dead?      BattleManager.process_defeat    elsif $game_troop.enemies_dead? && $game_switches[442] == false      BattleManager.process_victory    else      if @subject.alive?        if @subject.opposite?(target)          reflect_subject = @subject.friends_unit.random_target        else          reflect_subject = @subject.opponents_unit.random_target        end        actions_list = SYMPHONY::DEFAULT_ACTIONS::REFLECT_ACTION        perform_actions_list(actions_list, [reflect_subject])        refresh_status        perform_collapse_check(reflect_subject)        perform_collapse_check(target)      end    end  end # invoke_reflect_state
 

DoubleX

Just a nameless weakling
Veteran
Joined
Jan 2, 2014
Messages
1,787
Reaction score
939
First Language
Chinese
Primarily Uses
N/A
You may want to give me your project for me to inspect further :)
 

pxldrm

Famed Mimic Gogo
Member
Joined
Mar 13, 2014
Messages
17
Reaction score
1
First Language
English
Primarily Uses
Okay, that sounds good. Can I email it to you?
 

pxldrm

Famed Mimic Gogo
Member
Joined
Mar 13, 2014
Messages
17
Reaction score
1
First Language
English
Primarily Uses
Sent you the link :)
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

"You can thank my later", "But you haven't done anything", "Well, that's why ..."
Are we allowed to post about non-RPG Maker games?
I should realize that error was produced by a outdated version of MZ so that's why it pop up like that
Ami
i can't wait to drink some ice after struggling with my illness in 9 days. 9 days is really bad for me,i can't focus with my shop and even can't do something with my project
How many hours have you got in mz so far?

Forum statistics

Threads
105,884
Messages
1,017,242
Members
137,609
Latest member
shododdydoddy
Top