Not sure how Fenris claimed to have this working. I get an error with default settings.
First point of the problem was this method:
def self.swap_target_blizzabs(b1, b2, other, skill)
# find all targets that are negative aligned from the targeted battler
bs = other.find_all {|b| b2.ai.negative.include?(b.ai.basic)}
I was getting an error stating that there is no method
basic defined for AI::Data_Enemy. I felt the logical fix was to replace it with
group since you are finding the battlers' (with reflect on) enemy groups. This worked initially for the first attack.
The second attack however did not work anymore. I threw in a bunch of print statements to pinpoint the issue and found that the default Enemy alignment group (ID 2) saw groups [1, 3, 5, 6, 2] as negative. I added another enemy and, sure enough, the two monsters started fighting each other if an actor reflected. The cause for this is at line 942 in Part 3 (Map_Battler#skill_effect):
alignment_effect(character.ai.group) if self.damage_done?
So when the enemy gets hit by the reflected attack, they immediately see other enemies as a threat. Now I don't know if this was intentionally designed for scenarios like Confusion, but I'm not aware if there's anything defined to undo this change.
I just changed it to
alignment_effect(character.ai.group) if self.damage_done? && self.ai.group != character.ai.group
and things look much better now.
There's also some extra information regarding what types of skills can be reflected. In Part 2, you have this check:
# if Full Reflection System is being used and not breaking reflection skill
if $full_reflection_system != nil && $full_reflection_system >= 3.01 &&
targets[0].is_a?(Map_Battler) && skill && !beam &&
!BlizzCFG::BREAK_REFLECT.include?(object.id) &&
projectype != REMTrapSkill && projectype != REMTrapItem &&
projectype != REMTimedSkill && projectype != REMTimedItem
The skill will only reflect if it is NOT a beam-type, a trap, or a timed trap. I did my testings using a Direct-type.