Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
zone_stranglethorn_vale.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/* ScriptData
7SDName: Stranglethorn_Vale
8SD%Complete: 100
9SDComment: Quest support: 592
10SDCategory: Stranglethorn Vale
11EndScriptData */
12
13/* ContentData
14npc_yenniku
15EndContentData */
16
17#include "ScriptMgr.h"
18#include "ScriptedCreature.h"
19#include "Player.h"
20#include "SpellInfo.h"
21
22/*######
23## npc_yenniku
24######*/
25
27{
28public:
29 npc_yenniku() : CreatureScript("npc_yenniku") { }
30
32 {
33 return new npc_yennikuAI(creature);
34 }
35
36 struct npc_yennikuAI : public ScriptedAI
37 {
38 npc_yennikuAI(Creature* creature) : ScriptedAI(creature)
39 {
40 bReset = false;
41 }
42
44 bool bReset;
45
47 {
48 Reset_Timer = 0;
50 }
51
52 void SpellHit(Unit* caster, const SpellInfo* spell) OVERRIDE
53 {
54 if (bReset || spell->Id != 3607)
55 return;
56
57 if (Player* player = caster->ToPlayer())
58 {
59 if (player->GetQuestStatus(592) == QUEST_STATUS_INCOMPLETE) //Yenniku's Release
60 {
62 me->CombatStop(); //stop combat
63 me->DeleteThreatList(); //unsure of this
64 me->setFaction(83); //horde generic
65
66 bReset = true;
67 Reset_Timer = 60000;
68 }
69 }
70 }
71
72 void EnterCombat(Unit* /*who*/) OVERRIDE { }
73
75 {
76 if (bReset)
77 {
78 if (Reset_Timer <= diff)
79 {
81 bReset = false;
82 me->setFaction(28); //troll, bloodscalp
83 return;
84 }
85
86 Reset_Timer -= diff;
87
88 if (me->IsInCombat() && me->GetVictim())
89 {
90 if (Player* player = me->GetVictim()->ToPlayer())
91 {
92 if (player->GetTeam() == HORDE)
93 {
94 me->CombatStop();
95 me->DeleteThreatList();
96 }
97 }
98 }
99 }
100
101 //Return since we have no target
102 if (!UpdateVictim())
103 return;
104
106 }
107 };
108};
109
110/*######
111##
112######*/
113
115{
116 new npc_yenniku();
117}
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:89
@ EMOTE_STATE_STUN
@ EMOTE_STATE_NONE
@ HORDE
@ UNIT_FIELD_NPC_EMOTESTATE
bool UpdateVictim()
virtual void EnterEvadeMode()
CreatureScript(const char *name)
Player * ToPlayer()
Definition Object.h:204
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:28
Definition Unit.h:1367
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Creature * me
ScriptedAI(Creature *creature)
void SpellHit(Unit *caster, const SpellInfo *spell) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void AddSC_stranglethorn_vale()