Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*#####
- ## npc_fhwoor
- #####*/
- enum
- {
- SAY_ESCORT_START = -1000995,
- SAY_PREPARE = -1000996,
- SAY_CAMP_ENTER = -1000997,
- SAY_AMBUSH = -1000998,
- SAY_AMBUSH_CLEARED = -1000999,
- SAY_ESCORT_COMPLETE = -1001000,
- SPELL_STOMP = 31277,
- SPELL_THUNDERSHOCK = 31964,
- NPC_ENCHANTRESS = 18088,
- NPC_SLAVEDRIVER = 18089,
- NPC_SSSLITH = 18154,
- GO_ARK_OF_SSSLITH = 182082,
- QUEST_ID_FHWOOR_SMASH = 9729,
- };
- struct MANGOS_DLL_DECL npc_fhwoorAI : public npc_escortAI
- {
- npc_fhwoorAI(Creature* pCreature) : npc_escortAI(pCreature) { Reset(); }
- uint32 m_uiStompTimer;
- uint32 m_uiShockTimer;
- bool m_bIsAmbush;
- void Reset() override
- {
- m_uiStompTimer = urand(3000, 7000);
- m_uiShockTimer = urand(7000, 11000);
- m_bIsAmbush = false;
- }
- void ReceiveAIEvent(AIEventType eventType, Creature* /*pSender*/, Unit* pInvoker, uint32 uiMiscValue) override
- {
- if (eventType == AI_EVENT_START_ESCORT && pInvoker->GetTypeId() == TYPEID_PLAYER)
- {
- DoScriptText(SAY_ESCORT_START, m_creature, pInvoker);
- m_creature->SetFactionTemporary(FACTION_ESCORT_N_NEUTRAL_ACTIVE, TEMPFACTION_RESTORE_RESPAWN);
- Start(true, (Player*)pInvoker, GetQuestTemplateStore(uiMiscValue), true);
- }
- }
- void JustSummoned(Creature* pSummoned) override
- {
- // move summoned towards the creature
- if (m_bIsAmbush)
- {
- float fX, fY, fZ;
- m_creature->GetContactPoint(pSummoned, fX, fY, fZ);
- pSummoned->GetMotionMaster()->MovePoint(0, fX, fY, fZ);
- }
- }
- void SummonedCreatureJustDied(Creature* pSummoned) override
- {
- // resume escort
- if (pSummoned->GetEntry() == NPC_SSSLITH)
- SetEscortPaused(false);
- }
- void WaypointReached(uint32 uiPointId) override
- {
- switch (uiPointId)
- {
- case 24:
- DoScriptText(SAY_PREPARE, m_creature);
- break;
- case 25:
- DoScriptText(SAY_CAMP_ENTER, m_creature);
- SetRun(false);
- break;
- case 46:
- // despawn the Ark
- if (GameObject* pArk = GetClosestGameObjectWithEntry(m_creature, GO_ARK_OF_SSSLITH, 10.0f))
- pArk->SetLootState(GO_JUST_DEACTIVATED);
- // spawn npcs
- m_creature->SummonCreature(NPC_ENCHANTRESS, 526.12f, 8136.96f, 21.64f, 0.57f, TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN, 60000);
- m_creature->SummonCreature(NPC_SLAVEDRIVER, 524.09f, 8138.67f, 21.49f, 0.58f, TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN, 60000);
- m_creature->SummonCreature(NPC_SLAVEDRIVER, 526.93f, 8133.88f, 21.56f, 0.58f, TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN, 60000);
- break;
- case 70:
- DoScriptText(SAY_AMBUSH, m_creature);
- // spawn npcs
- m_bIsAmbush = true;
- m_creature->SummonCreature(NPC_SSSLITH, 162.91f, 8192.08f, 22.55f, 5.98f, TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN, 60000);
- m_creature->SummonCreature(NPC_ENCHANTRESS, 162.34f, 8193.99f, 22.85f, 5.98f, TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN, 60000);
- m_creature->SummonCreature(NPC_SLAVEDRIVER, 163.07f, 8187.04f, 22.71f, 0.10f, TEMPSUMMON_TIMED_OOC_OR_DEAD_DESPAWN, 60000);
- SetEscortPaused(true);
- break;
- case 71:
- DoScriptText(SAY_AMBUSH_CLEARED, m_creature);
- SetRun();
- break;
- case 92:
- SetRun(false);
- break;
- case 93:
- DoScriptText(SAY_ESCORT_COMPLETE, m_creature);
- if (Player* pPlayer = GetPlayerForEscort())
- pPlayer->GroupEventHappens(QUEST_ID_FHWOOR_SMASH, m_creature);
- break;
- }
- }
- void UpdateEscortAI(const uint32 uiDiff) override
- {
- if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
- return;
- if (m_uiStompTimer < uiDiff)
- {
- if (DoCastSpellIfCan(m_creature, SPELL_STOMP) == CAST_OK)
- m_uiStompTimer = urand(9000, 15000);
- }
- else
- m_uiStompTimer -= uiDiff;
- if (m_uiShockTimer < uiDiff)
- {
- if (DoCastSpellIfCan(m_creature, SPELL_THUNDERSHOCK) == CAST_OK)
- m_uiShockTimer = urand(15000, 20000);
- }
- else
- m_uiShockTimer -= uiDiff;
- DoMeleeAttackIfReady();
- }
- };
- CreatureAI* GetAI_npc_fhwoor(Creature* pCreature)
- {
- return new npc_fhwoorAI(pCreature);
- }
- bool QuestAccept_npc_fhwoor(Player* pPlayer, Creature* pCreature, const Quest* pQuest)
- {
- if (pQuest->GetQuestId() == QUEST_ID_FHWOOR_SMASH)
- {
- pCreature->AI()->SendAIEvent(AI_EVENT_START_ESCORT, pPlayer, pCreature, pQuest->GetQuestId());
- return true;
- }
- return false;
- }
- INSERT INTO `script_waypoint` VALUES (17877, 0, 231.403, 8479.94, 17.928, 3000, '');
- INSERT INTO `script_waypoint` VALUES (17877, 1, 214.645, 8469.64, 23.121, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 2, 208.538, 8463.48, 24.738, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 3, 196.524, 8446.08, 24.814, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 4, 188.186, 8431.67, 22.625, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 5, 181.196, 8420.15, 23.73, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 6, 171.919, 8406.29, 21.844, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 7, 166.613, 8396.48, 23.585, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 8, 167.237, 8386.69, 21.546, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 9, 169.401, 8372.67, 19.599, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 10, 174.148, 8342.33, 20.409, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 11, 173.195, 8324.18, 21.126, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 12, 172.415, 8310.29, 21.702, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 13, 173.233, 8298.75, 19.564, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 14, 173.984, 8287.92, 18.839, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 15, 189.984, 8266.26, 18.5, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 16, 204.057, 8256.02, 19.701, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 17, 212.95, 8248.74, 21.583, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 18, 223.152, 8240.16, 20.001, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 19, 230.73, 8232.99, 18.99, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 20, 238.261, 8223.8, 20.72, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 21, 247.651, 8214.21, 19.146, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 22, 259.231, 8207.8, 19.278, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 23, 272.36, 8204.75, 19.98, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 24, 282.211, 8202.09, 22.09, 20000, 'SAY_PREPARE');
- INSERT INTO `script_waypoint` VALUES (17877, 25, 282.211, 8202.09, 22.09, 0, 'SAY_CAMP_ENTER');
- INSERT INTO `script_waypoint` VALUES (17877, 26, 296.006, 8191.64, 21.68, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 27, 304.472, 8188.05, 20.707, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 28, 317.574, 8182.04, 18.296, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 29, 340.046, 8178.78, 17.937, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 30, 353.799, 8181.22, 18.557, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 31, 368.231, 8186.32, 22.45, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 32, 375.737, 8187.03, 23.916, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 33, 390.067, 8186.64, 21.19, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 34, 398.699, 8181.82, 18.648, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 35, 412.325, 8172.61, 17.927, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 36, 424.541, 8161.96, 19.575, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 37, 436.9, 8157.41, 22.115, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 38, 444.548, 8155.41, 23.553, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 39, 457.201, 8154.23, 23.429, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 40, 470.989, 8154.14, 21.65, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 41, 483.435, 8154.15, 20.706, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 42, 507.558, 8157.52, 21.729, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 43, 528.036, 8162.03, 22.795, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 44, 542.402, 8161.1, 22.914, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 45, 557.286, 8160.27, 23.708, 13000, '');
- INSERT INTO `script_waypoint` VALUES (17877, 46, 557.286, 8160.27, 23.708, 0, 'take the Ark');
- INSERT INTO `script_waypoint` VALUES (17877, 47, 539.767, 8144.84, 22.217, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 48, 531.296, 8139.48, 22.146, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 49, 509.056, 8139.26, 20.705, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 50, 499.975, 8136.23, 20.408, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 51, 485.511, 8129.39, 22.01, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 52, 474.371, 8128.53, 22.657, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 53, 460.708, 8130.12, 20.946, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 54, 449.248, 8129.27, 21.033, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 55, 433.67, 8125.06, 18.44, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 56, 412.822, 8121.58, 17.603, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 57, 391.15, 8117.81, 17.736, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 58, 379.024, 8114.19, 17.889, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 59, 365.11, 8106.99, 18.22, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 60, 352.531, 8108.94, 17.932, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 61, 340.894, 8120.64, 17.374, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 62, 328.48, 8134.93, 18.112, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 63, 317.573, 8143.25, 20.604, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 64, 311.146, 8146.8, 21.097, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 65, 299.359, 8152.58, 18.676, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 66, 276.115, 8160.44, 17.735, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 67, 262.704, 8170.51, 17.478, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 68, 243.755, 8177.75, 17.744, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 69, 233.496, 8178.43, 17.528, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 70, 219.874, 8182.55, 19.637, 0, 'SAY_AMBUSH - escort paused');
- INSERT INTO `script_waypoint` VALUES (17877, 71, 219.874, 8182.55, 19.637, 20000, 'SAY_AMBUSH_CLEARED');
- INSERT INTO `script_waypoint` VALUES (17877, 72, 210.978, 8193.98, 20.777, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 73, 203.699, 8213.04, 22.768, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 74, 199.246, 8225.54, 24.847, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 75, 195.064, 8239.91, 22.64, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 76, 193.198, 8253.62, 20.083, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 77, 189.151, 8264.83, 18.714, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 78, 178.814, 8281.04, 19.07, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 79, 173.952, 8293.24, 18.533, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 80, 174.399, 8305.46, 21.006, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 81, 175.124, 8319.51, 21.626, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 82, 175.69, 8339.65, 20.375, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 83, 172.754, 8362.67, 19.181, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 84, 176.465, 8379.8, 18.445, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 85, 186.433, 8393.13, 18.933, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 86, 199.438, 8407.83, 18.763, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 87, 211.874, 8422.38, 18.785, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 88, 219.9, 8436.26, 21.927, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 89, 225.062, 8450.57, 22.832, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 90, 226.942, 8464.41, 19.822, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 91, 231.403, 8479.94, 17.928, 0, '');
- INSERT INTO `script_waypoint` VALUES (17877, 92, 247.625, 8483.8, 22.464, 13000, '');
- INSERT INTO `script_waypoint` VALUES (17877, 93, 231.403, 8479.94, 17.928, 10000, 'SAY_ESCORT_COMPLETE');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement