Violet Hold: Blizzliker portals (merge from ckegg's SD2 patch)

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-12-09 12:02:47 +01:00
parent 5ecc2983f8
commit ec5882a8d5
5 changed files with 53 additions and 24 deletions
@@ -38,7 +38,7 @@ enum Spells
SPELL_SPLASH = 59516, SPELL_SPLASH = 59516,
}; };
enum Creatures enum IchoronCreatures
{ {
NPC_ICHOR_GLOBULE = 29321, NPC_ICHOR_GLOBULE = 29321,
}; };
@@ -20,7 +20,7 @@ enum Spells
H_SPELL_ZUMARAT_ADD_2 = 59747 H_SPELL_ZUMARAT_ADD_2 = 59747
}; };
enum Creatures enum ZuramatCreatures
{ {
CREATURE_VOID_SENTRY = 29364 CREATURE_VOID_SENTRY = 29364
}; };
@@ -16,19 +16,6 @@
4 - Xevozz 4 - Xevozz
5 - Zuramat 5 - Zuramat
6 - Cyanigosa */ 6 - Cyanigosa */
enum Creatures
{
CREATURE_TELEPORTATION_PORTAL = 31011,
CREATURE_XEVOZZ = 29266,
CREATURE_LAVANTHOR = 29312,
CREATURE_ICHORON = 29313,
CREATURE_ZURAMAT = 29314,
CREATURE_EREKEM = 29315,
CREATURE_EREKEM_GUARD = 29395,
CREATURE_MORAGG = 29316,
CREATURE_CYANIGOSA = 31134,
CREATURE_SINCLARI = 30658
};
enum GameObjects enum GameObjects
{ {
GO_MAIN_DOOR = 191723, GO_MAIN_DOOR = 191723,
@@ -43,6 +30,10 @@ enum GameObjects
GO_INTRO_ACTIVATION_CRYSTAL = 193615, GO_INTRO_ACTIVATION_CRYSTAL = 193615,
GO_ACTIVATION_CRYSTAL = 193611 GO_ACTIVATION_CRYSTAL = 193611
}; };
enum Spells
{
SPELL_PORTAL_CHANNEL = 58012
};
struct Location struct Location
{ {
float x,y,z,orientation; float x,y,z,orientation;
@@ -259,13 +250,20 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
Creature *pSinclari = instance->GetCreature(uiSinclari); Creature *pSinclari = instance->GetCreature(uiSinclari);
if (pSinclari) if (pSinclari)
{ {
pSinclari->SummonCreature(CREATURE_TELEPORTATION_PORTAL,PortalLocation[uiLocation].x,PortalLocation[uiLocation].y, if (Creature *pPortal = pSinclari->SummonCreature(CREATURE_TELEPORTATION_PORTAL,PortalLocation[uiLocation].x,PortalLocation[uiLocation].y,
PortalLocation[uiLocation].z,PortalLocation[uiLocation].orientation, PortalLocation[uiLocation].z,PortalLocation[uiLocation].orientation,
TEMPSUMMON_CORPSE_TIMED_DESPAWN,900000); TEMPSUMMON_CORPSE_TIMED_DESPAWN,900000))
{
uint32 entry = urand(0, 1) ? CREATURE_PORTAL_GUARDIAN : CREATURE_PORTAL_KEEPER;
if (Creature *pPortalKeeper = pPortal->SummonCreature(entry,PortalLocation[uiLocation].x, PortalLocation[uiLocation].y,
PortalLocation[uiLocation].z, PortalLocation[uiLocation].orientation,
TEMPSUMMON_CORPSE_TIMED_DESPAWN,900000))
pPortal->CastSpell(pPortalKeeper, SPELL_PORTAL_CHANNEL,false);
uiLocation = (++uiLocation)%3; uiLocation = (++uiLocation)%3;
} }
} }
} }
}
break; break;
} }
} }
@@ -3,15 +3,18 @@
#define GOSSIP_START_EVENT "[PH]: Start Event" #define GOSSIP_START_EVENT "[PH]: Start Event"
#define NEXT_WAVE_TIME 90000 #define NEXT_WAVE_TIME 90000
#define SPAWN_TIME 9000 #define SPAWN_TIME 15000
enum Creatures enum PortalCreatures
{ {
CREATURE_AZURE_INVADER = 30661, CREATURE_AZURE_INVADER = 30661,
CREATURE_AZURE_SPELLBREAKER = 30662, CREATURE_AZURE_SPELLBREAKER = 30662,
CREATURE_AZURE_BINDER = 30663, CREATURE_AZURE_BINDER = 30663,
CREATURE_AZURE_MAGE_SLAYER = 30664, CREATURE_AZURE_MAGE_SLAYER = 30664,
CREATURE_AZURE_CAPTAIN = 30666 CREATURE_AZURE_CAPTAIN = 30666,
CREATURE_AZURE_SORCEROR = 30667,
CREATURE_AZURE_RAIDER = 30668,
CREATURE_AZURE_STALKER = 32191
}; };
bool GossipHello_npc_sinclari(Player* pPlayer, Creature* pCreature) bool GossipHello_npc_sinclari(Player* pPlayer, Creature* pCreature)
@@ -58,15 +61,27 @@ struct TRINITY_DLL_DECL npc_teleportation_portalAI : public ScriptedAI
{ {
if (uiSpawnTimer <= diff) if (uiSpawnTimer <= diff)
{ {
if (Creature* pSummon = m_creature->SummonCreature(RAND(CREATURE_AZURE_CAPTAIN,CREATURE_AZURE_SPELLBREAKER, for (uint8 i = 0; i < pInstance->GetData(DATA_WAVE_COUNT) < 12 ? 3 : 4; ++i)
CREATURE_AZURE_BINDER,CREATURE_AZURE_MAGE_SLAYER,CREATURE_AZURE_CAPTAIN), {
if (Creature* pSummon = m_creature->SummonCreature(RAND(CREATURE_AZURE_CAPTAIN,CREATURE_AZURE_RAIDER,CREATURE_AZURE_STALKER,CREATURE_AZURE_SORCEROR),
m_creature->GetPositionX()+urand(0,2), m_creature->GetPositionY()+urand(0,2), m_creature->GetPositionX()+urand(0,2), m_creature->GetPositionY()+urand(0,2),
m_creature->GetPositionZ(),m_creature->GetOrientation(), m_creature->GetPositionZ(),m_creature->GetOrientation(),
TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000)) TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
pSummon->Attack(pSummon->SelectNearestTarget(100),true); if (Creature* pTarget = GetClosestCreatureWithEntry(m_creature, CREATURE_SINCLARI, 150.0f))
{
pSummon->Attack(pTarget, true);
}
}
uiSpawnTimer = SPAWN_TIME; uiSpawnTimer = SPAWN_TIME;
} else uiSpawnTimer -= diff; } else uiSpawnTimer -= diff;
if (!m_creature->IsNonMeleeSpellCasted(false))
{
m_creature->Kill(m_creature, false);
m_creature->RemoveCorpse();
return;
}
if (uiDespawnTimer <= diff) if (uiDespawnTimer <= diff)
{ {
m_creature->Kill(m_creature, false); m_creature->Kill(m_creature, false);
@@ -1,6 +1,22 @@
#ifndef DEF_VIOLET_HOLD_H #ifndef DEF_VIOLET_HOLD_H
#define DEF_VIOLET_HOLD_H #define DEF_VIOLET_HOLD_H
enum Creatures
{
CREATURE_TELEPORTATION_PORTAL = 31011,
CREATURE_PORTAL_GUARDIAN = 30660,
CREATURE_PORTAL_KEEPER = 30695,
CREATURE_XEVOZZ = 29266,
CREATURE_LAVANTHOR = 29312,
CREATURE_ICHORON = 29313,
CREATURE_ZURAMAT = 29314,
CREATURE_EREKEM = 29315,
CREATURE_EREKEM_GUARD = 29395,
CREATURE_MORAGG = 29316,
CREATURE_CYANIGOSA = 31134,
CREATURE_SINCLARI = 30658
};
enum Data enum Data
{ {
DATA_1ST_BOSS_EVENT, DATA_1ST_BOSS_EVENT,