aboutsummaryrefslogtreecommitdiff
path: root/src/bindings/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/bindings/scripts')
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp4
-rw-r--r--src/bindings/scripts/include/sc_creature.h8
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp83
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp38
-rw-r--r--src/bindings/scripts/scripts/zone/uldaman/instance_uldaman.cpp229
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp12
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp13
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp34
8 files changed, 144 insertions, 277 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp
index a3c185391cc..e3bcc2129cc 100644
--- a/src/bindings/scripts/include/sc_creature.cpp
+++ b/src/bindings/scripts/include/sc_creature.cpp
@@ -220,10 +220,10 @@ void ScriptedAI::DoStopAttack()
void ScriptedAI::DoCast(Unit* victim, uint32 spellId, bool triggered)
{
- if (!victim || m_creature->IsNonMeleeSpellCasted(false))
+ if (!victim || m_creature->hasUnitState(UNIT_STAT_CASTING))
return;
- m_creature->StopMoving();
+ //m_creature->StopMoving();
m_creature->CastSpell(victim, spellId, triggered);
}
diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h
index 01f5df473c1..c0c09d70e34 100644
--- a/src/bindings/scripts/include/sc_creature.h
+++ b/src/bindings/scripts/include/sc_creature.h
@@ -183,13 +183,13 @@ struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI
void AttackStart(Unit *);
};
-struct TRINITY_DLL_DECL NullCreatureAI : public CreatureAI
+struct TRINITY_DLL_DECL NullCreatureAI : public ScriptedAI
{
- NullCreatureAI(Creature* c) : m_creature(c) {}
+ NullCreatureAI(Creature* c) : ScriptedAI(c) {}
~NullCreatureAI() {}
- Creature *m_creature;
-
+ void Reset() {}
+ void Aggro(Unit*) {}
void MoveInLineOfSight(Unit *) {}
void AttackStart(Unit *) {}
void EnterEvadeMode() {}
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
index 272bd0bd2b0..46a05fcf0cc 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
@@ -1780,73 +1780,9 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
}
};
-struct TRINITY_DLL_DECL demonfireAI : public ScriptedAI
+struct TRINITY_DLL_DECL blade_of_azzinothAI : public NullCreatureAI
{
- demonfireAI(Creature *c) : ScriptedAI(c)
- {
- pInstance = ((ScriptedInstance*)c->GetInstanceData());
- Reset();
- }
-
- ScriptedInstance* pInstance;
- uint64 IllidanGUID;
- bool IsTrigger;
- bool DemonFire;
- uint32 CheckTimer;
- uint32 DespawnTimer;
-
- void Reset()
- {
- if(pInstance)
- IllidanGUID = pInstance->GetData64(DATA_ILLIDANSTORMRAGE);
- else
- IllidanGUID = 0;
-
- IsTrigger = false;
- DemonFire = false;
-
- CheckTimer = 5000;
- DespawnTimer = 78000; //spell duration, core bug, cannot despawn self
- }
-
- void Aggro(Unit *who) {}
- void AttackStart(Unit* who) {}
- void MoveInLineOfSight(Unit *who){}
-
- void UpdateAI(const uint32 diff)
- {
- if(IsTrigger)
- return;
-
- if(!DemonFire)
- DoCast(m_creature, SPELL_DEMON_FIRE); //duration 60s
-
- if(CheckTimer < diff)
- {
- GETUNIT(Illidan, IllidanGUID);
- if(!Illidan || !Illidan->HasUnitMovementFlag(MOVEMENTFLAG_LEVITATING))
- {
- m_creature->SetVisibility(VISIBILITY_OFF);
- m_creature->setDeathState(JUST_DIED);
- return;
- }else CheckTimer = 5000;
- }else CheckTimer -= diff;
-
- if(DespawnTimer < diff)
- {
- m_creature->SetVisibility(VISIBILITY_OFF);
- m_creature->setDeathState(JUST_DIED);
- }else DespawnTimer -= diff;
- }
-};
-
-struct TRINITY_DLL_DECL blade_of_azzinothAI : public ScriptedAI
-{
- blade_of_azzinothAI(Creature* c) : ScriptedAI(c) {}
- void Reset() {}
- void Aggro(Unit *who) {}
- void AttackStart(Unit* who) { }
- void MoveInLineOfSight(Unit* who) { }
+ blade_of_azzinothAI(Creature* c) : NullCreatureAI(c) {}
void SpellHit(Unit *caster, const SpellEntry *spell)
{
@@ -2060,15 +1996,14 @@ void boss_illidan_stormrageAI::CastEyeBlast()
final.x = 2 * final.x - initial.x;
final.y = 2 * final.y - initial.y;
- Creature* Trigger = m_creature->SummonCreature(DEMON_FIRE, initial.x, initial.y, initial.z, 0, TEMPSUMMON_TIMED_DESPAWN, 13000);
+ Creature* Trigger = m_creature->SummonTrigger(initial.x, initial.y, initial.z, 0, 13000);
if(!Trigger) return;
- ((demonfireAI*)Trigger->AI())->IsTrigger = true;
Trigger->SetSpeed(MOVE_WALK, 3);
Trigger->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
Trigger->GetMotionMaster()->MovePoint(0, final.x, final.y, final.z);
- Trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+ //Trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Trigger->GetGUID());
DoCast(Trigger, SPELL_EYE_BLAST);
}
@@ -2225,11 +2160,6 @@ CreatureAI* GetAI_shadow_demon(Creature *_Creature)
return new shadow_demonAI (_Creature);
}
-CreatureAI* GetAI_demonfire(Creature *_Creature)
-{
- return new demonfireAI (_Creature);
-}
-
CreatureAI* GetAI_blade_of_azzinoth(Creature *_Creature)
{
return new blade_of_azzinothAI (_Creature);
@@ -2287,11 +2217,6 @@ void AddSC_boss_illidan()
newscript->RegisterSelf();
newscript = new Script;
- newscript->Name="mob_demon_fire";
- newscript->GetAI = GetAI_demonfire;
- newscript->RegisterSelf();
-
- newscript = new Script;
newscript->Name = "mob_parasitic_shadowfiend";
newscript->GetAI = GetAI_parasitic_shadowfiend;
newscript->RegisterSelf();
diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp
index 1431be7dd51..e8797184fbc 100644
--- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp
+++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp
@@ -79,44 +79,11 @@ struct TRINITY_DLL_DECL boss_broggokAI : public ScriptedAI
}
};
-struct TRINITY_DLL_DECL mob_broggok_poisoncloudAI : public ScriptedAI
-{
- mob_broggok_poisoncloudAI(Creature *c) : ScriptedAI(c) {Reset();}
-
- bool Start;
-
- void Reset()
- {
- Start = false;
- }
-
- void Aggro(Unit* who)
- {
- }
-
- void UpdateAI(const uint32 diff)
- {
- if(!Start)
- {
- m_creature->SetUInt32Value(UNIT_NPC_FLAGS,0);
- m_creature->setFaction(45);
- m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- Start = true;
- DoCast(m_creature,SPELL_POISON);
- }
- }
-};
-
CreatureAI* GetAI_boss_broggokAI(Creature *_Creature)
{
return new boss_broggokAI (_Creature);
}
-CreatureAI* GetAI_mob_broggok_poisoncloudAI(Creature *_Creature)
-{
- return new mob_broggok_poisoncloudAI (_Creature);
-}
-
void AddSC_boss_broggok()
{
Script *newscript;
@@ -124,9 +91,4 @@ void AddSC_boss_broggok()
newscript->Name="boss_broggok";
newscript->GetAI = GetAI_boss_broggokAI;
newscript->RegisterSelf();
-
- newscript = new Script;
- newscript->Name="mob_broggok_poisoncloud";
- newscript->GetAI = GetAI_mob_broggok_poisoncloudAI;
- newscript->RegisterSelf();
}
diff --git a/src/bindings/scripts/scripts/zone/uldaman/instance_uldaman.cpp b/src/bindings/scripts/scripts/zone/uldaman/instance_uldaman.cpp
index 60776ec9c65..6ae07954950 100644
--- a/src/bindings/scripts/scripts/zone/uldaman/instance_uldaman.cpp
+++ b/src/bindings/scripts/scripts/zone/uldaman/instance_uldaman.cpp
@@ -31,58 +31,54 @@
struct TRINITY_DLL_DECL instance_uldaman : public ScriptedInstance
{
- instance_uldaman(Map *Map) : ScriptedInstance(Map) {
+ instance_uldaman(Map *map) : ScriptedInstance(map)
+ {
Initialize();
- stoneKeepersCounter = 0;
- altarOfTheKeeperCounter = 0;
- vaultWalkerCounter = 0;
- earthenGuardianCounter = 0;
- archaedasWallMinionsCounter = 0;
- whoWokeArchaedasGUID = 0;
};
+ void Initialize()
+ {
+ archaedasGUID = 0;
+ altarOfTheKeeperTempleDoor = 0;
+ archaedasTempleDoor = 0;
+ ancientVaultDoor = 0;
+ whoWokeArchaedasGUID = 0;
+ }
- Creature* archaedas;
- uint64 stoneKeeper[4];
- uint32 stoneKeepersCounter;
-
- uint64 altarOfTheKeeperCount[5];
- uint32 altarOfTheKeeperCounter;
-
- uint64 vaultWalker[4];
- uint32 vaultWalkerCounter;
-
- uint64 earthenGuardian[6];
- uint32 earthenGuardianCounter;
-
- uint64 archaedasWallMinions[100]; // minions lined up around the wall
- uint32 archaedasWallMinionsCounter;
-
- GameObject *altarOfTheKeeperTempleDoor;
- GameObject *archaedasTempleDoor;
- GameObject *ancientVaultDoor;
-
+ uint64 archaedasGUID;
+ uint64 altarOfTheKeeperTempleDoor;
+ uint64 archaedasTempleDoor;
+ uint64 ancientVaultDoor;
uint64 whoWokeArchaedasGUID;
- void OnObjectCreate (GameObject* go) {
- switch (go->GetEntry()) {
+ std::vector<uint64> stoneKeeper;
+ std::vector<uint64> altarOfTheKeeperCount;
+ std::vector<uint64> vaultWalker;
+ std::vector<uint64> earthenGuardian;
+ std::vector<uint64> archaedasWallMinions; // minions lined up around the wall
+
+ void OnObjectCreate (GameObject* go)
+ {
+ switch (go->GetEntry())
+ {
case ALTAR_OF_THE_KEEPER_TEMPLE_DOOR: // lock the door
- altarOfTheKeeperTempleDoor = go;
+ altarOfTheKeeperTempleDoor = go->GetGUID();
break;
case ARCHAEDAS_TEMPLE_DOOR:
- archaedasTempleDoor = go;
+ archaedasTempleDoor = go->GetGUID();
break;
case ANCIENT_VAULT_DOOR:
go->SetUInt32Value(GAMEOBJECT_STATE,1);
go->SetUInt32Value(GAMEOBJECT_FLAGS, 33);
- ancientVaultDoor = go;
+ ancientVaultDoor = go->GetGUID();
break;
}
}
- void SetFrozenState(Creature *creature) {
+ void SetFrozenState(Creature *creature)
+ {
creature->setFaction(35);
creature->RemoveAllAuras();
//creature->RemoveFlag (UNIT_FIELD_FLAGS,UNIT_FLAG_ANIMATION_FROZEN);
@@ -90,121 +86,137 @@ struct TRINITY_DLL_DECL instance_uldaman : public ScriptedInstance
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
}
- void OpenDoor (GameObject *go) {
- if (!go) return;
+ void OpenDoor(uint64 guid)
+ {
+ GameObject *go = instance->GetGameObjectInMap(guid);
+ if(!go)
+ return;
+
go->SetUInt32Value(GAMEOBJECT_FLAGS, 33);
go->SetUInt32Value(GAMEOBJECT_STATE, 0);
}
-
-
- void ActivateStoneKeepers() {
- Creature *target;
- uint32 counter = stoneKeepersCounter;
- // error_log ("ActivateStoneKeepers");
- // error_log ("counter = %d", counter);
- for (; counter>0; ) {
- target = (Creature *) Unit::GetUnit(*archaedas,stoneKeeper[--counter]);
- if (!target || !target->isAlive() || target->getFaction()==14) continue;
- target->RemoveFlag (UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE);
+ void ActivateStoneKeepers()
+ {
+ for(std::vector<uint64>::iterator i = stoneKeeper.begin(); i != stoneKeeper.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (!target || !target->isAlive() || target->getFaction()==14)
+ continue;
+ target->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_DISABLE_MOVE);
target->setFaction(14);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
return; // only want the first one we find
}
- // error_log ("opening doors");
// if we get this far than all four are dead so open the door
SetData (NULL, 0);
}
- void ActivateWallMinions() {
- Creature *target;
- uint32 counter = archaedasWallMinionsCounter;
- for (; counter>0; ) {
- target = (Creature *) Unit::GetUnit(*archaedas,archaedasWallMinions[--counter]);
- if (!target || !target->isAlive() || target->getFaction()==14) continue;
- archaedas->CastSpell (target, SPELL_AWAKEN_VAULT_WALKER, true);
+ void ActivateWallMinions()
+ {
+ Creature *archaedas = instance->GetCreatureInMap(archaedasGUID);
+ if(!archaedas)
+ return;
+
+ for(std::vector<uint64>::iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (!target || !target->isAlive() || target->getFaction()==14)
+ continue;
+ archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true);
target->CastSpell(target, SPELL_ARCHAEDAS_AWAKEN,true);
return; // only want the first one we find
}
}
// used when Archaedas dies. All active minions must be despawned.
- void DeActivateMinions() {
- Creature *target;
- uint32 counter = archaedasWallMinionsCounter;
-
+ void DeActivateMinions()
+ {
// first despawn any aggroed wall minions
- for (; counter>0; ) {
- target = (Creature *) Unit::GetUnit(*archaedas,archaedasWallMinions[--counter]);
- if (!target || target->isDead() || target->getFaction()!=14) continue;
- target->RemoveFromWorld();
- target->AI()->EnterEvadeMode(); // need this b/c it still attacks even when removed
+ for(std::vector<uint64>::iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (!target || target->isDead() || target->getFaction()!=14)
+ continue;
+ target->setDeathState(JUST_DIED);
+ target->RemoveCorpse();
}
// Vault Walkers
- for (counter=0; counter<4; counter++) {
- target = (Creature *) Unit::GetUnit(*archaedas,vaultWalker[counter]);
- if (!target || target->isDead() || target->getFaction() != 14) continue;
- target->RemoveFromWorld();
- target->AI()->EnterEvadeMode(); // need this b/c it sill attacks even when removed
+ for(std::vector<uint64>::iterator i = vaultWalker.begin(); i != vaultWalker.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (!target || target->isDead() || target->getFaction()!=14)
+ continue;
+ target->setDeathState(JUST_DIED);
+ target->RemoveCorpse();
}
// Earthen Guardians
- for (counter=0; counter<6; counter++) {
- target = (Creature *) Unit::GetUnit(*archaedas,earthenGuardian[counter]);
- if (!target || target->isDead() || target->getFaction() != 14) continue;
- target->RemoveFromWorld();
- target->AI()->EnterEvadeMode(); // need this b/c it sill attacks even when removed
+ for(std::vector<uint64>::iterator i = earthenGuardian.begin(); i != earthenGuardian.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (!target || target->isDead() || target->getFaction()!=14)
+ continue;
+ target->setDeathState(JUST_DIED);
+ target->RemoveCorpse();
}
}
- void ActivateArchaedas(uint64 target) {
-
- Unit *victim = Unit::GetUnit(*archaedas, target);
- archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN,false);
- whoWokeArchaedasGUID = target;
+ void ActivateArchaedas(uint64 target)
+ {
+ Creature *archaedas = instance->GetCreatureInMap(archaedasGUID);
+ if(!archaedas)
+ return;
+
+ if(Unit *victim = Unit::GetUnit(*archaedas, target))
+ {
+ archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN,false);
+ whoWokeArchaedasGUID = target;
+ }
}
- void RespawnMinions() {
- Creature *target;
- uint32 counter = archaedasWallMinionsCounter;
-
- // first respawn any wall minions
- for (; counter>0; ) {
- target = (Creature *) Unit::GetUnit(*archaedas,archaedasWallMinions[--counter]);
- if (target && target->isDead()) {
+ void RespawnMinions()
+ {
+ // first respawn any aggroed wall minions
+ for(std::vector<uint64>::iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (target && target->isDead())
+ {
target->Respawn();
target->GetMotionMaster()->MoveTargetedHome();
- //target->AI()->EnterEvadeMode();
SetFrozenState(target);
}
}
// Vault Walkers
- for (counter=0; counter<4; counter++) {
- target = (Creature *) Unit::GetUnit(*archaedas,vaultWalker[counter]);
- if (target && target->isDead()) {
+ for(std::vector<uint64>::iterator i = vaultWalker.begin(); i != vaultWalker.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (target && target->isDead())
+ {
target->Respawn();
target->GetMotionMaster()->MoveTargetedHome();
- // target->AI()->EnterEvadeMode();
SetFrozenState(target);
}
}
// Earthen Guardians
- for (counter=0; counter<6; counter++) {
- target = (Creature *) Unit::GetUnit(*archaedas,earthenGuardian[counter]);
- if (target && target->isDead()) {
+ for(std::vector<uint64>::iterator i = earthenGuardian.begin(); i != earthenGuardian.end(); ++i)
+ {
+ Creature *target = instance->GetCreatureInMap(*i);
+ if (target && target->isDead())
+ {
target->Respawn();
target->GetMotionMaster()->MoveTargetedHome();
- //target->AI()->EnterEvadeMode();
SetFrozenState(target);
}
}
-
}
- void SetData (uint32 type, uint32 data) {
+ void SetData (uint32 type, uint32 data)
+ {
//error_log ("SetData: data = %d", data);
if (data==0) OpenDoor (altarOfTheKeeperTempleDoor);
if (data==0) OpenDoor (archaedasTempleDoor);
@@ -216,8 +228,11 @@ struct TRINITY_DLL_DECL instance_uldaman : public ScriptedInstance
}
- void SetData64 (uint32 type, uint64 data) {
- if (type==0 ) { // Archaedas
+ void SetData64 (uint32 type, uint64 data)
+ {
+ // Archaedas
+ if (type==0 )
+ {
ActivateArchaedas (data);
}
}
@@ -228,33 +243,34 @@ struct TRINITY_DLL_DECL instance_uldaman : public ScriptedInstance
switch (creature_entry) {
case 4857: // Stone Keeper
SetFrozenState (creature);
- stoneKeeper[stoneKeepersCounter++] = creature->GetGUID();
+ stoneKeeper.push_back(creature->GetGUID());
break;
case 7309: // Earthen Custodian
- archaedasWallMinions[archaedasWallMinionsCounter++] = creature->GetGUID();
+ archaedasWallMinions.push_back(creature->GetGUID());
break;
case 7077: // Earthen Hallshaper
- archaedasWallMinions[archaedasWallMinionsCounter++] = creature->GetGUID();
+ archaedasWallMinions.push_back(creature->GetGUID());
break;
case 7076: // Earthen Guardian
- earthenGuardian[earthenGuardianCounter++] = creature->GetGUID();
+ earthenGuardian.push_back(creature->GetGUID());
break;
case 10120: // Vault Walker
- vaultWalker[vaultWalkerCounter++] = creature->GetGUID();
+ vaultWalker.push_back(creature->GetGUID());
break;
case 2748: // Archaedas
- archaedas = creature;
+ archaedasGUID = creature->GetGUID();
break;
} // end switch
} // end OnCreatureCreate
- uint64 GetData64 (uint32 identifier) {
+ uint64 GetData64 (uint32 identifier)
+ {
if (identifier == 0) return whoWokeArchaedasGUID;
if (identifier == 1) return vaultWalker[0]; // VaultWalker1
if (identifier == 2) return vaultWalker[1]; // VaultWalker2
@@ -270,7 +286,6 @@ struct TRINITY_DLL_DECL instance_uldaman : public ScriptedInstance
return 0;
} // end GetData64
-
};
diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp
index 8f4b4b8d942..0833cf0dfec 100644
--- a/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp
+++ b/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp
@@ -25,7 +25,6 @@ EndScriptData */
#include "precompiled.h"
#include "def_zulaman.h"
-#include "Spell.h"
#include "Weather.h"
#define SPELL_STATIC_DISRUPTION 43622
@@ -34,6 +33,7 @@ EndScriptData */
#define SPELL_GUST_OF_WIND 43621
#define SPELL_ELECTRICAL_STORM 43648
#define SPELL_BERSERK 45078
+#define SPELL_ELECTRICAL_DAMAGE 43657
#define SPELL_ELECTRICAL_OVERLOAD 43658
#define SPELL_EAGLE_SWOOP 44732
@@ -57,15 +57,13 @@ EndScriptData */
#define SE_LOC_Y_MAX 1435
#define SE_LOC_Y_MIN 1370
-#define MOB_TEMP_TRIGGER 23920
-
struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
{
boss_akilzonAI(Creature *c) : ScriptedAI(c)
{
- SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_ELECTRICAL_STORM);
+ SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_ELECTRICAL_DAMAGE);
if(TempSpell)
- TempSpell->Effect[1] = 0;//disable bugged lightning until fixed in core
+ TempSpell->EffectBasePoints[1] = 49;//disable bugged lightning until fixed in core
pInstance = ((ScriptedInstance*)c->GetInstanceData());
Reset();
}
@@ -214,7 +212,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
{
x = 343+rand()%60;
y = 1380+rand()%60;
- if(Unit *trigger = m_creature->SummonCreature(MOB_TEMP_TRIGGER, x, y, z, 0, TEMPSUMMON_TIMED_DESPAWN, 2000))
+ if(Unit *trigger = m_creature->SummonTrigger(x, y, z, 0, 2000))
{
trigger->setFaction(35);
trigger->SetMaxHealth(100000);
@@ -315,7 +313,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
target->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
target->SendMonsterMove(x,y,m_creature->GetPositionZ()+15,0,0,0);
}
- Unit *Cloud = m_creature->SummonCreature(MOB_TEMP_TRIGGER, x, y, m_creature->GetPositionZ()+16, 0, TEMPSUMMON_TIMED_DESPAWN, 15000);
+ Unit *Cloud = m_creature->SummonTrigger(x, y, m_creature->GetPositionZ()+16, 0, 15000);
if(Cloud)
{
CloudGUID = Cloud->GetGUID();
diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp
index cc176127282..7b0feb4e265 100644
--- a/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp
+++ b/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp
@@ -226,9 +226,9 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
for(uint8 j = 0; j < WallNum; j++)
{
if(WallNum == 3)
- wall = m_creature->SummonCreature(MOB_FIRE_BOMB, FireWallCoords[i][0],FireWallCoords[i][1]+5*(j-1),FireWallCoords[i][2],FireWallCoords[i][3],TEMPSUMMON_TIMED_DESPAWN,15000);
+ wall = m_creature->SummonTrigger(FireWallCoords[i][0],FireWallCoords[i][1]+5*(j-1),FireWallCoords[i][2],FireWallCoords[i][3],15000);
else
- wall = m_creature->SummonCreature(MOB_FIRE_BOMB, FireWallCoords[i][0]-2+4*j,FireWallCoords[i][1],FireWallCoords[i][2],FireWallCoords[i][3],TEMPSUMMON_TIMED_DESPAWN,15000);
+ wall = m_creature->SummonTrigger(FireWallCoords[i][0]-2+4*j,FireWallCoords[i][1],FireWallCoords[i][2],FireWallCoords[i][3],15000);
if(wall) wall->CastSpell(wall, SPELL_FIRE_WALL, true);
}
}
@@ -683,14 +683,9 @@ CreatureAI* GetAI_mob_hatchlingAI(Creature *_Creature)
return new mob_hatchlingAI(_Creature);
}
-struct TRINITY_DLL_DECL mob_eggAI : public ScriptedAI
+struct TRINITY_DLL_DECL mob_eggAI : public NullCreatureAI
{
- mob_eggAI(Creature *c) : ScriptedAI(c){}
- void Reset() {}
- void Aggro(Unit* who) {}
- void AttackStart(Unit* who) {}
- void MoveInLineOfSight(Unit* who) {}
- void UpdateAI(const uint32 diff) {}
+ mob_eggAI(Creature *c) : NullCreatureAI(c){}
void SpellHit(Unit *caster, const SpellEntry *spell)
{
diff --git a/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp b/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp
index 2313af09831..ade7af821f5 100644
--- a/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp
+++ b/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp
@@ -546,23 +546,15 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
if(Pillar_Of_Fire_Timer < diff)
{
if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
- {
- float x, y, z;
- target->GetPosition(x, y, z);
- Creature* Pillar = m_creature->SummonCreature(CREATURE_COLUMN_OF_FIRE, x, y, z, 0, TEMPSUMMON_TIMED_DESPAWN, 30000);
- if(Pillar)
- {
- Pillar->CastSpell(Pillar, SPELL_PILLAR_TRIGGER, true);
- Pillar->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- }
- }
+ DoCast(target, SPELL_SUMMON_PILLAR);
Pillar_Of_Fire_Timer = 10000;
}else Pillar_Of_Fire_Timer -= diff;
if(Flame_Breath_Timer < diff)
{
if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
- m_creature->CastSpell(m_creature, SPELL_FLAME_BREATH, false);
+ m_creature->SetInFront(target);
+ DoCast(m_creature, SPELL_FLAME_BREATH);
Flame_Breath_Timer = 10000;
}else Flame_Breath_Timer -= diff;
break;
@@ -581,21 +573,6 @@ CreatureAI* GetAI_boss_zuljin(Creature *_Creature)
return new boss_zuljinAI (_Creature);
}
-struct TRINITY_DLL_DECL do_nothingAI : public ScriptedAI
-{
- do_nothingAI(Creature *c) : ScriptedAI(c) {}
- void Reset() {}
- void Aggro(Unit* who) {}
- void AttackStart(Unit* who) {}
- void MoveInLineOfSight(Unit* who) {}
- void UpdateAI(const uint32 diff) {}
-};
-
-CreatureAI* GetAI_do_nothing(Creature *_Creature)
-{
- return new do_nothingAI (_Creature);
-}
-
struct TRINITY_DLL_DECL feather_vortexAI : public ScriptedAI
{
feather_vortexAI(Creature *c) : ScriptedAI(c) {}
@@ -632,11 +609,6 @@ void AddSC_boss_zuljin()
newscript->RegisterSelf();
newscript = new Script;
- newscript->Name="do_nothing";
- newscript->GetAI = GetAI_do_nothing;
- newscript->RegisterSelf();
-
- newscript = new Script;
newscript->Name="mob_zuljin_vortex";
newscript->GetAI = GetAI_feather_vortexAI;
newscript->RegisterSelf();