aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/World
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2014-09-01 09:19:57 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2014-09-01 09:19:57 +0200
commit8a97243728fbbd8c7541b921f72b2762bffeb79a (patch)
treee9fb152fefd6b83818d65c7ac27f970bc109d5f2 /src/server/scripts/World
parentcc6ca22fbcc5e8a17d33c3e29aec831cf10a8f3a (diff)
parentc565d8566f8115333c4927bf84710bcb98d84588 (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/scripts/World')
-rw-r--r--src/server/scripts/World/boss_emerald_dragons.cpp44
-rw-r--r--src/server/scripts/World/guards.cpp36
-rw-r--r--src/server/scripts/World/mob_generic_creature.cpp16
-rw-r--r--src/server/scripts/World/npcs_special.cpp113
4 files changed, 162 insertions, 47 deletions
diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp
index 950b4cd10e9..23e373312cb 100644
--- a/src/server/scripts/World/boss_emerald_dragons.cpp
+++ b/src/server/scripts/World/boss_emerald_dragons.cpp
@@ -170,13 +170,19 @@ class npc_dream_fog : public CreatureScript
{
npc_dream_fogAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
_roamTimer = 0;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -247,11 +253,17 @@ class boss_ysondre : public CreatureScript
{
boss_ysondreAI(Creature* creature) : emerald_dragonAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
_stage = 1;
+ }
+
+ void Reset() override
+ {
+ Initialize();
emerald_dragonAI::Reset();
events.ScheduleEvent(EVENT_LIGHTNING_WAVE, 12000);
}
@@ -335,11 +347,17 @@ class boss_lethon : public CreatureScript
{
boss_lethonAI(Creature* creature) : emerald_dragonAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
_stage = 1;
+ }
+
+ void Reset() override
+ {
+ Initialize();
emerald_dragonAI::Reset();
events.ScheduleEvent(EVENT_SHADOW_BOLT_WHIRL, 10000);
}
@@ -457,11 +475,17 @@ class boss_emeriss : public CreatureScript
{
boss_emerissAI(Creature* creature) : emerald_dragonAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
_stage = 1;
+ }
+
+ void Reset() override
+ {
+ Initialize();
emerald_dragonAI::Reset();
events.ScheduleEvent(EVENT_VOLATILE_INFECTION, 12000);
}
@@ -549,16 +573,22 @@ class boss_taerar : public CreatureScript
{
boss_taerarAI(Creature* creature) : emerald_dragonAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
- me->RemoveAurasDueToSpell(SPELL_SHADE);
_stage = 1;
-
_shades = 0;
_banished = false;
_banishedTimer = 0;
+ }
+
+ void Reset() override
+ {
+ me->RemoveAurasDueToSpell(SPELL_SHADE);
+
+ Initialize();
emerald_dragonAI::Reset();
events.ScheduleEvent(EVENT_ARCANE_BLAST, 12000);
diff --git a/src/server/scripts/World/guards.cpp b/src/server/scripts/World/guards.cpp
index a156a41fcef..bd953a285ab 100644
--- a/src/server/scripts/World/guards.cpp
+++ b/src/server/scripts/World/guards.cpp
@@ -54,14 +54,22 @@ public:
struct guard_genericAI : public GuardAI
{
- guard_genericAI(Creature* creature) : GuardAI(creature) { }
+ guard_genericAI(Creature* creature) : GuardAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
globalCooldown = 0;
buffTimer = 0;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void EnterCombat(Unit* who) override
{
if (me->GetEntry() == NPC_CENARION_HOLD_INFANTRY)
@@ -263,9 +271,12 @@ public:
struct guard_shattrath_scryerAI : public GuardAI
{
- guard_shattrath_scryerAI(Creature* creature) : GuardAI(creature) { }
+ guard_shattrath_scryerAI(Creature* creature) : GuardAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
banishTimer = 5000;
exileTimer = 8500;
@@ -273,6 +284,11 @@ public:
canTeleport = false;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -328,9 +344,12 @@ public:
struct guard_shattrath_aldorAI : public GuardAI
{
- guard_shattrath_aldorAI(Creature* creature) : GuardAI(creature) { }
+ guard_shattrath_aldorAI(Creature* creature) : GuardAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
banishTimer = 5000;
exileTimer = 8500;
@@ -338,6 +357,11 @@ public:
canTeleport = false;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
diff --git a/src/server/scripts/World/mob_generic_creature.cpp b/src/server/scripts/World/mob_generic_creature.cpp
index a27a78a5338..eb6fbea170e 100644
--- a/src/server/scripts/World/mob_generic_creature.cpp
+++ b/src/server/scripts/World/mob_generic_creature.cpp
@@ -36,7 +36,17 @@ public:
struct generic_creatureAI : public ScriptedAI
{
- generic_creatureAI(Creature* creature) : ScriptedAI(creature) { }
+ generic_creatureAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ GlobalCooldown = 0;
+ BuffTimer = 0; //Rebuff as soon as we can
+ IsSelfRooted = false;
+ }
uint32 GlobalCooldown; //This variable acts like the global cooldown that players have (1.5 seconds)
uint32 BuffTimer; //This variable keeps track of buffs
@@ -44,9 +54,7 @@ public:
void Reset() override
{
- GlobalCooldown = 0;
- BuffTimer = 0; //Rebuff as soon as we can
- IsSelfRooted = false;
+ Initialize();
}
void EnterCombat(Unit* who) override
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index aa289e82698..ea90c13f747 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -329,13 +329,21 @@ public:
struct npc_chicken_cluckAI : public ScriptedAI
{
- npc_chicken_cluckAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_chicken_cluckAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ResetFlagTimer = 120000;
+ }
uint32 ResetFlagTimer;
void Reset() override
{
- ResetFlagTimer = 120000;
+ Initialize();
me->setFaction(FACTION_CHICKEN);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
}
@@ -424,15 +432,23 @@ public:
struct npc_dancing_flamesAI : public ScriptedAI
{
- npc_dancing_flamesAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_dancing_flamesAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ Active = true;
+ CanIteract = 3500;
+ }
bool Active;
uint32 CanIteract;
void Reset() override
{
- Active = true;
- CanIteract = 3500;
+ Initialize();
DoCast(me, SPELL_BRAZIER, true);
DoCast(me, SPELL_FIERY_AURA, false);
float x, y, z;
@@ -569,7 +585,25 @@ public:
struct npc_doctorAI : public ScriptedAI
{
- npc_doctorAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_doctorAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ PlayerGUID = 0;
+
+ SummonPatientTimer = 10000;
+ SummonPatientCount = 0;
+ PatientDiedCount = 0;
+ PatientSavedCount = 0;
+
+ Patients.clear();
+ Coordinates.clear();
+
+ Event = false;
+ }
uint64 PlayerGUID;
@@ -585,18 +619,7 @@ public:
void Reset() override
{
- PlayerGUID = 0;
-
- SummonPatientTimer = 10000;
- SummonPatientCount = 0;
- PatientDiedCount = 0;
- PatientSavedCount = 0;
-
- Patients.clear();
- Coordinates.clear();
-
- Event = false;
-
+ Initialize();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
@@ -714,15 +737,23 @@ public:
struct npc_injured_patientAI : public ScriptedAI
{
- npc_injured_patientAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_injured_patientAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ DoctorGUID = 0;
+ Coord = NULL;
+ }
uint64 DoctorGUID;
Location* Coord;
void Reset() override
{
- DoctorGUID = 0;
- Coord = NULL;
+ Initialize();
//no select
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -1447,14 +1478,20 @@ public:
{
npc_tonk_mineAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
me->SetReactState(REACT_PASSIVE);
}
+ void Initialize()
+ {
+ ExplosionTimer = 3000;
+ }
+
uint32 ExplosionTimer;
void Reset() override
{
- ExplosionTimer = 3000;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override { }
@@ -1649,13 +1686,21 @@ class npc_wormhole : public CreatureScript
struct npc_wormholeAI : public PassiveAI
{
- npc_wormholeAI(Creature* creature) : PassiveAI(creature) { }
+ npc_wormholeAI(Creature* creature) : PassiveAI(creature)
+ {
+ Initialize();
+ }
- void InitializeAI() override
+ void Initialize()
{
_showUnderground = urand(0, 100) == 0; // Guessed value, it is really rare though
}
+ void InitializeAI() override
+ {
+ Initialize();
+ }
+
uint32 GetData(uint32 type) const override
{
return (type == DATA_SHOW_UNDERGROUND && _showUnderground) ? 1 : 0;
@@ -2303,7 +2348,19 @@ public:
struct npc_spring_rabbitAI : public ScriptedAI
{
- npc_spring_rabbitAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_spring_rabbitAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ inLove = false;
+ rabbitGUID = 0;
+ jumpTimer = urand(5000, 10000);
+ bunnyTimer = urand(10000, 20000);
+ searchTimer = urand(5000, 10000);
+ }
bool inLove;
uint32 jumpTimer;
@@ -2313,11 +2370,7 @@ public:
void Reset() override
{
- inLove = false;
- rabbitGUID = 0;
- jumpTimer = urand(5000, 10000);
- bunnyTimer = urand(10000, 20000);
- searchTimer = urand(5000, 10000);
+ Initialize();
if (Unit* owner = me->GetOwner())
me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
}