--HG--
branch : trunk
This commit is contained in:
maximius
2009-11-11 12:59:25 -08:00
parent 43d2fe6db4
commit 718fe5008e
4 changed files with 160 additions and 194 deletions
@@ -275,7 +275,7 @@ struct TRINITY_DLL_DECL npc_sinkhole_kill_creditAI : public ScriptedAI
DoCast(m_creature, SPELL_EXPLODE_CART, true); DoCast(m_creature, SPELL_EXPLODE_CART, true);
if (Unit* worm = m_creature->FindNearestCreature(26250, 3)) if (Unit* worm = m_creature->FindNearestCreature(26250, 3))
{ {
m_creature->DealDamage(worm, worm->GetHealth()); m_creature->Kill(worm);
worm->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); worm->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
} }
Phase_Timer = 2000; Phase_Timer = 2000;
@@ -284,7 +284,7 @@ struct TRINITY_DLL_DECL npc_sinkhole_kill_creditAI : public ScriptedAI
case 7: case 7:
DoCast(m_creature, SPELL_EXPLODE_CART, true); DoCast(m_creature, SPELL_EXPLODE_CART, true);
if(Player *caster = Unit::GetPlayer(casterGuid)) if(Player *caster = Unit::GetPlayer(casterGuid))
CAST_PLR(caster)->KilledMonster(m_creature->GetCreatureInfo(),m_creature->GetGUID()); caster->KilledMonster(m_creature->GetCreatureInfo(),m_creature->GetGUID());
Phase_Timer = 5000; Phase_Timer = 5000;
Phase = 8; Phase = 8;
break; break;
@@ -393,9 +393,7 @@ bool GossipHello_npc_corastrasza(Player* pPlayer, Creature* pCreature)
pPlayer->PrepareQuestMenu(pCreature->GetGUID()); pPlayer->PrepareQuestMenu(pCreature->GetGUID());
if (pPlayer->GetQuestStatus(QUEST_ACES_HIGH) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(QUEST_ACES_HIGH_DAILY) == QUEST_STATUS_INCOMPLETE) //It's the same dragon for both quests. if (pPlayer->GetQuestStatus(QUEST_ACES_HIGH) == QUEST_STATUS_INCOMPLETE || pPlayer->GetQuestStatus(QUEST_ACES_HIGH_DAILY) == QUEST_STATUS_INCOMPLETE) //It's the same dragon for both quests.
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_C_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_C_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
}
pPlayer->SEND_GOSSIP_MENU(pCreature->GetNpcTextId(), pCreature->GetGUID()); pPlayer->SEND_GOSSIP_MENU(pCreature->GetNpcTextId(), pCreature->GetGUID());
return true; return true;
@@ -474,14 +472,14 @@ struct TRINITY_DLL_DECL mob_nerubar_victimAI : public ScriptedAI
{ {
if (CAST_PLR(Killer)->GetQuestStatus(11611) == QUEST_STATUS_INCOMPLETE) if (CAST_PLR(Killer)->GetQuestStatus(11611) == QUEST_STATUS_INCOMPLETE)
{ {
uint8 uiRand = rand()%100; uint8 uiRand = urand(0,99);
if (uiRand < 25) if (uiRand < 25)
{ {
Killer->CastSpell(m_creature,45532,true); Killer->CastSpell(m_creature,45532,true);
CAST_PLR(Killer)->KilledMonsterCredit(WARSONG_PEON, 0); CAST_PLR(Killer)->KilledMonsterCredit(WARSONG_PEON, 0);
} }
else if (uiRand < 75) else if (uiRand < 75)
Killer->CastSpell(m_creature,nerubarVictims[rand()%3],true); Killer->CastSpell(m_creature, nerubarVictims[urand(0,2)], true);
} }
} }
} }
@@ -508,11 +506,9 @@ struct TRINITY_DLL_DECL npc_scourge_prisonerAI : public ScriptedAI
m_creature->SetReactState(REACT_PASSIVE); m_creature->SetReactState(REACT_PASSIVE);
if (GameObject* pGO = m_creature->FindNearestGameObject(GO_SCOURGE_CAGE,5.0f)) if (GameObject* pGO = m_creature->FindNearestGameObject(GO_SCOURGE_CAGE,5.0f))
{
if (pGO->GetGoState() == GO_STATE_ACTIVE) if (pGO->GetGoState() == GO_STATE_ACTIVE)
pGO->SetGoState(GO_STATE_READY); pGO->SetGoState(GO_STATE_READY);
} }
}
}; };
CreatureAI* GetAI_npc_scourge_prisoner(Creature* pCreature) CreatureAI* GetAI_npc_scourge_prisoner(Creature* pCreature)
@@ -548,11 +544,15 @@ struct TRINITY_DLL_DECL npc_jennyAI : public ScriptedAI
m_creature->SetReactState(REACT_PASSIVE); m_creature->SetReactState(REACT_PASSIVE);
if(((Player*)m_creature->GetOwner())->GetTeamId() == TEAM_ALLIANCE) switch (CAST_PLR(m_creature->GetOwner())->GetTeamId())
{ {
case TEAM_ALLIANCE:
m_creature->setFaction(FACTION_ESCORT_A_NEUTRAL_ACTIVE); m_creature->setFaction(FACTION_ESCORT_A_NEUTRAL_ACTIVE);
}else{ break;
default:
case TEAM_HORDE:
m_creature->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE); m_creature->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE);
break;
} }
} }
@@ -565,10 +565,10 @@ struct TRINITY_DLL_DECL npc_jennyAI : public ScriptedAI
{ {
if(pWho->GetEntry() == NPC_FEZZIX_GEARTWIST) if(pWho->GetEntry() == NPC_FEZZIX_GEARTWIST)
{ {
if(((Player*)m_creature->GetOwner())->GetQuestStatus(QUEST_LOADER_UP) == QUEST_STATUS_INCOMPLETE && m_creature->GetAura(SPELL_CRATES_CARRIED)) if(CAST_PLR(m_creature->GetOwner())->GetQuestStatus(QUEST_LOADER_UP) == QUEST_STATUS_INCOMPLETE && m_creature->GetAura(SPELL_CRATES_CARRIED))
{ {
m_creature->CastSpell(((Player*)m_creature->GetOwner()),SPELL_GIVE_JENNY_CREDIT,true); // Maybe is not working. m_creature->CastSpell(CAST_PLR(m_creature->GetOwner()),SPELL_GIVE_JENNY_CREDIT,true); // Maybe is not working.
((Player*)m_creature->GetOwner())->CompleteQuest(QUEST_LOADER_UP); CAST_PLR(m_creature->GetOwner())->CompleteQuest(QUEST_LOADER_UP);
m_creature->DisappearAndDie(); m_creature->DisappearAndDie();
} }
} }
@@ -583,11 +583,8 @@ struct TRINITY_DLL_DECL npc_jennyAI : public ScriptedAI
} }
if (setCrateNumber == false && !m_creature->HasAura(SPELL_CRATES_CARRIED)) if (setCrateNumber == false && !m_creature->HasAura(SPELL_CRATES_CARRIED))
{
m_creature->DisappearAndDie(); m_creature->DisappearAndDie();
} }
}
}; };
CreatureAI* GetAI_npc_jenny(Creature *pCreature) CreatureAI* GetAI_npc_jenny(Creature *pCreature)
@@ -626,7 +623,7 @@ enum eNesingwaryTrapper
struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
{ {
npc_nesingwary_trapperAI(Creature *c) : ScriptedAI(c) {m_creature->SetVisibility(VISIBILITY_OFF);} npc_nesingwary_trapperAI(Creature *c) : ScriptedAI(c) { c->SetVisibility(VISIBILITY_OFF); }
GameObject *go_caribou; GameObject *go_caribou;
uint8 Phase; uint8 Phase;
@@ -647,8 +644,7 @@ struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
if (go_caribou && go_caribou->GetTypeId() == TYPEID_GAMEOBJECT) if (go_caribou && go_caribou->GetTypeId() == TYPEID_GAMEOBJECT)
go_caribou->SetLootState(GO_JUST_DEACTIVATED); go_caribou->SetLootState(GO_JUST_DEACTIVATED);
TempSummon *summon = (TempSummon*)m_creature; if (TempSummon *summon = (TempSummon*)m_creature)
if (summon)
if (Unit *pTemp = summon->GetSummoner()) if (Unit *pTemp = summon->GetSummoner())
if (pTemp->GetTypeId() == TYPEID_PLAYER) if (pTemp->GetTypeId() == TYPEID_PLAYER)
CAST_PLR(pTemp)->KilledMonsterCredit(m_creature->GetEntry(),0); CAST_PLR(pTemp)->KilledMonsterCredit(m_creature->GetEntry(),0);
@@ -659,13 +655,12 @@ struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (Phase_Timer < diff) if (Phase_Timer <= diff)
{ {
switch (Phase) switch (Phase)
{ {
case 1: case 1:
m_creature->SetVisibility(VISIBILITY_ON); m_creature->SetVisibility(VISIBILITY_ON);
Phase_Timer = 2000; Phase_Timer = 2000;
Phase = 2; Phase = 2;
break; break;
@@ -676,32 +671,24 @@ struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
Phase_Timer = 1500; Phase_Timer = 1500;
Phase = 3; Phase = 3;
break; break;
case 3: case 3:
//DoScriptText(SAY_NESINGWARY_1, m_creature); //DoScriptText(SAY_NESINGWARY_1, m_creature);
Phase_Timer = 2000; Phase_Timer = 2000;
Phase = 4; Phase = 4;
break; break;
case 4: case 4:
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LOOT); m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
Phase_Timer = 1000; Phase_Timer = 1000;
Phase = 5; Phase = 5;
break; break;
case 5: case 5:
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_NONE); m_creature->HandleEmoteCommand(EMOTE_ONESHOT_NONE);
Phase_Timer = 500; Phase_Timer = 500;
Phase = 6; Phase = 6;
break; break;
case 6: case 6:
if (GameObject *go_fur = m_creature->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f)) if (GameObject *go_fur = m_creature->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
go_fur->Delete(); go_fur->Delete();
Phase_Timer = 500; Phase_Timer = 500;
Phase = 7; Phase = 7;
break; break;
@@ -722,13 +709,10 @@ struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_13, 5.0f)) || (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_13, 5.0f)) ||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_14, 5.0f)) || (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_14, 5.0f)) ||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_15, 5.0f))) (go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_15, 5.0f)))
go_caribou->SetGoState(GO_STATE_ACTIVE); go_caribou->SetGoState(GO_STATE_ACTIVE);
Phase = 8; Phase = 8;
Phase_Timer = 1000; Phase_Timer = 1000;
break; break;
case 8: case 8:
m_creature->CastSpell(m_creature,SPELL_TRAPPED,true); m_creature->CastSpell(m_creature,SPELL_TRAPPED,true);
Phase = 0; Phase = 0;
@@ -794,39 +778,32 @@ struct TRINITY_DLL_DECL npc_lurgglbrAI : public npc_escortAI
{ {
if (IntroPhase) if (IntroPhase)
{ {
if (IntroTimer < diff) if (IntroTimer <= diff)
{ {
switch(IntroPhase) switch(IntroPhase)
{ {
case 1: case 1:
//DoScriptText(SAY_WP_1_LUR_START,m_creature); //DoScriptText(SAY_WP_1_LUR_START,m_creature);
IntroPhase = 2; IntroPhase = 2;
IntroTimer = 7500; IntroTimer = 7500;
break; break;
case 2: case 2:
//DoScriptText(SAY_WP_1_LUR_END,m_creature); //DoScriptText(SAY_WP_1_LUR_END,m_creature);
IntroPhase = 3; IntroPhase = 3;
IntroTimer = 7500; IntroTimer = 7500;
break; break;
case 3: case 3:
m_creature->SetReactState(REACT_AGGRESSIVE); m_creature->SetReactState(REACT_AGGRESSIVE);
IntroPhase = 0; IntroPhase = 0;
IntroTimer = 0; IntroTimer = 0;
break; break;
case 4: case 4:
//DoScriptText(SAY_WP_41_LUR_START,m_creature); //DoScriptText(SAY_WP_41_LUR_START,m_creature);
IntroPhase = 5; IntroPhase = 5;
IntroTimer = 8000; IntroTimer = 8000;
break; break;
case 5: case 5:
//DoScriptText(SAY_WP_41_LUR_END,m_creature); //DoScriptText(SAY_WP_41_LUR_END,m_creature);
IntroPhase = 6; IntroPhase = 6;
IntroTimer = 2500; IntroTimer = 2500;
break; break;
@@ -834,14 +811,12 @@ struct TRINITY_DLL_DECL npc_lurgglbrAI : public npc_escortAI
case 6: case 6:
if (Player* pPlayer = GetPlayerForEscort()) if (Player* pPlayer = GetPlayerForEscort())
pPlayer->AreaExploredOrEventHappens(QUEST_ESCAPE_WINTERFIN_CAVERNS); pPlayer->AreaExploredOrEventHappens(QUEST_ESCAPE_WINTERFIN_CAVERNS);
IntroPhase = 7; IntroPhase = 7;
IntroTimer = 2500; IntroTimer = 2500;
break; break;
case 7: case 7:
m_creature->ForcedDespawn(); m_creature->ForcedDespawn();
IntroPhase = 0; IntroPhase = 0;
IntroTimer = 0; IntroTimer = 0;
break; break;
@@ -857,9 +832,9 @@ CreatureAI* GetAI_npc_lurgglbr(Creature* pCreature)
return new npc_lurgglbrAI(pCreature); return new npc_lurgglbrAI(pCreature);
} }
bool QuestAccept_npc_lurgglbr(Player* pPlayer, Creature* pCreature, Quest const *_Quest) bool QuestAccept_npc_lurgglbr(Player* pPlayer, Creature* pCreature, Quest const *pQuest)
{ {
if (_Quest->GetQuestId() == QUEST_ESCAPE_WINTERFIN_CAVERNS) if (pQuest->GetQuestId() == QUEST_ESCAPE_WINTERFIN_CAVERNS)
{ {
if(GameObject* pGo = pCreature->FindNearestGameObject(GO_CAGE, 5.0f)) if(GameObject* pGo = pCreature->FindNearestGameObject(GO_CAGE, 5.0f))
{ {
@@ -871,11 +846,16 @@ bool QuestAccept_npc_lurgglbr(Player* pPlayer, Creature* pCreature, Quest const
if (npc_escortAI* pEscortAI = CAST_AI(npc_lurgglbrAI, pCreature->AI())) if (npc_escortAI* pEscortAI = CAST_AI(npc_lurgglbrAI, pCreature->AI()))
pEscortAI->Start(true, false, pPlayer->GetGUID()); pEscortAI->Start(true, false, pPlayer->GetGUID());
if (pPlayer->GetTeam() == ALLIANCE) switch (pPlayer->GetTeam())
{
case ALLIANCE:
pCreature->setFaction(FACTION_ESCORTEE_A); pCreature->setFaction(FACTION_ESCORTEE_A);
break;
if (pPlayer->GetTeam() == HORDE) default:
case HORDE:
pCreature->setFaction(FACTION_ESCORTEE_H); pCreature->setFaction(FACTION_ESCORTEE_H);
break;
}
return true; return true;
} }
@@ -903,14 +883,11 @@ struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The sp
{ {
npc_nexus_drake_hatchlingAI(Creature *c) : FollowerAI(c) { Reset(); } npc_nexus_drake_hatchlingAI(Creature *c) : FollowerAI(c) { Reset(); }
bool WithRedDragonBlood; Player *pHarpooner;
Unit* pPlayer;
void Reset() void Reset()
{ {
WithRedDragonBlood = false; pHarpooner = NULL;
pPlayer = NULL;
} }
void EnterCombat(Unit* pWho) void EnterCombat(Unit* pWho)
@@ -921,13 +898,10 @@ struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The sp
void SpellHit(Unit *caster, const SpellEntry *spell) void SpellHit(Unit *caster, const SpellEntry *spell)
{ {
if (spell->Id == SPELL_DRAKE_HARPOON) if (spell->Id == SPELL_DRAKE_HARPOON && caster->GetTypeId() == TYPEID_PLAYER)
{ {
pPlayer = caster; pHarpooner = CAST_PLR(caster);
m_creature->CastSpell(m_creature,SPELL_RED_DRAGONBLOOD,true); m_creature->CastSpell(m_creature,SPELL_RED_DRAGONBLOOD,true);
WithRedDragonBlood = true;
} }
} }
@@ -935,12 +909,15 @@ struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The sp
{ {
FollowerAI::MoveInLineOfSight(pWho); FollowerAI::MoveInLineOfSight(pWho);
if (!pHarpooner || !pHarpooner->IsInWorld())
return;
if (m_creature->HasAura(SPELL_SUBDUED) && pWho->GetEntry() == NPC_RAELORASZ) if (m_creature->HasAura(SPELL_SUBDUED) && pWho->GetEntry() == NPC_RAELORASZ)
{ {
if (m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE) && pPlayer && pPlayer->GetTypeId() == TYPEID_PLAYER) if (m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
{ {
CAST_PLR(pPlayer)->KilledMonsterCredit(26175,0); pHarpooner->KilledMonsterCredit(26175,0);
CAST_PLR(pPlayer)->RemoveAura(SPELL_DRAKE_HATCHLING_SUBDUED); pHarpooner->RemoveAura(SPELL_DRAKE_HATCHLING_SUBDUED);
SetFollowComplete(); SetFollowComplete();
m_creature->DisappearAndDie(); m_creature->DisappearAndDie();
} }
@@ -949,19 +926,19 @@ struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The sp
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (WithRedDragonBlood && !m_creature->HasAura(SPELL_RED_DRAGONBLOOD) && pPlayer && pPlayer->GetTypeId() == TYPEID_PLAYER) if (pHarpooner && pHarpooner->IsInWorld() && !m_creature->HasAura(SPELL_RED_DRAGONBLOOD))
{ {
if (npc_nexus_drake_hatchlingAI* pDrakeAI = CAST_AI(npc_nexus_drake_hatchlingAI, m_creature->AI())) if (npc_nexus_drake_hatchlingAI* pDrakeAI = CAST_AI(npc_nexus_drake_hatchlingAI, m_creature->AI()))
{ {
EnterEvadeMode(); EnterEvadeMode();
pDrakeAI->StartFollow(CAST_PLR(pPlayer), 35, NULL); pDrakeAI->StartFollow(pHarpooner, 35, NULL);
} }
m_creature->CastSpell(m_creature, SPELL_SUBDUED, true); m_creature->CastSpell(m_creature, SPELL_SUBDUED, true);
pPlayer->CastSpell(pPlayer,SPELL_DRAKE_HATCHLING_SUBDUED,true); pHarpooner->CastSpell(pHarpooner, SPELL_DRAKE_HATCHLING_SUBDUED, true);
m_creature->AttackStop(); m_creature->AttackStop();
WithRedDragonBlood = false; pHarpooner = NULL;
} }
if (!UpdateVictim()) if (!UpdateVictim())
@@ -263,9 +263,10 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
void FetchDragons() void FetchDragons()
{ {
Creature* pFetchTene = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_TENEBRON)); assert(pInstance);
Creature* pFetchShad = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_SHADRON)); Creature* pFetchTene = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_TENEBRON));
Creature* pFetchVesp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_VESPERON)); Creature* pFetchShad = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SHADRON));
Creature* pFetchVesp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_VESPERON));
//if at least one of the dragons are alive and are being called //if at least one of the dragons are alive and are being called
bool bCanUseWill = false; bool bCanUseWill = false;
@@ -305,23 +306,17 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
{ {
std::list<HostilReference*>& threatlist = m_creature->getThreatManager().getThreatList(); std::list<HostilReference*>& threatlist = m_creature->getThreatManager().getThreatList();
for (std::list<HostilReference*>::iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) for (std::list<HostilReference*>::iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
{ if (Unit *target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()))
Unit *target = Unit::GetUnit((*m_creature),(*itr)->getUnitGuid()); if (target->GetTypeId() == TYPEID_PLAYER)
if (target && target->GetTypeId() == TYPEID_PLAYER)
{
m_creature->AddAura(spellPowerOf, target); m_creature->AddAura(spellPowerOf, target);
} }
}
}
void CallDragon(uint32 uiDataId) void CallDragon(uint32 uiDataId)
{ {
if (pInstance) if (pInstance)
{ if (Creature *pTemp = Unit::GetCreature(*m_creature,pInstance->GetData64(uiDataId)))
Creature* pTemp = Unit::GetCreature((*m_creature),pInstance->GetData64(uiDataId)); if (pTemp->isAlive() && !pTemp->getVictim())
if (pTemp && pTemp->isAlive() && !pTemp->getVictim())
{ {
if (pTemp->HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE)) if (pTemp->HasUnitMovementFlag(MOVEMENTFLAG_WALK_MODE))
pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); pTemp->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
@@ -354,26 +349,20 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
DoScriptText(iTextId, m_creature); DoScriptText(iTextId, m_creature);
} }
} }
}
void SendFlameTsunami() void SendFlameTsunami()
{ {
Map* pMap = m_creature->GetMap(); if (Map* pMap = m_creature->GetMap())
if (pMap->IsDungeon())
if (pMap && pMap->IsDungeon())
{ {
Map::PlayerList const &PlayerList = pMap->GetPlayers(); Map::PlayerList const &PlayerList = pMap->GetPlayers();
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 (i->getSource() && i->getSource()->isAlive()) if (i->getSource() && i->getSource()->isAlive())
DoScriptText(WHISPER_LAVA_CHURN, m_creature, i->getSource()); DoScriptText(WHISPER_LAVA_CHURN, m_creature, i->getSource());
} }
} }
}
}
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
+2 -2
View File
@@ -1255,9 +1255,9 @@ void OPvPWintergrasp::UpdateTenacityStack()
if (allianceNum && hordeNum) if (allianceNum && hordeNum)
{ {
if (allianceNum < hordeNum) if (allianceNum < hordeNum)
newStack = int32(((float)hordeNum / (float)allianceNum - 1)*4); // positive, should cast on alliance newStack = int32((float(hordeNum) / float(allianceNum) - 1)*4); // positive, should cast on alliance
else if (allianceNum > hordeNum) else if (allianceNum > hordeNum)
newStack = int32((1 - (float)allianceNum / (float)hordeNum)*4); // negative, should cast on horde newStack = int32((1 - float(allianceNum) / float(hordeNum))*4); // negative, should cast on horde
} }
if (newStack == m_tenacityStack) if (newStack == m_tenacityStack)