Fix InstanceData::DoCompleteAchievement (and crash in AchievementMgr::CompletedAchievement).
Remove support of no longer existing achievement "The Party is Over". Thanks JuliuSZS. Fixes issue #1318. --HG-- branch : trunk
This commit is contained in:
@@ -313,13 +313,19 @@ void InstanceData::DoSendNotifyToInstance(const char *format, ...)
|
|||||||
// Complete Achievement for all players in instance
|
// Complete Achievement for all players in instance
|
||||||
void InstanceData::DoCompleteAchievement(uint32 achievement)
|
void InstanceData::DoCompleteAchievement(uint32 achievement)
|
||||||
{
|
{
|
||||||
AchievementEntry const* AE = GetAchievementStore()->LookupEntry(achievement);
|
AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievement);
|
||||||
Map::PlayerList const &PlayerList = instance->GetPlayers();
|
Map::PlayerList const &PlayerList = instance->GetPlayers();
|
||||||
|
|
||||||
|
if (!pAE)
|
||||||
|
{
|
||||||
|
error_log("TSCR: DoCompleteAchievement called for not existing achievement %u", achievement);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!PlayerList.isEmpty())
|
if (!PlayerList.isEmpty())
|
||||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||||
if (Player *pPlayer = i->getSource())
|
if (Player *pPlayer = i->getSource())
|
||||||
pPlayer->CompletedAchievement(AE);
|
pPlayer->CompletedAchievement(pAE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Achievement Criteria for all players in instance
|
// Update Achievement Criteria for all players in instance
|
||||||
|
|||||||
@@ -47,10 +47,7 @@ enum Misc
|
|||||||
};
|
};
|
||||||
#define DATA_SPHERE_ANGLE_OFFSET 0.7
|
#define DATA_SPHERE_ANGLE_OFFSET 0.7
|
||||||
#define DATA_GROUND_POSITION_Z 11.4
|
#define DATA_GROUND_POSITION_Z 11.4
|
||||||
enum Achievements
|
|
||||||
{
|
|
||||||
ACHIEV_THE_PARTY_IS_OVER = 1861
|
|
||||||
};
|
|
||||||
enum Yells
|
enum Yells
|
||||||
{
|
{
|
||||||
SAY_AGGRO = -1619021,
|
SAY_AGGRO = -1619021,
|
||||||
@@ -262,16 +259,7 @@ struct boss_taldaramAI : public ScriptedAI
|
|||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
{
|
|
||||||
pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, DONE);
|
pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, DONE);
|
||||||
|
|
||||||
if (IsHeroic())
|
|
||||||
{
|
|
||||||
Map::PlayerList const &players = pInstance->instance->GetPlayers();
|
|
||||||
if (players.getSize() < 5)
|
|
||||||
pInstance->DoCompleteAchievement(ACHIEV_THE_PARTY_IS_OVER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit *victim)
|
||||||
|
|||||||
Reference in New Issue
Block a user