Prevent crash when GetSummoner() is used.
--HG-- branch : trunk
This commit is contained in:
@@ -645,9 +645,10 @@ struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
|
|||||||
go_caribou->SetLootState(GO_JUST_DEACTIVATED);
|
go_caribou->SetLootState(GO_JUST_DEACTIVATED);
|
||||||
|
|
||||||
if (TempSummon *summon = (TempSummon*)m_creature)
|
if (TempSummon *summon = (TempSummon*)m_creature)
|
||||||
if (Unit *pTemp = summon->GetSummoner())
|
if (summon->isSummon())
|
||||||
if (pTemp->GetTypeId() == TYPEID_PLAYER)
|
if (Unit *pTemp = summon->GetSummoner())
|
||||||
CAST_PLR(pTemp)->KilledMonsterCredit(m_creature->GetEntry(),0);
|
if (pTemp->GetTypeId() == TYPEID_PLAYER)
|
||||||
|
CAST_PLR(pTemp)->KilledMonsterCredit(m_creature->GetEntry(),0);
|
||||||
|
|
||||||
if (go_caribou && go_caribou->GetTypeId() == TYPEID_GAMEOBJECT)
|
if (go_caribou && go_caribou->GetTypeId() == TYPEID_GAMEOBJECT)
|
||||||
go_caribou->SetGoState(GO_STATE_READY);
|
go_caribou->SetGoState(GO_STATE_READY);
|
||||||
@@ -1307,8 +1308,9 @@ struct TRINITY_DLL_DECL npc_image_lich_kingAI : public ScriptedAI
|
|||||||
if (uiType != POINT_MOTION_TYPE)
|
if (uiType != POINT_MOTION_TYPE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bArthasInPosition = true;
|
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||||
|
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bArthasInPosition = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1332,8 +1334,9 @@ struct TRINITY_DLL_DECL npc_general_arlosAI : public ScriptedAI
|
|||||||
|
|
||||||
m_creature->addUnitState(UNIT_STAT_STUNNED);
|
m_creature->addUnitState(UNIT_STAT_STUNNED);
|
||||||
m_creature->CastSpell(m_creature, SPELL_STUN, true);
|
m_creature->CastSpell(m_creature, SPELL_STUN, true);
|
||||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bArlosInPosition = true;
|
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||||
|
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bArlosInPosition = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1382,8 +1385,9 @@ struct TRINITY_DLL_DECL npc_counselor_talbotAI : public ScriptedAI
|
|||||||
if(uiType != POINT_MOTION_TYPE)
|
if(uiType != POINT_MOTION_TYPE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bTalbotInPosition = true;
|
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||||
|
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bTalbotInPosition = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 uiDiff)
|
void UpdateAI(const uint32 uiDiff)
|
||||||
@@ -1481,14 +1485,16 @@ struct TRINITY_DLL_DECL npc_leryssaAI : public ScriptedAI
|
|||||||
m_creature->addUnitState(UNIT_STAT_STUNNED);
|
m_creature->addUnitState(UNIT_STAT_STUNNED);
|
||||||
m_creature->CastSpell(m_creature, SPELL_STUN, true);
|
m_creature->CastSpell(m_creature, SPELL_STUN, true);
|
||||||
|
|
||||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bLeryssaInPosition = true;
|
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||||
|
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bLeryssaInPosition = true;
|
||||||
bDone = true;
|
bDone = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_creature->SetStandState(UNIT_STAND_STATE_SIT);
|
m_creature->SetStandState(UNIT_STAND_STATE_SIT);
|
||||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
|
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||||
pSummoner->SetStandState(UNIT_STAND_STATE_SIT);
|
pSummoner->SetStandState(UNIT_STAND_STATE_SIT);
|
||||||
Phase_Timer = 1500;
|
Phase_Timer = 1500;
|
||||||
Phase = 1;
|
Phase = 1;
|
||||||
@@ -1504,8 +1510,9 @@ struct TRINITY_DLL_DECL npc_leryssaAI : public ScriptedAI
|
|||||||
switch (Phase)
|
switch (Phase)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
DoScriptText(SAY_THASSARIAN_4, pThassarian);
|
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||||
|
DoScriptText(SAY_THASSARIAN_4, pThassarian);
|
||||||
Phase_Timer = 5000;
|
Phase_Timer = 5000;
|
||||||
++Phase;
|
++Phase;
|
||||||
break;
|
break;
|
||||||
@@ -1515,8 +1522,9 @@ struct TRINITY_DLL_DECL npc_leryssaAI : public ScriptedAI
|
|||||||
++Phase;
|
++Phase;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
DoScriptText(SAY_THASSARIAN_5, pThassarian);
|
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||||
|
DoScriptText(SAY_THASSARIAN_5, pThassarian);
|
||||||
Phase_Timer = 5000;
|
Phase_Timer = 5000;
|
||||||
++Phase;
|
++Phase;
|
||||||
break;
|
break;
|
||||||
@@ -1526,7 +1534,8 @@ struct TRINITY_DLL_DECL npc_leryssaAI : public ScriptedAI
|
|||||||
++Phase;
|
++Phase;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
|
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||||
DoScriptText(SAY_THASSARIAN_6, pThassarian);
|
DoScriptText(SAY_THASSARIAN_6, pThassarian);
|
||||||
Phase_Timer = 5000;
|
Phase_Timer = 5000;
|
||||||
++Phase;
|
++Phase;
|
||||||
@@ -1538,11 +1547,12 @@ struct TRINITY_DLL_DECL npc_leryssaAI : public ScriptedAI
|
|||||||
++Phase;
|
++Phase;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
if (m_creature->isSummon())
|
||||||
{
|
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||||
DoScriptText(SAY_THASSARIAN_7, pThassarian);
|
{
|
||||||
CAST_AI(npc_thassarianAI,CAST_CRE(pThassarian)->AI())->uiPhase = 16;
|
DoScriptText(SAY_THASSARIAN_7, pThassarian);
|
||||||
}
|
CAST_AI(npc_thassarianAI,CAST_CRE(pThassarian)->AI())->uiPhase = 16;
|
||||||
|
}
|
||||||
Phase_Timer = 5000;
|
Phase_Timer = 5000;
|
||||||
Phase = 0;
|
Phase = 0;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user