From bda1fac13f19d38b4e0e07d01d1b068def9aa81c Mon Sep 17 00:00:00 2001 From: Gildor Date: Wed, 4 May 2022 23:48:21 +0200 Subject: Scripts/Naxxramas: Fix achievement The Immortal / The Undying (#27937) (cherry picked from commit ea41ef261e794aca6ee713b64235ba110f66cc49) --- .../Northrend/Naxxramas/instance_naxxramas.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index 5f6ffbc1be0..3e145abe5b2 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -24,6 +24,7 @@ #include "Map.h" #include "naxxramas.h" #include "TemporarySummon.h" +#include BossBoundaryData const boundaries = { @@ -124,7 +125,7 @@ class instance_naxxramas : public InstanceMapScript hadSapphironBirth = false; CurrentWingTaunt = SAY_KELTHUZAD_FIRST_WING_TAUNT; - playerDied = 0; + playerDied = false; } void OnCreatureCreate(Creature* creature) override @@ -249,9 +250,9 @@ class instance_naxxramas : public InstanceMapScript void OnUnitDeath(Unit* unit) override { - if (unit->GetTypeId() == TYPEID_PLAYER && IsEncounterInProgress()) + if (!playerDied && unit->IsPlayer() && IsEncounterInProgress()) { - playerDied = 1; + playerDied = true; SaveToDB(); } @@ -551,6 +552,18 @@ class instance_naxxramas : public InstanceMapScript return false; } + void WriteSaveDataMore(std::ostringstream& data) override + { + data << uint32(playerDied ? 1 : 0); + } + + void ReadSaveDataMore(std::istringstream& data) override + { + uint32 tmpState; + data >> tmpState; + playerDied = tmpState != 0; + } + protected: /* The Arachnid Quarter */ // Anub'rekhan @@ -596,7 +609,7 @@ class instance_naxxramas : public InstanceMapScript uint8 CurrentWingTaunt; /* The Immortal / The Undying */ - uint32 playerDied; + bool playerDied; EventMap events; }; -- cgit v1.2.3