*Gundrak: GO Handling & Slad Ran script by Tartalo
*Cleanup, and don't consider creatures to be in combat if they have no victim, or if their victim is a GM. --HG-- branch : trunk
This commit is contained in:
@@ -10,6 +10,7 @@ Script Data End */
|
||||
update creature_template set scriptname = '' where entry = '';
|
||||
*** SQL END ***/
|
||||
#include "precompiled.h"
|
||||
#include "def_gundrak.h"
|
||||
|
||||
//Spells
|
||||
#define SPELL_EMERGE 54850 //to phase2, Colossus unatackable, Elemental emerges
|
||||
@@ -18,25 +19,39 @@ update creature_template set scriptname = '' where entry = '';
|
||||
|
||||
struct TRINITY_DLL_DECL boss_drakkari_colossusAI : public ScriptedAI
|
||||
{
|
||||
boss_drakkari_colossusAI(Creature *c) : ScriptedAI(c) {}
|
||||
boss_drakkari_colossusAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
uint32 phase;
|
||||
|
||||
void Reset() {}
|
||||
void EnterCombat(Unit* who) {}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
void Reset()
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
phase =1;
|
||||
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
void JustDied(Unit* killer) {}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, DONE);
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_drakkari_colossus(Creature* pCreature)
|
||||
|
||||
@@ -10,6 +10,7 @@ Script Data End */
|
||||
update creature_template set scriptname = '' where entry = '';
|
||||
*** SQL END ***/
|
||||
#include "precompiled.h"
|
||||
#include "def_gundrak.h"
|
||||
|
||||
#define SPELL_ECK_BERSERK 55816 //Eck goes berserk, increasing his attack speed by 150% and all damage he deals by 500%.
|
||||
#define SPELL_ECK_BITE 55813 //Eck bites down hard, inflicting 150% of his normal damage to an enemy.
|
||||
@@ -19,34 +20,50 @@ update creature_template set scriptname = '' where entry = '';
|
||||
|
||||
struct TRINITY_DLL_DECL boss_eckAI : public ScriptedAI
|
||||
{
|
||||
boss_eckAI(Creature *c) : ScriptedAI(c) {}
|
||||
boss_eckAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
uint32 berserk;
|
||||
uint32 uiBerserkTimer;
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
//Source Deadly Boss Mod
|
||||
berserk = 120000; //2min
|
||||
uiBerserkTimer = 120000; //2min
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) {}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (berserk < diff)
|
||||
if (uiBerserkTimer < diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_ECK_BERSERK);
|
||||
berserk = 120000;
|
||||
}else berserk -= diff;
|
||||
uiBerserkTimer = 120000;
|
||||
}else uiBerserkTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
void JustDied(Unit* killer) {}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, DONE);
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_eck(Creature* pCreature)
|
||||
|
||||
@@ -10,40 +10,58 @@ Script Data End */
|
||||
update creature_template set scriptname = '' where entry = '';
|
||||
*** SQL END ***/
|
||||
#include "precompiled.h"
|
||||
#include "def_gundrak.h"
|
||||
|
||||
//Spells
|
||||
#define SPELL_ENRAGE 55285
|
||||
#define SPELL_IMPALING_CHARGE 54956
|
||||
#define SPELL_STOMP 55292
|
||||
enum Spells
|
||||
{
|
||||
SPELL_ENRAGE = 55285,
|
||||
SPELL_IMPALING_CHARGE = 54956,
|
||||
SPELL_STOMP = 55292,
|
||||
SPELL_PUNCTURE = 55276,
|
||||
SPELL_STAMPEDE = 55218,
|
||||
SPELL_WHIRLING_SLASH = 55249,
|
||||
H_SPELL_WHIRLING_SLASH = 55825
|
||||
};
|
||||
|
||||
#define SPELL_PUNCTURE 55276
|
||||
#define SPELL_STAMPEDE 55218
|
||||
#define SPELL_WHIRLING_SLASH 55285
|
||||
|
||||
//not in db
|
||||
//Yells
|
||||
#define SAY_AGGRO -1604000
|
||||
#define SAY_SLAY_1 -1604001
|
||||
#define SAY_SLAY_2 -1604002
|
||||
#define SAY_SLAY_3 -1604003
|
||||
#define SAY_DEATH -1604004
|
||||
#define SAY_SUMMON_RHINO_1 -1604005
|
||||
#define SAY_SUMMON_RHINO_2 -1604006
|
||||
#define SAY_SUMMON_RHINO_3 -1604007
|
||||
#define SAY_TRANSFORM_1 -1604008 //Phase change
|
||||
#define SAY_TRANSFORM_2 -1604009
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1604000,
|
||||
SAY_SLAY_1 = -1604001,
|
||||
SAY_SLAY_2 = -1604002,
|
||||
SAY_SLAY_3 = -1604003,
|
||||
SAY_DEATH = -1604004,
|
||||
SAY_SUMMON_RHINO_1 = -1604005,
|
||||
SAY_SUMMON_RHINO_2 = -1604006,
|
||||
SAY_SUMMON_RHINO_3 = -1604007,
|
||||
SAY_TRANSFORM_1 = -1604008, //Phase change
|
||||
SAY_TRANSFORM_2 = -1604009
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
boss_gal_darahAI(Creature *c) : ScriptedAI(c) {}
|
||||
boss_gal_darahAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
void Reset() {}
|
||||
void Reset()
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GAL_DARAH_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GAL_DARAH_EVENT, IN_PROGRESS);
|
||||
}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
@@ -52,21 +70,21 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GAL_DARAH_EVENT, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
return;
|
||||
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
|
||||
case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
|
||||
case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ SDCategory: Gundrak
|
||||
Script Data End */
|
||||
|
||||
#include "precompiled.h"
|
||||
#include "def_gundrak.h"
|
||||
|
||||
//Spells
|
||||
|
||||
@@ -38,10 +39,10 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
|
||||
{
|
||||
boss_moorabiAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
HeroicMode = c->GetMap()->IsHeroic();
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
bool HeroicMode;
|
||||
ScriptedInstance* pInstance;
|
||||
bool Phase;
|
||||
uint32 SPELL_QUAKE_TIMER;
|
||||
uint32 SPELL_NUMBING_SHOUT_TIMER;
|
||||
@@ -56,12 +57,18 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
|
||||
SPELL_DETERMINED_STAB_TIMER = 20000;
|
||||
SPELL_TRANSFORMATION_TIMER = 12000;
|
||||
Phase = false;
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
m_creature->CastSpell(m_creature,SPELL_MOJO_FRENZY,true);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -149,6 +156,9 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, DONE);
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
|
||||
@@ -10,73 +10,196 @@ Script Data End */
|
||||
update creature_template set scriptname = 'boss_slad_ran' where entry = '';
|
||||
*** SQL END ***/
|
||||
#include "precompiled.h"
|
||||
#include "def_gundrak.h"
|
||||
|
||||
//Spells
|
||||
#define SPELL_POISON_NOVA 55081
|
||||
#define SPELL_POISON_NOVA_2 59842
|
||||
//--
|
||||
#define SPELL_POWERFUL_BITE 48287
|
||||
#define SPELL_POWERFUL_BITE_2 59840
|
||||
//--
|
||||
#define SPELL_VENOM_BOLT 54970
|
||||
#define SPELL_VENOM_BOLT_2 59839
|
||||
//At 30% HPStart summoning small serpents
|
||||
enum Spells
|
||||
{
|
||||
SPELL_POISON_NOVA = 55081,
|
||||
H_SPELL_POISON_NOVA = 59842,
|
||||
SPELL_POWERFULL_BITE = 48287,
|
||||
H_SPELL_POWERFULL_BITE = 59840,
|
||||
SPELL_VENOM_BOLT = 54970,
|
||||
H_SPELL_VENOM_BOLT = 59839
|
||||
};
|
||||
|
||||
//not in db
|
||||
//Yell
|
||||
#define SAY_AGGRO -1604017
|
||||
#define SAY_SLAY_1 -1604018
|
||||
#define SAY_SLAY_2 -1604019
|
||||
#define SAY_SLAY_3 -1604020
|
||||
#define SAY_DEATH -1604021
|
||||
#define SAY_SUMMON_SNAKES -1604022 //npc 29680
|
||||
#define SAY_SUMMON_CONSTRICTORS -1604023 //npc 29713, can cast Grip of Slad'ran (spell 55093)
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1604017,
|
||||
SAY_SLAY_1 = -1604018,
|
||||
SAY_SLAY_2 = -1604019,
|
||||
SAY_SLAY_3 = -1604020,
|
||||
SAY_DEATH = -1604021,
|
||||
SAY_SUMMON_SNAKES = -1604022,
|
||||
SAY_SUMMON_CONSTRICTORS = -1604023
|
||||
};
|
||||
|
||||
//Creatures
|
||||
enum Creatures
|
||||
{
|
||||
CREATURE_SNAKE = 29680,
|
||||
CREATURE_CONSTRICTORS = 29713
|
||||
};
|
||||
|
||||
//Creatures' spells
|
||||
enum ConstrictorSpells
|
||||
{
|
||||
SPELL_GRIP_OF_SLAD_RAN = 55093,
|
||||
SPELL_VENOMOUS_BITE = 54987,
|
||||
H_SPELL_VENOMOUS_BITE = 58996
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL boss_slad_ranAI : public ScriptedAI
|
||||
{
|
||||
boss_slad_ranAI(Creature *c) : ScriptedAI(c) {}
|
||||
boss_slad_ranAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
uint32 uiPoisonNovaTimer;
|
||||
uint32 uiPowerfullBiteTimer;
|
||||
uint32 uiVenomBoltTimer;
|
||||
uint32 uiSpawnTimer;
|
||||
|
||||
uint8 uiPhase;
|
||||
|
||||
void Reset() {}
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiPoisonNovaTimer = 10000;
|
||||
uiPowerfullBiteTimer = 3000;
|
||||
uiVenomBoltTimer = 15000;
|
||||
uiSpawnTimer = 5000;
|
||||
uiPhase = 0;
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SLAD_RAN_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SLAD_RAN_EVENT, IN_PROGRESS);
|
||||
}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 30)
|
||||
|
||||
if (uiPoisonNovaTimer < diff)
|
||||
{
|
||||
//Summon 3 snakes --> npc 29680
|
||||
DoScriptText(SAY_SUMMON_SNAKES,m_creature);
|
||||
DoCast(m_creature->getVictim(), HeroicMode ? H_SPELL_POISON_NOVA : SPELL_POISON_NOVA);
|
||||
uiPoisonNovaTimer = 15000;
|
||||
} else uiPoisonNovaTimer -= diff;
|
||||
|
||||
if (uiPowerfullBiteTimer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), HeroicMode ? H_SPELL_POWERFULL_BITE : SPELL_POWERFULL_BITE);
|
||||
uiPowerfullBiteTimer = 10000;
|
||||
} else uiPowerfullBiteTimer -= diff;
|
||||
|
||||
if (uiVenomBoltTimer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), HeroicMode ? H_SPELL_VENOM_BOLT : SPELL_VENOM_BOLT);
|
||||
uiVenomBoltTimer = 10000;
|
||||
} else uiVenomBoltTimer -= diff;
|
||||
|
||||
if (uiPhase)
|
||||
{
|
||||
if(uiSpawnTimer < diff)
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
for (uint8 i = 0;i< HeroicMode ? 5 : 3;++i)
|
||||
m_creature->SummonCreature(CREATURE_SNAKE, rand()%5, rand()%5, 0, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
if (uiPhase == 2)
|
||||
for (uint8 i = 0;i< HeroicMode ? 5 : 3;++i)
|
||||
m_creature->SummonCreature(CREATURE_CONSTRICTORS, rand()%5, rand()%5, 0, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
uiSpawnTimer = 5000;
|
||||
} else uiSpawnTimer -= diff;
|
||||
}
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
|
||||
|
||||
if ((uiPhase == 0) && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 30)
|
||||
{
|
||||
DoScriptText(SAY_SUMMON_SNAKES,m_creature);
|
||||
uiPhase = 1;
|
||||
}
|
||||
if ((uiPhase == 1) && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
|
||||
{
|
||||
//Summon 3 constrictors --> npc 29713
|
||||
DoScriptText(SAY_SUMMON_CONSTRICTORS,m_creature);
|
||||
uiPhase = 2;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SLAD_RAN_EVENT, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
}
|
||||
};
|
||||
|
||||
switch(rand()%3)
|
||||
struct TRINITY_DLL_DECL mob_slad_ran_constrictorAI : public ScriptedAI
|
||||
{
|
||||
mob_slad_ran_constrictorAI(Creature *c) : ScriptedAI(c) {}
|
||||
|
||||
uint32 uiGripOfSladRanTimer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiGripOfSladRanTimer = 1000;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
if (uiGripOfSladRanTimer < diff)
|
||||
{
|
||||
case 0:DoScriptText(SAY_SLAY_1, m_creature);break;
|
||||
case 1:DoScriptText(SAY_SLAY_2, m_creature);break;
|
||||
case 2:DoScriptText(SAY_SLAY_3, m_creature);break;
|
||||
}
|
||||
DoCast(m_creature->getVictim(), SPELL_GRIP_OF_SLAD_RAN);
|
||||
uiGripOfSladRanTimer = 5000;
|
||||
} else uiGripOfSladRanTimer -= diff;;
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL mob_slad_ran_viperAI : public ScriptedAI
|
||||
{
|
||||
mob_slad_ran_viperAI(Creature *c) : ScriptedAI(c) {}
|
||||
|
||||
uint32 uiVenomousBiteTimer;
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiVenomousBiteTimer = 2000;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (uiVenomousBiteTimer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), HeroicMode ? H_SPELL_VENOMOUS_BITE : SPELL_VENOMOUS_BITE);
|
||||
uiVenomousBiteTimer = 10000;
|
||||
} else uiVenomousBiteTimer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -85,6 +208,16 @@ CreatureAI* GetAI_boss_slad_ran(Creature* pCreature)
|
||||
return new boss_slad_ranAI (pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_slad_ran_constrictor(Creature* pCreature)
|
||||
{
|
||||
return new mob_slad_ran_constrictorAI (pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_slad_ran_viper(Creature* pCreature)
|
||||
{
|
||||
return new mob_slad_ran_viperAI (pCreature);
|
||||
}
|
||||
|
||||
void AddSC_boss_slad_ran()
|
||||
{
|
||||
Script *newscript;
|
||||
@@ -93,4 +226,14 @@ void AddSC_boss_slad_ran()
|
||||
newscript->Name="boss_slad_ran";
|
||||
newscript->GetAI = &GetAI_boss_slad_ran;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="mob_slad_ran_constrictor";
|
||||
newscript->GetAI = &GetAI_mob_slad_ran_constrictor;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="mob_slad_ran_viper";
|
||||
newscript->GetAI = &GetAI_mob_slad_ran_viper;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
#ifndef DEF_GUNDRAK_H
|
||||
#define DEF_GUNDRAK_H
|
||||
|
||||
enum Data
|
||||
{
|
||||
DATA_SLAD_RAN_EVENT,
|
||||
DATA_MOORABI_EVENT,
|
||||
DATA_DRAKKARI_COLOSSUS_EVENT,
|
||||
DATA_GAL_DARAH_EVENT,
|
||||
DATA_ECK_THE_FEROCIOUS_EVENT
|
||||
};
|
||||
|
||||
enum Data64
|
||||
{
|
||||
DATA_SLAD_RAN_ALTAR,
|
||||
DATA_MOORABI_ALTAR,
|
||||
DATA_DRAKKARI_COLOSSUS_ALTAR
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,11 +1,307 @@
|
||||
#include "precompiled.h"
|
||||
#include "def_gundrak.h"
|
||||
|
||||
#define MAX_ENCOUNTER 5
|
||||
|
||||
/* GunDrak encounters:
|
||||
0 - Slad'Ran
|
||||
1 - Moorabi
|
||||
2 - Drakkari Colossus
|
||||
3 - Gal'Darah
|
||||
4 - Eck the Ferocious
|
||||
*/
|
||||
|
||||
struct TRINITY_DLL_DECL instance_gundrak : public ScriptedInstance
|
||||
{
|
||||
instance_gundrak(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
|
||||
instance_gundrak(Map* pMap) : ScriptedInstance(pMap)
|
||||
{
|
||||
bHeroicMode = pMap->IsHeroic();
|
||||
Initialize();
|
||||
};
|
||||
|
||||
bool bHeroicMode;
|
||||
|
||||
uint64 uiSladRan;
|
||||
uint64 uiMoorabi;
|
||||
uint64 uiDrakkariColossus;
|
||||
uint64 uiGalDarah;
|
||||
uint64 uiEckTheFerocious;
|
||||
|
||||
uint32 uiSladRanAltar;
|
||||
uint32 uiMoorabiAltar;
|
||||
uint32 uiDrakkariColossusAltar;
|
||||
uint32 uiSladRanStatue;
|
||||
uint32 uiMoorabiStatue;
|
||||
uint32 uiDrakkariColossusStatue;
|
||||
uint32 uiEckTheFerociousDoor;
|
||||
uint32 uiGalDarahDoor1;
|
||||
uint32 uiGalDarahDoor2;
|
||||
uint32 uiBridge;
|
||||
uint32 uiCollision;
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
|
||||
std::string str_data;
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSladRan = 0;
|
||||
uiMoorabi = 0;
|
||||
uiDrakkariColossus = 0;
|
||||
uiGalDarah = 0;
|
||||
uiEckTheFerocious = 0;
|
||||
|
||||
uiSladRanAltar = 0;
|
||||
uiMoorabiAltar = 0;
|
||||
uiDrakkariColossusAltar = 0;
|
||||
|
||||
uiSladRanStatue = 0;
|
||||
uiMoorabiStatue = 0;
|
||||
uiDrakkariColossusStatue = 0;
|
||||
|
||||
uiEckTheFerociousDoor = 0;
|
||||
uiGalDarahDoor1 = 0;
|
||||
uiGalDarahDoor2 = 0;
|
||||
|
||||
uiBridge = 0;
|
||||
uiCollision = 0;
|
||||
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
for(uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* pCreature, bool add)
|
||||
{
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case 29304: uiSladRan = pCreature->GetGUID(); break;
|
||||
case 29305: uiMoorabi = pCreature->GetGUID(); break;
|
||||
case 29306: uiGalDarah = pCreature->GetGUID(); break;
|
||||
case 29307: uiDrakkariColossus = pCreature->GetGUID(); break;
|
||||
case 29332: uiEckTheFerocious = pCreature->GetGUID(); break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* pGo, bool add)
|
||||
{
|
||||
switch(pGo->GetEntry())
|
||||
{
|
||||
case 192518:
|
||||
uiSladRanAltar = pGo->GetGUID();
|
||||
if (m_auiEncounter[0] == DONE)
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_UNK1);
|
||||
break;
|
||||
case 192519:
|
||||
uiMoorabiAltar = pGo->GetGUID();
|
||||
if (m_auiEncounter[1] == DONE)
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_UNK1);
|
||||
break;
|
||||
case 192520:
|
||||
uiDrakkariColossus = pGo->GetGUID();
|
||||
if (m_auiEncounter[2] == DONE)
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_UNK1);
|
||||
break;
|
||||
case 192564:
|
||||
uiSladRanStatue = pGo->GetGUID();
|
||||
break;
|
||||
case 192565:
|
||||
uiMoorabiStatue = pGo->GetGUID();
|
||||
break;
|
||||
case 192567:
|
||||
uiDrakkariColossus = pGo->GetGUID();
|
||||
break;
|
||||
case 192632:
|
||||
uiEckTheFerociousDoor = pGo->GetGUID();
|
||||
if (bHeroicMode && m_auiEncounter[1] == DONE)
|
||||
HandleGameObject(NULL,true,pGo);
|
||||
break;
|
||||
case 193208:
|
||||
uiGalDarahDoor1 = pGo->GetGUID();
|
||||
if (m_auiEncounter[3] == DONE)
|
||||
HandleGameObject(NULL,true,pGo);
|
||||
break;
|
||||
case 193209:
|
||||
uiGalDarahDoor2 = pGo->GetGUID();
|
||||
if (m_auiEncounter[3] == DONE)
|
||||
HandleGameObject(NULL,true,pGo);
|
||||
break;
|
||||
case 193188:
|
||||
uiBridge = pGo->GetGUID();
|
||||
break;
|
||||
case 192633:
|
||||
uiBridge = pGo->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_SLAD_RAN_EVENT:
|
||||
m_auiEncounter[0] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
GameObject* pGo = instance->GetGameObject(uiSladRanAltar);
|
||||
if (pGo)
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_UNK1);
|
||||
}
|
||||
break;
|
||||
case DATA_MOORABI_EVENT:
|
||||
m_auiEncounter[1] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
GameObject* pGo = instance->GetGameObject(uiMoorabiAltar);
|
||||
if (pGo)
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_UNK1);
|
||||
if (bHeroicMode)
|
||||
HandleGameObject(uiEckTheFerociousDoor,true);
|
||||
}
|
||||
break;
|
||||
case DATA_DRAKKARI_COLOSSUS_EVENT:
|
||||
m_auiEncounter[2] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
GameObject* pGo = instance->GetGameObject(uiDrakkariColossusAltar);
|
||||
if (pGo)
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS,GO_FLAG_UNK1);
|
||||
}
|
||||
break;
|
||||
case DATA_GAL_DARAH_EVENT:
|
||||
m_auiEncounter[3] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
HandleGameObject(uiGalDarahDoor1,true);
|
||||
HandleGameObject(uiGalDarahDoor2,true);
|
||||
}
|
||||
break;
|
||||
case DATA_ECK_THE_FEROCIOUS_EVENT:
|
||||
m_auiEncounter[4] = data;
|
||||
break;
|
||||
}
|
||||
|
||||
if (data == DONE)
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_SLAD_RAN_EVENT: return m_auiEncounter[0];
|
||||
case DATA_MOORABI_EVENT: return m_auiEncounter[1];
|
||||
case DATA_GAL_DARAH_EVENT: return m_auiEncounter[2];
|
||||
case DATA_DRAKKARI_COLOSSUS_EVENT: return m_auiEncounter[3];
|
||||
case DATA_ECK_THE_FEROCIOUS_EVENT: return m_auiEncounter[4];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_SLAD_RAN_ALTAR: return uiSladRanAltar;
|
||||
case DATA_MOORABI_ALTAR: return uiMoorabiAltar;
|
||||
case DATA_DRAKKARI_COLOSSUS_ALTAR: return uiDrakkariColossusAltar;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string GetSaveData()
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "G D " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " "
|
||||
<< m_auiEncounter[2] << " " << m_auiEncounter[3] << " " << m_auiEncounter[4];
|
||||
|
||||
str_data = saveStream.str();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
}
|
||||
|
||||
void Load(const char* in)
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint16 data0, data1, data2, data3, data4;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4;
|
||||
|
||||
if (dataHead1 == 'G' && dataHead2 == 'D')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
m_auiEncounter[2] = data2;
|
||||
m_auiEncounter[3] = data3;
|
||||
m_auiEncounter[4] = data4;
|
||||
|
||||
for(uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
void CheckAltars()
|
||||
{
|
||||
GameObject* pSladRanAltar = instance->GetGameObject(uiSladRanAltar);
|
||||
GameObject* pMoorabiAltar = instance->GetGameObject(uiMoorabiAltar);
|
||||
GameObject* pDrakkariColossusAltar = instance->GetGameObject(uiDrakkariColossusAltar);
|
||||
|
||||
if (pSladRanAltar && pSladRanAltar->GetGoState() == GO_STATE_ACTIVE &&
|
||||
pMoorabiAltar && pMoorabiAltar->GetGoState() == GO_STATE_ACTIVE &&
|
||||
pDrakkariColossusAltar && pDrakkariColossusAltar->GetGoState())
|
||||
{
|
||||
HandleGameObject(uiBridge,true);
|
||||
HandleGameObject(uiCollision,true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
bool GOHello_altar(Player *pPlayer, GameObject *pGO)
|
||||
{
|
||||
ScriptedInstance *pInstance = pGO->GetInstanceData();
|
||||
uint32 uiStatue;
|
||||
|
||||
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||
pGO->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
switch(pGO->GetEntry())
|
||||
{
|
||||
case 192518: uiStatue = pInstance->GetData64(DATA_SLAD_RAN_ALTAR); break;
|
||||
case 192519: uiStatue = pInstance->GetData64(DATA_MOORABI_ALTAR); break;
|
||||
case 192520: uiStatue = pInstance->GetData64(DATA_DRAKKARI_COLOSSUS_ALTAR); break;
|
||||
}
|
||||
pInstance->HandleGameObject(uiStatue,true);
|
||||
((instance_gundrak*)pInstance)->CheckAltars();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
InstanceData* GetInstanceData_instance_gundrak(Map* pMap)
|
||||
{
|
||||
return new instance_gundrak(pMap);
|
||||
@@ -18,4 +314,9 @@ void AddSC_instance_gundrak()
|
||||
newscript->Name = "instance_gundrak";
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_gundrak;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "go_gundrak_altar";
|
||||
newscript->pGOHello = &GOHello_altar;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -261,7 +261,12 @@ extern void AddSC_ungoro_crater();
|
||||
extern void AddSC_winterspring();
|
||||
|
||||
//northrend
|
||||
extern void AddSC_boss_slad_ran();
|
||||
extern void AddSC_boss_moorabi();
|
||||
extern void AddSC_boss_drakkari_colossus();
|
||||
extern void AddSC_boss_gal_darah();
|
||||
extern void AddSC_boss_eck();
|
||||
extern void AddSC_instance_gundrak();
|
||||
extern void AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet
|
||||
extern void AddSC_boss_krik_thir();
|
||||
extern void AddSC_boss_taldaram();
|
||||
@@ -670,12 +675,17 @@ void AddScripts()
|
||||
AddSC_winterspring();
|
||||
|
||||
//northrend
|
||||
AddSC_boss_slad_ran(); //Gundrak
|
||||
AddSC_boss_moorabi();
|
||||
AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet
|
||||
AddSC_boss_krik_thir();
|
||||
AddSC_boss_taldaram();
|
||||
AddSC_boss_drakkari_colossus();
|
||||
AddSC_boss_gal_darah();
|
||||
AddSC_boss_eck();
|
||||
AddSC_instance_gundrak();
|
||||
AddSC_boss_taldaram(); //Azjol-Nerub Ahn'kahet
|
||||
AddSC_boss_elder_nadox();
|
||||
AddSC_boss_volazj();
|
||||
AddSC_instance_ahnkahet();
|
||||
AddSC_boss_krik_thir(); //Azjol-Nerub Azjol-Nerub
|
||||
AddSC_boss_anubrekhan(); //Naxxramas
|
||||
AddSC_boss_maexxna();
|
||||
AddSC_boss_patchwerk();
|
||||
@@ -717,6 +727,11 @@ void AddScripts()
|
||||
AddSC_boss_skarvald_dalronn();
|
||||
AddSC_boss_ingvar_the_plunderer();
|
||||
AddSC_instance_utgarde_keep();
|
||||
AddSC_boss_svala(); //Utgarde pinnacle
|
||||
AddSC_boss_palehoof();
|
||||
AddSC_boss_skadi();
|
||||
AddSC_boss_ymiron();
|
||||
AddSC_instance_utgarde_pinnacle();
|
||||
AddSC_utgarde_keep();
|
||||
AddSC_boss_archavon(); //Vault of Archavon
|
||||
AddSC_boss_emalon();
|
||||
|
||||
@@ -544,7 +544,8 @@ void Creature::Update(uint32 diff)
|
||||
if(!isAlive())
|
||||
break;
|
||||
|
||||
bool bNotInCombatOrIsPolymorphed = (!isInCombat() || IsPolymorphed());
|
||||
bool bNotInCombatOrIsPolymorphed = (!isInCombat() || IsPolymorphed() || !getVictim() ||
|
||||
getVictim()->GetCharmerOrOwnerPlayerOrPlayerItself()->isGameMaster());
|
||||
|
||||
if(m_regenTimer > diff && !bNotInCombatOrIsPolymorphed)
|
||||
m_regenTimer -= diff;
|
||||
|
||||
@@ -147,13 +147,14 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Summons()
|
||||
//Add to map
|
||||
m_CreatureEventAI_Summon_Map[i] = temp;
|
||||
++Count;
|
||||
}while (result->NextRow());
|
||||
} while (result->NextRow());
|
||||
|
||||
delete result;
|
||||
|
||||
sLog.outString();
|
||||
sLog.outString(">> Loaded %u CreatureEventAI summon definitions", Count);
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
barGoLink bar(1);
|
||||
bar.step();
|
||||
@@ -728,7 +729,8 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts()
|
||||
|
||||
sLog.outString();
|
||||
sLog.outString(">> Loaded %u CreatureEventAI scripts", Count);
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
barGoLink bar(1);
|
||||
bar.step();
|
||||
|
||||
@@ -113,7 +113,7 @@ void DynamicObject::Update(uint32 p_time)
|
||||
{
|
||||
// caster can be not in world at time dynamic object update, but dynamic object not yet deleted in Unit destructor
|
||||
Unit* caster = GetCaster();
|
||||
if(!caster)
|
||||
if (!caster)
|
||||
{
|
||||
Delete();
|
||||
return;
|
||||
@@ -126,17 +126,17 @@ void DynamicObject::Update(uint32 p_time)
|
||||
else
|
||||
deleteThis = true;
|
||||
|
||||
if(m_effMask)
|
||||
if (m_effMask)
|
||||
{
|
||||
if(m_updateTimer < p_time)
|
||||
if (m_updateTimer < p_time)
|
||||
{
|
||||
Trinity::DynamicObjectUpdater notifier(*this,caster);
|
||||
VisitNearbyObject(GetRadius(), notifier);
|
||||
m_updateTimer = 500; // is this official-like?
|
||||
}else m_updateTimer -= p_time;
|
||||
} else m_updateTimer -= p_time;
|
||||
}
|
||||
|
||||
if(deleteThis)
|
||||
if (deleteThis)
|
||||
{
|
||||
caster->RemoveDynObjectWithGUID(GetGUID());
|
||||
Delete();
|
||||
@@ -153,9 +153,9 @@ void DynamicObject::Delete()
|
||||
void DynamicObject::Delay(int32 delaytime)
|
||||
{
|
||||
m_aliveDuration -= delaytime;
|
||||
for(AffectedSet::iterator iunit= m_affected.begin(); iunit != m_affected.end(); ++iunit)
|
||||
for (AffectedSet::iterator iunit = m_affected.begin(); iunit != m_affected.end(); ++iunit)
|
||||
if (*iunit)
|
||||
(*iunit)->DelayAura(m_spellId, GetCaster()->GetGUID() , delaytime);
|
||||
(*iunit)->DelayAura(m_spellId, GetCaster()->GetGUID(), delaytime);
|
||||
}
|
||||
|
||||
bool DynamicObject::isVisibleForInState(Player const* u, bool inVisibleList) const
|
||||
|
||||
+27
-28
@@ -1393,7 +1393,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args)
|
||||
char* arg1 = strtok((char*)args, " ");
|
||||
char* arg2 = strtok(NULL, " ");
|
||||
|
||||
if(getSelectedPlayer() && arg1 && !arg2)
|
||||
if (getSelectedPlayer() && arg1 && !arg2)
|
||||
{
|
||||
targetAccountId = getSelectedPlayer()->GetSession()->GetAccountId();
|
||||
accmgr.GetName(targetAccountId, targetAccountName);
|
||||
@@ -1401,7 +1401,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args)
|
||||
gm = atoi(arg1);
|
||||
|
||||
// Check for invalid specified GM level.
|
||||
if ( (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR) )
|
||||
if (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR)
|
||||
{
|
||||
SendSysMessage(LANG_BAD_VALUE);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1410,7 +1410,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args)
|
||||
|
||||
// Check if targets GM level and specified GM level is not higher than current gm level
|
||||
targetSecurity = targetPlayer->GetSession()->GetSecurity();
|
||||
if(targetSecurity >= m_session->GetSecurity() || gm >= m_session->GetSecurity() )
|
||||
if (targetSecurity >= m_session->GetSecurity() || gm >= m_session->GetSecurity())
|
||||
{
|
||||
SendSysMessage(LANG_YOURS_SECURITY_IS_LOW);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1418,24 +1418,23 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args)
|
||||
}
|
||||
|
||||
// Decide which string to show
|
||||
if(m_session->GetPlayer()!=targetPlayer)
|
||||
{
|
||||
if (m_session->GetPlayer() != targetPlayer)
|
||||
PSendSysMessage(LANG_YOU_CHANGE_SECURITY, targetAccountName.c_str(), gm);
|
||||
}else{
|
||||
else
|
||||
PSendSysMessage(LANG_YOURS_SECURITY_CHANGED, m_session->GetPlayer()->GetName(), gm);
|
||||
}
|
||||
|
||||
loginDatabase.PExecute("UPDATE account SET gmlevel = '%d' WHERE id = '%u'", gm, targetAccountId);
|
||||
return true;
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check for second parameter
|
||||
if(!arg2)
|
||||
if (!arg2)
|
||||
return false;
|
||||
|
||||
// Check for account
|
||||
targetAccountName = arg1;
|
||||
if(!AccountMgr::normalizeString(targetAccountName))
|
||||
if (!AccountMgr::normalizeString(targetAccountName))
|
||||
{
|
||||
PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,targetAccountName.c_str());
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1444,7 +1443,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args)
|
||||
|
||||
// Check for invalid specified GM level.
|
||||
gm = atoi(arg2);
|
||||
if ( (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR) )
|
||||
if (gm < SEC_PLAYER || gm > SEC_ADMINISTRATOR)
|
||||
{
|
||||
SendSysMessage(LANG_BAD_VALUE);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1458,7 +1457,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args)
|
||||
/// can set security level only for target with less security and to less security that we have
|
||||
/// This is also reject self apply in fact
|
||||
targetSecurity = accmgr.GetSecurity(targetAccountId);
|
||||
if(targetSecurity >= plSecurity || gm >= plSecurity )
|
||||
if (targetSecurity >= plSecurity || gm >= plSecurity)
|
||||
{
|
||||
SendSysMessage(LANG_YOURS_SECURITY_IS_LOW);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1486,7 +1485,7 @@ bool ChatHandler::HandleAccountSetPasswordCommand(const char* args)
|
||||
return false;
|
||||
|
||||
std::string account_name = szAccount;
|
||||
if(!AccountMgr::normalizeString(account_name))
|
||||
if (!AccountMgr::normalizeString(account_name))
|
||||
{
|
||||
PSendSysMessage(LANG_ACCOUNT_NOT_EXIST,account_name.c_str());
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1503,7 +1502,7 @@ bool ChatHandler::HandleAccountSetPasswordCommand(const char* args)
|
||||
|
||||
/// can set password only for target with less security
|
||||
/// This is also reject self apply in fact
|
||||
if(HasLowerSecurityAccount (NULL,targetAccountId,true))
|
||||
if (HasLowerSecurityAccount (NULL,targetAccountId,true))
|
||||
return false;
|
||||
|
||||
if (strcmp(szPassword1,szPassword2))
|
||||
@@ -1515,7 +1514,7 @@ bool ChatHandler::HandleAccountSetPasswordCommand(const char* args)
|
||||
|
||||
AccountOpResult result = accmgr.ChangePassword(targetAccountId, szPassword1);
|
||||
|
||||
switch(result)
|
||||
switch (result)
|
||||
{
|
||||
case AOR_OK:
|
||||
SendSysMessage(LANG_COMMAND_PASSWORD);
|
||||
@@ -1556,12 +1555,12 @@ bool ChatHandler::HandleSetSkillCommand(const char* args)
|
||||
{
|
||||
// number or [name] Shift-click form |color|Hskill:skill_id|h[name]|h|r
|
||||
char* skill_p = extractKeyFromLink((char*)args,"Hskill");
|
||||
if(!skill_p)
|
||||
if (!skill_p)
|
||||
return false;
|
||||
|
||||
char *level_p = strtok (NULL, " ");
|
||||
|
||||
if( !level_p)
|
||||
if (!level_p)
|
||||
return false;
|
||||
|
||||
char *max_p = strtok (NULL, " ");
|
||||
@@ -1577,7 +1576,7 @@ bool ChatHandler::HandleSetSkillCommand(const char* args)
|
||||
int32 level = atol (level_p);
|
||||
|
||||
Player * target = getSelectedPlayer();
|
||||
if(!target)
|
||||
if (!target)
|
||||
{
|
||||
SendSysMessage(LANG_NO_CHAR_SELECTED);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1585,7 +1584,7 @@ bool ChatHandler::HandleSetSkillCommand(const char* args)
|
||||
}
|
||||
|
||||
SkillLineEntry const* sl = sSkillLineStore.LookupEntry(skill);
|
||||
if(!sl)
|
||||
if (!sl)
|
||||
{
|
||||
PSendSysMessage(LANG_INVALID_SKILL_ID, skill);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1594,7 +1593,7 @@ bool ChatHandler::HandleSetSkillCommand(const char* args)
|
||||
|
||||
std::string tNameLink = GetNameLink(target);
|
||||
|
||||
if(!target->GetSkillValue(skill))
|
||||
if (!target->GetSkillValue(skill))
|
||||
{
|
||||
PSendSysMessage(LANG_SET_SKILL_ERROR, tNameLink.c_str(), skill, sl->name[0]);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1603,7 +1602,7 @@ bool ChatHandler::HandleSetSkillCommand(const char* args)
|
||||
|
||||
int32 max = max_p ? atol (max_p) : target->GetPureMaxSkillValue(skill);
|
||||
|
||||
if( level <= 0 || level > max || max <= 0 )
|
||||
if (level <= 0 || level > max || max <= 0)
|
||||
return false;
|
||||
|
||||
target->SetSkill(skill, level, max);
|
||||
@@ -1619,21 +1618,21 @@ bool ChatHandler::HandleUnLearnCommand(const char* args)
|
||||
|
||||
// number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r
|
||||
uint32 spell_id = extractSpellIdFromLink((char*)args);
|
||||
if(!spell_id)
|
||||
if (!spell_id)
|
||||
return false;
|
||||
|
||||
char const* allStr = strtok(NULL," ");
|
||||
bool allRanks = allStr ? (strncmp(allStr, "all", strlen(allStr)) == 0) : false;
|
||||
|
||||
Player* target = getSelectedPlayer();
|
||||
if(!target)
|
||||
if (!target)
|
||||
{
|
||||
SendSysMessage(LANG_NO_CHAR_SELECTED);
|
||||
SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(allRanks)
|
||||
if (allRanks)
|
||||
spell_id = spellmgr.GetFirstSpellInChain (spell_id);
|
||||
|
||||
if (target->HasSpell(spell_id))
|
||||
@@ -1641,7 +1640,7 @@ bool ChatHandler::HandleUnLearnCommand(const char* args)
|
||||
else
|
||||
SendSysMessage(LANG_FORGET_SPELL);
|
||||
|
||||
if(GetTalentSpellCost(spell_id))
|
||||
if (GetTalentSpellCost(spell_id))
|
||||
target->SendTalentsInfoData(false);
|
||||
|
||||
return true;
|
||||
@@ -1650,7 +1649,7 @@ bool ChatHandler::HandleUnLearnCommand(const char* args)
|
||||
bool ChatHandler::HandleCooldownCommand(const char* args)
|
||||
{
|
||||
Player* target = getSelectedPlayer();
|
||||
if(!target)
|
||||
if (!target)
|
||||
{
|
||||
SendSysMessage(LANG_PLAYER_NOT_FOUND);
|
||||
SetSentErrorMessage(true);
|
||||
@@ -1668,10 +1667,10 @@ bool ChatHandler::HandleCooldownCommand(const char* args)
|
||||
{
|
||||
// number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form
|
||||
uint32 spell_id = extractSpellIdFromLink((char*)args);
|
||||
if(!spell_id)
|
||||
if (!spell_id)
|
||||
return false;
|
||||
|
||||
if(!sSpellStore.LookupEntry(spell_id))
|
||||
if (!sSpellStore.LookupEntry(spell_id))
|
||||
{
|
||||
PSendSysMessage(LANG_UNKNOWN_SPELL, target==m_session->GetPlayer() ? GetMangosString(LANG_YOU) : tNameLink.c_str());
|
||||
SetSentErrorMessage(true);
|
||||
|
||||
+1
-1
@@ -217,7 +217,7 @@ void Unit::Update( uint32 p_time )
|
||||
{
|
||||
m_AurasCheck = 2000;
|
||||
_UpdateAura();
|
||||
}else
|
||||
} else
|
||||
m_AurasCheck -= p_time;*/
|
||||
|
||||
// WARNING! Order of execution here is important, do not change.
|
||||
|
||||
Reference in New Issue
Block a user