From ef694cc251844d34a64ae03f79d28a5c76719f6b Mon Sep 17 00:00:00 2001 From: Giacomo Pozzoni Date: Sat, 28 Sep 2019 15:45:25 +0200 Subject: Scripts: Fix crossfaction combat issue (#23818) * Scripts/PitOfSaron: Fix Martin Victus combat in crossfaction groups Fix Martin Victus attacking players in crossfaction groups because it was spawned as summon of the boss, triggering DoCombatInZone() * Scripts/ForgeOfSouls: Fix guards combat in crossfaction groups Fix Devourer of Souls guardians attacking players in crossfaction groups because they were spawned as summons of the boss, triggering DoCombatInZone() * Scripts/Misc: Fix no PCH build --- .../ForgeOfSouls/boss_devourer_of_souls.cpp | 3 ++- .../PitOfSaron/instance_pit_of_saron.cpp | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index ca9fa333654..b2c1513ecce 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -210,8 +210,9 @@ class boss_devourer_of_souls : public CreatureScript for (int8 i = 0; outroPositions[i].entry[entryIndex] != 0; ++i) { - if (Creature* summon = me->SummonCreature(outroPositions[i].entry[entryIndex], spawnPoint, TEMPSUMMON_DEAD_DESPAWN)) + if (TempSummon* summon = instance->instance->SummonCreature(outroPositions[i].entry[entryIndex], spawnPoint)) { + summon->SetTempSummonType(TEMPSUMMON_DEAD_DESPAWN); summon->GetMotionMaster()->MovePoint(0, outroPositions[i].movePosition); if (summon->GetEntry() == NPC_JAINA_PART2) summon->AI()->Talk(SAY_JAINA_OUTRO); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp index 03e5373740d..1baa344b075 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp @@ -21,6 +21,7 @@ #include "Map.h" #include "pit_of_saron.h" #include "Player.h" +#include "TemporarySummon.h" // positions for Martin Victus (37591) and Gorkun Ironskull (37592) Position const SlaveLeaderPos = {689.7158f, -104.8736f, 513.7360f, 0.0f}; @@ -157,9 +158,15 @@ class instance_pit_of_saron : public InstanceMapScript if (Creature* summoner = instance->GetCreature(_garfrostGUID)) { if (_teamInInstance == ALLIANCE) - summoner->SummonCreature(NPC_MARTIN_VICTUS_1, SlaveLeaderPos, TEMPSUMMON_MANUAL_DESPAWN); + { + if (TempSummon* summon = instance->SummonCreature(NPC_MARTIN_VICTUS_1, SlaveLeaderPos)) + summon->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN); + } else - summoner->SummonCreature(NPC_GORKUN_IRONSKULL_2, SlaveLeaderPos, TEMPSUMMON_MANUAL_DESPAWN); + { + if (TempSummon* summon = instance->SummonCreature(NPC_GORKUN_IRONSKULL_2, SlaveLeaderPos)) + summon->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN); + } } } break; @@ -169,9 +176,15 @@ class instance_pit_of_saron : public InstanceMapScript if (Creature* summoner = instance->GetCreature(_tyrannusGUID)) { if (_teamInInstance == ALLIANCE) - summoner->SummonCreature(NPC_JAINA_PART2, EventLeaderPos2, TEMPSUMMON_MANUAL_DESPAWN); + { + if (TempSummon * summon = instance->SummonCreature(NPC_JAINA_PART2, EventLeaderPos2)) + summon->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN); + } else - summoner->SummonCreature(NPC_SYLVANAS_PART2, EventLeaderPos2, TEMPSUMMON_MANUAL_DESPAWN); + { + if (TempSummon * summon = instance->SummonCreature(NPC_SYLVANAS_PART2, EventLeaderPos2)) + summon->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN); + } } } break; -- cgit v1.2.3