diff options
author | Kudlaty <none@none> | 2009-08-14 05:32:39 +0200 |
---|---|---|
committer | Kudlaty <none@none> | 2009-08-14 05:32:39 +0200 |
commit | 5b87f1fcdcce966e50f5eeb9af8a38586d36bec4 (patch) | |
tree | b10811db64aeb74411794eb4906979973b4005b0 /src | |
parent | 853f3a5ddd27c9a7d0e62499c5494701c0120df0 (diff) |
Merge [SD2]
r1245 Update escortAI MAX_PLAYER_DISTANCE from 50 to 66 yards - skip
r1246 Not call JustDied() AI function when escortAI max range is over limit(not regular death). Some additional cleanup to apply code style.
r1247 Implement automated FailQuest in escortAI (if npc has specific death events, call npc_escortAI::JustDied()). Clean up scripts related to it.
Restore original faction at escortAI's JustRespawned() in case faction changed (normal case for escorts). Remove in scripts where defined.
r1248 Add small delay before move to first point in escortAI.
r1249 Add support for quest 898
r1250 Add support for quest 10451. Original patch by Lightguard
--HG--
branch : trunk
Diffstat (limited to 'src')
16 files changed, 332 insertions, 460 deletions
diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp index 48991193e51..b04c349eb96 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp @@ -20,27 +20,53 @@ enum extern std::list<PointMovement> PointMovementList; -void npc_escortAI::AttackStart(Unit *who) +void npc_escortAI::AttackStart(Unit* pWho) { - if (!who) + if (!pWho) return; - if (m_creature->Attack(who, true)) + if (m_creature->Attack(pWho, true)) { if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE) m_creature->GetMotionMaster()->MovementExpired(); if (IsCombatMovement()) - m_creature->GetMotionMaster()->MoveChase(who); + m_creature->GetMotionMaster()->MoveChase(pWho); } } -void npc_escortAI::MoveInLineOfSight(Unit *who) +void npc_escortAI::MoveInLineOfSight(Unit* pWho) { if (IsBeingEscorted && !m_bIsActiveAttacker) return; - ScriptedAI::MoveInLineOfSight(who); + ScriptedAI::MoveInLineOfSight(pWho); +} + +void npc_escortAI::JustDied(Unit* pKiller) +{ + if (!IsBeingEscorted || !PlayerGUID || !m_pQuestForEscort) + return; + + if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) + { + if (Group* pGroup = pPlayer->GetGroup()) + { + for(GroupReference* pRef = pGroup->GetFirstMember(); pRef != NULL; pRef = pRef->next()) + { + if (Player* pMember = pRef->getSource()) + { + if (pPlayer->GetQuestStatus(m_pQuestForEscort->GetQuestId()) == QUEST_STATUS_INCOMPLETE) + pPlayer->FailQuest(m_pQuestForEscort->GetQuestId()); + } + } + } + else + { + if (pPlayer->GetQuestStatus(m_pQuestForEscort->GetQuestId()) == QUEST_STATUS_INCOMPLETE) + pPlayer->FailQuest(m_pQuestForEscort->GetQuestId()); + } + } } void npc_escortAI::JustRespawned() @@ -51,7 +77,11 @@ void npc_escortAI::JustRespawned() if (!IsCombatMovement()) SetCombatMovement(true); - m_uiWPWaitTimer = 0; + //add a small delay before going to first waypoint, normal in near all cases + m_uiWPWaitTimer = 2500; + + if (m_creature->getFaction() != m_creature->GetCreatureInfo()->faction_A) + me->RestoreFaction(); Reset(); } @@ -82,12 +112,12 @@ void npc_escortAI::EnterEvadeMode() Reset(); } -void npc_escortAI::UpdateAI(const uint32 diff) +void npc_escortAI::UpdateAI(const uint32 uiDiff) { //Waypoint Updating if (IsBeingEscorted && !m_creature->getVictim() && m_uiWPWaitTimer && !m_bIsReturning) { - if (m_uiWPWaitTimer <= diff) + if (m_uiWPWaitTimer <= uiDiff) { //End of the line if (CurrentWP == WaypointList.end()) @@ -133,13 +163,15 @@ void npc_escortAI::UpdateAI(const uint32 diff) debug_log("TSCR: EscortAI Next WP is: %u, %f, %f, %f", CurrentWP->id, CurrentWP->x, CurrentWP->y, CurrentWP->z); m_uiWPWaitTimer = 0; } - }else m_uiWPWaitTimer -= diff; + } + else + m_uiWPWaitTimer -= uiDiff; } //Check if player or any member of his group is within range if (IsBeingEscorted && PlayerGUID && !m_creature->getVictim() && !m_bIsReturning) { - if (m_uiPlayerCheckTimer < diff) + if (m_uiPlayerCheckTimer < uiDiff) { bool bIsMaxRangeExceeded = true; @@ -167,9 +199,7 @@ void npc_escortAI::UpdateAI(const uint32 diff) if (DespawnAtFar && bIsMaxRangeExceeded) { - debug_log("TSCR: EscortAI Evaded back to spawn point because player/group was to far away or not found"); - - JustDied(m_creature); + debug_log("TSCR: EscortAI failed because player/group was to far away or not found"); if (m_bCanInstantRespawn) { @@ -183,20 +213,22 @@ void npc_escortAI::UpdateAI(const uint32 diff) } m_uiPlayerCheckTimer = 1000; - }else m_uiPlayerCheckTimer -= diff; + } + else + m_uiPlayerCheckTimer -= uiDiff; } if (CanMelee && UpdateVictim()) DoMeleeAttackIfReady(); } -void npc_escortAI::MovementInform(uint32 type, uint32 id) +void npc_escortAI::MovementInform(uint32 uiMoveType, uint32 uiPointId) { - if (type != POINT_MOTION_TYPE || !IsBeingEscorted) + if (uiMoveType != POINT_MOTION_TYPE || !IsBeingEscorted) return; //Combat start position reached, continue waypoint movement - if (id == POINT_LAST_POINT) + if (uiPointId == POINT_LAST_POINT) { debug_log("TSCR: EscortAI has returned to original position before combat"); @@ -210,7 +242,7 @@ void npc_escortAI::MovementInform(uint32 type, uint32 id) if (!m_uiWPWaitTimer) m_uiWPWaitTimer = 1; } - else if (id == POINT_HOME) + else if (uiPointId == POINT_HOME) { debug_log("TSCR: EscortAI has returned to original home location and will continue from beginning of waypoint list."); @@ -220,9 +252,9 @@ void npc_escortAI::MovementInform(uint32 type, uint32 id) else { //Make sure that we are still on the right waypoint - if (CurrentWP->id != id) + if (CurrentWP->id != uiPointId) { - debug_log("TSCR ERROR: EscortAI reached waypoint out of order %d, expected %d", id, CurrentWP->id); + debug_log("TSCR ERROR: EscortAI reached waypoint out of order %d, expected %d", uiPointId, CurrentWP->id); return; } @@ -352,8 +384,5 @@ void npc_escortAI::Start(bool bIsActiveAttacker, bool bRun, uint64 uiPlayerGUID, else m_creature->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); - //Start WP - m_creature->GetMotionMaster()->MovePoint(CurrentWP->id, CurrentWP->x, CurrentWP->y, CurrentWP->z); - debug_log("TSCR: EscortAI Next WP is: %d, %f, %f, %f", CurrentWP->id, CurrentWP->x, CurrentWP->y, CurrentWP->z); IsBeingEscorted = true; } diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.h b/src/bindings/scripts/scripts/npc/npc_escortAI.h index cda331e6121..90a99152b68 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.h +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.h @@ -31,7 +31,7 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI { public: explicit npc_escortAI(Creature* pCreature) : ScriptedAI(pCreature), - IsBeingEscorted(false), IsOnHold(false), PlayerGUID(0), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), m_uiPlayerCheckTimer(1000), m_uiWPWaitTimer(0), m_bIsReturning(false), m_bIsActiveAttacker(true), m_bIsRunning(false), DespawnAtEnd(true), DespawnAtFar(true), m_pQuestForEscort(NULL), m_bCanInstantRespawn(false), m_bCanReturnToStart(false) {} + IsBeingEscorted(false), IsOnHold(false), PlayerGUID(0), MaxPlayerDistance(DEFAULT_MAX_PLAYER_DISTANCE), CanMelee(true), m_uiPlayerCheckTimer(1000), m_uiWPWaitTimer(2500), m_bIsReturning(false), m_bIsActiveAttacker(true), m_bIsRunning(false), DespawnAtEnd(true), DespawnAtFar(true), m_pQuestForEscort(NULL), m_bCanInstantRespawn(false), m_bCanReturnToStart(false) {} ~npc_escortAI() {} // Pure Virtual Functions @@ -42,6 +42,8 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI void MoveInLineOfSight(Unit* who); + void JustDied(Unit*); + void JustRespawned(); void ReturnToLastPoint(); 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 45261fb745e..98d589ed009 100644 --- a/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp +++ b/src/bindings/scripts/scripts/zone/arathi_highlands/arathi_highlands.cpp @@ -88,7 +88,6 @@ struct TRINITY_DLL_DECL npc_professor_phizzlethorpeAI : public npc_escortAI void Reset() { m_bCompleted = true; - m_creature->setFaction(35); } void EnterCombat(Unit* who) @@ -96,16 +95,6 @@ struct TRINITY_DLL_DECL npc_professor_phizzlethorpeAI : public npc_escortAI DoScriptText(SAY_AGGRO, m_creature, NULL); } - void JustDied(Unit* killer) - { - if (PlayerGUID && !m_bCompleted) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - CAST_PLR(pPlayer)->FailQuest(QUEST_SUNKEN_TREASURE); - } - } - void UpdateAI(const uint32 diff) { npc_escortAI::UpdateAI(diff); diff --git a/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp b/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp index 646192c983a..3fd7d1ef791 100644 --- a/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp +++ b/src/bindings/scripts/scripts/zone/ashenvale_forest/ashenvale.cpp @@ -106,18 +106,6 @@ struct TRINITY_DLL_DECL npc_torekAI : public npc_escortAI summoned->AI()->AttackStart(m_creature); } - void JustDied(Unit* killer) - { - if (killer->GetEntry() == m_creature->GetEntry()) - return; - - if (PlayerGUID && !Completed) - { - if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) - CAST_PLR(pPlayer)->FailQuest(QUEST_TOREK_ASSULT); - } - } - void UpdateAI(const uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -212,9 +200,6 @@ struct TRINITY_DLL_DECL npc_ruul_snowhoofAI : public npc_escortAI void Reset() { - if (!IsBeingEscorted) - m_creature->setFaction(1602); - GameObject* Cage = m_creature->FindNearestGameObject(GO_CAGE, 20); if (Cage) Cage->SetGoState(GO_STATE_READY); @@ -225,16 +210,6 @@ struct TRINITY_DLL_DECL npc_ruul_snowhoofAI : public npc_escortAI summoned->AI()->AttackStart(m_creature); } - void JustDied(Unit* killer) - { - if (PlayerGUID) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - CAST_PLR(pPlayer)->FailQuest(QUEST_FREEDOM_TO_RUUL); - } - } - void UpdateAI(const uint32 diff) { npc_escortAI::UpdateAI(diff); 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 414a2468b52..8fc97d40228 100644 --- a/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp +++ b/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp @@ -367,26 +367,7 @@ struct TRINITY_DLL_DECL npc_magwinAI : public npc_escortAI DoScriptText(SAY_AGGRO, m_creature, who); } - void Reset() - { - if (!IsBeingEscorted) - m_creature->setFaction(80); - } - - void JustDied(Unit* killer) - { - if (PlayerGUID) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - pPlayer->FailQuest(QUEST_A_CRY_FOR_SAY_HELP); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } + void Reset() { } }; bool QuestAccept_npc_magwin(Player* pPlayer, Creature* pCreature, Quest const* quest) diff --git a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp index 4fc39d1dcdf..0d6d176fd41 100644 --- a/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp +++ b/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp @@ -17,12 +17,13 @@ /* ScriptData SDName: The_Barrens SD%Complete: 90 -SDComment: Quest support: 2458, 4921, 6981, 1719, 863 +SDComment: Quest support: 863, 898, 1719, 2458, 4921, 6981, SDCategory: Barrens EndScriptData */ /* ContentData npc_beaten_corpse +npc_gilthares npc_sputtervalve npc_taskmaster_fizzule npc_twiggy_flathead @@ -63,6 +64,111 @@ bool GossipSelect_npc_beaten_corpse(Player* pPlayer, Creature* pCreature, uint32 } /*###### +# npc_gilthares +######*/ + +enum +{ + SAY_GIL_START = -1000370, + SAY_GIL_AT_LAST = -1000371, + SAY_GIL_PROCEED = -1000372, + SAY_GIL_FREEBOOTERS = -1000373, + SAY_GIL_AGGRO_1 = -1000374, + SAY_GIL_AGGRO_2 = -1000375, + SAY_GIL_AGGRO_3 = -1000376, + SAY_GIL_AGGRO_4 = -1000377, + SAY_GIL_ALMOST = -1000378, + SAY_GIL_SWEET = -1000379, + SAY_GIL_FREED = -1000380, + + QUEST_FREE_FROM_HOLD = 898, + AREA_MERCHANT_COAST = 391, + FACTION_ESCORTEE = 232 //guessed, possible not needed for this quest +}; + +struct TRINITY_DLL_DECL npc_giltharesAI : public npc_escortAI +{ + npc_giltharesAI(Creature* pCreature) : npc_escortAI(pCreature) { } + + void Reset() { } + + void WaypointReached(uint32 uiPointId) + { + Player* pPlayer = (Player*)Unit::GetUnit(*m_creature, PlayerGUID); + + if (!pPlayer) + return; + + switch(uiPointId) + { + case 16: + DoScriptText(SAY_GIL_AT_LAST, m_creature, pPlayer); + break; + case 17: + DoScriptText(SAY_GIL_PROCEED, m_creature, pPlayer); + break; + case 18: + DoScriptText(SAY_GIL_FREEBOOTERS, m_creature, pPlayer); + break; + case 37: + DoScriptText(SAY_GIL_ALMOST, m_creature, pPlayer); + break; + case 47: + DoScriptText(SAY_GIL_SWEET, m_creature, pPlayer); + break; + case 53: + DoScriptText(SAY_GIL_FREED, m_creature, pPlayer); + pPlayer->GroupEventHappens(QUEST_FREE_FROM_HOLD, m_creature); + break; + } + } + + void Aggro(Unit* pWho) + { + //not always use + if (rand()%4) + return; + + //only aggro text if not player and only in this area + if (pWho->GetTypeId() != TYPEID_PLAYER && m_creature->GetAreaId() == AREA_MERCHANT_COAST) + { + //appears to be pretty much random (possible only if escorter not in combat with pWho yet?) + switch(rand()%4) + { + case 0: DoScriptText(SAY_GIL_AGGRO_1, m_creature, pWho); break; + case 1: DoScriptText(SAY_GIL_AGGRO_2, m_creature, pWho); break; + case 2: DoScriptText(SAY_GIL_AGGRO_3, m_creature, pWho); break; + case 3: DoScriptText(SAY_GIL_AGGRO_4, m_creature, pWho); break; + } + } + } +}; + +CreatureAI* GetAI_npc_gilthares(Creature* pCreature) +{ + npc_giltharesAI* pTempAI = new npc_giltharesAI(pCreature); + + pTempAI->FillPointMovementListForCreature(); + + return (CreatureAI*)pTempAI; +} + +bool QuestAccept_npc_gilthares(Player* pPlayer, Creature* pCreature, const Quest* pQuest) +{ + if (pQuest->GetQuestId() == QUEST_FREE_FROM_HOLD) + { + pCreature->setFaction(FACTION_ESCORTEE); + pCreature->SetStandState(UNIT_STAND_STATE_STAND); + + DoScriptText(SAY_GIL_START, pCreature, pPlayer); + + if (npc_giltharesAI* pEscortAI = CAST_AI(npc_giltharesAI, pCreature->AI())) + pEscortAI->Start(false, false, pPlayer->GetGUID(), pQuest); + } + return true; +} + +/*###### ## npc_sputtervalve ######*/ @@ -424,12 +530,7 @@ enum struct TRINITY_DLL_DECL npc_wizzlecrank_shredderAI : public npc_escortAI { - npc_wizzlecrank_shredderAI(Creature* c) : npc_escortAI(c) - { - uiNormFaction = c->getFaction(); - } - - uint32 uiNormFaction; + npc_wizzlecrank_shredderAI(Creature* c) : npc_escortAI(c) { } bool Completed; @@ -475,28 +576,10 @@ struct TRINITY_DLL_DECL npc_wizzlecrank_shredderAI : public npc_escortAI Completed = false; if (!IsBeingEscorted) { - m_creature->setFaction(uiNormFaction); if (m_creature->getStandState() == UNIT_STAND_STATE_DEAD) m_creature->SetStandState(UNIT_STAND_STATE_STAND); } } - - void EnterCombat(Unit* who){} - - void JustDied(Unit* killer) - { - if (PlayerGUID && !Completed) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - pPlayer->FailQuest(QUEST_ESCAPE); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } }; bool QuestAccept_npc_wizzlecrank_shredder(Player* pPlayer, Creature* pCreature, Quest const* quest) @@ -561,6 +644,12 @@ void AddSC_the_barrens() newscript->RegisterSelf(); newscript = new Script; + newscript->Name = "npc_gilthares"; + newscript->GetAI = &GetAI_npc_gilthares; + newscript->pQuestAccept = &QuestAccept_npc_gilthares; + newscript->RegisterSelf(); + + newscript = new Script; newscript->Name="npc_sputtervalve"; newscript->pGossipHello = &GossipHello_npc_sputtervalve; newscript->pGossipSelect = &GossipSelect_npc_sputtervalve; diff --git a/src/bindings/scripts/scripts/zone/feralas/feralas.cpp b/src/bindings/scripts/scripts/zone/feralas/feralas.cpp index 7383b2b23c2..f0320a5e443 100644 --- a/src/bindings/scripts/scripts/zone/feralas/feralas.cpp +++ b/src/bindings/scripts/scripts/zone/feralas/feralas.cpp @@ -80,12 +80,7 @@ enum struct TRINITY_DLL_DECL npc_oox22feAI : public npc_escortAI { - npc_oox22feAI(Creature* pCreature) : npc_escortAI(pCreature) - { - normFaction = pCreature->getFaction(); - } - - uint32 normFaction; + npc_oox22feAI(Creature* pCreature) : npc_escortAI(pCreature) { } void WaypointReached(uint32 i) { @@ -127,10 +122,7 @@ struct TRINITY_DLL_DECL npc_oox22feAI : public npc_escortAI void Reset() { if (!IsBeingEscorted) - { - m_creature->setFaction(normFaction); m_creature->SetStandState(UNIT_STAND_STATE_DEAD); - } } void EnterCombat(Unit* who) @@ -147,24 +139,6 @@ struct TRINITY_DLL_DECL npc_oox22feAI : public npc_escortAI { summoned->AI()->AttackStart(m_creature); } - - void JustDied(Unit* killer) - { - if (!IsBeingEscorted) - return; - - if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) - { - // If NPC dies, player fails the quest - if (pPlayer->GetQuestStatus(QUEST_RESCUE_OOX22FE) != QUEST_STATUS_COMPLETE) - pPlayer->FailQuest(QUEST_RESCUE_OOX22FE); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } }; CreatureAI* GetAI_npc_oox22fe(Creature* pCreature) diff --git a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp index f1cf9688354..94c45af786a 100644 --- a/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp +++ b/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp @@ -213,31 +213,10 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI } } - void EnterCombat(Unit* who) {} - void Reset() { - if (!IsBeingEscorted) - m_creature->setFaction(1602); - - GameObject* Cage = me->FindNearestGameObject(GO_CAGE, 20); - if (Cage) - Cage->SetGoState(GO_STATE_READY); - } - - void JustDied(Unit* killer) - { - if (PlayerGUID) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - CAST_PLR(pPlayer)->FailQuest(QUEST_ESCAPE_FROM_THE_CATACOMBS); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); + if (GameObject* Cage = me->FindNearestGameObject(GO_CAGE, 20)) + Cage->SetGoState(GO_STATE_READY); } }; 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 5aaf6e342b7..ec2f1c91f13 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp @@ -181,11 +181,7 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI } } - void Reset() - { - if (!IsBeingEscorted) - m_creature->setFaction(1604); - } + void Reset() { } void EnterCombat(Unit* who) { @@ -197,25 +193,6 @@ struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI { summoned->AI()->AttackStart(m_creature); } - - void JustDied(Unit* killer) - { - if (!IsBeingEscorted) - return; - - if (PlayerGUID) - { - // If NPC dies, player fails the quest - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - pPlayer->FailQuest(QUEST_ROAD_TO_FALCON_WATCH); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } }; CreatureAI* GetAI_npc_wounded_blood_elf(Creature* pCreature) 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 77d8b52cd1b..04cc0140864 100644 --- a/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp +++ b/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp @@ -855,211 +855,184 @@ bool QuestAccept_npc_overlord_morghor(Player* pPlayer, Creature* pCreature, cons # npc_earthmender_wilda ####*/ -#define SAY_START -1000223 -#define SAY_AGGRO1 -1000224 -#define SAY_AGGRO2 -1000225 -#define ASSASSIN_SAY_AGGRO1 -1000226 -#define ASSASSIN_SAY_AGGRO2 -1000227 -#define SAY_PROGRESS1 -1000228 -#define SAY_PROGRESS2 -1000229 -#define SAY_PROGRESS3 -1000230 -#define SAY_PROGRESS4 -1000231 -#define SAY_PROGRESS5 -1000232 -#define SAY_PROGRESS6 -1000233 -#define SAY_END -1000234 - -#define QUEST_ESCAPE_FROM_COILSKAR_CISTERN 10451 -#define NPC_COILSKAR_ASSASSIN 21044 +enum +{ + SAY_WIL_START = -1000381, + SAY_WIL_AGGRO1 = -1000382, + SAY_WIL_AGGRO2 = -1000383, + SAY_WIL_PROGRESS1 = -1000384, + SAY_WIL_PROGRESS2 = -1000385, + SAY_WIL_FIND_EXIT = -1000386, + SAY_WIL_PROGRESS4 = -1000387, + SAY_WIL_PROGRESS5 = -1000388, + SAY_WIL_JUST_AHEAD = -1000389, + SAY_WIL_END = -1000390, + + SPELL_CHAIN_LIGHTNING = 16006, + SPELL_EARTHBING_TOTEM = 15786, + SPELL_FROST_SHOCK = 12548, + SPELL_HEALING_WAVE = 12491, + + QUEST_ESCAPE_COILSCAR = 10451, + NPC_COILSKAR_ASSASSIN = 21044, + FACTION_EARTHEN = 1726 //guessed +}; struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI { - npc_earthmender_wildaAI(Creature *c) : npc_escortAI(c) {} + npc_earthmender_wildaAI(Creature* pCreature) : npc_escortAI(pCreature) { } + + uint32 m_uiHealingTimer; - bool Completed; + void Reset() + { + m_uiHealingTimer = 0; + } - void EnterCombat(Unit *who) + void WaypointReached(uint32 uiPointId) { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); + Player* pPlayer = (Player*)Unit::GetUnit(*m_creature, PlayerGUID); + + if (!pPlayer) + return; + + switch(uiPointId) + { + case 13: + DoScriptText(SAY_WIL_PROGRESS1, m_creature, pPlayer); + DoSpawnAssassin(); + break; + case 14: + DoSpawnAssassin(); + break; + case 15: + DoScriptText(SAY_WIL_FIND_EXIT, m_creature, pPlayer); + break; + case 19: + DoRandomSay(); + break; + case 20: + DoSpawnAssassin(); + break; + case 26: + DoRandomSay(); + break; + case 27: + DoSpawnAssassin(); + break; + case 33: + DoRandomSay(); + break; + case 34: + DoSpawnAssassin(); + break; + case 37: + DoRandomSay(); + break; + case 38: + DoSpawnAssassin(); + break; + case 39: + DoScriptText(SAY_WIL_JUST_AHEAD, m_creature, pPlayer); + break; + case 43: + DoRandomSay(); + break; + case 44: + DoSpawnAssassin(); + break; + case 50: + DoScriptText(SAY_WIL_END, m_creature, pPlayer); + + if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) + pPlayer->GroupEventHappens(QUEST_ESCAPE_COILSCAR, m_creature); + break; + } + } - if (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_COILSKAR_ASSASSIN) - DoScriptText(SAY_AGGRO2, m_creature, pPlayer); - else DoScriptText(SAY_AGGRO1, m_creature, pPlayer); + void JustSummoned(Creature* pSummoned) + { + if (pSummoned->GetEntry() == NPC_COILSKAR_ASSASSIN) + pSummoned->AI()->AttackStart(m_creature); } - void Reset() + //this is very unclear, random say without no real relevance to script/event + void DoRandomSay() { - m_creature->setFaction(1726); - Completed = false; + switch(rand()%3) + { + case 0: DoScriptText(SAY_WIL_PROGRESS2, m_creature); break; + case 1: DoScriptText(SAY_WIL_PROGRESS4, m_creature); break; + case 2: DoScriptText(SAY_WIL_PROGRESS5, m_creature); break; + } } - void WaypointReached(uint32 i) + void DoSpawnAssassin() { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); + //unknown where they actually appear + float fX, fY, fZ; + m_creature->GetRandomPoint(m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 15.0f, fX, fY, fZ); - if (!pPlayer) + m_creature->SummonCreature(NPC_COILSKAR_ASSASSIN, fX, fY, fZ, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); + } + + void Aggro(Unit* pWho) + { + //don't always use + if (rand()%5) return; - switch(i) + //only aggro text if not player + if (pWho->GetTypeId() != TYPEID_PLAYER) { - case 0: DoScriptText(SAY_START, m_creature, pPlayer); break; - case 13: DoScriptText(SAY_PROGRESS1, m_creature, pPlayer); - SummonAssassin(); - break; - case 14: SummonAssassin(); break; - case 15: DoScriptText(SAY_PROGRESS3, m_creature, pPlayer); break; - case 19: - switch(rand()%3) - { - case 0: DoScriptText(SAY_PROGRESS2, m_creature, pPlayer); break; - case 1: DoScriptText(SAY_PROGRESS4, m_creature, pPlayer); break; - case 2: DoScriptText(SAY_PROGRESS5, m_creature, pPlayer); break; - } - break; - case 20: SummonAssassin(); break; - case 26: - switch(rand()%3) - { - case 0: DoScriptText(SAY_PROGRESS2, m_creature, pPlayer); break; - case 1: DoScriptText(SAY_PROGRESS4, m_creature, pPlayer); break; - case 2: DoScriptText(SAY_PROGRESS5, m_creature, pPlayer); break; - } - break; - case 27: SummonAssassin(); break; - case 33: - switch(rand()%3) - { - case 0: DoScriptText(SAY_PROGRESS2, m_creature, pPlayer); break; - case 1: DoScriptText(SAY_PROGRESS4, m_creature, pPlayer); break; - case 2: DoScriptText(SAY_PROGRESS5, m_creature, pPlayer); break; - } - break; - case 34: SummonAssassin(); break; - case 37: - switch(rand()%3) - { - case 0: DoScriptText(SAY_PROGRESS2, m_creature, pPlayer); break; - case 1: DoScriptText(SAY_PROGRESS4, m_creature, pPlayer); break; - case 2: DoScriptText(SAY_PROGRESS5, m_creature, pPlayer); break; - } - break; - case 38: SummonAssassin(); break; - case 39: DoScriptText(SAY_PROGRESS6, m_creature, pPlayer); break; - case 43: - switch(rand()%3) - { - case 0: DoScriptText(SAY_PROGRESS2, m_creature, pPlayer); break; - case 1: DoScriptText(SAY_PROGRESS4, m_creature, pPlayer); break; - case 2: DoScriptText(SAY_PROGRESS5, m_creature, pPlayer); break; - } - break; - case 44: SummonAssassin(); break; - case 50: - DoScriptText(SAY_END, m_creature, pPlayer); - CAST_PLR(pPlayer)->GroupEventHappens(QUEST_ESCAPE_FROM_COILSKAR_CISTERN, m_creature); - Completed = true; - break; - } - } - - void SummonAssassin() - { - Player* pPlayer = 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) - { - switch(rand()%2) - { - case 0: DoScriptText(ASSASSIN_SAY_AGGRO1, CoilskarAssassin, pPlayer); break; - case 1: DoScriptText(ASSASSIN_SAY_AGGRO2, CoilskarAssassin, pPlayer); break; - } - CAST_CRE(CoilskarAssassin)->AI()->AttackStart(m_creature); - } - else error_log("TSCR ERROR: Coilskar Assassin couldn't be summmoned"); - } - - void JustDied(Unit* killer) - { - if (PlayerGUID && !Completed) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - CAST_PLR(pPlayer)->FailQuest(QUEST_ESCAPE_FROM_COILSKAR_CISTERN); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } + //appears to be random + switch(rand()%4) + { + case 0: DoScriptText(SAY_WIL_AGGRO1, m_creature, pWho); break; + case 1: DoScriptText(SAY_WIL_AGGRO2, m_creature, pWho); break; + } + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + + if (!m_creature->SelectHostilTarget() || !m_creature->getVictim()) + return; + + //TODO: add more abilities + if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 30) + { + if (m_uiHealingTimer < uiDiff) + { + DoCast(m_creature, SPELL_HEALING_WAVE); + m_uiHealingTimer = 15000; + } + else + m_uiHealingTimer -= uiDiff; + } + } }; -CreatureAI* GetAI_npc_earthmender_wildaAI(Creature* pCreature) +CreatureAI* GetAI_npc_earthmender_wilda(Creature* pCreature) { - npc_earthmender_wildaAI* earthmender_wildaAI = new npc_earthmender_wildaAI(pCreature); - - earthmender_wildaAI->AddWaypoint(0, -2637.466064, 1359.977905, 35.889114, 2000); // SAY_START - earthmender_wildaAI->AddWaypoint(1, -2666.364990, 1348.222656, 34.445557); - earthmender_wildaAI->AddWaypoint(2, -2693.789307, 1336.964966, 34.445557); - earthmender_wildaAI->AddWaypoint(3, -2715.495361, 1328.054443, 34.106014); - earthmender_wildaAI->AddWaypoint(4, -2742.530762, 1314.138550, 33.606144); - earthmender_wildaAI->AddWaypoint(5, -2745.077148, 1311.108765, 33.630898); - earthmender_wildaAI->AddWaypoint(6, -2749.855225, 1302.737915, 33.475632); - earthmender_wildaAI->AddWaypoint(7, -2753.639648, 1294.059448, 33.314930); - earthmender_wildaAI->AddWaypoint(8, -2756.796387, 1285.122192, 33.391262); - earthmender_wildaAI->AddWaypoint(9, -2750.042969, 1273.661987, 33.188259); - earthmender_wildaAI->AddWaypoint(10, -2740.378418, 1258.846680, 33.212521); - earthmender_wildaAI->AddWaypoint(11, -2733.629395, 1248.259766, 33.640598); - earthmender_wildaAI->AddWaypoint(12, -2727.212646, 1238.606445, 33.520847); - earthmender_wildaAI->AddWaypoint(13, -2726.377197, 1237.264526, 33.461823, 4000); // SAY_PROGRESS1 - earthmender_wildaAI->AddWaypoint(14, -2746.383301, 1266.390625, 33.191952, 2000); - earthmender_wildaAI->AddWaypoint(15, -2746.383301, 1266.390625, 33.191952, 4000); // SAY_PROGRESS3 - earthmender_wildaAI->AddWaypoint(16, -2758.927734, 1285.134155, 33.341728); - earthmender_wildaAI->AddWaypoint(17, -2761.845703, 1292.313599, 33.209042); - earthmender_wildaAI->AddWaypoint(18, -2758.871826, 1300.677612, 33.285332); - earthmender_wildaAI->AddWaypoint(19, -2758.871826, 1300.677612, 33.285332); - earthmender_wildaAI->AddWaypoint(20, -2753.928955, 1307.755859, 33.452457); - earthmender_wildaAI->AddWaypoint(20, -2738.612061, 1316.191284, 33.482975); - earthmender_wildaAI->AddWaypoint(21, -2727.897461, 1320.013916, 33.381111); - earthmender_wildaAI->AddWaypoint(22, -2709.458740, 1315.739990, 33.301838); - earthmender_wildaAI->AddWaypoint(23, -2704.658936, 1301.620361, 32.463303); - earthmender_wildaAI->AddWaypoint(24, -2704.120117, 1298.922607, 32.768162); - earthmender_wildaAI->AddWaypoint(25, -2691.798340, 1292.846436, 33.852642); - earthmender_wildaAI->AddWaypoint(26, -2682.879639, 1288.853882, 32.995399); - earthmender_wildaAI->AddWaypoint(27, -2661.869141, 1279.682495, 26.686783); - earthmender_wildaAI->AddWaypoint(28, -2648.943604, 1270.272827, 24.147522); - earthmender_wildaAI->AddWaypoint(29, -2642.506836, 1262.938721, 23.512444); - earthmender_wildaAI->AddWaypoint(20, -2636.984863, 1252.429077, 20.418257); - earthmender_wildaAI->AddWaypoint(31, -2648.113037, 1224.984863, 8.691818); - earthmender_wildaAI->AddWaypoint(32, -2658.393311, 1200.136719, 5.492243); - earthmender_wildaAI->AddWaypoint(33, -2668.504395, 1190.450562, 3.127407); - earthmender_wildaAI->AddWaypoint(34, -2685.930420, 1174.360840, 5.163924); - earthmender_wildaAI->AddWaypoint(35, -2701.613770, 1160.026367, 5.611311); - earthmender_wildaAI->AddWaypoint(36, -2714.659668, 1149.980347, 4.342373); - earthmender_wildaAI->AddWaypoint(37, -2721.443359, 1145.002808, 1.913474); - earthmender_wildaAI->AddWaypoint(38, -2733.962158, 1143.436279, 2.620415); - earthmender_wildaAI->AddWaypoint(39, -2757.876709, 1146.937500, 6.184002, 2000); // SAY_PROGRESS6 - earthmender_wildaAI->AddWaypoint(40, -2772.300537, 1166.052734, 6.331811); - earthmender_wildaAI->AddWaypoint(41, -2790.265381, 1189.941650, 5.207958); - earthmender_wildaAI->AddWaypoint(42, -2805.448975, 1208.663940, 5.557623); - earthmender_wildaAI->AddWaypoint(43, -2820.617676, 1225.870239, 6.266103); - earthmender_wildaAI->AddWaypoint(44, -2831.926758, 1237.725830, 5.808506); - earthmender_wildaAI->AddWaypoint(45, -2842.578369, 1252.869629, 6.807481); - earthmender_wildaAI->AddWaypoint(46, -2846.344971, 1258.727295, 7.386168); - earthmender_wildaAI->AddWaypoint(47, -2847.556396, 1266.771729, 8.208790); - earthmender_wildaAI->AddWaypoint(48, -2841.654541, 1285.809204, 7.933223); - earthmender_wildaAI->AddWaypoint(49, -2841.754883, 1289.832520, 6.990304); - earthmender_wildaAI->AddWaypoint(50, -2871.398438, 1302.348145, 6.807335, 8000); // SAY_END - - return earthmender_wildaAI; + npc_earthmender_wildaAI* pTempAI = new npc_earthmender_wildaAI(pCreature); + + pTempAI->FillPointMovementListForCreature(); + + return (CreatureAI*)pTempAI; } -bool QuestAccept_npc_earthmender_wilda(Player* pPlayer, Creature* creature, Quest const* quest) +bool QuestAccept_npc_earthmender_wilda(Player* pPlayer, Creature* pCreature, const Quest* pQuest) { - if (quest->GetQuestId() == QUEST_ESCAPE_FROM_COILSKAR_CISTERN) + if (pQuest->GetQuestId() == QUEST_ESCAPE_COILSCAR) { - creature->setFaction(113); - CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, pPlayer->GetGUID()); + DoScriptText(SAY_WIL_START, pCreature, pPlayer); + pCreature->setFaction(FACTION_EARTHEN); + + if (npc_earthmender_wildaAI* pEscortAI = CAST_AI(npc_earthmender_wildaAI, pCreature->AI())) + pEscortAI->Start(false, false, pPlayer->GetGUID(), pQuest); } return true; } 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 aee7c19e8e7..7a9ee81af08 100644 --- a/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp +++ b/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp @@ -159,11 +159,6 @@ struct TRINITY_DLL_DECL npc_deathstalker_erlandAI : public npc_escortAI case 1: DoScriptText(SAY_AGGRO_2, m_creature, who);break; } } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } }; bool QuestAccept_npc_deathstalker_erland(Player* pPlayer, Creature* pCreature, Quest const* quest) 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 3cb0ed0abac..92cf6598531 100644 --- a/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp +++ b/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp @@ -128,23 +128,6 @@ struct TRINITY_DLL_DECL npc_kaya_flathoofAI : public npc_escortAI } void Reset(){} - - void EnterCombat(Unit* who){} - - void JustDied(Unit* killer) - { - if (PlayerGUID) - { - Player* pPlayer = Unit::GetPlayer(PlayerGUID); - if (pPlayer) - CAST_PLR(pPlayer)->FailQuest(QUEST_PROTECT_KAYA); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } }; bool QuestAccept_npc_kaya_flathoof(Player* pPlayer, Creature* pCreature, Quest const* quest) diff --git a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp index 6b19c687116..a44aa564c2e 100644 --- a/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp +++ b/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp @@ -407,24 +407,7 @@ struct TRINITY_DLL_DECL npc_OOX17AI : public npc_escortAI { summoned->AI()->AttackStart(m_creature); } - - void JustDied(Unit* killer) - { - if (PlayerGUID) - { - if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) - CAST_PLR(pPlayer)->FailQuest(Q_OOX17); - } - } - - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - if (!UpdateVictim()) - return; - } - }; +}; bool QuestAccept_npc_OOX17(Player* pPlayer, Creature* pCreature, Quest const* quest) { 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 7ce66b28430..c0b4f806916 100644 --- a/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp +++ b/src/bindings/scripts/scripts/zone/thousand_needles/thousand_needles.cpp @@ -22,6 +22,7 @@ SDCategory: Thousand Needles EndScriptData */ /* ContentData +npc_lakota_windsong npc_swiftmountain npc_plucky EndContentData */ @@ -96,15 +97,6 @@ struct TRINITY_DLL_DECL npc_lakota_windsongAI : public npc_escortAI m_afBanditLoc[i+uiAmbushId][0], m_afBanditLoc[i+uiAmbushId][1], m_afBanditLoc[i+uiAmbushId][2], 0.0f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000); } - - void JustDied(Unit* pKiller) - { - if (Player* pPlayer = (Player*)Unit::GetUnit(*m_creature, PlayerGUID)) - { - if (pPlayer->GetQuestStatus(QUEST_FREE_AT_LAST) == QUEST_STATUS_INCOMPLETE) - pPlayer->FailQuest(QUEST_FREE_AT_LAST); - } - } }; CreatureAI* GetAI_npc_lakota_windsong(Creature* pCreature) @@ -182,15 +174,6 @@ struct TRINITY_DLL_DECL npc_paoka_swiftmountainAI : public npc_escortAI m_afWyvernLoc[i][0], m_afWyvernLoc[i][1], m_afWyvernLoc[i][2], 0.0f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000); } - - void JustDied(Unit* pKiller) - { - if (Player* pPlayer = (Player*)Unit::GetUnit(*m_creature, PlayerGUID)) - { - if (pPlayer->GetQuestStatus(QUEST_HOMEWARD) == QUEST_STATUS_INCOMPLETE) - pPlayer->FailQuest(QUEST_HOMEWARD); - } - } }; CreatureAI* GetAI_npc_paoka_swiftmountain(Creature* pCreature) diff --git a/src/bindings/scripts/scripts/zone/westfall/westfall.cpp b/src/bindings/scripts/scripts/zone/westfall/westfall.cpp index f2329271df0..50a0a8564e0 100644 --- a/src/bindings/scripts/scripts/zone/westfall/westfall.cpp +++ b/src/bindings/scripts/scripts/zone/westfall/westfall.cpp @@ -144,15 +144,6 @@ struct TRINITY_DLL_DECL npc_daphne_stilwellAI : public npc_escortAI pSummoned->AI()->AttackStart(m_creature); } - void JustDied(Unit* killer) - { - if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) - { - if (pPlayer->GetQuestStatus(QUEST_TOME_VALOR) == QUEST_STATUS_INCOMPLETE) - pPlayer->FailQuest(QUEST_TOME_VALOR); - } - } - void Update(const uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -241,22 +232,7 @@ struct TRINITY_DLL_DECL npc_defias_traitorAI : public npc_escortAI } } - void Reset() - {} - - void JustDied(Unit* killer) - { - if (PlayerGUID) - { - if (Player* pPlayer = Unit::GetPlayer(PlayerGUID)) - pPlayer->FailQuest(QUEST_DEFIAS_BROTHERHOOD); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } + void Reset() {} }; bool QuestAccept_npc_defias_traitor(Player* pPlayer, Creature* pCreature, Quest const* quest) diff --git a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp index ccc19148674..c297819764f 100644 --- a/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp +++ b/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp @@ -282,8 +282,6 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI void Reset() { } - void EnterCombat(Unit* who){} - void WaypointReached(uint32 i) { Player* pUnit = Unit::GetPlayer(PlayerGUID); @@ -317,20 +315,6 @@ struct TRINITY_DLL_DECL npc_kayra_longmaneAI : public npc_escortAI break; } } - - void JustDied(Unit* killer) - { - if (Player* pUnit = Unit::GetPlayer(PlayerGUID)) - { - if (pUnit->GetQuestStatus(QUEST_ESCAPE_FROM) == QUEST_STATUS_INCOMPLETE) - pUnit->FailQuest(QUEST_ESCAPE_FROM); - } - } - - void UpdateAI(const uint32 diff) - { - npc_escortAI::UpdateAI(diff); - } }; bool QuestAccept_npc_kayra_longmane(Player* pPlayer, Creature* pCreature, Quest const* pQuest) |