Fixed some crash, cause instance scripts

--HG--
branch : trunk
This commit is contained in:
n0n4m3
2009-12-30 08:40:11 +01:00
parent 1a51f16434
commit ba35715676
8 changed files with 34 additions and 16 deletions

View File

@@ -134,7 +134,8 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
DeSpawnAdds();
//remove aura from spell Garrote when Moroes dies
pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GARROTE);
if(pInstance)
pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GARROTE);
}
void SpawnAdds()

View File

@@ -577,12 +577,15 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
}
if(!m_creature->getVictim())
{
Creature* sisiter = Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_SACROLASH));
if (sisiter && !sisiter->isDead() && sisiter->getVictim())
if(pInstance)
{
m_creature->AddThreat(sisiter->getVictim(),0.0f);
DoStartNoMovement(sisiter->getVictim());
m_creature->Attack(sisiter->getVictim(),false);
Creature* sisiter = Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_SACROLASH));
if (sisiter && !sisiter->isDead() && sisiter->getVictim())
{
m_creature->AddThreat(sisiter->getVictim(),0.0f);
DoStartNoMovement(sisiter->getVictim());
m_creature->Attack(sisiter->getVictim(),false);
}
}
}

View File

@@ -313,6 +313,8 @@ struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI
void RemovePrison()
{
if(!pInstance)
return;
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL);

View File

@@ -53,6 +53,8 @@ struct TRINITY_DLL_DECL npc_toc5_announcerAI : public ScriptedAI
void StartEvent(Player* pPlayer)
{
if(!pInstance)
return;
if(pInstance->GetData(TYPE_GRAND_CHAMPIONS) == NOT_STARTED && pInstance->GetData(TYPE_ARGENT_CHALLENGE) == NOT_STARTED && pInstance->GetData(TYPE_BLACK_KNIGHT) == NOT_STARTED)
{
chmp1 = RAND(35572,35569,35571,35570,35617);
@@ -97,6 +99,9 @@ bool GossipHello_npc_toc5_announcer(Player* pPlayer, Creature* pCreature)
{
ScriptedInstance* pInstance = pCreature->GetInstanceData();
if(!pInstance)
return false;
if(pInstance->GetData(TYPE_GRAND_CHAMPIONS) == NOT_STARTED && pInstance->GetData(TYPE_ARGENT_CHALLENGE) == NOT_STARTED && pInstance->GetData(TYPE_BLACK_KNIGHT) == NOT_STARTED)
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
else

View File

@@ -150,8 +150,11 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
boss_drakkari_elementalAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = pCreature->GetInstanceData();
if (pCreature->GetMap()->IsDungeon())
pColossus = CAST_CRE(pCreature->GetUnit(*pCreature, pInstance->GetData64(DATA_DRAKKARI_COLOSSUS)));
if(pInstance)
{
if (pCreature->GetMap()->IsDungeon())
pColossus = CAST_CRE(pCreature->GetUnit(*pCreature, pInstance->GetData64(DATA_DRAKKARI_COLOSSUS)));
}
}
Creature* pColossus;
@@ -221,8 +224,11 @@ struct TRINITY_DLL_DECL npc_living_mojoAI : public ScriptedAI
{
HeroicMode = pCreature->GetMap()->IsHeroic();
pInstance = pCreature->GetInstanceData();
if (pCreature->GetMap()->IsDungeon())
pColossus = CAST_CRE(pCreature->GetUnit(*pCreature, pInstance->GetData64(DATA_DRAKKARI_COLOSSUS)));
if(pInstance)
{
if (pCreature->GetMap()->IsDungeon())
pColossus = CAST_CRE(pCreature->GetUnit(*pCreature, pInstance->GetData64(DATA_DRAKKARI_COLOSSUS)));
}
}
Creature* pColossus;

View File

@@ -284,7 +284,8 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
void FetchDragons()
{
assert(pInstance);
if(!pInstance)
return;
Creature* pFetchTene = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_TENEBRON));
Creature* pFetchShad = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SHADRON));
Creature* pFetchVesp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_VESPERON));

View File

@@ -246,7 +246,7 @@ struct TRINITY_DLL_DECL boss_dalronn_the_controllerAI : public ScriptedAI
void EnterCombat(Unit *who)
{
if (!ghost)
if (!ghost && pInstance)
{
Unit* skarvald = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SKARVALD));
if (skarvald && skarvald->isAlive() && !skarvald->getVictim())
@@ -261,7 +261,7 @@ struct TRINITY_DLL_DECL boss_dalronn_the_controllerAI : public ScriptedAI
void JustDied(Unit* Killer)
{
if (!ghost)
if (!ghost && pInstance)
{
Unit* skarvald = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SKARVALD));
if (skarvald)

View File

@@ -151,7 +151,7 @@ struct TRINITY_DLL_DECL boss_palehoofAI : public ScriptedAI
if (!UpdateVictim())
return;
Creature* pTemp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MOB_ORB));
Creature* pTemp = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
if (pTemp && pTemp->isAlive())
pTemp->DisappearAndDie();
@@ -182,7 +182,7 @@ struct TRINITY_DLL_DECL boss_palehoofAI : public ScriptedAI
DoScriptText(SAY_DEATH, m_creature);
if (pInstance)
pInstance->SetData(DATA_GORTOK_PALEHOOF_EVENT, DONE);
Creature* pTemp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MOB_ORB));
Creature* pTemp = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
if (pTemp && pTemp->isAlive())
pTemp->DisappearAndDie();
}
@@ -438,7 +438,7 @@ struct TRINITY_DLL_DECL mob_frenzied_worgenAI : public ScriptedAI
{
if (pInstance)
{
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_GORTOK_PALEHOOF));
if (pPalehoof)
CAST_AI(boss_palehoofAI, pPalehoof->AI())->NextPhase();
}