diff options
Diffstat (limited to 'src')
5 files changed, 53 insertions, 24 deletions
diff --git a/src/bindings/scripts/scripts/northrend/violet_hold/boss_ichoron.cpp b/src/bindings/scripts/scripts/northrend/violet_hold/boss_ichoron.cpp index 27ff6a00a14..2c15a2dd501 100644 --- a/src/bindings/scripts/scripts/northrend/violet_hold/boss_ichoron.cpp +++ b/src/bindings/scripts/scripts/northrend/violet_hold/boss_ichoron.cpp @@ -38,7 +38,7 @@ enum Spells SPELL_SPLASH = 59516, }; -enum Creatures +enum IchoronCreatures { NPC_ICHOR_GLOBULE = 29321, }; diff --git a/src/bindings/scripts/scripts/northrend/violet_hold/boss_zuramat.cpp b/src/bindings/scripts/scripts/northrend/violet_hold/boss_zuramat.cpp index 9c26d39a4c8..ce089b3b481 100644 --- a/src/bindings/scripts/scripts/northrend/violet_hold/boss_zuramat.cpp +++ b/src/bindings/scripts/scripts/northrend/violet_hold/boss_zuramat.cpp @@ -20,7 +20,7 @@ enum Spells H_SPELL_ZUMARAT_ADD_2 = 59747 }; -enum Creatures +enum ZuramatCreatures { CREATURE_VOID_SENTRY = 29364 }; diff --git a/src/bindings/scripts/scripts/northrend/violet_hold/instance_violet_hold.cpp b/src/bindings/scripts/scripts/northrend/violet_hold/instance_violet_hold.cpp index c2eed682776..2a8c58b34f5 100644 --- a/src/bindings/scripts/scripts/northrend/violet_hold/instance_violet_hold.cpp +++ b/src/bindings/scripts/scripts/northrend/violet_hold/instance_violet_hold.cpp @@ -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; + } } } } diff --git a/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.cpp b/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.cpp index aa2a572e618..725773e5a9a 100644 --- a/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.cpp +++ b/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.cpp @@ -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); diff --git a/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.h b/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.h index 8737bab2b60..475cf38e51d 100644 --- a/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.h +++ b/src/bindings/scripts/scripts/northrend/violet_hold/violet_hold.h @@ -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, |