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,
};
enum Creatures
enum IchoronCreatures
{
NPC_ICHOR_GLOBULE = 29321,
};
@@ -20,7 +20,7 @@ enum Spells
H_SPELL_ZUMARAT_ADD_2 = 59747
};
enum Creatures
enum ZuramatCreatures
{
CREATURE_VOID_SENTRY = 29364
};
@@ -16,19 +16,6 @@
4 - Xevozz
5 - Zuramat
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
{
GO_MAIN_DOOR = 191723,
@@ -43,6 +30,10 @@ enum GameObjects
GO_INTRO_ACTIVATION_CRYSTAL = 193615,
GO_ACTIVATION_CRYSTAL = 193611
};
enum Spells
{
SPELL_PORTAL_CHANNEL = 58012
};
struct Location
{
float x,y,z,orientation;
@@ -259,10 +250,17 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
Creature *pSinclari = instance->GetCreature(uiSinclari);
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,
TEMPSUMMON_CORPSE_TIMED_DESPAWN,900000);
uiLocation = (++uiLocation)%3;
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;
}
}
}
}
@@ -3,15 +3,18 @@
#define GOSSIP_START_EVENT "[PH]: Start Event"
#define NEXT_WAVE_TIME 90000
#define SPAWN_TIME 9000
#define SPAWN_TIME 15000
enum Creatures
enum PortalCreatures
{
CREATURE_AZURE_INVADER = 30661,
CREATURE_AZURE_SPELLBREAKER = 30662,
CREATURE_AZURE_BINDER = 30663,
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)
@@ -58,15 +61,27 @@ struct TRINITY_DLL_DECL npc_teleportation_portalAI : public ScriptedAI
{
if (uiSpawnTimer <= diff)
{
if (Creature* pSummon = m_creature->SummonCreature(RAND(CREATURE_AZURE_CAPTAIN,CREATURE_AZURE_SPELLBREAKER,
CREATURE_AZURE_BINDER,CREATURE_AZURE_MAGE_SLAYER,CREATURE_AZURE_CAPTAIN),
for (uint8 i = 0; i < pInstance->GetData(DATA_WAVE_COUNT) < 12 ? 3 : 4; ++i)
{
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->GetPositionZ(),m_creature->GetOrientation(),
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;
} else uiSpawnTimer -= diff;
if (!m_creature->IsNonMeleeSpellCasted(false))
{
m_creature->Kill(m_creature, false);
m_creature->RemoveCorpse();
return;
}
if (uiDespawnTimer <= diff)
{
m_creature->Kill(m_creature, false);
@@ -1,6 +1,22 @@
#ifndef 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
{
DATA_1ST_BOSS_EVENT,