Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
boss_marwyn.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#include "ScriptMgr.h"
7#include "ScriptedCreature.h"
9
17
25
34
36{
37public:
38 boss_marwyn() : CreatureScript("boss_marwyn") { }
39
41 {
42 return new boss_marwynAI(creature);
43 }
44
45 struct boss_marwynAI : public boss_horAI
46 {
47 boss_marwynAI(Creature* creature) : boss_horAI(creature) { }
48
50 {
52
53 if (instance)
55 }
56
57 void EnterCombat(Unit* /*who*/) OVERRIDE
58 {
60 if (instance)
62
63 events.ScheduleEvent(EVENT_OBLITERATE, 30000);
64 events.ScheduleEvent(EVENT_WELL_OF_CORRUPTION, 13000);
65 events.ScheduleEvent(EVENT_CORRUPTED_FLESH, 20000);
66 events.ScheduleEvent(EVENT_SHARED_SUFFERING, 20000);
67 }
68
69 void JustDied(Unit* /*killer*/) OVERRIDE
70 {
72
73 if (instance)
74 instance->SetBossState(DATA_MARWYN_EVENT, DONE);
75 }
76
77 void KilledUnit(Unit* /*victim*/) OVERRIDE
78 {
80 }
81
83 {
84 // Return since we have no target
85 if (!UpdateVictim())
86 return;
87
88 events.Update(diff);
89
90 if (me->HasUnitState(UNIT_STATE_CASTING))
91 return;
92
93 switch (events.ExecuteEvent())
94 {
97 events.ScheduleEvent(EVENT_OBLITERATE, 30000);
98 break;
101 events.ScheduleEvent(EVENT_WELL_OF_CORRUPTION, 13000);
102 break;
106 events.ScheduleEvent(EVENT_CORRUPTED_FLESH, 20000);
107 break;
111 events.ScheduleEvent(EVENT_SHARED_SUFFERING, 20000);
112 break;
113 }
114
116 }
117 };
118};
119
121{
122 new boss_marwyn();
123}
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ IN_PROGRESS
@ DONE
@ NOT_STARTED
@ UNIT_STATE_CASTING
Definition Unit.h:527
@ SELECT_TARGET_RANDOM
Definition UnitAI.h:23
@ SAY_SLAY
@ SPELL_OBLITERATE
#define SAY_DEATH
#define SAY_AGGRO
@ EVENT_NONE
@ SPELL_SHARED_SUFFERING
@ SPELL_WELL_OF_CORRUPTION
@ SPELL_CORRUPTED_FLESH
@ SPELL_OBLITERATE
void AddSC_boss_marwyn()
@ SAY_DEATH
@ SAY_AGGRO
@ SAY_SLAY
@ SAY_CORRUPTED_FLESH
@ EVENT_WELL_OF_CORRUPTION
@ EVENT_CORRUPTED_FLESH
@ EVENT_OBLITERATE
@ EVENT_SHARED_SUFFERING
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
bool UpdateVictim()
CreatureScript(const char *name)
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:28
void DoCast(uint32 spellId)
Definition UnitAI.cpp:110
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
Definition UnitAI.cpp:66
Definition Unit.h:1367
CreatureAI * GetAI(Creature *creature) const OVERRIDE
@ DATA_MARWYN_EVENT
Creature * me
InstanceScript * instance
boss_horAI(Creature *creature)
void EnterCombat(Unit *) OVERRIDE
void KilledUnit(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
boss_marwynAI(Creature *creature)
void JustDied(Unit *) OVERRIDE