Code :
#include “ScriptPCH.h”
enum Spells
{
// phase 1
SPELL_FEL_FLAMES = 36248,
SPELL_FEL_FLAMESTRIKE = 35895,
SPELL_FEL_GEYSER = 40593,
// phase 2
SPELL_ATTRACT_MAGIC = 32265,
SPELL_CONSTRICTIVE_CHAINS = 52696,
SPELL_ACCELERATE = 52635,
// berserk
SPELL_BERSERKER = 27680
};
enum Events
{
// phase 1
EVENT_FEL_FLAMES = 1,
EVENT_FEL_FLAMESTRIKE = 2,
EVENT_FEL_GEYSER = 3,
EVENT_SET_PHASE_TWO = 4,
// phase 2
EVENT_ATTRACT_MAGIC = 5,
EVENT_CONSTRICTIVE_CHAINS = 6,
EVENT_ACCELERATE = 7,
// berserker
EVENT_BERSERKER = 8
};
enum Actions
{
ACTION_SET_PHASE_TWO = 1
};
enum Phases
{
PHASE_ONE = 1,
PHASE_TWO = 2
};
#define SAY_ON_COMBAT_ENTER “I sentence you to death!”
#define SAY_ON_PHASE_TWO “Have you not had enough yet? Fine!”
#define SAY_ON_BERSERKER “Playtime’s up!”
#define SAY_ON_COMBAT_LEAVE “I pity you…”
class script_name : public CreatureScript
{
public:
script_name() : CreatureScript(“script_name”){ }
struct script_nameAI : public CreatureAI
{
script_nameAI(Creature* creature) : CreatureAI(creature){ }
void Reset()
{
events.Reset();
events.SetPhase(PHASE_ONE);
}
void EnterEvadeMode()
{
me->MonsterYell(SAY_ON_COMBAT_LEAVE, LANG_UNIVERSAL, me->GetGUID());
}
void EnterCombat(Unit* victim)
{
events.ScheduleEvent(EVENT_FEL_FLAMES, 10000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_FEL_FLAMESTRIKE, 15000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_FEL_GEYSER, 8000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_SET_PHASE_TWO, 60000, 0, PHASE_ONE);
events.ScheduleEvent(EVENT_BERSERKER, 300000);
me->MonsterYell(SAY_ON_COMBAT_ENTER, LANG_UNIVERSAL, me->GetGUID());
}
void DoAction(int32 action)
{
switch (action)
{
case ACTION_SET_PHASE_TWO:
events.SetPhase(PHASE_TWO);
events.ScheduleEvent(EVENT_ATTRACT_MAGIC, 15000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_CONSTRICTIVE_CHAINS, 7000, 0, PHASE_TWO);
events.ScheduleEvent(EVENT_ACCELERATE, 5000, 0, PHASE_TWO);
break;
}
}
void UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
events.Update(diff);
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
// phase 1
case EVENT_FEL_FLAMES:
DoCast(me->getVictim(), SPELL_FEL_FLAMES);
events.ScheduleEvent(EVENT_FEL_FLAMES, 10000, 0, PHASE_ONE);
break;
case EVENT_FEL_FLAMESTRIKE:
if (Unit * target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true))
{
DoCast(target, SPELL_FEL_FLAMESTRIKE);
}
events.ScheduleEvent(EVENT_FEL_FLAMESTRIKE, 15000, 0, PHASE_ONE);
break;
case EVENT_FEL_GEYSER:
if (Unit * target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true))
{
DoCast(target, SPELL_FEL_GEYSER);
}
events.ScheduleEvent(EVENT_FEL_GEYSER, 8000, 0, PHASE_ONE);
break;
case EVENT_SET_PHASE_TWO:
me->MonsterYell(SAY_ON_PHASE_TWO, LANG_UNIVERSAL, me->GetGUID());
DoAction(ACTION_SET_PHASE_TWO);
break;
// phase 2
case EVENT_ATTRACT_MAGIC:
DoCast(me, SPELL_ATTRACT_MAGIC);
events.ScheduleEvent(EVENT_ATTRACT_MAGIC, 15000, 0, PHASE_TWO);
break;
case EVENT_CONSTRICTIVE_CHAINS:
DoCast(me->getVictim(), SPELL_CONSTRICTIVE_CHAINS);
events.ScheduleEvent(EVENT_CONSTRICTIVE_CHAINS, 7000, 0, PHASE_TWO);
break;
case EVENT_ACCELERATE:
DoCast(me, SPELL_ACCELERATE);
events.ScheduleEvent(EVENT_ACCELERATE, 5000, 0, PHASE_TWO);
break;
// berserker
case EVENT_BERSERKER:
DoCast(me, SPELL_BERSERKER);
me->MonsterYell(SAY_ON_BERSERKER, LANG_UNIVERSAL, me->GetGUID());
events.CancelEvent(EVENT_BERSERKER);
break;
}
}
DoMeleeAttackIfReady();
}
private:
EventMap events;
};
CreatureAI* GetAI(Creature* creature) const
{
return new script_nameAI(creature);
}
};
void AddSC_script_name()
{
new script_name();
} Error :
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp: In member function ‘virtual void script_name::script_nameAI::EnterEvadeMode()’:
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp:65:91: error: invalid conversion from ‘uint64 {aka long unsigned int}’ to ‘const WorldObject*’ [-fpermissive]
In file included from /opt/WoW/Source/TrinityCore/src/server/game/Grids/Cells/CellImpl.h:26:0,
from PrecompiledHeaders/ScriptPCH.h:10:
/opt/WoW/Source/TrinityCore/src/server/game/Entities/Object/Object.h:656:14: error: initializing argument 3 of ‘void WorldObject::MonsterYell(const char*, uint32, const WorldObject*)’ [-fpermissive]
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp: In member function ‘virtual void script_name::script_nameAI::EnterCombat(Unit*)’:
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp:75:91: error: invalid conversion from ‘uint64 {aka long unsigned int}’ to ‘const WorldObject*’ [-fpermissive]
In file included from /opt/WoW/Source/TrinityCore/src/server/game/Grids/Cells/CellImpl.h:26:0,
from PrecompiledHeaders/ScriptPCH.h:10:
/opt/WoW/Source/TrinityCore/src/server/game/Entities/Object/Object.h:656:14: error: initializing argument 3 of ‘void WorldObject::MonsterYell(const char*, uint32, const WorldObject*)’ [-fpermissive]
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp: In member function ‘virtual void script_name::script_nameAI::UpdateAI(uint32)’:
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp:107:52: error: ‘class Creature’ has no member named ‘getVictim’
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp:125:104: error: invalid conversion from ‘uint64 {aka long unsigned int}’ to ‘const WorldObject*’ [-fpermissive]
In file included from /opt/WoW/Source/TrinityCore/src/server/game/Grids/Cells/CellImpl.h:26:0,
from PrecompiledHeaders/ScriptPCH.h:10:
/opt/WoW/Source/TrinityCore/src/server/game/Entities/Object/Object.h:656:14: error: initializing argument 3 of ‘void WorldObject::MonsterYell(const char*, uint32, const WorldObject*)’ [-fpermissive]
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp:134:52: error: ‘class Creature’ has no member named ‘getVictim’
/opt/WoW/Source/TrinityCore/src/server/scripts/Custom/Script_Name.cpp:144:104: error: invalid conversion from ‘uint64 {aka long unsigned int}’ to ‘const WorldObject*’ [-fpermissive]
In file included from /opt/WoW/Source/TrinityCore/src/server/game/Grids/Cells/CellImpl.h:26:0,
from PrecompiledHeaders/ScriptPCH.h:10:
/opt/WoW/Source/TrinityCore/src/server/game/Entities/Object/Object.h:656:14: error: initializing argument 3 of ‘void WorldObject::MonsterYell(const char*, uint32, const WorldObject*)’ [-fpermissive]
make[2]: *** [src/server/scripts/CMakeFiles/scripts.dir/Custom/Script_Name.cpp.o] Error 1
make[1]: *** [src/server/scripts/CMakeFiles/scripts.dir/all] Error 2
make: *** [all] Error 2
Anynoe can fix it ? !