* Last round of script directory renames.

--HG--
branch : trunk
This commit is contained in:
XTZGZoReX
2010-06-07 01:11:15 +02:00
parent dc510c9a14
commit f151ffbd32
159 changed files with 0 additions and 0 deletions
@@ -0,0 +1,414 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* ScriptData
SDName: Boss_Darkweaver_Syth
SD%Complete: 85
SDComment: Shock spells/times need more work. Heroic partly implemented.
SDCategory: Auchindoun, Sethekk Halls
EndScriptData */
#include "ScriptedPch.h"
#define SAY_SUMMON -1556000
#define SAY_AGGRO_1 -1556001
#define SAY_AGGRO_2 -1556002
#define SAY_AGGRO_3 -1556003
#define SAY_SLAY_1 -1556004
#define SAY_SLAY_2 -1556005
#define SAY_DEATH -1556006
#define SPELL_FROST_SHOCK 21401 //37865
#define SPELL_FLAME_SHOCK 34354
#define SPELL_SHADOW_SHOCK 30138
#define SPELL_ARCANE_SHOCK 37132
#define SPELL_CHAIN_LIGHTNING 15659 //15305
#define SPELL_SUMMON_SYTH_FIRE 33537 // Spawns 19203
#define SPELL_SUMMON_SYTH_ARCANE 33538 // Spawns 19205
#define SPELL_SUMMON_SYTH_FROST 33539 // Spawns 19204
#define SPELL_SUMMON_SYTH_SHADOW 33540 // Spawns 19206
#define SPELL_FLAME_BUFFET DUNGEON_MODE(33526, 38141)
#define SPELL_ARCANE_BUFFET DUNGEON_MODE(33527, 38138)
#define SPELL_FROST_BUFFET DUNGEON_MODE(33528, 38142)
#define SPELL_SHADOW_BUFFET DUNGEON_MODE(33529, 38143)
struct boss_darkweaver_sythAI : public ScriptedAI
{
boss_darkweaver_sythAI(Creature *c) : ScriptedAI(c)
{
}
uint32 flameshock_timer;
uint32 arcaneshock_timer;
uint32 frostshock_timer;
uint32 shadowshock_timer;
uint32 chainlightning_timer;
bool summon90;
bool summon50;
bool summon10;
void Reset()
{
flameshock_timer = 2000;
arcaneshock_timer = 4000;
frostshock_timer = 6000;
shadowshock_timer = 8000;
chainlightning_timer = 15000;
summon90 = false;
summon50 = false;
summon10 = false;
}
void EnterCombat(Unit * /*who*/)
{
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2,SAY_AGGRO_3), me);
}
void JustDied(Unit* /*Killer*/)
{
DoScriptText(SAY_DEATH, me);
}
void KilledUnit(Unit* /*victim*/)
{
if (rand()%2)
return;
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
}
void JustSummoned(Creature *summoned)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
summoned->AI()->AttackStart(pTarget);
}
void SythSummoning()
{
DoScriptText(SAY_SUMMON, me);
if (me->IsNonMeleeSpellCasted(false))
me->InterruptNonMeleeSpells(false);
DoCast(me, SPELL_SUMMON_SYTH_ARCANE, true); //front
DoCast(me, SPELL_SUMMON_SYTH_FIRE, true); //back
DoCast(me, SPELL_SUMMON_SYTH_FROST, true); //left
DoCast(me, SPELL_SUMMON_SYTH_SHADOW, true); //right
}
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (((me->GetHealth()*100) / me->GetMaxHealth() < 90) && !summon90)
{
SythSummoning();
summon90 = true;
}
if (((me->GetHealth()*100) / me->GetMaxHealth() < 50) && !summon50)
{
SythSummoning();
summon50 = true;
}
if (((me->GetHealth()*100) / me->GetMaxHealth() < 10) && !summon10)
{
SythSummoning();
summon10 = true;
}
if (flameshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_FLAME_SHOCK);
flameshock_timer = 10000 + rand()%5000;
} else flameshock_timer -= diff;
if (arcaneshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_ARCANE_SHOCK);
arcaneshock_timer = 10000 + rand()%5000;
} else arcaneshock_timer -= diff;
if (frostshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_FROST_SHOCK);
frostshock_timer = 10000 + rand()%5000;
} else frostshock_timer -= diff;
if (shadowshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_SHADOW_SHOCK);
shadowshock_timer = 10000 + rand()%5000;
} else shadowshock_timer -= diff;
if (chainlightning_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_CHAIN_LIGHTNING);
chainlightning_timer = 25000;
} else chainlightning_timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_boss_darkweaver_syth(Creature* pCreature)
{
return new boss_darkweaver_sythAI (pCreature);
}
/* ELEMENTALS */
struct mob_syth_fireAI : public ScriptedAI
{
mob_syth_fireAI(Creature *c) : ScriptedAI(c)
{
}
uint32 flameshock_timer;
uint32 flamebuffet_timer;
void Reset()
{
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
flameshock_timer = 2500;
flamebuffet_timer = 5000;
}
void EnterCombat(Unit * /*who*/) { }
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (flameshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_FLAME_SHOCK);
flameshock_timer = 5000;
} else flameshock_timer -= diff;
if (flamebuffet_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_FLAME_BUFFET);
flamebuffet_timer = 5000;
} else flamebuffet_timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_mob_syth_fire(Creature* pCreature)
{
return new mob_syth_fireAI (pCreature);
}
struct mob_syth_arcaneAI : public ScriptedAI
{
mob_syth_arcaneAI(Creature *c) : ScriptedAI(c)
{
}
uint32 arcaneshock_timer;
uint32 arcanebuffet_timer;
void Reset()
{
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, true);
arcaneshock_timer = 2500;
arcanebuffet_timer = 5000;
}
void EnterCombat(Unit * /*who*/) { }
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (arcaneshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_ARCANE_SHOCK);
arcaneshock_timer = 5000;
} else arcaneshock_timer -= diff;
if (arcanebuffet_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_ARCANE_BUFFET);
arcanebuffet_timer = 5000;
} else arcanebuffet_timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_mob_syth_arcane(Creature* pCreature)
{
return new mob_syth_arcaneAI (pCreature);
}
struct mob_syth_frostAI : public ScriptedAI
{
mob_syth_frostAI(Creature *c) : ScriptedAI(c)
{
}
uint32 frostshock_timer;
uint32 frostbuffet_timer;
void Reset()
{
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
frostshock_timer = 2500;
frostbuffet_timer = 5000;
}
void EnterCombat(Unit * /*who*/) { }
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (frostshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_FROST_SHOCK);
frostshock_timer = 5000;
} else frostshock_timer -= diff;
if (frostbuffet_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_FROST_BUFFET);
frostbuffet_timer = 5000;
} else frostbuffet_timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_mob_syth_frost(Creature* pCreature)
{
return new mob_syth_frostAI (pCreature);
}
struct mob_syth_shadowAI : public ScriptedAI
{
mob_syth_shadowAI(Creature *c) : ScriptedAI(c)
{
}
uint32 shadowshock_timer;
uint32 shadowbuffet_timer;
void Reset()
{
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
shadowshock_timer = 2500;
shadowbuffet_timer = 5000;
}
void EnterCombat(Unit * /*who*/) { }
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (shadowshock_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_SHADOW_SHOCK);
shadowshock_timer = 5000;
} else shadowshock_timer -= diff;
if (shadowbuffet_timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_SHADOW_BUFFET);
shadowbuffet_timer = 5000;
} else shadowbuffet_timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_mob_syth_shadow(Creature* pCreature)
{
return new mob_syth_shadowAI (pCreature);
}
void AddSC_boss_darkweaver_syth()
{
Script *newscript;
newscript = new Script;
newscript->Name = "boss_darkweaver_syth";
newscript->GetAI = &GetAI_boss_darkweaver_syth;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_syth_fire";
newscript->GetAI = &GetAI_mob_syth_arcane;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_syth_arcane";
newscript->GetAI = &GetAI_mob_syth_arcane;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_syth_frost";
newscript->GetAI = &GetAI_mob_syth_frost;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_syth_shadow";
newscript->GetAI = &GetAI_mob_syth_shadow;
newscript->RegisterSelf();
}
@@ -0,0 +1,213 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* ScriptData
SDName: Boss_Talon_King_Ikiss
SD%Complete: 80
SDComment: Heroic supported. Some details missing, but most are spell related.
SDCategory: Auchindoun, Sethekk Halls
EndScriptData */
#include "ScriptedPch.h"
#include "sethekk_halls.h"
#define SAY_INTRO -1556007
#define SAY_AGGRO_1 -1556008
#define SAY_AGGRO_2 -1556009
#define SAY_AGGRO_3 -1556010
#define SAY_SLAY_1 -1556011
#define SAY_SLAY_2 -1556012
#define SAY_DEATH -1556013
#define EMOTE_ARCANE_EXP -1556015
#define SPELL_BLINK 38194
#define SPELL_BLINK_TELEPORT 38203
#define SPELL_MANA_SHIELD 38151
#define SPELL_ARCANE_BUBBLE 9438
#define H_SPELL_SLOW 35032
#define SPELL_POLYMORPH 38245
#define H_SPELL_POLYMORPH 43309
#define SPELL_ARCANE_VOLLEY 35059
#define H_SPELL_ARCANE_VOLLEY 40424
#define SPELL_ARCANE_EXPLOSION 38197
#define H_SPELL_ARCANE_EXPLOSION 40425
struct boss_talon_king_ikissAI : public ScriptedAI
{
boss_talon_king_ikissAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
uint32 ArcaneVolley_Timer;
uint32 Sheep_Timer;
uint32 Blink_Timer;
uint32 Slow_Timer;
bool ManaShield;
bool Blink;
bool Intro;
void Reset()
{
ArcaneVolley_Timer = 5000;
Sheep_Timer = 8000;
Blink_Timer = 35000;
Slow_Timer = 15000+rand()%15000;
Blink = false;
Intro = false;
ManaShield = false;
}
void MoveInLineOfSight(Unit *who)
{
if (!me->getVictim() && who->isTargetableForAttack() && (me->IsHostileTo(who)) && who->isInAccessiblePlaceFor(me))
{
if (!Intro && me->IsWithinDistInMap(who, 100))
{
Intro = true;
DoScriptText(SAY_INTRO, me);
}
if (!me->canFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
return;
float attackRadius = me->GetAttackDistance(who);
if (me->IsWithinDistInMap(who, attackRadius) && me->IsWithinLOSInMap(who))
{
//who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
AttackStart(who);
}
}
}
void EnterCombat(Unit * /*who*/)
{
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2,SAY_AGGRO_3), me);
}
void JustDied(Unit* /*Killer*/)
{
DoScriptText(SAY_DEATH, me);
if (pInstance)
pInstance->SetData(DATA_IKISSDOOREVENT, DONE);
}
void KilledUnit(Unit* /*victim*/)
{
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
}
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (Blink)
{
DoCast(me, SPELL_ARCANE_EXPLOSION);
DoCast(me, SPELL_ARCANE_BUBBLE, true);
Blink = false;
}
if (ArcaneVolley_Timer <= diff)
{
DoCast(me, SPELL_ARCANE_VOLLEY);
ArcaneVolley_Timer = 7000+rand()%5000;
} else ArcaneVolley_Timer -= diff;
if (Sheep_Timer <= diff)
{
Unit *pTarget;
//second top aggro target in normal, random target in heroic correct?
if (IsHeroic())
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
else
pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
if (pTarget)
DoCast(pTarget, SPELL_POLYMORPH);
Sheep_Timer = 15000+rand()%2500;
} else Sheep_Timer -= diff;
//may not be correct time to cast
if (!ManaShield && ((me->GetHealth()*100) / me->GetMaxHealth() < 20))
{
DoCast(me, SPELL_MANA_SHIELD);
ManaShield = true;
}
if (IsHeroic())
{
if (Slow_Timer <= diff)
{
DoCast(me, H_SPELL_SLOW);
Slow_Timer = 15000+rand()%25000;
} else Slow_Timer -= diff;
}
if (Blink_Timer <= diff)
{
DoScriptText(EMOTE_ARCANE_EXP, me);
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
{
if (me->IsNonMeleeSpellCasted(false))
me->InterruptNonMeleeSpells(false);
//Spell doesn't work, but we use for visual effect at least
DoCast(pTarget, SPELL_BLINK);
float X = pTarget->GetPositionX();
float Y = pTarget->GetPositionY();
float Z = pTarget->GetPositionZ();
DoTeleportTo(X,Y,Z);
DoCast(pTarget, SPELL_BLINK_TELEPORT);
Blink = true;
}
Blink_Timer = 35000+rand()%5000;
} else Blink_Timer -= diff;
if (!Blink)
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_boss_talon_king_ikiss(Creature* pCreature)
{
return new boss_talon_king_ikissAI (pCreature);
}
void AddSC_boss_talon_king_ikiss()
{
Script *newscript;
newscript = new Script;
newscript->Name = "boss_talon_king_ikiss";
newscript->GetAI = &GetAI_boss_talon_king_ikiss;
newscript->RegisterSelf();
}
@@ -0,0 +1,91 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* ScriptData
SDName: Instance - Sethekk Halls
SD%Complete: 50
SDComment: Instance Data for Sethekk Halls instance
SDCategory: Auchindoun, Sethekk Halls
EndScriptData */
#include "ScriptedPch.h"
#include "sethekk_halls.h"
enum eEnums
{
NPC_ANZU = 23035,
IKISS_DOOR = 177203,
};
struct instance_sethekk_halls : public ScriptedInstance
{
instance_sethekk_halls(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
uint32 AnzuEncounter;
uint64 m_uiIkissDoorGUID;
void Initialize()
{
AnzuEncounter = NOT_STARTED;
m_uiIkissDoorGUID = 0;
}
void OnCreatureCreate(Creature* pCreature, bool /*add*/)
{
if (pCreature->GetEntry() == NPC_ANZU)
{
if (AnzuEncounter >= IN_PROGRESS)
pCreature->DisappearAndDie();
else
AnzuEncounter = IN_PROGRESS;
}
}
void OnGameObjectCreate(GameObject* pGo, bool /*add*/)
{
if (pGo->GetEntry() == IKISS_DOOR)
m_uiIkissDoorGUID = pGo->GetGUID();
}
void SetData(uint32 type, uint32 data)
{
switch(type)
{
case DATA_IKISSDOOREVENT:
if (data == DONE)
DoUseDoorOrButton(m_uiIkissDoorGUID,DAY*IN_MILISECONDS);
break;
case TYPE_ANZU_ENCOUNTER:
AnzuEncounter = data;
break;
}
}
};
InstanceData* GetInstanceData_instance_sethekk_halls(Map* pMap)
{
return new instance_sethekk_halls(pMap);
}
void AddSC_instance_sethekk_halls()
{
Script *newscript;
newscript = new Script;
newscript->Name = "instance_sethekk_halls";
newscript->GetInstanceData = &GetInstanceData_instance_sethekk_halls;
newscript->RegisterSelf();
}
@@ -0,0 +1,14 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
* This program is free software licensed under GPL version 2
* Please see the included DOCS/LICENSE.TXT for more information */
#ifndef DEF_SETHEKK_HALLS_H
#define DEF_SETHEKK_HALLS_H
enum eTypes
{
DATA_IKISSDOOREVENT = 1,
TYPE_ANZU_ENCOUNTER = 2,
};
#endif