diff options
Diffstat (limited to 'src')
74 files changed, 637 insertions, 380 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp index a31418419bb..fcd44d94842 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -33,7 +33,7 @@ void SummonList::DespawnEntry(uint32 entry) { for(iterator i = begin(); i != end(); ++i) { - if(Creature *summon = (Creature*)Unit::GetUnit(*m_creature, *i)) + if(Creature *summon = Unit::GetCreature(*m_creature, *i)) { if(summon->GetEntry() == entry) { @@ -55,7 +55,7 @@ void SummonList::DespawnAll() { for(iterator i = begin(); i != end(); ++i) { - if(Creature *summon = (Creature*)Unit::GetUnit(*m_creature, *i)) + if(Creature *summon = Unit::GetCreature(*m_creature, *i)) { summon->setDeathState(JUST_DIED); summon->RemoveCorpse(); diff --git a/src/bindings/scripts/scripts/npc/npcs_special.cpp b/src/bindings/scripts/scripts/npc/npcs_special.cpp index a9f20422223..49bc64e9021 100644 --- a/src/bindings/scripts/scripts/npc/npcs_special.cpp +++ b/src/bindings/scripts/scripts/npc/npcs_special.cpp @@ -365,7 +365,7 @@ struct TRINITY_DLL_DECL npc_injured_patientAI : public ScriptedAI { if (Doctorguid) { - if (Creature* Doctor = ((Creature*)Unit::GetUnit((*m_creature), Doctorguid))) + if(Creature* Doctor = Unit::GetCreature(*m_creature, Doctorguid)) ((npc_doctorAI*)Doctor->AI())->PatientSaved(m_creature, ((Player*)caster), Coord); } } @@ -423,7 +423,7 @@ struct TRINITY_DLL_DECL npc_injured_patientAI : public ScriptedAI if (Doctorguid) { - if (Creature* Doctor = ((Creature*)Unit::GetUnit((*m_creature), Doctorguid))) + if(Creature* Doctor = Unit::GetCreature((*m_creature), Doctorguid)) ((npc_doctorAI*)Doctor->AI())->PatientDied(Coord); } } @@ -466,7 +466,7 @@ void npc_doctorAI::BeginEvent(Player* player) void npc_doctorAI::PatientDied(Location* Point) { - Player* player = ((Player*)Unit::GetUnit((*m_creature), Playerguid)); + Player* player = Unit::GetPlayer(Playerguid); if(player && ((player->GetQuestStatus(6624) == QUEST_STATUS_INCOMPLETE) || (player->GetQuestStatus(6622) == QUEST_STATUS_INCOMPLETE))) { PatientDiedCount++; @@ -500,7 +500,7 @@ void npc_doctorAI::PatientSaved(Creature* soldier, Player* player, Location* Poi std::list<uint64>::iterator itr; for(itr = Patients.begin(); itr != Patients.end(); ++itr) { - if (Creature* Patient = ((Creature*)Unit::GetUnit((*m_creature), *itr))) + if(Creature* Patient = Unit::GetCreature((*m_creature), *itr)) Patient->setDeathState(JUST_DIED); } } diff --git a/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp b/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp index 37f6b20957d..084e958a92a 100644 --- a/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp +++ b/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp @@ -54,7 +54,7 @@ struct TRINITY_DLL_DECL npc_professor_phizzlethorpeAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); switch(i) { @@ -100,7 +100,7 @@ struct TRINITY_DLL_DECL npc_professor_phizzlethorpeAI : public npc_escortAI { if (PlayerGUID && !Completed ) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_SUNKEN_TREASURE); } diff --git a/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp b/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp index e87e75f409a..fb7b5c30545 100644 --- a/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp +++ b/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp @@ -59,7 +59,7 @@ struct TRINITY_DLL_DECL npc_torekAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -113,7 +113,7 @@ struct TRINITY_DLL_DECL npc_torekAI : public npc_escortAI if (PlayerGUID && !Completed) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) + if (Player* player = Unit::GetPlayer(PlayerGUID)) ((Player*)player)->FailQuest(QUEST_TOREK_ASSULT); } } @@ -174,7 +174,7 @@ struct TRINITY_DLL_DECL npc_ruul_snowhoofAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -227,7 +227,7 @@ struct TRINITY_DLL_DECL npc_ruul_snowhoofAI : public npc_escortAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_FREEDOM_TO_RUUL); } diff --git a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp index 03605ab4eb7..33a0ec3320f 100644 --- a/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp +++ b/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp @@ -58,13 +58,13 @@ struct TRINITY_DLL_DECL instance_shadow_labyrinth : public ScriptedInstance FelOverseerCount = 0; for(uint8 i = 0; i < ENCOUNTERS; i++) - Encounter[i] = false; + Encounter[i] = NOT_STARTED; } bool IsEncounterInProgress() const { for(uint8 i = 0; i < ENCOUNTERS; i++) - if(Encounter[i]) return true; + if(Encounter[i] == IN_PROGRESS) return true; return false; } diff --git a/src/bindings/scripts/scripts/zone/azshara/azshara.cpp b/src/bindings/scripts/scripts/zone/azshara/azshara.cpp index 845625a2ac0..d94579361de 100644 --- a/src/bindings/scripts/scripts/zone/azshara/azshara.cpp +++ b/src/bindings/scripts/scripts/zone/azshara/azshara.cpp @@ -306,7 +306,7 @@ struct TRINITY_DLL_DECL mob_rizzle_sprysprocketAI : public ScriptedAI m_creature->AI_SendMoveToPacket(3706.39, -3969.15, 35.9118, 0, 0, 0); } //begin swimming and summon depth charges - Player* player = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID)); + Player* player = Unit::GetPlayer(PlayerGUID); SendText(MSG_ESCAPE_NOTICE, player); DoCast(m_creature, SPELL_PERIODIC_DEPTH_CHARGE); m_creature->SetUnitMovementFlags(MOVEMENTFLAG_FLYING2 | MOVEMENTFLAG_SWIMMING); diff --git a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp index d834488409a..febf52effd1 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -125,7 +125,7 @@ struct TRINITY_DLL_DECL npc_draenei_survivorAI : public ScriptedAI { m_creature->RemoveAurasDueToSpell(SPELL_IRRIDATION); - if (Player *pPlayer = (Player*)Unit::GetUnit(*m_creature,pCaster)) + if (Player *pPlayer = Unit::GetPlayer(pCaster)) { if (pPlayer->GetTypeId() != TYPEID_PLAYER) return; @@ -316,7 +316,7 @@ struct TRINITY_DLL_DECL npc_magwinAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -356,7 +356,7 @@ struct TRINITY_DLL_DECL npc_magwinAI : public npc_escortAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_A_CRY_FOR_SAY_HELP); } diff --git a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp index 878865fec2c..4d8d3b6411b 100644 --- a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp +++ b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp @@ -254,7 +254,7 @@ struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI Player* pWarrior = NULL; if(PlayerGUID) - pWarrior = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID)); + pWarrior = Unit::GetPlayer(PlayerGUID); if(!pWarrior) return; @@ -268,7 +268,7 @@ struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI { if (AffrayChallenger[i]) { - Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), AffrayChallenger[i]); + Creature* pCreature = Unit::GetCreature((*m_creature), AffrayChallenger[i]); if(pCreature) { if(pCreature->isAlive()) { @@ -284,7 +284,7 @@ struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI if (BigWill) { - Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), BigWill); + Creature* pCreature = Unit::GetCreature((*m_creature), BigWill); if(pCreature) { if(pCreature->isAlive()) { pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT); @@ -329,7 +329,7 @@ struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI { if (AffrayChallenger[i]) { - Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), AffrayChallenger[i]); + Creature* pCreature = Unit::GetCreature((*m_creature), AffrayChallenger[i]); if((!pCreature || (!pCreature->isAlive())) && !Challenger_down[i]) { DoScriptText(SAY_TWIGGY_FLATHEAD_DOWN, m_creature); @@ -345,7 +345,7 @@ struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI if (AffrayChallenger[Wave] && Wave < 6 && !EventBigWill) { DoScriptText(SAY_TWIGGY_FLATHEAD_FRAY, m_creature); - Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), AffrayChallenger[Wave]); + Creature* pCreature = Unit::GetCreature((*m_creature), AffrayChallenger[Wave]); if(pCreature && (pCreature->isAlive())) { pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -371,7 +371,7 @@ struct TRINITY_DLL_DECL npc_twiggy_flatheadAI : public ScriptedAI } else if (Wave >= 6 && EventBigWill && BigWill) { - Creature* pCreature = (Creature*)Unit::GetUnit((*m_creature), BigWill); + Creature* pCreature = Unit::GetCreature((*m_creature), BigWill); if (!pCreature || !pCreature->isAlive()) { DoScriptText(SAY_TWIGGY_FLATHEAD_OVER, m_creature); @@ -420,7 +420,7 @@ struct TRINITY_DLL_DECL npc_wizzlecrank_shredderAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(!player) return; @@ -468,7 +468,7 @@ struct TRINITY_DLL_DECL npc_wizzlecrank_shredderAI : public npc_escortAI { if (PlayerGUID && !Completed) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_ESCAPE); } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index 7e656bccee0..6d36e208a70 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -26,7 +26,7 @@ EndScriptData */ #define GETGO(obj, guid) GameObject* obj = GameObject::GetGameObject(*m_creature, guid) #define GETUNIT(unit, guid) Unit* unit = Unit::GetUnit(*m_creature, guid) -#define GETCRE(cre, guid) Creature* cre = (Creature*)Unit::GetUnit(*m_creature, guid) +#define GETCRE(cre, guid) Creature* cre = Unit::GetCreature(*m_creature, guid) #define HPPCT(unit) unit->GetHealth()*100 / unit->GetMaxHealth() /************* Quotes and Sounds ***********************/ @@ -522,9 +522,9 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI if(Conversation[count].creature == ILLIDAN_STORMRAGE) creature = m_creature; else if(Conversation[count].creature == AKAMA) - creature = ((Creature*)Unit::GetUnit((*m_creature), AkamaGUID)); + creature = (Unit::GetCreature((*m_creature), AkamaGUID)); else if(Conversation[count].creature == MAIEV_SHADOWSONG) - creature = ((Creature*)Unit::GetUnit((*m_creature), MaievGUID)); + creature = (Unit::GetCreature((*m_creature), MaievGUID)); if(creature) { diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp index 37ebaca0b78..851c5f4c243 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp @@ -213,7 +213,7 @@ struct TRINITY_DLL_DECL boss_reliquary_of_soulsAI : public ScriptedAI Creature* Essence; if(EssenceGUID) { - Essence = (Creature*)Unit::GetUnit(*m_creature, EssenceGUID); + Essence = Unit::GetCreature(*m_creature, EssenceGUID); if(!Essence) { EnterEvadeMode(); @@ -624,7 +624,7 @@ void npc_enslaved_soulAI::JustDied(Unit *killer) { if(ReliquaryGUID) { - Creature* Reliquary = ((Creature*)Unit::GetUnit((*m_creature), ReliquaryGUID)); + Creature* Reliquary = (Unit::GetCreature((*m_creature), ReliquaryGUID)); if(Reliquary) ((boss_reliquary_of_soulsAI*)Reliquary->AI())->SoulDeathCount++; } diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp index f8f742d3a3c..0e4cc9129db 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp @@ -200,7 +200,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI { for(std::list<uint64>::iterator itr = Sorcerers.begin(); itr != Sorcerers.end(); ++itr) { - if(Creature* Sorcerer = ((Creature*)Unit::GetUnit(*m_creature, *itr))) + if(Creature* Sorcerer = (Unit::GetCreature(*m_creature, *itr))) if(Sorcerer->isAlive()) { Sorcerer->SetVisibility(VISIBILITY_OFF); @@ -248,7 +248,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI for(std::list<uint64>::iterator itr = Channelers.begin(); itr != Channelers.end(); ++itr) { Creature* Channeler = NULL; - Channeler = ((Creature*)Unit::GetUnit(*m_creature, *itr)); + Channeler = (Unit::GetCreature(*m_creature, *itr)); if (Channeler) { @@ -372,7 +372,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI } for(std::list<uint64>::iterator itr = Channelers.begin(); itr != Channelers.end(); ++itr) - if(Creature* Channeler = ((Creature*)Unit::GetUnit(*m_creature, *itr))) + if(Creature* Channeler = (Unit::GetCreature(*m_creature, *itr))) Channeler->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } @@ -484,7 +484,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI void mob_ashtongue_channelerAI::JustDied(Unit* killer) { - Creature* Shade = ((Creature*)Unit::GetUnit((*m_creature), ShadeGUID)); + Creature* Shade = (Unit::GetCreature((*m_creature), ShadeGUID)); if(Shade && Shade->isAlive()) ((boss_shade_of_akamaAI*)Shade->AI())->IncrementDeathCount(); else error_log("SD2 ERROR: Channeler dead but unable to increment DeathCount for Shade of Akama."); @@ -492,7 +492,7 @@ void mob_ashtongue_channelerAI::JustDied(Unit* killer) void mob_ashtongue_sorcererAI::JustDied(Unit* killer) { - Creature* Shade = ((Creature*)Unit::GetUnit((*m_creature), ShadeGUID)); + Creature* Shade = (Unit::GetCreature((*m_creature), ShadeGUID)); if(Shade && Shade->isAlive()) ((boss_shade_of_akamaAI*)Shade->AI())->IncrementDeathCount(m_creature->GetGUID()); else error_log("SD2 ERROR: Sorcerer dead but unable to increment DeathCount for Shade of Akama."); @@ -561,7 +561,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI if(!ShadeGUID) return; - Creature* Shade = ((Creature*)Unit::GetUnit((*m_creature), ShadeGUID)); + Creature* Shade = (Unit::GetCreature((*m_creature), ShadeGUID)); if(Shade) { pInstance->SetData(DATA_SHADEOFAKAMAEVENT, IN_PROGRESS); @@ -618,7 +618,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI if(ShadeGUID && !StartCombat) { - Creature* Shade = ((Creature*)Unit::GetUnit((*m_creature), ShadeGUID)); + Creature* Shade = (Unit::GetCreature((*m_creature), ShadeGUID)); if(Shade && Shade->isAlive()) { if(((boss_shade_of_akamaAI*)Shade->AI())->IsBanished) diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp index 44122355311..0985e7b61e3 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp @@ -268,7 +268,7 @@ struct TRINITY_DLL_DECL npc_volcanoAI : public ScriptedAI if(CheckTimer < diff) { uint64 SupremusGUID = pInstance->GetData64(DATA_SUPREMUS); - Creature* Supremus = ((Creature*)Unit::GetUnit((*m_creature), SupremusGUID)); + Creature* Supremus = (Unit::GetCreature((*m_creature), SupremusGUID)); if(!Eruption && !((boss_supremusAI*)Supremus->AI())->Phase1) { Eruption = true; diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp index 5e362d29eb8..33a0f20a23e 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp @@ -82,7 +82,7 @@ struct TRINITY_DLL_DECL mob_doom_blossomAI : public ScriptedAI { DoZoneInCombat(); - Creature* Teron = ((Creature*)Unit::GetUnit((*m_creature), TeronGUID)); + Creature* Teron = (Unit::GetCreature((*m_creature), TeronGUID)); if((Teron) && (!Teron->isAlive() || Teron->IsInEvadeMode())) Despawn(); } @@ -184,7 +184,7 @@ struct TRINITY_DLL_DECL mob_shadowy_constructAI : public ScriptedAI if(CheckTeronTimer < diff) { - Creature* Teron = ((Creature*)Unit::GetUnit((*m_creature), TeronGUID)); + Creature* Teron = (Unit::GetCreature((*m_creature), TeronGUID)); if(!Teron || !Teron->isAlive() || Teron->IsInEvadeMode()) m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp index b605c16394b..9233cc53fca 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp @@ -194,7 +194,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI bool GOHello_go_najentus_spine(Player *player, GameObject* _GO) { if(ScriptedInstance* pInstance = (ScriptedInstance*)_GO->GetInstanceData()) - if(Creature* Najentus = (Creature*)Unit::GetUnit(*_GO, pInstance->GetData64(DATA_HIGHWARLORDNAJENTUS))) + if(Creature* Najentus = Unit::GetCreature(*_GO, pInstance->GetData64(DATA_HIGHWARLORDNAJENTUS))) if(((boss_najentusAI*)Najentus->AI())->RemoveImpalingSpine()) { player->CastSpell(player, SPELL_CREATE_NAJENTUS_SPINE, true); diff --git a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp index ca3a6658f45..3c063ff30c5 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp @@ -218,7 +218,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI Creature* pMember = NULL; for(uint8 i = 0; i < 4; ++i) { - if(pMember = ((Creature*)Unit::GetUnit((*m_creature), Council[i]))) + if(pMember = (Unit::GetCreature((*m_creature), Council[i]))) { if(!pMember->isAlive()) { @@ -232,7 +232,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI if(pInstance) { pInstance->SetData(DATA_ILLIDARICOUNCILEVENT, NOT_STARTED); - if(Creature* VoiceTrigger = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE)))) + if(Creature* VoiceTrigger = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE)))) VoiceTrigger->AI()->EnterEvadeMode(); } @@ -259,7 +259,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI Council[3] = pInstance->GetData64(DATA_VERASDARKSHADOW); // Start the event for the Voice Trigger - if(Creature* VoiceTrigger = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE)))) + if(Creature* VoiceTrigger = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE)))) { ((mob_blood_elf_council_voice_triggerAI*)VoiceTrigger->AI())->LoadCouncilGUIDs(); ((mob_blood_elf_council_voice_triggerAI*)VoiceTrigger->AI())->EventStarted = true; @@ -294,7 +294,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI { if(pInstance) { - if(Creature* VoiceTrigger = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE)))) + if(Creature* VoiceTrigger = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE)))) VoiceTrigger->DealDamage(VoiceTrigger, VoiceTrigger->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); pInstance->SetData(DATA_ILLIDARICOUNCILEVENT, DONE); } @@ -302,7 +302,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI return; } - Creature* pMember = ((Creature*)Unit::GetUnit(*m_creature, Council[DeathCount])); + Creature* pMember = (Unit::GetCreature(*m_creature, Council[DeathCount])); if(pMember && pMember->isAlive()) pMember->DealDamage(pMember, pMember->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); ++DeathCount; @@ -319,7 +319,7 @@ struct TRINITY_DLL_DECL mob_illidari_councilAI : public ScriptedAI { if(Council[i]) { - if(Creature* Member = ((Creature*)Unit::GetUnit((*m_creature), Council[i]))) + if(Creature* Member = (Unit::GetCreature((*m_creature), Council[i]))) { // This is the evade/death check. if(Member->isAlive() && !Member->getVictim()) @@ -364,7 +364,7 @@ struct TRINITY_DLL_DECL boss_illidari_councilAI : public ScriptedAI { if(pInstance) { - Creature* Controller = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_ILLIDARICOUNCIL))); + Creature* Controller = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ILLIDARICOUNCIL))); if(Controller) ((mob_illidari_councilAI*)Controller->AI())->StartEvent(who); } diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp index 253912ef288..fa1b86da5c8 100644 --- a/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp +++ b/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp @@ -216,7 +216,7 @@ struct TRINITY_DLL_DECL npc_grimstoneAI : public npc_escortAI if (RingBossGUID) { - Creature *boss = (Creature*)Unit::GetUnit(*m_creature,RingBossGUID); + Creature *boss = Unit::GetCreature(*m_creature,RingBossGUID); if (boss && !boss->isAlive() && boss->isDead()) { RingBossGUID = 0; @@ -229,7 +229,7 @@ struct TRINITY_DLL_DECL npc_grimstoneAI : public npc_escortAI for(uint8 i = 0; i < MOB_AMOUNT; i++) { - Creature *mob = (Creature*)Unit::GetUnit(*m_creature,RingMobGUID[i]); + Creature *mob = Unit::GetCreature(*m_creature,RingMobGUID[i]); if (mob && !mob->isAlive() && mob->isDead()) { RingMobGUID[i] = 0; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index c11abaa9b14..74d283340b1 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -382,7 +382,7 @@ void hyjalAI::Reset() return; for(std::list<uint64>::iterator itr = CreatureList.begin(); itr != CreatureList.end(); ++itr) - if(Creature* cr = ((Creature*)Unit::GetUnit(*m_creature, *itr))) + if(Creature* cr = (Unit::GetCreature(*m_creature, *itr))) cr->SetVisibility(VISIBILITY_ON); CreatureList.clear();*/ @@ -748,7 +748,7 @@ void hyjalAI::DeSpawnVeins() if(!pInstance)return; if(Faction == 1) { - Creature* pUnit=(Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_JAINAPROUDMOORE)); + Creature* pUnit=Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_JAINAPROUDMOORE)); if (!pUnit)return; hyjalAI* ai = ((hyjalAI*)pUnit->AI()); if(!ai)return; @@ -760,7 +760,7 @@ void hyjalAI::DeSpawnVeins() } }else if (Faction) { - Creature* pUnit=(Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_THRALL)); + Creature* pUnit=Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_THRALL)); if (!pUnit)return; hyjalAI* ai = ((hyjalAI*)pUnit->AI()); if(!ai)return; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp index 96a903a0795..6ed4609e3b9 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp @@ -364,7 +364,7 @@ struct TRINITY_DLL_DECL npc_thrall_old_hillsbradAI : public npc_escortAI //trigger taretha to run down outside if (uint64 TarethaGUID = pInstance->GetData64(DATA_TARETHA)) { - if (Creature* Taretha = ((Creature*)Unit::GetUnit(*m_creature, TarethaGUID))) + if (Creature* Taretha = (Unit::GetCreature(*m_creature, TarethaGUID))) ((npc_escortAI*)(Taretha->AI()))->Start(false, false, true, PlayerGUID); } @@ -826,7 +826,7 @@ bool GossipSelect_npc_taretha(Player *player, Creature *_Creature, uint32 sender if (uint64 ThrallGUID = pInstance->GetData64(DATA_THRALL)) { - Creature* Thrall = ((Creature*)Unit::GetUnit((*_Creature), ThrallGUID)); + Creature* Thrall = (Unit::GetCreature((*_Creature), ThrallGUID)); if(Thrall) ((npc_thrall_old_hillsbradAI*)Thrall->AI())->StartWP(); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp index e9b5841d005..ac646413cb0 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp @@ -134,7 +134,7 @@ struct TRINITY_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI if(RAdvisors[i]) { - pAdvisor = ((Creature*)Unit::GetUnit((*m_creature), RAdvisors[i])); + pAdvisor = (Unit::GetCreature((*m_creature), RAdvisors[i])); if(pAdvisor && !pAdvisor->isAlive()) { pAdvisor->Respawn(); @@ -205,7 +205,7 @@ struct TRINITY_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI DoScriptText(SAY_DEATH, m_creature); if (pInstance) - pInstance->SetData(DATA_FATHOMLORDKARATHRESSEVENT, NOT_STARTED); + pInstance->SetData(DATA_FATHOMLORDKARATHRESSEVENT, DONE); //support for quest 10944 m_creature->SummonCreature(SEER_OLUM, OLUM_X, OLUM_Y, OLUM_Z, OLUM_O, TEMPSUMMON_TIMED_DESPAWN, 3600000); @@ -280,7 +280,7 @@ struct TRINITY_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI for(uint8 i = 0; i < 4; ++i) if(Advisors[i]) { - Advisor = ((Creature*)Unit::GetUnit(*m_creature, Advisors[i])); + Advisor = (Unit::GetCreature(*m_creature, Advisors[i])); if(Advisor) { if(Advisor->isAlive()) @@ -331,7 +331,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_sharkkisAI : public ScriptedAI pet = false; - Creature *Pet = (Creature*) Unit::GetUnit(*m_creature, SummonedPet); + Creature *Pet = Unit::GetCreature(*m_creature, SummonedPet); if( Pet && Pet->isAlive() ) { Pet->DealDamage( Pet, Pet->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false ); @@ -348,7 +348,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_sharkkisAI : public ScriptedAI if (pInstance) { Creature *Karathress = NULL; - Karathress = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); + Karathress = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); if (Karathress) ((boss_fathomlord_karathressAI*)Karathress->AI())->EventSharkkisDeath(); @@ -407,7 +407,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_sharkkisAI : public ScriptedAI if(TheBeastWithin_Timer < diff) { DoCast(m_creature, SPELL_THE_BEAST_WITHIN); - Creature *Pet = (Creature*) Unit::GetUnit(*m_creature, SummonedPet); + Creature *Pet = Unit::GetCreature(*m_creature, SummonedPet); if( Pet && Pet->isAlive() ) { Pet->CastSpell( Pet, SPELL_PET_ENRAGE, true ); @@ -477,7 +477,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_tidalvessAI : public ScriptedAI if (pInstance) { Creature *Karathress = NULL; - Karathress = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); + Karathress = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); if (Karathress) if(!m_creature->isAlive() && Karathress) @@ -592,7 +592,7 @@ struct TRINITY_DLL_DECL boss_fathomguard_caribdisAI : public ScriptedAI if (pInstance) { Creature *Karathress = NULL; - Karathress = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); + Karathress = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); if (Karathress) if(!m_creature->isAlive() && Karathress) diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp index d4263ec4747..14012be1d1f 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp @@ -145,7 +145,7 @@ struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI { for(uint8 i=0;i<2;i++) { - Creature* mob = (Creature*)Unit::GetUnit(*m_creature,beams[i]); + Creature* mob = Unit::GetCreature(*m_creature,beams[i]); if(mob) { mob->setDeathState(DEAD); @@ -210,7 +210,7 @@ struct TRINITY_DLL_DECL boss_hydross_the_unstableAI : public ScriptedAI DoScriptText(SAY_CLEAN_DEATH, m_creature); if (pInstance) - pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); + pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, DONE); Summons.DespawnAll(); } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp index 47a45c9db6f..87bb245c382 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp @@ -707,7 +707,7 @@ struct TRINITY_DLL_DECL mob_tainted_elementalAI : public ScriptedAI if(pInstance) { Creature *Vashj = NULL; - Vashj = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LADYVASHJ))); + Vashj = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_LADYVASHJ))); if(Vashj) ((boss_lady_vashjAI*)Vashj->AI())->EventTaintedElementalDeath(); @@ -941,7 +941,7 @@ bool ItemUse_item_tainted_core(Player *player, Item* _Item, SpellCastTargets con } Creature *Vashj = NULL; - Vashj = (Creature*)(Unit::GetUnit((*player), pInstance->GetData64(DATA_LADYVASHJ))); + Vashj = (Unit::GetCreature((*player), pInstance->GetData64(DATA_LADYVASHJ))); if(Vashj && ((boss_lady_vashjAI*)Vashj->AI())->Phase == 2) { if(targets.getGOTarget() && targets.getGOTarget()->GetTypeId()==TYPEID_GAMEOBJECT) diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp index 27f396c6926..073649db5ee 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp @@ -200,7 +200,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI { for(uint8 i = 0; i < 3; i++) { - Creature *add = (Creature*)Unit::GetUnit(*m_creature,SpellBinderGUID[i]); + Creature *add = Unit::GetCreature(*m_creature,SpellBinderGUID[i]); if (add && add->isAlive()) { add->setDeathState(DEAD); diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp index 224f22f804e..35f3f5b9b13 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp @@ -158,7 +158,7 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI DoScriptText(SAY_DEATH, m_creature); if (pInstance) - pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); + pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, DONE); } void Aggro(Unit *who) diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp index ef69ab220bf..adf2eda7c39 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp @@ -67,7 +67,7 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance uint64 StrangePool; bool ShieldGeneratorDeactivated[4]; - bool Encounters[ENCOUNTERS]; + uint32 Encounters[ENCOUNTERS]; void Initialize() { @@ -93,13 +93,13 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance ShieldGeneratorDeactivated[3] = false; for(uint8 i = 0; i < ENCOUNTERS; i++) - Encounters[i] = false; + Encounters[i] = NOT_STARTED; } bool IsEncounterInProgress() const { for(uint8 i = 0; i < ENCOUNTERS; i++) - if(Encounters[i]) return true; + if(Encounters[i] == IN_PROGRESS) return true; return false; } diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp index 43342a276aa..d7c9791cf51 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_the_black_stalker.cpp @@ -81,7 +81,7 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI void JustDied(Unit *who) { for(std::list<uint64>::iterator i = Striders.begin(); i != Striders.end(); ++i) - if(Creature *strider = (Creature*)Unit::GetUnit(*m_creature, *i)) + if(Creature *strider = Unit::GetCreature(*m_creature, *i)) { strider->SetLootRecipient(NULL); strider->DealDamage(strider,strider->GetMaxHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); diff --git a/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp b/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp index aca3bb9bb37..e420446abe8 100644 --- a/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp +++ b/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp @@ -50,7 +50,7 @@ struct TRINITY_DLL_DECL npc_prospector_anvilwardAI : public npc_escortAI // Pure Virtual Functions void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(!player) return; @@ -339,7 +339,7 @@ struct TRINITY_DLL_DECL master_kelerun_bloodmournAI : public ScriptedAI if ( timer < diff ) { Creature* paladinSpawn; - paladinSpawn = ((Creature*)Unit::GetUnit((*m_creature), paladinGuid[paladinPhase])); + paladinSpawn = (Unit::GetCreature((*m_creature), paladinGuid[paladinPhase])); if ( paladinSpawn ) { ((npc_secondTrialAI*)paladinSpawn->AI())->Activate(m_creature->GetGUID()); @@ -439,7 +439,7 @@ void npc_secondTrialAI::JustDied(Unit* Killer) { if (Killer->GetTypeId() == TYPEID_PLAYER) { Creature* Summoner; - Summoner = ((Creature*)Unit::GetUnit((*m_creature), summonerGuid)); + Summoner = (Unit::GetCreature((*m_creature), summonerGuid)); if ( Summoner ) ((master_kelerun_bloodmournAI*)Summoner->AI())->SecondTrialKill(); @@ -560,7 +560,7 @@ struct TRINITY_DLL_DECL npc_apprentice_mirvedaAI : public ScriptedAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_UNEXPECTED_RESULT); } @@ -572,7 +572,7 @@ struct TRINITY_DLL_DECL npc_apprentice_mirvedaAI : public ScriptedAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(player) ((Player*)player)->CompleteQuest(QUEST_UNEXPECTED_RESULT); } @@ -676,7 +676,7 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI { if (PlayerGUID && !Completed) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_POWERING_OUR_DEFENSES); } @@ -690,7 +690,7 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI Completed = true; if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(player) ((Player*)player)->CompleteQuest(QUEST_POWERING_OUR_DEFENSES); } diff --git a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp index 54e4e3e4739..00e00b2ac90 100644 --- a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp +++ b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp @@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -227,7 +227,7 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_ESCAPE_FROM_THE_CATACOMBS); } diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp index 96986367077..e4fdbf90656 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp @@ -79,12 +79,7 @@ struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI Reverberation_Timer= 60000+45000; if (pInstance) - { pInstance->SetData(DATA_GRUULEVENT, NOT_STARTED); - GameObject* EncounterDoor = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_GRUULDOOR)); - if (EncounterDoor) - EncounterDoor->SetGoState(0); // Open the encounter door - }else error_log(ERROR_INST_DATA); m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true); @@ -95,12 +90,7 @@ struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI DoScriptText(SAY_AGGRO, m_creature); if (pInstance) - { pInstance->SetData(DATA_GRUULEVENT, IN_PROGRESS); - GameObject* EncounterDoor = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_GRUULDOOR)); - if (EncounterDoor) - EncounterDoor->SetGoState(1); //Close the encounter door, open it in JustDied/Reset - } } void KilledUnit() diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp index 4437938a47a..5bf36cc1d1e 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp @@ -65,6 +65,44 @@ EndScriptData */ #define SPELL_SPELLSHIELD 33054 #define SPELL_BLAST_WAVE 33061 +bool CheckAllBossDied(ScriptedInstance* pInstance, Creature* m_creature) +{ + if(!pInstance || !m_creature) + return false; + + uint64 MaulgarGUID = 0; + uint64 KigglerGUID = 0; + uint64 BlindeyeGUID = 0; + uint64 OlmGUID = 0; + uint64 KroshGUID = 0; + + Creature* Maulgar = NULL; + Creature* Kiggler = NULL; + Creature* Blindeye = NULL; + Creature* Olm = NULL; + Creature* Krosh = NULL; + + MaulgarGUID = pInstance->GetData64(DATA_MAULGAR); + KigglerGUID = pInstance->GetData64(DATA_KIGGLERTHECRAZED); + BlindeyeGUID = pInstance->GetData64(DATA_BLINDEYETHESEER); + OlmGUID = pInstance->GetData64(DATA_OLMTHESUMMONER); + KroshGUID = pInstance->GetData64(DATA_KROSHFIREHAND); + + Maulgar = (Unit::GetCreature((*m_creature), MaulgarGUID)); + Kiggler = (Unit::GetCreature((*m_creature), KigglerGUID)); + Blindeye = (Unit::GetCreature((*m_creature), BlindeyeGUID)); + Olm = (Unit::GetCreature((*m_creature), OlmGUID)); + Krosh = (Unit::GetCreature((*m_creature), KroshGUID)); + + if(!Maulgar || !Kiggler || !Blindeye || !Olm || !Krosh) + return false; + + if(!Maulgar->isAlive() && !Kiggler->isAlive() && !Blindeye->isAlive() && !Olm->isAlive() && !Krosh->isAlive()) + return true; + + return false; +} + //High King Maulgar AI struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI { @@ -104,7 +142,7 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI { if(Council[i]) { - pCreature = (Creature*)(Unit::GetUnit((*m_creature), Council[i])); + pCreature = (Unit::GetCreature((*m_creature), Council[i])); if(pCreature && !pCreature->isAlive()) { pCreature->Respawn(); @@ -132,15 +170,8 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI { DoScriptText(SAY_DEATH, m_creature); - if (pInstance) - { + if(CheckAllBossDied(pInstance, m_creature)) pInstance->SetData(DATA_MAULGAREVENT, DONE); - - GameObject* Door = NULL; - Door = GameObject::GetGameObject((*m_creature), pInstance->GetData64(DATA_MAULGARDOOR)); - if(Door) - Door->SetGoState(0); - } } void AddDeath() @@ -301,17 +332,20 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI } } - void JustDied(Unit* Killer) - { - if(pInstance) + void JustDied(Unit* Killer) + { + if(pInstance) { Creature *Maulgar = NULL; - Maulgar = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_MAULGAR))); + Maulgar = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MAULGAR))); if(Maulgar) ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); + + if(CheckAllBossDied(pInstance, m_creature)) + pInstance->SetData(DATA_MAULGAREVENT, DONE); } - } + } void UpdateAI(const uint32 diff) { @@ -402,17 +436,20 @@ struct TRINITY_DLL_DECL boss_kiggler_the_crazedAI : public ScriptedAI } } - void JustDied(Unit* Killer) - { - if(pInstance) + void JustDied(Unit* Killer) + { + if(pInstance) { Creature *Maulgar = NULL; - Maulgar = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_MAULGAR))); + Maulgar = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MAULGAR))); if(Maulgar) ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); + + if(CheckAllBossDied(pInstance, m_creature)) + pInstance->SetData(DATA_MAULGAREVENT, DONE); } - } + } void UpdateAI(const uint32 diff) { @@ -507,17 +544,20 @@ struct TRINITY_DLL_DECL boss_blindeye_the_seerAI : public ScriptedAI } } - void JustDied(Unit* Killer) - { - if(pInstance) + void JustDied(Unit* Killer) + { + if(pInstance) { Creature *Maulgar = NULL; - Maulgar = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_MAULGAR))); + Maulgar = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MAULGAR))); if(Maulgar) ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); + + if(CheckAllBossDied(pInstance, m_creature)) + pInstance->SetData(DATA_MAULGAREVENT, DONE); } - } + } void UpdateAI(const uint32 diff) { @@ -602,17 +642,20 @@ struct TRINITY_DLL_DECL boss_krosh_firehandAI : public ScriptedAI } } - void JustDied(Unit* Killer) - { - if(pInstance) + void JustDied(Unit* Killer) + { + if(pInstance) { Creature *Maulgar = NULL; - Maulgar = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_MAULGAR))); + Maulgar = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MAULGAR))); if(Maulgar) ((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath(); + + if(CheckAllBossDied(pInstance, m_creature)) + pInstance->SetData(DATA_MAULGAREVENT, DONE); } - } + } void UpdateAI(const uint32 diff) { diff --git a/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp b/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp index 9ecd95176f0..3951a2ba247 100644 --- a/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp +++ b/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp @@ -35,17 +35,17 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance { instance_gruuls_lair(Map *map) : ScriptedInstance(map) {Initialize();}; - bool Encounters[ENCOUNTERS]; + uint32 Encounters[ENCOUNTERS]; uint64 MaulgarEvent_Tank; uint64 KigglerTheCrazed; uint64 BlindeyeTheSeer; uint64 OlmTheSummoner; uint64 KroshFirehand; - uint64 Maulgar; + uint64 Maulgar; - uint64 MaulgarDoor; - uint64 GruulDoor; + uint64 MaulgarDoor; + uint64 GruulDoor; void Initialize() { @@ -54,20 +54,19 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance BlindeyeTheSeer = 0; OlmTheSummoner = 0; KroshFirehand = 0; - Maulgar = 0; - - MaulgarDoor = 0; - GruulDoor = 0; + Maulgar = 0; + MaulgarDoor = 0; + GruulDoor = 0; for(uint8 i = 0; i < ENCOUNTERS; i++) - Encounters[i] = false; + Encounters[i] = NOT_STARTED; } bool IsEncounterInProgress() const { for(uint8 i = 0; i < ENCOUNTERS; i++) - if(Encounters[i]) return true; + if(Encounters[i] == IN_PROGRESS) return true; return false; } @@ -77,21 +76,24 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance switch(creature->GetEntry()) { case 18835: KigglerTheCrazed = creature->GetGUID(); break; - case 18836: BlindeyeTheSeer = creature->GetGUID(); break; - case 18834: OlmTheSummoner = creature->GetGUID(); break; - case 18832: KroshFirehand = creature->GetGUID(); break; - case 18831: Maulgar = creature->GetGUID();break; + case 18836: BlindeyeTheSeer = creature->GetGUID(); break; + case 18834: OlmTheSummoner = creature->GetGUID(); break; + case 18832: KroshFirehand = creature->GetGUID(); break; + case 18831: Maulgar = creature->GetGUID(); break; } } - void OnObjectCreate(GameObject* go) + void OnObjectCreate(GameObject* go) { - switch(go->GetEntry()) - { - case 184468: MaulgarDoor = go->GetGUID();break; - case 184662: GruulDoor = go->GetGUID();break; - } - } + switch(go->GetEntry()) + { + case 184468: + MaulgarDoor = go->GetGUID(); + if(Encounters[0] == DONE) HandleGameObject(NULL, true, go); + break; + case 184662: GruulDoor = go->GetGUID(); break; + } + } void SetData64(uint32 type, uint64 data) { @@ -103,14 +105,14 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance { switch(identifier) { - case DATA_MAULGAREVENT_TANK: return MaulgarEvent_Tank; - case DATA_KIGGLERTHECRAZED: return KigglerTheCrazed; - case DATA_BLINDEYETHESEER: return BlindeyeTheSeer; - case DATA_OLMTHESUMMONER: return OlmTheSummoner; - case DATA_KROSHFIREHAND: return KroshFirehand; - case DATA_MAULGARDOOR: return MaulgarDoor; - case DATA_GRUULDOOR: return GruulDoor; - case DATA_MAULGAR: return Maulgar; + case DATA_MAULGAREVENT_TANK: return MaulgarEvent_Tank; + case DATA_KIGGLERTHECRAZED: return KigglerTheCrazed; + case DATA_BLINDEYETHESEER: return BlindeyeTheSeer; + case DATA_OLMTHESUMMONER: return OlmTheSummoner; + case DATA_KROSHFIREHAND: return KroshFirehand; + case DATA_MAULGARDOOR: return MaulgarDoor; + case DATA_GRUULDOOR: return GruulDoor; + case DATA_MAULGAR: return Maulgar; } return 0; } @@ -120,13 +122,16 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance switch(type) { case DATA_MAULGAREVENT: + if(data == DONE) HandleGameObject(MaulgarDoor, true); Encounters[0] = data; break; case DATA_GRUULEVENT: + if(data == IN_PROGRESS) HandleGameObject(GruulDoor, true); + else HandleGameObject(GruulDoor, false); Encounters[1] = data; break; } - if(data == DONE) - SaveToDB(); + if(data == DONE) + SaveToDB(); } uint32 GetData(uint32 type) @@ -134,13 +139,12 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance switch(type) { case DATA_MAULGAREVENT: return Encounters[0]; - case DATA_GRUULEVENT: return Encounters[1]; + case DATA_GRUULEVENT: return Encounters[1]; } return 0; } - - const char* Save() + const char* Save() { OUT_SAVE_INST_DATA; std::ostringstream stream; @@ -173,6 +177,7 @@ struct TRINITY_DLL_DECL instance_gruuls_lair : public ScriptedInstance OUT_LOAD_INST_DATA_COMPLETE; } }; + InstanceData* GetInstanceData_instance_gruuls_lair(Map* map) { return new instance_gruuls_lair(map); diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp index de74db2a251..8c118a022ea 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp @@ -128,7 +128,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI } for(int i=0; i<5; ++i) { - Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); + Creature *channeler = Unit::GetCreature(*m_creature, Channelers[i]); if(who && channeler && !channeler->isInCombat()) channeler->AI()->AttackStart(who); } @@ -138,7 +138,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI { for(int i=0; i<5; ++i) { - Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); + Creature *channeler = Unit::GetCreature(*m_creature, Channelers[i]); if(channeler && channeler->isAlive()) return; } @@ -154,7 +154,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI int i; for(i=0; i<5; ++i) { - Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); + Creature *channeler = Unit::GetCreature(*m_creature, Channelers[i]); if(channeler && channeler->GetGUID()==channeler1->GetGUID()) break; } @@ -165,7 +165,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI { for(int i=0; i<5; ++i) { - Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); + Creature *channeler = Unit::GetCreature(*m_creature, Channelers[i]); if(!channeler || channeler->isDead()) channeler = m_creature->SummonCreature(ENTRY_CHANNELER,ShadowmoonChannelers[i][0],ShadowmoonChannelers[i][1],ShadowmoonChannelers[i][2],ShadowmoonChannelers[i][3],TEMPSUMMON_CORPSE_TIMED_DESPAWN,300000); if(channeler) diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp index 447a59c314c..86d76952b45 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_vazruden_the_herald.cpp @@ -127,7 +127,7 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI if(flight) // phase 1 - the flight { - Creature *Vazruden = (Creature*)Unit::GetUnit(*m_creature,VazrudenGUID); + Creature *Vazruden = Unit::GetCreature(*m_creature,VazrudenGUID); if(Fly_Timer < diff || !(Vazruden && Vazruden->isAlive() && (Vazruden->GetHealth()*5 > Vazruden->GetMaxHealth()))) { flight = false; @@ -279,8 +279,8 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI { if(summoned) { - Creature *Nazan = (Creature*)Unit::GetUnit(*m_creature, NazanGUID); - Creature *Vazruden = (Creature*)Unit::GetUnit(*m_creature, VazrudenGUID); + Creature *Nazan = Unit::GetCreature(*m_creature, NazanGUID); + Creature *Vazruden = Unit::GetCreature(*m_creature, VazrudenGUID); if(Nazan || (Nazan = (Creature *)FindCreature(ENTRY_NAZAN, 5000, m_creature))) { Nazan->SetLootRecipient(NULL); @@ -381,8 +381,8 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI default: // adds do the job now if(check < diff) { - Creature *Nazan = (Creature*)Unit::GetUnit(*m_creature, NazanGUID); - Creature *Vazruden = (Creature*)Unit::GetUnit(*m_creature, VazrudenGUID); + Creature *Nazan = Unit::GetCreature(*m_creature, NazanGUID); + Creature *Vazruden = Unit::GetCreature(*m_creature, VazrudenGUID); if(Nazan && Nazan->isAlive() || Vazruden && Vazruden->isAlive()) { if(Nazan && Nazan->getVictim() || Vazruden && Vazruden->getVictim()) diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp index 16d4b07ba15..50db6680e94 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp @@ -506,7 +506,7 @@ bool GOHello_go_Manticron_Cube(Player *player, GameObject* _GO) ScriptedInstance* pInstance =(ScriptedInstance*)_GO->GetInstanceData(); if(!pInstance) return true; if(pInstance->GetData(DATA_MAGTHERIDON_EVENT) != IN_PROGRESS) return true; - Creature *Magtheridon =(Creature*)Unit::GetUnit(*_GO, pInstance->GetData64(DATA_MAGTHERIDON)); + Creature *Magtheridon =Unit::GetCreature(*_GO, pInstance->GetData64(DATA_MAGTHERIDON)); if(!Magtheridon || !Magtheridon->isAlive()) return true; // if exhausted or already channeling return diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp index 91246b0c5b2..a18579ccfa9 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp @@ -335,7 +335,7 @@ struct TRINITY_DLL_DECL mob_fel_orc_convertAI : public ScriptedAI { if (pInstance->GetData64(DATA_NETHEKURSE)) { - Creature *pKurse = (Creature*)Unit::GetUnit(*m_creature,pInstance->GetData64(DATA_NETHEKURSE)); + Creature *pKurse = Unit::GetCreature(*m_creature,pInstance->GetData64(DATA_NETHEKURSE)); if (pKurse && m_creature->GetDistance(pKurse) < 45.0f) { ((boss_grand_warlock_nethekurseAI*)pKurse->AI())->DoYellForPeonAggro(); @@ -356,7 +356,7 @@ struct TRINITY_DLL_DECL mob_fel_orc_convertAI : public ScriptedAI return; if (pInstance->GetData64(DATA_NETHEKURSE)) { - Creature *pKurse = (Creature*)Unit::GetUnit(*m_creature,pInstance->GetData64(DATA_NETHEKURSE)); + Creature *pKurse = Unit::GetCreature(*m_creature,pInstance->GetData64(DATA_NETHEKURSE)); if (pKurse) ((boss_grand_warlock_nethekurseAI*)pKurse->AI())->DoYellForPeonDeath(); } diff --git a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp index 41112bad200..2adbc632155 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp @@ -275,7 +275,7 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -303,7 +303,7 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI case 27: DoScriptText(SAY_ELF_COMPLETE, m_creature, player); // Award quest credit - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player && player->GetTypeId() == TYPEID_PLAYER) ((Player*)player)->GroupEventHappens(QUEST_ROAD_TO_FALCON_WATCH,m_creature); break; @@ -335,7 +335,7 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI if (PlayerGUID) { // If NPC dies, player fails the quest - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player && player->GetTypeId() == TYPEID_PLAYER) ((Player*)player)->FailQuest(QUEST_ROAD_TO_FALCON_WATCH); } diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp index 0f6d13c2198..e488ea26810 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp @@ -281,7 +281,7 @@ struct TRINITY_DLL_DECL boss_attumenAI : public ScriptedAI { if( (m_creature->GetHealth()*100)/m_creature->GetMaxHealth() < 25) { - Creature *pMidnight = (Creature*)Unit::GetUnit(*m_creature, Midnight); + Creature *pMidnight = Unit::GetCreature(*m_creature, Midnight); if(pMidnight && pMidnight->GetTypeId() == TYPEID_UNIT) { ((boss_midnightAI*)(pMidnight->AI()))->Mount(m_creature); diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp index cf235b99880..b0457b49359 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp @@ -211,7 +211,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI AddGUID[i] = pCreature->GetGUID(); break; case 1: - pCreature = ((Creature*)Unit::GetUnit((*m_creature), AddGUID[i])); + pCreature = (Unit::GetCreature((*m_creature), AddGUID[i])); if (pCreature) { pCreature->Respawn(); @@ -219,7 +219,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI } break; case 2: - pCreature = ((Creature*)Unit::GetUnit((*m_creature), AddGUID[i])); + pCreature = (Unit::GetCreature((*m_creature), AddGUID[i])); if (!pCreature->IsInEvadeMode()) pCreature->AI()->EnterEvadeMode(); break; @@ -281,7 +281,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI Creature* Temp = NULL; if (AddGUID[i]) { - Temp = (Creature*)Unit::GetUnit((*m_creature),AddGUID[i]); + Temp = Unit::GetCreature((*m_creature),AddGUID[i]); if (Temp && Temp->isAlive()) if (!Temp->getVictim() ) Temp->AI()->AttackStart(m_creature->getVictim()); @@ -392,7 +392,7 @@ struct TRINITY_DLL_DECL boss_moroes_guestAI : public ScriptedAI return; GuestGUID[0] = pInstance->GetData64(DATA_MOROES); - Creature* Moroes = ((Creature*)Unit::GetUnit((*m_creature), GuestGUID[0])); + Creature* Moroes = (Unit::GetCreature((*m_creature), GuestGUID[0])); if(Moroes) { for(uint8 i = 0; i < 3; ++i) diff --git a/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp b/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp index bf8d539026e..13dd8feab34 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp @@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL mob_kilrekAI : public ScriptedAI return; } - Creature* Terestian = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_TERESTIAN))); + Creature* Terestian = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_TERESTIAN))); if(Terestian && !Terestian->getVictim()) Terestian->AddThreat(who, 1.0f); } @@ -211,10 +211,9 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI if(pInstance) { - Creature* Kilrek = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_KILREK))); - + Creature* Kilrek = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_KILREK))); // Respawn Kil'rek on aggro if Kil'rek is dead. - if (!Kilrek || !Kilrek->isAlive()) + if (Kilrek && !Kilrek->isAlive()) { Kilrek->Respawn(); } @@ -270,7 +269,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI uint64 KilrekGUID = pInstance->GetData64(DATA_KILREK); else ERROR_INST_DATA(m_creature); - Creature* Kilrek = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_KILREK))); + Creature* Kilrek = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_KILREK))); if(SummonKilrek && Kilrek) { Kilrek->Respawn(); diff --git a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp index fdc8d0f1453..2fa0184bd42 100644 --- a/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp +++ b/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp @@ -217,7 +217,7 @@ struct TRINITY_DLL_DECL mob_titoAI : public ScriptedAI { if(DorotheeGUID) { - Creature* Dorothee = ((Creature*)Unit::GetUnit((*m_creature), DorotheeGUID)); + Creature* Dorothee = (Unit::GetCreature((*m_creature), DorotheeGUID)); if(Dorothee && Dorothee->isAlive()) { ((boss_dorotheeAI*)Dorothee->AI())->TitoDied = true; @@ -1079,7 +1079,7 @@ struct TRINITY_DLL_DECL boss_romuloAI : public ScriptedAI DoScriptText(SAY_ROMULO_AGGRO, m_creature); if(JulianneGUID) { - Creature* Julianne = ((Creature*)Unit::GetUnit((*m_creature), JulianneGUID)); + Creature* Julianne = (Unit::GetCreature((*m_creature), JulianneGUID)); if(Julianne && Julianne->getVictim()) { m_creature->AddThreat(Julianne->getVictim(), 1.0f); @@ -1140,7 +1140,7 @@ void boss_julianneAI::DamageTaken(Unit* done_by, uint32 &damage) DoCast(m_creature, SPELL_DRINK_POISON); IsFakingDeath = true; - //IS THIS USEFULL? Creature* Julianne = ((Creature*)Unit::GetUnit((*m_creature), JulianneGUID)); + //IS THIS USEFULL? Creature* Julianne = (Unit::GetCreature((*m_creature), JulianneGUID)); return; } @@ -1156,7 +1156,7 @@ void boss_julianneAI::DamageTaken(Unit* done_by, uint32 &damage) //if this is true then we have to kill romulo too if (RomuloDead) { - if (Creature* Romulo = ((Creature*)Unit::GetUnit((*m_creature), RomuloGUID))) + if (Creature* Romulo = (Unit::GetCreature((*m_creature), RomuloGUID))) { Romulo->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Romulo->GetMotionMaster()->Clear(); @@ -1170,7 +1170,7 @@ void boss_julianneAI::DamageTaken(Unit* done_by, uint32 &damage) } //if not already returned, then romulo is alive and we can pretend die - if (Creature* Romulo = ((Creature*)Unit::GetUnit((*m_creature), RomuloGUID))) + if (Creature* Romulo = (Unit::GetCreature((*m_creature), RomuloGUID))) { PretendToDie(m_creature); IsFakingDeath = true; @@ -1197,7 +1197,7 @@ void boss_romuloAI::DamageTaken(Unit* done_by, uint32 &damage) IsFakingDeath = true; Phase = PHASE_BOTH; - if (Creature* Julianne = ((Creature*)Unit::GetUnit((*m_creature), JulianneGUID))) + if (Creature* Julianne = (Unit::GetCreature((*m_creature), JulianneGUID))) { ((boss_julianneAI*)Julianne->AI())->RomuloDead = true; ((boss_julianneAI*)Julianne->AI())->ResurrectSelfTimer = 10000; @@ -1211,7 +1211,7 @@ void boss_romuloAI::DamageTaken(Unit* done_by, uint32 &damage) { if (JulianneDead) { - if (Creature* Julianne = ((Creature*)Unit::GetUnit((*m_creature), JulianneGUID))) + if (Creature* Julianne = (Unit::GetCreature((*m_creature), JulianneGUID))) { Julianne->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Julianne->GetMotionMaster()->Clear(); @@ -1223,7 +1223,7 @@ void boss_romuloAI::DamageTaken(Unit* done_by, uint32 &damage) return; } - if (Creature* Julianne = ((Creature*)Unit::GetUnit((*m_creature), JulianneGUID))) + if (Creature* Julianne = (Unit::GetCreature((*m_creature), JulianneGUID))) { PretendToDie(m_creature); IsFakingDeath = true; @@ -1316,7 +1316,7 @@ void boss_julianneAI::UpdateAI(const uint32 diff) { if(ResurrectTimer < diff) { - Creature* Romulo = ((Creature*)Unit::GetUnit((*m_creature), RomuloGUID)); + Creature* Romulo = (Unit::GetCreature((*m_creature), RomuloGUID)); if(Romulo && ((boss_romuloAI*)Romulo->AI())->IsFakingDeath) { DoScriptText(SAY_JULIANNE_RESURRECT, m_creature); @@ -1350,7 +1350,7 @@ void boss_julianneAI::UpdateAI(const uint32 diff) { if(rand()%2 == 1 && SummonedRomulo) { - Creature* Romulo = ((Creature*)Unit::GetUnit((*m_creature), RomuloGUID)); + Creature* Romulo = (Unit::GetCreature((*m_creature), RomuloGUID)); if (Romulo && Romulo->isAlive() && !RomuloDead) DoCast(Romulo, SPELL_ETERNAL_AFFECTION); }else DoCast(m_creature, SPELL_ETERNAL_AFFECTION); @@ -1370,7 +1370,7 @@ void boss_romuloAI::UpdateAI(const uint32 diff) { if(ResurrectTimer < diff) { - Creature* Julianne = ((Creature*)Unit::GetUnit((*m_creature), JulianneGUID)); + Creature* Julianne = (Unit::GetCreature((*m_creature), JulianneGUID)); if(Julianne && ((boss_julianneAI*)Julianne->AI())->IsFakingDeath) { DoScriptText(SAY_ROMULO_RESURRECT, m_creature); diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp index 3488eada9dd..28edd163ac2 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp @@ -180,7 +180,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI uint32 n = 0; for(std::vector<Add*>::iterator i = Adds.begin(); i != Adds.end(); ++i, ++n) { - Creature* pAdd = ((Creature*)Unit::GetUnit(*m_creature, (*i)->guid)); + Creature* pAdd = (Unit::GetCreature(*m_creature, (*i)->guid)); if(pAdd && pAdd->isAlive()) { pAdd->AI()->EnterEvadeMode(); // Force them out of combat and reset if they are in combat. @@ -373,7 +373,7 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI return; } - Creature* Delrissa = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_DELRISSA))); + Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA))); if (Delrissa) { pInstance->SetData(DATA_DELRISSA_DEATH_COUNT, 1); @@ -393,7 +393,7 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI return; } - Creature* Delrissa = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_DELRISSA))); + Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA))); if (Delrissa) Delrissa->AI()->KilledUnit(victim); } @@ -406,7 +406,7 @@ struct TRINITY_DLL_DECL boss_priestess_guestAI : public ScriptedAI return; } - Creature* Delrissa = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_DELRISSA))); + Creature* Delrissa = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_DELRISSA))); if (Delrissa) { Group = ((boss_priestess_delrissaAI*)Delrissa->AI())->Adds; @@ -634,13 +634,13 @@ struct TRINITY_DLL_DECL boss_ellris_duskhallowAI : public boss_priestess_guestAI /*void mob_fizzleAI::JustDied(Unit* killer) { - if(Creature* Ellris = ((Creature*)Unit::GetUnit(*m_creature, EllrisGUID))) + if(Creature* Ellris = (Unit::GetCreature(*m_creature, EllrisGUID))) ((boss_ellris_duskhallowAI*)Ellris->AI())->ImpGUID = 0; } void mob_fizzleAI::KilledUnit(Unit* victim) { - if(Creature* Ellris = ((Creature*)Unit::GetUnit(*m_creature, EllrisGUID))) + if(Creature* Ellris = (Unit::GetCreature(*m_creature, EllrisGUID))) ((boss_ellris_duskhallowAI*)Ellris->AI())->KilledUnit(victim); }*/ @@ -1028,13 +1028,13 @@ struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_guestAI /*void mob_sliverAI::JustDied(Unit* killer) { - if(Creature* Garaxxas = ((Creature*)Unit::GetUnit(*m_creature, GaraxxasGUID))) + if(Creature* Garaxxas = (Unit::GetCreature(*m_creature, GaraxxasGUID))) ((boss_garaxxasAI*)Garaxxas->AI())->SliverGUID = 0; } void mob_sliverAI::KilledUnit(Unit* victim) { - if(Creature* Garaxxas = ((Creature*)Unit::GetUnit(*m_creature, GaraxxasGUID))) + if(Creature* Garaxxas = (Unit::GetCreature(*m_creature, GaraxxasGUID))) ((boss_garaxxasAI*)Garaxxas->AI())->KilledUnit(victim); }*/ diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp index 2dc2d893c5a..c18128bbe1a 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp @@ -174,8 +174,8 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI //for(uint8 i = 0; i < CRYSTALS_NUMBER; ++i) for(std::list<uint64>::iterator itr = Crystals.begin(); itr != Crystals.end(); ++itr) { - //Creature* pCrystal = ((Creature*)Unit::GetUnit(*m_creature, FelCrystals[i])); - Creature* pCrystal = ((Creature*)Unit::GetUnit(*m_creature, *itr)); + //Creature* pCrystal = (Unit::GetCreature(*m_creature, FelCrystals[i])); + Creature* pCrystal = (Unit::GetCreature(*m_creature, *itr)); if (pCrystal && pCrystal->isAlive()) pCrystal->DealDamage(pCrystal, pCrystal->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); } @@ -342,7 +342,7 @@ struct TRINITY_DLL_DECL mob_fel_crystalAI : public ScriptedAI { if (ScriptedInstance* pInstance = ((ScriptedInstance*)m_creature->GetInstanceData())) { - Creature* Selin = ((Creature*)Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_SELIN))); + Creature* Selin = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SELIN))); if (Selin && Selin->isAlive()) { if (((boss_selin_fireheartAI*)Selin->AI())->CrystalGUID == m_creature->GetGUID()) diff --git a/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp b/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp index e8f6cae5e40..7704247cf90 100644 --- a/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp +++ b/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp @@ -422,9 +422,9 @@ struct TRINITY_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI // Emote Ardonis and Pathaleon void Turn_to_Pathaleons_Image() { - Unit *ardonis = Unit::GetUnit(*m_creature,ardonisGUID); - Unit *pathaleon = Unit::GetUnit(*m_creature,pathaleonGUID); - Player *player = (Player*)Unit::GetUnit(*m_creature,playerGUID); + Creature *ardonis = Unit::GetCreature(*m_creature,ardonisGUID); + Creature *pathaleon = Unit::GetCreature(*m_creature,pathaleonGUID); + Player *player = Unit::GetPlayer(playerGUID); if (!ardonis || !pathaleon || !player) return; @@ -450,7 +450,7 @@ struct TRINITY_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI { if (Unit *ardonis = Unit::GetUnit(*m_creature,ardonisGUID)) { - Player *player = (Player*)Unit::GetUnit(*m_creature,playerGUID); + Player *player = Unit::GetPlayer(playerGUID); if (!player) return; @@ -507,7 +507,7 @@ struct TRINITY_DLL_DECL npc_commander_dawnforgeAI : public ScriptedAI Unit *ardonis = Unit::GetUnit(*m_creature,ardonisGUID); Unit *pathaleon = Unit::GetUnit(*m_creature,pathaleonGUID); - Player *player = (Player*)Unit::GetUnit(*m_creature,playerGUID); + Player *player = Unit::GetPlayer(playerGUID); if (!ardonis || !player) { @@ -915,14 +915,14 @@ struct TRINITY_DLL_DECL npc_bessyAI : public npc_escortAI { if (PlayerGUID) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) + if (Player* player = Unit::GetPlayer(PlayerGUID)) ((Player*)player)->FailQuest(Q_ALMABTRIEB); } } void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; diff --git a/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp b/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp index 2edb4afcf16..8a65b493c5a 100644 --- a/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp +++ b/src/bindings/scripts/scripts/zone/razorfen_kraul/razorfen_kraul.cpp @@ -49,7 +49,7 @@ npc_willixAI(Creature *c) : npc_escortAI(c) {} void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -114,7 +114,7 @@ npc_willixAI(Creature *c) : npc_escortAI(c) {} { if (PlayerGUID) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) + if (Player* player = Unit::GetPlayer(PlayerGUID)) ((Player*)player)->FailQuest(QUEST_WILLIX_THE_IMPORTER); } } diff --git a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp index 6b14a4c9e45..9d1b447e746 100644 --- a/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp +++ b/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_headless_horseman.cpp @@ -464,7 +464,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI if (withhead) SaySound(SAY_PLAYER_DEATH); else { //maybe possible when player dies from conflagration - Creature *Head = (Creature*)Unit::GetUnit((*m_creature), headGUID); + Creature *Head = Unit::GetCreature((*m_creature), headGUID); if (Head) ((mob_headAI*)Head->AI())->SaySound(SAY_PLAYER_DEATH); } @@ -666,7 +666,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI { if (Phase > 1) --Phase; else Phase = 1; - Creature* Head = (Creature*)Unit::GetUnit((*m_creature), headGUID); + Creature* Head = Unit::GetCreature((*m_creature), headGUID); if (Head && Head->isAlive()) { ((mob_headAI*)Head->AI())->Phase = Phase; @@ -697,7 +697,7 @@ void mob_headAI::Disappear() return; if (bodyGUID) { - Creature *body = (Creature*)Unit::GetUnit((*m_creature), bodyGUID); + Creature *body = Unit::GetCreature((*m_creature), bodyGUID); if(body && body->isAlive()) { withbody = true; diff --git a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp index 516ef7c5b09..0a84d13349e 100644 --- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp +++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp @@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI DoScriptText(SAY_JUST_EATEN, m_creature); if(PlayerGUID) { - Player* plr = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID)); + Player* plr = Unit::GetPlayer(PlayerGUID); if(plr && plr->GetQuestStatus(10804) == QUEST_STATUS_INCOMPLETE) { plr->KilledMonster(22131, m_creature->GetGUID()); @@ -259,7 +259,7 @@ struct TRINITY_DLL_DECL mob_enslaved_netherwing_drakeAI : public ScriptedAI Tapped = false; if(PlayerGUID) { - Player* plr = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID)); + Player* plr = Unit::GetPlayer(PlayerGUID); if(plr && plr->GetQuestStatus(10854) == QUEST_STATUS_INCOMPLETE) { plr->KilledMonster(22316, m_creature->GetGUID()); @@ -357,7 +357,7 @@ struct TRINITY_DLL_DECL mob_dragonmaw_peonAI : public ScriptedAI { if(PlayerGUID) { - Player* plr = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID)); + Player* plr = Unit::GetPlayer(PlayerGUID); if(plr && plr->GetQuestStatus(11020) == QUEST_STATUS_INCOMPLETE) plr->KilledMonster(23209, m_creature->GetGUID()); } @@ -701,7 +701,7 @@ struct TRINITY_DLL_DECL npc_overlord_morghorAI : public ScriptedAI Illidan->SetVisibility(VISIBILITY_OFF); if(PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); DoScriptText(OVERLORD_SAY_1, m_creature, player); } ConversationTimer = 4200; @@ -869,7 +869,7 @@ struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI void Aggro(Unit *who) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_COILSKAR_ASSASSIN) DoScriptText(SAY_AGGRO2, m_creature, player); @@ -884,7 +884,7 @@ struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -953,7 +953,7 @@ struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI void SummonAssassin() { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); Unit* CoilskarAssassin = m_creature->SummonCreature(NPC_COILSKAR_ASSASSIN, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 0); if( CoilskarAssassin ) @@ -972,7 +972,7 @@ struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI { if (PlayerGUID && !Completed) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_ESCAPE_FROM_COILSKAR_CISTERN); } @@ -1289,7 +1289,7 @@ struct TRINITY_DLL_DECL mob_torloth_the_magnificentAI : public ScriptedAI if(TorlothAnim[AnimationCount].Creature == 1) { - pCreature = ((Creature*)Unit::GetUnit(*m_creature, LordIllidanGUID)); + pCreature = (Unit::GetCreature(*m_creature, LordIllidanGUID)); if(!pCreature) return; @@ -1309,7 +1309,7 @@ struct TRINITY_DLL_DECL mob_torloth_the_magnificentAI : public ScriptedAI m_creature->RemoveFlag(UNIT_FIELD_BYTES_1,8); break; case 5: - if(Player* AggroTarget = ((Player*)Unit::GetUnit((*m_creature), AggroTargetGUID))) + if(Player* AggroTarget = (Unit::GetPlayer(AggroTargetGUID))) { m_creature->SetUInt64Value(UNIT_FIELD_TARGET, AggroTarget->GetGUID()); m_creature->AddThreat(AggroTarget, 1); @@ -1317,7 +1317,7 @@ struct TRINITY_DLL_DECL mob_torloth_the_magnificentAI : public ScriptedAI } break; case 6: - if(Player* AggroTarget = ((Player*)Unit::GetUnit((*m_creature), AggroTargetGUID))) + if(Player* AggroTarget = (Unit::GetPlayer(AggroTargetGUID))) { m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->clearUnitState(UNIT_STAT_ROOT); @@ -1392,7 +1392,7 @@ struct TRINITY_DLL_DECL mob_torloth_the_magnificentAI : public ScriptedAI break; } - if(Creature* LordIllidan = ((Creature*)Unit::GetUnit(*m_creature, LordIllidanGUID))) + if(Creature* LordIllidan = (Unit::GetCreature(*m_creature, LordIllidanGUID))) { DoScriptText(END_TEXT, LordIllidan, slayer); LordIllidan->AI()->EnterEvadeMode(); @@ -1485,7 +1485,7 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI { if(PlayerGUID) { - if(Player* pTarget = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID))) + if(Player* pTarget = Unit::GetPlayer(PlayerGUID)) { float x, y, z; pTarget->GetPosition(x,y,z); @@ -1510,7 +1510,7 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI void CheckEventFail() { - Player* pPlayer = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID)); + Player* pPlayer = Unit::GetPlayer(PlayerGUID); if(!pPlayer) return; @@ -1527,7 +1527,7 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI for(Group::member_citerator itr = members.begin(); itr!= members.end(); itr++) { - GroupMember = ((Player*)Unit::GetUnit((*m_creature), itr->guid)); + GroupMember = (Unit::GetPlayer(itr->guid)); if(!GroupMember) continue; if(!GroupMember->IsWithinDistInMap(m_creature, EVENT_AREA_RADIUS) && GroupMember->GetQuestStatus(QUEST_BATTLE_OF_THE_CRIMSON_WATCH) == QUEST_STATUS_INCOMPLETE) @@ -1553,7 +1553,7 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI { for(Group::member_citerator itr = members.begin(); itr!= members.end(); itr++) { - GroupMember = ((Player*)Unit::GetUnit((*m_creature), itr->guid)); + GroupMember = Unit::GetPlayer(itr->guid); if(GroupMember && GroupMember->GetQuestStatus(QUEST_BATTLE_OF_THE_CRIMSON_WATCH) == QUEST_STATUS_INCOMPLETE) { @@ -1605,7 +1605,7 @@ struct TRINITY_DLL_DECL npc_lord_illidan_stormrageAI : public ScriptedAI void mob_illidari_spawnAI::JustDied(Unit *slayer) { m_creature->RemoveCorpse(); - if(Creature* LordIllidan = ((Creature*)Unit::GetUnit(*m_creature, LordIllidanGUID))) + if(Creature* LordIllidan = (Unit::GetCreature(*m_creature, LordIllidanGUID))) if(LordIllidan) ((npc_lord_illidan_stormrageAI*)LordIllidan->AI())->LiveCounter(); } diff --git a/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp b/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp index d299efb3ea8..583a6324a00 100644 --- a/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp +++ b/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp @@ -311,7 +311,7 @@ public: case 56: DoScriptText(WHISP21, m_creature, pTemp); if( PlayerGUID ) { - Unit* player = ((Creature*)Unit::GetUnit((*m_creature), PlayerGUID)); + Unit* player = (Unit::GetCreature((*m_creature), PlayerGUID)); if( player && player->GetTypeId() == TYPEID_PLAYER ) ((Player*)player)->GroupEventHappens(10211,m_creature); } @@ -415,7 +415,7 @@ struct TRINITY_DLL_DECL npc_dirty_larryAI : public ScriptedAI uint32 NextStep(uint32 Step) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); switch(Step) { @@ -449,7 +449,7 @@ struct TRINITY_DLL_DECL npc_dirty_larryAI : public ScriptedAI if(Attack) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); m_creature->setFaction(14); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); if(player) @@ -501,7 +501,7 @@ struct TRINITY_DLL_DECL npc_dirty_larryAI : public ScriptedAI m_creature->DeleteThreatList(); m_creature->CombatStop(); m_creature->GetMotionMaster()->MoveTargetedHome(); - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(player) ((Player*)player)->GroupEventHappens(QUEST_WBI, m_creature); } diff --git a/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp b/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp index 16e372f7261..c975dea89cf 100644 --- a/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp +++ b/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp @@ -116,7 +116,7 @@ struct TRINITY_DLL_DECL npc_deathstalker_erlandAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; diff --git a/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp b/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp index a438c14294d..fcb44c764f3 100644 --- a/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp +++ b/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp @@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL npc_kaya_flathoofAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(!player) return; @@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL npc_kaya_flathoofAI : public npc_escortAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player) ((Player*)player)->FailQuest(QUEST_PK); } diff --git a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp index bf2b11c3b9b..34f0f98fef4 100644 --- a/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp +++ b/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp @@ -537,7 +537,7 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI uint32 IntroStep(uint32 step) { - Creature* Sacrolash = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH)); + Creature* Sacrolash = Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_SACROLASH)); switch (step) { case 0: DoPlaySoundToSet(m_creature,SOUND_INTRO); return 0; diff --git a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp index bb1280a8ba6..0278d40a7cb 100644 --- a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp +++ b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp @@ -360,7 +360,7 @@ struct TRINITY_DLL_DECL npc_OOX17AI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -413,7 +413,7 @@ struct TRINITY_DLL_DECL npc_OOX17AI : public npc_escortAI { if (PlayerGUID) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) + if (Player* player = Unit::GetPlayer(PlayerGUID)) ((Player*)player)->FailQuest(Q_OOX17); } } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp index 36ff863abe7..a0d21e302b5 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp @@ -85,7 +85,7 @@ struct TRINITY_DLL_DECL instance_arcatraz : public ScriptedInstance bool IsEncounterInProgress() const { for(uint8 i = 0; i < ENCOUNTERS; i++) - if(Encounter[i]) + if(Encounter[i] == IN_PROGRESS) return true; return false; diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp index c1f64b23fc7..a4c430ae7f7 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp @@ -191,7 +191,7 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI if(pInstance && (pInstance->GetData(DATA_KAELTHASEVENT) == 1 || pInstance->GetData(DATA_KAELTHASEVENT) == 3)) { Creature *Kaelthas = NULL; - Kaelthas = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KAELTHAS))); + Kaelthas = (Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_KAELTHAS))); if(Kaelthas) Kaelthas->AI()->EnterEvadeMode(); @@ -325,7 +325,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI } if(pInstance) { for(uint32 i = 0; i < 7; i++) { - Creature* weapon = (Creature*)(Unit::GetUnit((*m_creature), WeaponGuid[i]));; + Creature* weapon = (Unit::GetCreature((*m_creature), WeaponGuid[i]));; delete weapon; } } @@ -393,7 +393,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Creature *pCreature; for(uint8 i = 0; i < 4; ++i) { - pCreature = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); + pCreature = (Unit::GetCreature((*m_creature), AdvisorGuid[i])); if(pCreature) { pCreature->Respawn(); @@ -483,7 +483,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Creature *pCreature; for(uint8 i = 0; i < 4; ++i) { - pCreature = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); + pCreature = (Unit::GetCreature((*m_creature), AdvisorGuid[i])); if(pCreature) { pCreature->DealDamage(pCreature, pCreature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); @@ -550,7 +550,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI case 1: if(Phase_Timer < diff) { - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[0])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[0])); if(Advisor) { @@ -568,7 +568,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //Subphase 2 - Start case 2: - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[0])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[0])); if(Advisor && (Advisor->GetUInt32Value(UNIT_FIELD_BYTES_1) == UNIT_STAND_STATE_DEAD)) { DoScriptText(SAY_INTRO_SANGUINAR, m_creature); @@ -584,7 +584,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI case 3: if(Phase_Timer < diff) { - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[1])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[1])); if(Advisor) { @@ -602,7 +602,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //Subphase 3 - Start case 4: - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[1])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[1])); if(Advisor && (Advisor->GetUInt32Value(UNIT_FIELD_BYTES_1) == UNIT_STAND_STATE_DEAD)) { DoScriptText(SAY_INTRO_CAPERNIAN, m_creature); @@ -618,7 +618,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI case 5: if(Phase_Timer < diff) { - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[2])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[2])); if(Advisor) { @@ -636,7 +636,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //Subphase 4 - Start case 6: - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[2])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[2])); if(Advisor && (Advisor->GetUInt32Value(UNIT_FIELD_BYTES_1) == UNIT_STAND_STATE_DEAD)) { DoScriptText(SAY_INTRO_TELONICUS, m_creature); @@ -652,7 +652,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI case 7: if(Phase_Timer < diff) { - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[3])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[3])); if(Advisor) { @@ -672,7 +672,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI //End of phase 1 case 8: - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[3])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[3])); if(Advisor && (Advisor->GetUInt32Value(UNIT_FIELD_BYTES_1) == UNIT_STAND_STATE_DEAD)) { Phase = 2; @@ -742,7 +742,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI Creature* Advisor; for (uint32 i = 0; i < 4; ++i) { - Advisor = (Creature*)(Unit::GetUnit((*m_creature), AdvisorGuid[i])); + Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[i])); if (!Advisor) error_log("TSCR: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i); else ((advisorbase_ai*)Advisor->AI())->Revive(Target); diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp index bc407a3de99..66e595ab729 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp @@ -48,7 +48,7 @@ struct TRINITY_DLL_DECL instance_the_eye : public ScriptedInstance uint8 KaelthasEventPhase; uint8 AlarEventPhase; - bool Encounters[ENCOUNTERS]; + uint32 Encounters[ENCOUNTERS]; void Initialize() { @@ -64,13 +64,13 @@ struct TRINITY_DLL_DECL instance_the_eye : public ScriptedInstance AlarEventPhase = 0; for(uint8 i = 0; i < ENCOUNTERS; i++) - Encounters[i] = false; + Encounters[i] = NOT_STARTED; } bool IsEncounterInProgress() const { for(uint8 i = 0; i < ENCOUNTERS; i++) - if(Encounters[i]) return true; + if(Encounters[i] == IN_PROGRESS) return true; return false; } diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp index d6ffe70dc69..ca0711f1222 100644 --- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp +++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp @@ -1255,7 +1255,7 @@ void flesh_tentacleAI::JustDied(Unit* killer) return; } - Creature* Cthun = (Creature*)Unit::GetUnit(*m_creature, Parent); + Creature* Cthun = Unit::GetCreature(*m_creature, Parent); if (Cthun) ((cthunAI*)(Cthun->AI()))->FleshTentcleKilled(); diff --git a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp index 710268c0cff..6deaa769ae5 100644 --- a/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp +++ b/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp @@ -378,7 +378,7 @@ struct TRINITY_DLL_DECL npc_isla_starmaneAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(!player) return; @@ -421,7 +421,7 @@ struct TRINITY_DLL_DECL npc_isla_starmaneAI : public npc_escortAI { if (PlayerGUID) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player && !Completed) { if(((Player*)player)->GetTeam() == ALLIANCE) diff --git a/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp b/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp index cdd7cfd924d..922687b0723 100644 --- a/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp +++ b/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp @@ -46,7 +46,7 @@ npc_swiftmountainAI(Creature *c) : npc_escortAI(c) {} void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -86,7 +86,7 @@ npc_swiftmountainAI(Creature *c) : npc_escortAI(c) {} { if (PlayerGUID) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) + if (Player* player = Unit::GetPlayer(PlayerGUID)) ((Player*)player)->FailQuest(QUEST_HOMEWARD_BOUND); } } diff --git a/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp b/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp index 619d9d7802f..9bb13dd7718 100644 --- a/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp +++ b/src/bindings/scripts/scripts/zone/ungoro_crater/ungoro_crater.cpp @@ -51,7 +51,7 @@ struct TRINITY_DLL_DECL npc_ameAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -100,7 +100,7 @@ struct TRINITY_DLL_DECL npc_ameAI : public npc_escortAI { if (PlayerGUID) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) + if (Player* player = Unit::GetPlayer(PlayerGUID)) ((Player*)player)->FailQuest(QUEST_CHASING_AME); } } diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp new file mode 100644 index 00000000000..9512444458b --- /dev/null +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_dalronn.cpp @@ -0,0 +1,97 @@ +/* Script Data Start +SDName: Boss dalronn +SDAuthor: LordVanMartin +SD%Complete: +SDComment: +SDCategory: +Script Data End */ + +/*** SQL START *** +update creature_template set scriptname = 'boss_dalronn' where entry = ''; +*** SQL END ***/ +#include "precompiled.h" + +//Spells +#define SPELL_DEBILITATE 43650 +#define SPELL_SHADOWBOLT 43649 +#define SPELL_SHADOWBOLT_2 59575 +#define SPELL_SUMMON_SKELETONS 52611 //Trigger Spell: 52612, summons NPC (28878) +#define SPELL_SKARVALD_GHOST 48613 //When Skarvald dies + +//Yell +#define SAY_AGGRO -1574005 +#define SAY_KILL -1574006 +#define SAY_DEATH_1 -1574007 +#define SAY_DEATH_2 -1574008 +#define SAY_RAISES -1574009 + +struct TRINITY_DLL_DECL boss_dalronnAI : public ScriptedAI +{ + boss_dalronnAI(Creature *c) : ScriptedAI(c) {} + + uint32 killed; + uint64 Skarvald; + + void Reset() + { + Skarvald = 0; + } + void Aggro(Unit* who) + { + DoScriptText(SAY_AGGRO, m_creature); + } + void AttackStart(Unit* who) {} + void MoveInLineOfSight(Unit* who) {} + void UpdateAI(const uint32 diff) + { + //Return since we have no target + if(!UpdateVictim()) + return; + + if (Skarvald) + { + Creature* Skravald_m = (Unit::GetCreature((*m_creature), Skarvald)); + if (Skravald_m) + { + if (!Skravald_m->isAlive()) + { + DoCast(Skravald_m,SPELL_SKARVALD_GHOST); + DoScriptText(SAY_RAISES, m_creature); + } + } + } + + DoMeleeAttackIfReady(); + } + void JustDied(Unit* killer) + { + killed++; + //On first death resurected instatly by Skarvald as a ghost, having the same abilities as when alive and is unatackable + //If Skarvald dies first, Dalron resurects him and says "SAY_RAISES" + if(killed ==2) + DoScriptText(SAY_DEATH_2,m_creature); + else + DoScriptText(SAY_DEATH_1,m_creature); + } + void KilledUnit(Unit *victim) + { + if(victim == m_creature) + return; + DoScriptText(SAY_KILL, m_creature); + } +}; + +CreatureAI* GetAI_boss_dalronn(Creature *_Creature) +{ + return new boss_dalronnAI (_Creature); +} + +void AddSC_boss_dalronn() +{ + Script *newscript; + + newscript = new Script; + newscript->Name="boss_dalronn"; + newscript->GetAI = GetAI_boss_dalronn; + newscript->RegisterSelf(); +} diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp new file mode 100644 index 00000000000..1fc9bc1c995 --- /dev/null +++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_skarvald.cpp @@ -0,0 +1,96 @@ +/* Script Data Start +SDName: Boss skarvald +SDAuthor: LordVanMartin +SD%Complete: +SDComment: +SDCategory: +Script Data End */ + +/*** SQL START *** +update creature_template set scriptname = 'boss_skarvald' where entry = ''; +*** SQL END ***/ +#include "precompiled.h" + +//Spells +#define SPELL_CHARGE 43651 //randomly charges anyone but tank WoWradio video 14s afer aggro, and then every 5s change target +#define SPELL_ENRAGE 48193 +#define SPELL_STONE_STRIKE 48583 +#define SPELL_DALRON_GHOST 48612 //When Dalron dies + +//Yells +#define SAY_AGGRO -1574010 +#define SAY_KILL -1574011 +#define SAY_DEATH_1 -1574012 +#define SAY_DEATH_2 -1574013 +#define SAY_RAISES -1574014 + +struct TRINITY_DLL_DECL boss_skarvaldAI : public ScriptedAI +{ + boss_skarvaldAI(Creature *c) : ScriptedAI(c) {} + + uint32 kiled; + uint64 Dalronn; + + void Reset() + { + Dalronn = 0; + } + void Aggro(Unit* who) + { + DoScriptText(SAY_AGGRO, m_creature); + } + void AttackStart(Unit* who) {} + void MoveInLineOfSight(Unit* who) {} + void UpdateAI(const uint32 diff) + { + //Return since we have no target + if(!UpdateVictim()) + return; + + if (Dalronn) + { + Creature* Dalronn_m = (Unit::GetCreature((*m_creature), Dalronn)); + if (Dalronn_m) + { + if (!Dalronn_m->isAlive()) + { + DoCast(Dalronn_m,SPELL_DALRON_GHOST); + DoScriptText(SAY_RAISES, m_creature); + } + } + } + + DoMeleeAttackIfReady(); + } + void JustDied(Unit* killer) + { + kiled++; + //On first death resurected instatly by Dalron as a ghost, having the same abilities as when alive and is unatackable + //If Dalron dies first, Skarvald resurects him and says "SAY_RAISES" + if(kiled ==2) + DoScriptText(SAY_DEATH_2,m_creature); + else + DoScriptText(SAY_DEATH_1,m_creature); + } + void KilledUnit(Unit *victim) + { + if(victim == m_creature) + return; + DoScriptText(SAY_KILL, m_creature); + } +}; + +CreatureAI* GetAI_boss_skarvald(Creature *_Creature) +{ + return new boss_skarvaldAI (_Creature); +} + +void AddSC_boss_skarvald() +{ + Script *newscript; + + newscript = new Script; + newscript->Name="boss_skarvald"; + newscript->GetAI = GetAI_boss_skarvald; + newscript->RegisterSelf(); +} diff --git a/src/bindings/scripts/scripts/zone/westfall/westfall.cpp b/src/bindings/scripts/scripts/zone/westfall/westfall.cpp index 5e392e138d6..9f981d4a35c 100644 --- a/src/bindings/scripts/scripts/zone/westfall/westfall.cpp +++ b/src/bindings/scripts/scripts/zone/westfall/westfall.cpp @@ -47,7 +47,7 @@ struct TRINITY_DLL_DECL npc_defias_traitorAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (!player) return; @@ -95,8 +95,8 @@ struct TRINITY_DLL_DECL npc_defias_traitorAI : public npc_escortAI { if (PlayerGUID) { - if (Unit* player = Unit::GetUnit((*m_creature), PlayerGUID)) - ((Player*)player)->FailQuest(QUEST_DEFIAS_BROTHERHOOD); + if (Player* player = Unit::GetPlayer(PlayerGUID)) + player->FailQuest(QUEST_DEFIAS_BROTHERHOOD); } } diff --git a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp index 3d7481544e8..ebe549a0599 100644 --- a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp +++ b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp @@ -287,7 +287,7 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI void WaypointReached(uint32 i) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); switch(i) { @@ -308,7 +308,7 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI case 26: DoScriptText(SAY_PROGRESS_6, m_creature, player); Completed = true; if(player) - ((Player*)player)->GroupEventHappens(QUEST_EFU, m_creature); + player->GroupEventHappens(QUEST_EFU, m_creature); break; } } @@ -317,9 +317,9 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI { if (PlayerGUID && !Completed) { - Unit* player = Unit::GetUnit((*m_creature), PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if (player && !Completed) - ((Player*)player)->FailQuest(QUEST_EFU); + player->FailQuest(QUEST_EFU); } } diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp index 3014394976e..56741452c66 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp @@ -311,7 +311,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI { for(uint8 i = 0; i < 4; ++i) { - Creature *pCreature = ((Creature*)Unit::GetUnit((*m_creature), AddGUID[i])); + Creature *pCreature = (Unit::GetCreature((*m_creature), AddGUID[i])); if(!pCreature || !pCreature->isAlive()) { if(pCreature) pCreature->setDeathState(DEAD); diff --git a/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp b/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp index a7243ac125d..62130f9a863 100644 --- a/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp +++ b/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp @@ -114,7 +114,7 @@ struct TRINITY_DLL_DECL npc_zulaman_hostageAI : public ScriptedAI void Aggro(Unit *who) {} void JustDied(Unit *) { - Player* player = (Player*)Unit::GetUnit(*m_creature, PlayerGUID); + Player* player = Unit::GetPlayer(PlayerGUID); if(player) player->SendLoot(m_creature->GetGUID(), LOOT_CORPSE); } void UpdateAI(const uint32 diff) diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index b3f74457063..fffedb56ad8 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -951,15 +951,9 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac plr->RemoveArenaAuras(true); // removes debuffs / dots etc., we don't want the player to die after porting out bgTypeId=BATTLEGROUND_AA; // set the bg type to all arenas (it will be used for queue refreshing) - // summon old pet if there was one and there isn't a current pet - if(!plr->GetGuardianPet() && plr->GetTemporaryUnsummonedPetNumber()) - { - Pet* NewPet = new Pet(plr); - if(!NewPet->LoadPetFromDB(plr, 0, (plr)->GetTemporaryUnsummonedPetNumber(), true)) - delete NewPet; - - (plr)->SetTemporaryUnsummonedPetNumber(0); - } + // unsummon current and summon old pet if there was one and there isn't a current pet + plr->RemovePet(NULL, PET_SAVE_NOT_IN_SLOT); + plr->ResummonPetTemporaryUnSummonedIfAny(); if (isRated() && GetStatus() == STATUS_IN_PROGRESS) { @@ -1113,19 +1107,7 @@ void BattleGround::AddPlayer(Player *plr) } plr->DestroyConjuredItems(true); - - Pet* pet = plr->GetPet(); - if (pet) - { - if (pet->getPetType() == SUMMON_PET || pet->getPetType() == HUNTER_PET) - { - (plr)->SetTemporaryUnsummonedPetNumber(pet->GetCharmInfo()->GetPetNumber()); - (plr)->SetOldPetSpell(pet->GetUInt32Value(UNIT_CREATED_BY_SPELL)); - } - (plr)->RemovePet(NULL,PET_SAVE_NOT_IN_SLOT); - } - else - (plr)->SetTemporaryUnsummonedPetNumber(0); + plr->UnsummonPetTemporaryIfAny(); if(GetStatus() == STATUS_WAIT_JOIN) // not started yet { diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cpp index 5cd9c8f191c..a2e189603f9 100644 --- a/src/game/CharacterHandler.cpp +++ b/src/game/CharacterHandler.cpp @@ -814,9 +814,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder) SendDoFlight( MountId, path, startNode ); } - // Load pet if any and player is alive and not in taxi flight - if(pCurrChar->isAlive() && pCurrChar->m_taxi.GetTaxiSource()==0) - pCurrChar->LoadPet(); + // Load pet if any (if player not alive and in taxi flight or another then pet will remember as temporary unsummoned) + pCurrChar->LoadPet(); // Set FFA PvP for non GM in non-rest mode if(sWorld.IsFFAPvPRealm() && !pCurrChar->isGameMaster() && !pCurrChar->HasFlag(PLAYER_FLAGS,PLAYER_FLAGS_RESTING) ) diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index e41d18ac0a0..7a4cac89408 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -116,7 +116,7 @@ bool AssistDelayEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) { while (!m_assistants.empty()) { - Creature* assistant = (Creature*)Unit::GetUnit(m_owner, *m_assistants.begin()); + Creature* assistant = Unit::GetCreature(m_owner, *m_assistants.begin()); m_assistants.pop_front(); if (assistant && assistant->CanAssistTo(&m_owner, victim)) diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 560fb4d651e..b88a67d782f 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -157,14 +157,7 @@ void WorldSession::HandleMoveWorldportAckOpcode() GetPlayer()->CastSpell(GetPlayer(), 2479, true); // resummon pet - if(GetPlayer()->m_temporaryUnsummonedPetNumber) - { - Pet* NewPet = new Pet(GetPlayer()); - if(!NewPet->LoadPetFromDB(GetPlayer(), 0, GetPlayer()->m_temporaryUnsummonedPetNumber, true)) - delete NewPet; - - GetPlayer()->m_temporaryUnsummonedPetNumber = 0; - } + GetPlayer()->ResummonPetTemporaryUnSummonedIfAny(); GetPlayer()->SetDontMove(false); } diff --git a/src/game/NPCHandler.cpp b/src/game/NPCHandler.cpp index 94a8c03ab24..8d1427c86b8 100644 --- a/src/game/NPCHandler.cpp +++ b/src/game/NPCHandler.cpp @@ -611,12 +611,13 @@ void WorldSession::HandleStablePet( WorldPacket & recv_data ) // slots ordered in query, and if not equal then free if(slot!=free_slot) break; - + // this slot not free, skip ++free_slot; }while( result->NextRow() ); + + delete result; } - delete result; if( free_slot > 0 && free_slot <= GetPlayer()->m_stableSlots) { diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index dba79a47a72..e723298565a 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -99,17 +99,17 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool QueryResult *result; - if(petnumber) + if (petnumber) // known petnumber entry 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, talentpoints, slot, name, renamed, curhealth, curmana, curhappiness, abdata, TeachSpelldata, savetime, resettalents_cost, resettalents_time, CreatedBySpell, PetType " "FROM character_pet WHERE owner = '%u' AND id = '%u'", ownerid, petnumber); - else if(current) + else if (current) // current pet (slot 0) 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, talentpoints, slot, name, renamed, curhealth, curmana, curhappiness, abdata, TeachSpelldata, savetime, resettalents_cost, resettalents_time, CreatedBySpell, PetType " "FROM character_pet WHERE owner = '%u' AND slot = '%u'", ownerid, PET_SAVE_AS_CURRENT ); - else if(petentry) + else if (petentry) // known petentry entry (unique for summoned pet, but non unique for hunter pet (only from current or not stabled pets) // 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, talentpoints, slot, name, renamed, curhealth, curmana, curhappiness, abdata, TeachSpelldata, savetime, resettalents_cost, resettalents_time, CreatedBySpell, PetType " @@ -129,7 +129,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool // update for case of current pet "slot = 0" petentry = fields[1].GetUInt32(); - if(!petentry) + if (!petentry) { delete result; return false; @@ -141,16 +141,24 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool bool is_temporary_summoned = spellInfo && GetSpellDuration(spellInfo) > 0; // check temporary summoned pets like mage water elemental - if(current && is_temporary_summoned) + if (current && is_temporary_summoned) { delete result; return false; } + uint32 pet_number = fields[0].GetUInt32(); + + if (current && owner->IsPetNeedBeTemporaryUnsummoned()) + { + owner->SetTemporaryUnsummonedPetNumber(pet_number); + delete result; + return false; + } + Map *map = owner->GetMap(); uint32 guid = objmgr.GenerateLowGuid(HIGHGUID_PET); - uint32 pet_number = fields[0].GetUInt32(); - if(!Create(guid, map, owner->GetPhaseMask(), petentry, pet_number)) + if (!Create(guid, map, owner->GetPhaseMask(), petentry, pet_number)) { delete result; return false; @@ -159,7 +167,8 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool float px, py, pz; owner->GetClosePoint(px, py, pz, GetObjectSize(), PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); Relocate(px, py, pz, owner->GetOrientation()); - if(!IsPositionValid()) + + if (!IsPositionValid()) { sLog.outError("Pet (guidlow %d, entry %d) not loaded. Suggested coordinates isn't valid (X: %f Y: %f)", GetGUIDLow(), GetEntry(), GetPositionX(), GetPositionY()); @@ -172,14 +181,14 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool SetUInt32Value(UNIT_CREATED_BY_SPELL, summon_spell_id); CreatureInfo const *cinfo = GetCreatureInfo(); - if(cinfo->type == CREATURE_TYPE_CRITTER) + if (cinfo->type == CREATURE_TYPE_CRITTER) { map->Add((Creature*)this); delete result; return true; } - if(getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && cinfo->type == CREATURE_TYPE_DEMON && owner->getClass() == CLASS_WARLOCK)) + if (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && cinfo->type == CREATURE_TYPE_DEMON && owner->getClass() == CLASS_WARLOCK)) m_charmInfo->SetPetNumber(pet_number, true); else m_charmInfo->SetPetNumber(pet_number, false); @@ -204,7 +213,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool SetUInt32Value(UNIT_NPC_FLAGS, 0); SetName(fields[9].GetString()); - switch(getPetType()) + switch (getPetType()) { case SUMMON_PET: petlevel=owner->getLevel(); @@ -260,12 +269,12 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool _LoadSpells(); _LoadSpellCooldowns(); - if(!is_temporary_summoned) + if (!is_temporary_summoned) { // permanent controlled pets store state in DB Tokens tokens = StrSplit(fields[14].GetString(), " "); - if(tokens.size() != 20) + if (tokens.size() != 20) { delete result; return false; @@ -345,13 +354,33 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool void Pet::SavePetToDB(PetSaveMode mode) { - if(!GetEntry()) + if (!GetEntry()) return; // save only fully controlled creature - if(!isControlled()) + if (!isControlled()) + return; + + // not save not player pets + if(!IS_PLAYER_GUID(GetOwnerGUID())) + return; + + Player* pOwner = (Player*)GetOwner(); + if (!pOwner) return; + // not save pet as current if another pet temporary unsummoned + if (mode == PET_SAVE_AS_CURRENT && pOwner->GetTemporaryUnsummonedPetNumber() && + pOwner->GetTemporaryUnsummonedPetNumber() != m_charmInfo->GetPetNumber()) + { + // pet will lost anyway at restore temporary unsummoned + if(getPetType()==HUNTER_PET) + return; + + // for warlock case + mode = PET_SAVE_NOT_IN_SLOT; + } + uint32 curhealth = GetHealth(); uint32 curmana = GetPower(POWER_MANA); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 4bf93b3ea70..01ca893b6e3 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1683,16 +1683,9 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati //SendMessageToSet(&data, true); if (!(options & TELE_TO_NOT_UNSUMMON_PET)) { - //same map, only remove pet if out of range - if(pet && !IsWithinDistInMap(pet, OWNER_MAX_DISTANCE)) - { - if(pet->isControlled() && !pet->isTemporarySummoned() ) - m_temporaryUnsummonedPetNumber = pet->GetCharmInfo()->GetPetNumber(); - else - m_temporaryUnsummonedPetNumber = 0; - - RemovePet(pet, PET_SAVE_NOT_IN_SLOT); - } + //same map, only remove pet if out of range for new position + if(pet && pet->GetDistance(x,y,z) >= OWNER_MAX_DISTANCE) + UnsummonPetTemporaryIfAny(); } if(!(options & TELE_TO_NOT_LEAVE_COMBAT)) @@ -1701,14 +1694,8 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if (!(options & TELE_TO_NOT_UNSUMMON_PET)) { // resummon pet - if(pet && m_temporaryUnsummonedPetNumber) - { - Pet* NewPet = new Pet(this); - if(!NewPet->LoadPetFromDB(this, 0, m_temporaryUnsummonedPetNumber, true)) - delete NewPet; - - m_temporaryUnsummonedPetNumber = 0; - } + if (pet) + ResummonPetTemporaryUnSummonedIfAny(); } uint32 newzone, newarea; @@ -1767,15 +1754,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati // remove pet on map change if (pet) - { - //leaving map -> delete pet right away (doing this later will cause problems) - if(pet->isControlled() && !pet->isTemporarySummoned()) - m_temporaryUnsummonedPetNumber = pet->GetCharmInfo()->GetPetNumber(); - else - m_temporaryUnsummonedPetNumber = 0; - - RemovePet(pet, PET_SAVE_NOT_IN_SLOT); - } + UnsummonPetTemporaryIfAny(); // remove all dyn objects RemoveAllDynObjects(); @@ -20485,3 +20464,37 @@ void Player::UpdateFallInformationIfNeed( MovementInfo const& minfo,uint16 opcod if (m_lastFallTime >= minfo.fallTime || m_lastFallZ <=minfo.z || opcode == MSG_MOVE_FALL_LAND) SetFallInformation(minfo.fallTime, minfo.z); } + +void Player::UnsummonPetTemporaryIfAny() +{ + Pet* pet = GetPet(); + if(!pet) + return; + + if(!m_temporaryUnsummonedPetNumber && pet->isControlled() && !pet->isTemporarySummoned() ) + { + m_temporaryUnsummonedPetNumber = pet->GetCharmInfo()->GetPetNumber(); + m_oldpetspell = pet->GetUInt32Value(UNIT_CREATED_BY_SPELL); + } + + RemovePet(pet, PET_SAVE_AS_CURRENT); +} + +void Player::ResummonPetTemporaryUnSummonedIfAny() +{ + if(!m_temporaryUnsummonedPetNumber) + return; + + // not resummon in not appropriate state + if(IsPetNeedBeTemporaryUnsummoned()) + return; + + if(GetPetGUID()) + return; + + Pet* NewPet = new Pet(this); + if(!NewPet->LoadPetFromDB(this, 0, m_temporaryUnsummonedPetNumber, true)) + delete NewPet; + + m_temporaryUnsummonedPetNumber = 0; +} diff --git a/src/game/Player.h b/src/game/Player.h index 4738ce603a0..1c2f7db6505 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1998,8 +1998,9 @@ class TRINITY_DLL_SPEC Player : public Unit // Temporarily removed pet cache uint32 GetTemporaryUnsummonedPetNumber() const { return m_temporaryUnsummonedPetNumber; } void SetTemporaryUnsummonedPetNumber(uint32 petnumber) { m_temporaryUnsummonedPetNumber = petnumber; } - uint32 GetOldPetSpell() const { return m_oldpetspell; } - void SetOldPetSpell(uint32 petspell) { m_oldpetspell = petspell; } + void UnsummonPetTemporaryIfAny(); + void ResummonPetTemporaryUnSummonedIfAny(); + bool IsPetNeedBeTemporaryUnsummoned() const { return !IsInWorld() || !isAlive() || IsMounted() /*+in flight*/; } void SendCinematicStart(uint32 CinematicSequenceId); void SendMovieStart(uint32 MovieId); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 88155b4be51..2d55920d0f1 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -2425,7 +2425,9 @@ MeleeHitOutcome Unit::RollMeleeOutcomeAgainst (const Unit *pVictim, WeaponAttack if (tmp > 0 && roll < (sum += tmp)) { DEBUG_LOG ("RollMeleeOutcomeAgainst: CRIT <%d, %d)", sum-tmp, sum); - if(GetTypeId()!=TYPEID_PLAYER && !(((Creature*)this)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_CRIT)) + if(GetTypeId() == TYPEID_UNIT && (((Creature*)this)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_CRIT)) + DEBUG_LOG ("RollMeleeOutcomeAgainst: CRIT DISABLED)"); + else return MELEE_HIT_CRIT; } @@ -9537,21 +9539,7 @@ void Unit::Mount(uint32 mount) // unsummon pet if(GetTypeId() == TYPEID_PLAYER) - { - Pet* pet = ((Player*)this)->GetPet(); - if(pet) - { - if(pet->isControlled()) - { - ((Player*)this)->SetTemporaryUnsummonedPetNumber(pet->GetCharmInfo()->GetPetNumber()); - ((Player*)this)->SetOldPetSpell(pet->GetUInt32Value(UNIT_CREATED_BY_SPELL)); - } - - ((Player*)this)->RemovePet(NULL,PET_SAVE_NOT_IN_SLOT); - } - else - ((Player*)this)->SetTemporaryUnsummonedPetNumber(0); - } + ((Player*)this)->UnsummonPetTemporaryIfAny(); } void Unit::Unmount() @@ -9567,14 +9555,8 @@ void Unit::Unmount() // only resummon old pet if the player is already added to a map // this prevents adding a pet to a not created map which would otherwise cause a crash // (it could probably happen when logging in after a previous crash) - if(GetTypeId() == TYPEID_PLAYER && IsInWorld() && ((Player*)this)->GetTemporaryUnsummonedPetNumber() && isAlive()) - { - Pet* NewPet = new Pet((Player*)this); - if(!NewPet->LoadPetFromDB((Player*)this, 0, ((Player*)this)->GetTemporaryUnsummonedPetNumber(), true)) - delete NewPet; - - ((Player*)this)->SetTemporaryUnsummonedPetNumber(0); - } + if(GetTypeId() == TYPEID_PLAYER) + ((Player*)this)->ResummonPetTemporaryUnSummonedIfAny(); } void Unit::SetInCombatWith(Unit* enemy) @@ -10655,6 +10637,16 @@ Unit* Unit::GetUnit(WorldObject& object, uint64 guid) return ObjectAccessor::GetUnit(object,guid); } +Player* Unit::GetPlayer(uint64 guid) +{ + return ObjectAccessor::FindPlayer(guid); +} + +Creature* Unit::GetCreature(WorldObject& object, uint64 guid) +{ + return ObjectAccessor::GetCreature(object, guid); +} + bool Unit::isVisibleForInState( Player const* u, bool inVisibleList ) const { return u->canSeeOrDetect(this, false, inVisibleList, false); diff --git a/src/game/Unit.h b/src/game/Unit.h index 33b03c821db..af902dba15a 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1495,6 +1495,8 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void addFollower(FollowerReference* pRef) { m_FollowingRefManager.insertFirst(pRef); } void removeFollower(FollowerReference* /*pRef*/ ) { /* nothing to do yet */ } static Unit* GetUnit(WorldObject& object, uint64 guid); + static Player* GetPlayer(uint64 guid); + static Creature* GetCreature(WorldObject& object, uint64 guid); MotionMaster* GetMotionMaster() { return &i_motionMaster; } @@ -1647,5 +1649,20 @@ class TRINITY_DLL_SPEC Unit : public WorldObject uint32 m_reducedThreatPercent; uint64 m_misdirectionTargetGUID; }; + +namespace Trinity +{ + template<class T> + void RandomResizeList(std::list<T> &_list, uint32 _size) + { + while(_list.size() > _size) + { + typename std::list<T>::iterator itr = _list.begin(); + advance(itr, urand(0, _list.size() - 1)); + _list.erase(itr); + } + } +} + #endif diff --git a/src/game/World.cpp b/src/game/World.cpp index f496dd6ae36..ef1935f84a7 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -737,7 +737,7 @@ void World::LoadConfigSettings(bool reload) { sLog.outError("StartHonorPoints (%i) must be in range 0..MaxHonorPoints(%u). Set to %u.", m_configs[CONFIG_START_HONOR_POINTS],m_configs[CONFIG_MAX_HONOR_POINTS],0); - m_configs[CONFIG_MAX_HONOR_POINTS] = 0; + m_configs[CONFIG_START_HONOR_POINTS] = 0; } else if(m_configs[CONFIG_START_HONOR_POINTS] > m_configs[CONFIG_MAX_HONOR_POINTS]) { |