aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrunningnak3d <runningnak3d@gmail.com>2011-03-18 09:41:04 -0600
committerrunningnak3d <runningnak3d@gmail.com>2011-03-18 09:41:04 -0600
commit2f89fa9e69129a9d231c9f5183a69fd7e1c11735 (patch)
tree1c0ad1650bbacbf5f517f4c06d716e9482262936 /src
parent171268a565003cb760b4efff35e8d71a7b9df6b7 (diff)
parent489e62943788a02d25255ce819c0c74869907d26 (diff)
Merge branch 'master' of git@github.com:TrinityCore/TrinityCore
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp43
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp3
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h13
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp12
7 files changed, 62 insertions, 30 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 8665227ef29..fe784b1ec9e 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -10046,7 +10046,8 @@ Bag* Player::GetBagByPos(uint8 bag) const
{
if ((bag >= INVENTORY_SLOT_BAG_START && bag < INVENTORY_SLOT_BAG_END)
|| (bag >= BANK_SLOT_BAG_START && bag < BANK_SLOT_BAG_END))
- return GetItemByPos(INVENTORY_SLOT_BAG_0, bag)->ToBag();
+ if (Item* item = GetItemByPos(INVENTORY_SLOT_BAG_0, bag))
+ return item->ToBag();
return NULL;
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
index 5dc37e54234..2bf8876572f 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
@@ -18,6 +18,11 @@
#include "ScriptPCH.h"
#include "pit_of_saron.h"
+// positions for Martin Victus (37591) and Gorkun Ironskull (37592)
+Position const SlaveLeaderPos = {689.7158f, -104.8736f, 513.7360f, 0.0f};
+// position for Jaina and Sylvanas
+Position const EventLeaderPos2 = {1054.368f, 107.14620f, 628.4467f, 0.0f};
+
class instance_pit_of_saron : public InstanceMapScript
{
public:
@@ -149,6 +154,44 @@ class instance_pit_of_saron : public InstanceMapScript
}
}
+ bool SetBossState(uint32 type, EncounterState state)
+ {
+ if (!InstanceScript::SetBossState(type, state))
+ return false;
+
+ switch (type)
+ {
+ case DATA_GARFROST:
+ if(state == DONE)
+ {
+ if (Creature* summoner = instance->GetCreature(_garfrostGUID))
+ {
+ if (_teamInInstance == ALLIANCE)
+ summoner->SummonCreature(NPC_MARTIN_VICTUS_1, SlaveLeaderPos, TEMPSUMMON_MANUAL_DESPAWN);
+ else
+ summoner->SummonCreature(NPC_GORKUN_IRONSKULL_2, SlaveLeaderPos, TEMPSUMMON_MANUAL_DESPAWN);
+ }
+ }
+ break;
+ case DATA_TYRANNUS:
+ if (state == DONE)
+ {
+ if (Creature* summoner = instance->GetCreature(_tyrannusGUID))
+ {
+ if (_teamInInstance == ALLIANCE)
+ summoner->SummonCreature(NPC_JAINA_PART2, EventLeaderPos2, TEMPSUMMON_MANUAL_DESPAWN);
+ else
+ summoner->SummonCreature(NPC_SYLVANAS_PART2, EventLeaderPos2, TEMPSUMMON_MANUAL_DESPAWN);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return true;
+ }
+
uint32 GetData(uint32 type)
{
switch (type)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index d805c598319..663734e1107 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -1436,8 +1436,7 @@ class spell_stinky_precious_decimate : public SpellScriptLoader
if (GetHitUnit()->GetHealthPct() > float(GetEffectValue()))
{
uint32 newHealth = GetHitUnit()->GetMaxHealth() * uint32(GetEffectValue()) / 100;
- if (GetHitUnit()->GetMaxHealth() >= newHealth)
- GetHitUnit()->SetHealth(newHealth);
+ GetHitUnit()->SetHealth(newHealth);
}
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 306e00bbbe7..ac74aecd5cc 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -74,7 +74,6 @@ enum Events
EVENT_MORTAL_WOUND = 5,
EVENT_STICKY_OOZE = 6,
- EVENT_UNSTABLE_DESPAWN = 7,
};
class boss_rotface : public CreatureScript
@@ -330,13 +329,6 @@ class npc_big_ooze : public CreatureScript
{
if (action == EVENT_STICKY_OOZE)
events.CancelEvent(EVENT_STICKY_OOZE);
- else if (action == EVENT_UNSTABLE_DESPAWN)
- {
- me->RemoveAllAuras();
- me->SetVisible(false);
- events.Reset();
- events.ScheduleEvent(EVENT_UNSTABLE_DESPAWN, 60000);
- }
}
void UpdateAI(const uint32 diff)
@@ -353,10 +345,6 @@ class npc_big_ooze : public CreatureScript
case EVENT_STICKY_OOZE:
DoCastVictim(SPELL_STICKY_OOZE);
events.ScheduleEvent(EVENT_STICKY_OOZE, 15000);
- break;
- case EVENT_UNSTABLE_DESPAWN:
- me->Kill(me);
- break;
default:
break;
}
@@ -707,7 +695,9 @@ class spell_rotface_unstable_ooze_explosion_suicide : public SpellScriptLoader
if (target->GetTypeId() != TYPEID_UNIT)
return;
- target->ToCreature()->AI()->DoAction(EVENT_UNSTABLE_DESPAWN);
+ target->RemoveAllAuras();
+ target->SetVisible(false);
+ target->ToCreature()->DespawnOrUnsummon(60000);
}
void Register()
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index a379b800720..581c673010b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -26,7 +26,7 @@
//* Deprogramming (DONE)
//* Securing the Ramparts (DONE)
//* Residue Rendezvous (DONE)
-//* Blood Quickening // AreaTrigger 5729 starts the timer, pulling BQ before it runs out means success
+//* Blood Quickening (DONE)
//* Respite for a Tormented Soul
enum Texts
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index 76aed7805bb..95bc17dd9d0 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -19,6 +19,11 @@
#define DEF_ICECROWN_CITADEL_H
#define ICCScriptName "instance_icecrown_citadel"
+uint32 const EncounterCount = 12;
+uint32 const WeeklyNPCs = 7;
+uint32 const MaxHeroicAttempts = 50;
+// Defined in boss_sindragosa.cpp
+extern Position const SindragosaSpawnPos;
// Shared spells used by more than one script
enum SharedSpells
@@ -39,7 +44,7 @@ enum TeleporterSpells
DEATHBRINGER_S_RISE_TELEPORT = 70858,
UPPER_SPIRE_TELEPORT = 70859,
FROZEN_THRONE_TELEPORT = 70860,
- SINDRAGOSA_S_LAIR_TELEPORT = 70861
+ SINDRAGOSA_S_LAIR_TELEPORT = 70861,
};
enum DataTypes
@@ -78,9 +83,6 @@ enum DataTypes
DATA_HEROIC_ATTEMPTS = 28,
};
-#define MAX_ENCOUNTER 12
-#define WEEKLY_NPCS 7
-
enum CreaturesIds
{
// At Light's Hammer
@@ -324,7 +326,4 @@ enum WorldStatesICC
WORLDSTATE_ATTEMPTS_MAX = 4942,
};
-// Declaration
-extern Position const SindragosaSpawnPos;
-
#endif // DEF_ICECROWN_CITADEL_H
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index bdcc611751d..54741b1fb2a 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -53,7 +53,7 @@ struct WeeklyQuest
{
uint32 creatureEntry;
uint32 questId[2]; // 10 and 25 man versions
-} WeeklyQuestData[WEEKLY_NPCS] =
+} WeeklyQuestData[WeeklyNPCs] =
{
{NPC_INFILTRATOR_MINCHAR, {QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25 }}, // Deprogramming
{NPC_KOR_KRON_LIEUTENANT, {QUEST_SECURING_THE_RAMPARTS_10, QUEST_SECURING_THE_RAMPARTS_25 }}, // Securing the Ramparts
@@ -73,10 +73,10 @@ class instance_icecrown_citadel : public InstanceMapScript
{
instance_icecrown_citadel_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
- SetBossNumber(MAX_ENCOUNTER);
+ SetBossNumber(EncounterCount);
LoadDoorData(doorData);
teamInInstance = 0;
- heroicAttempts = 50;
+ heroicAttempts = MaxHeroicAttempts;
ladyDeathwisperElevator = 0;
deathbringerSaurfang = 0;
saurfangDoor = 0;
@@ -118,7 +118,7 @@ class instance_icecrown_citadel : public InstanceMapScript
data << uint32(WORLDSTATE_EXECUTION_TIME) << uint32(bloodQuickeningMinutes);
data << uint32(WORLDSTATE_SHOW_ATTEMPTS) << uint32(instance->IsHeroic());
data << uint32(WORLDSTATE_ATTEMPTS_REMAINING) << uint32(heroicAttempts);
- data << uint32(WORLDSTATE_ATTEMPTS_MAX) << uint32(50);
+ data << uint32(WORLDSTATE_ATTEMPTS_MAX) << uint32(MaxHeroicAttempts);
}
void OnPlayerEnter(Player* player)
@@ -248,7 +248,7 @@ class instance_icecrown_citadel : public InstanceMapScript
case NPC_MINCHAR_BEAM_STALKER:
case NPC_VALITHRIA_DREAMWALKER_QUEST:
{
- for (uint8 questIndex = 0; questIndex < WEEKLY_NPCS; ++questIndex)
+ for (uint8 questIndex = 0; questIndex < WeeklyNPCs; ++questIndex)
{
if (WeeklyQuestData[questIndex].creatureEntry == entry)
{
@@ -876,7 +876,7 @@ class instance_icecrown_citadel : public InstanceMapScript
if (dataHead1 == 'I' && dataHead2 == 'C')
{
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
+ for (uint32 i = 0; i < EncounterCount; ++i)
{
uint32 tmpState;
loadStream >> tmpState;