diff --git a/src_factions/com/nisovin/magicspells/factions/MagicSpellsFactions.java b/src_factions/com/nisovin/magicspells/factions/MagicSpellsFactions.java index 55785ce90..05a4b1a9a 100644 --- a/src_factions/com/nisovin/magicspells/factions/MagicSpellsFactions.java +++ b/src_factions/com/nisovin/magicspells/factions/MagicSpellsFactions.java @@ -31,18 +31,19 @@ public void onSpellTarget(SpellTargetEvent event) { UPlayer target = UPlayer.get(event.getTarget()); Rel rel = caster.getRelationTo(target); - if (rel.isFriend() && !beneficial) { - event.setCancelled(true); - } else if (!rel.isFriend() && beneficial) { + + Faction caster_faction = BoardColls.get().getFactionAt(PS.valueOf(event.getCaster().getLocation())); + if (caster_faction != null && !caster_faction.getFlag(FFlag.PVP)) { event.setCancelled(true); } - - Faction faction = BoardColls.get().getFactionAt(PS.valueOf(event.getCaster().getLocation())); - if (faction != null && !faction.getFlag(FFlag.PVP)) { + Faction target_faction = BoardColls.get().getFactionAt(PS.valueOf(event.getTarget().getLocation())); + if (target_faction != null && !target_faction.getFlag(FFlag.PVP)) { event.setCancelled(true); } - faction = BoardColls.get().getFactionAt(PS.valueOf(event.getTarget().getLocation())); - if (faction != null && !faction.getFlag(FFlag.PVP)) { + + if (rel.isFriend() && !beneficial && !((caster_faction != null && caster_faction.getFlag(FFlag.FRIENDLYFIRE)) && (target_faction != null && target_faction.getFlag(FFlag.FRIENDLYFIRE)))) { + event.setCancelled(true); + } else if (!rel.isFriend() && beneficial) { event.setCancelled(true); } }