diff options
author | megamage <none@none> | 2009-08-16 23:57:23 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-16 23:57:23 -0500 |
commit | c5287ba58e0e95dd3b090e1b87d1559a8e05230e (patch) | |
tree | 2058cf9f0c5b8ea368226d91b777a110bc528cc0 /src | |
parent | 09682ed9057e50a79ea70a150bed50e2cfd22be5 (diff) |
*Add script of quest "Ambush At The Overlook". Original patch by ckegg.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/eastern_kingdoms/scarlet_enclave/chapter2.cpp | 125 |
1 files changed, 44 insertions, 81 deletions
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_enclave/chapter2.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_enclave/chapter2.cpp index 7e02091d11d..65aff3f0fda 100644 --- a/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_enclave/chapter2.cpp +++ b/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_enclave/chapter2.cpp @@ -331,7 +331,7 @@ bool QuestAccept_npc_koltira_deathweaver(Player* pPlayer, Creature* pCreature, c } //Scarlet courier -enum scarletcourier +enum ScarletCourierEnum { SAY_TREE1 = -1609531, SAY_TREE2 = -1609532, @@ -342,104 +342,69 @@ enum scarletcourier struct TRINITY_DLL_DECL mob_scarlet_courierAI : public ScriptedAI { - mob_scarlet_courierAI(Creature *pCreature) : ScriptedAI(pCreature) - { - Reset(); - } + mob_scarlet_courierAI(Creature *pCreature) : ScriptedAI(pCreature) {} uint32 uiStage; uint32 uiStage_timer; - uint64 pPlayer; - void Reset() { - uiStage = 0; + void Reset() + { + me->Mount(14338); // not sure about this id + uiStage = 1; uiStage_timer = 3000; - pPlayer = 0; + } + + void EnterCombat(Unit *who) + { + DoScriptText(SAY_TREE2, me); + me->Unmount(); + uiStage = 0; } void MovementInform(uint32 type, uint32 id) { if(type != POINT_MOTION_TYPE) - return; + return; - switch(id) - { - case 0: - uiStage = 1; - break; - case 1: - uiStage = 2; - break; - } + if(id == 1) + uiStage = 2; } void UpdateAI(const uint32 diff) { - if (uiStage_timer < diff) + if(uiStage && !me->isInCombat()) { - switch(uiStage) + if (uiStage_timer < diff) { - case 1: + switch(uiStage) { - me->GetMotionMaster()->Clear(false); - me->GetMotionMaster()->MoveIdle(); + case 1: me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); - - if (GameObject* treeGO = me->FindNearestGameObject(GO_INCONSPICUOUS_TREE, 40.0f)) + if (GameObject* tree = me->FindNearestGameObject(GO_INCONSPICUOUS_TREE, 40.0f)) { DoScriptText(SAY_TREE1, me); - me->GetMotionMaster()->MovePoint(1, treeGO->GetPositionX(), treeGO->GetPositionY(), treeGO->GetPositionZ()); + float x, y, z; + tree->GetContactPoint(me, x, y, z); + me->GetMotionMaster()->MovePoint(1, x, y, z); } - uiStage = 0; - } break; + break; case 2: - { - me->GetMotionMaster()->Clear(false); - me->GetMotionMaster()->MoveIdle(); - DoScriptText(SAY_TREE2, me); - me->Unmount(); - //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - uiStage = 0; - } break; - } - uiStage_timer = 3000; - }else uiStage_timer -= diff; - - DoMeleeAttackIfReady(); - } -}; -struct TRINITY_DLL_DECL mob_scarlet_courier_controllerAI : public ScriptedAI -{ - mob_scarlet_courier_controllerAI(Creature *pCreature) : ScriptedAI(pCreature) - { - Reset(); - } - - bool bAmbush_overlook; + if (GameObject* tree = me->FindNearestGameObject(GO_INCONSPICUOUS_TREE, 40.0f)) + if(Unit *unit = tree->GetOwner()) + AttackStart(unit); + break; + } + uiStage_timer = 3000; + uiStage = 0; + }else uiStage_timer -= diff; + } - void Reset() { - bAmbush_overlook = false; - } + if(!UpdateVictim()) + return; - void UpdateAI(const uint32 diff) - { - GameObject* treeGO = me->FindNearestGameObject(GO_INCONSPICUOUS_TREE, 40.0f); - if(treeGO && bAmbush_overlook == false) - { - Unit* pCourier = me->SummonCreature(NPC_SCARLET_COURIER, 1461.65, -6010.34, 116.369, 0, TEMPSUMMON_TIMED_DESPAWN, 180000); - pCourier->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); - pCourier->Mount(14338); // not sure about this id - pCourier->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()); - bAmbush_overlook = true; - } - if(!treeGO && bAmbush_overlook == true) - bAmbush_overlook = false; + DoMeleeAttackIfReady(); } }; -CreatureAI* GetAI_mob_scarlet_courier_controller(Creature* pCreature) -{ - return new mob_scarlet_courier_controllerAI (pCreature); -} CreatureAI* GetAI_mob_scarlet_courier(Creature* pCreature) { @@ -448,7 +413,6 @@ CreatureAI* GetAI_mob_scarlet_courier(Creature* pCreature) //Koltira & Valroth- Breakout - enum valroth { SAY_VALROTH1 = -1609581, @@ -2176,11 +2140,18 @@ void AddSC_the_scarlet_enclave_c2() { Script *newscript; + // How to win friends and influence enemies newscript = new Script; newscript->Name="npc_crusade_persuaded"; newscript->GetAI = &GetAI_npc_crusade_persuaded; newscript->RegisterSelf(); + // Ambush At The Overlook + newscript = new Script; + newscript->Name="mob_scarlet_courier"; + newscript->GetAI = &GetAI_mob_scarlet_courier; + newscript->RegisterSelf(); + // 12727 Bloody Breakout newscript = new Script; newscript->Name = "npc_koltira_deathweaver"; @@ -2188,15 +2159,7 @@ void AddSC_the_scarlet_enclave_c2() newscript->pQuestAccept = &QuestAccept_npc_koltira_deathweaver; newscript->RegisterSelf(); - newscript = new Script; - newscript->Name="mob_scarlet_courier_controller"; - newscript->GetAI = &GetAI_mob_scarlet_courier_controller; - newscript->RegisterSelf(); - newscript = new Script; - newscript->Name="mob_scarlet_courier"; - newscript->GetAI = &GetAI_mob_scarlet_courier; - newscript->RegisterSelf(); newscript = new Script; newscript->Name="npc_koltira_deathweaver"; |