aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorQAston <qaston@gmail.com>2011-07-02 16:12:43 +0200
committerQAston <qaston@gmail.com>2011-07-02 16:12:43 +0200
commit1068583172141dcb1ca51a6b15fa2170ae094e97 (patch)
treeeea2c65e1458595c5b8f105d868c4f676f1ab286 /src/server/scripts
parent86dde83ddade00c66a5af552d65d4787c22b6361 (diff)
parentf3dfa8066a291e144f53142d62b4e2f493e57137 (diff)
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_achievement.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp57
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp1
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp18
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp7
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp63
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp2
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp2
-rwxr-xr-xsrc/server/scripts/World/achievement_scripts.cpp19
14 files changed, 165 insertions, 16 deletions
diff --git a/src/server/scripts/Commands/cs_achievement.cpp b/src/server/scripts/Commands/cs_achievement.cpp
index 5fef2eae6ed..88e07a07fe7 100644
--- a/src/server/scripts/Commands/cs_achievement.cpp
+++ b/src/server/scripts/Commands/cs_achievement.cpp
@@ -68,7 +68,7 @@ public:
}
if (AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievementId))
- target->CompletedAchievement(pAE, true);
+ target->CompletedAchievement(pAE);
return true;
}
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp
index b380d559ae0..adde1d9bf4a 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp
@@ -286,7 +286,7 @@ void boss_attumen::boss_attumenAI::UpdateAI(const uint32 diff)
target_list.push_back(pTarget);
pTarget = NULL;
}
- if (target_list.size())
+ if (!target_list.empty())
pTarget = *(target_list.begin()+rand()%target_list.size());
DoCast(pTarget, SPELL_BERSERKER_CHARGE);
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
index 788c9fb171a..daad47b6106 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
@@ -312,7 +312,7 @@ public:
std::list<HostileReference *> t_list = me->getThreatManager().getThreatList();
std::vector<Unit* > targets;
- if (!t_list.size())
+ if (t_list.empty())
return;
//begin + 1, so we don't target the one with the highest threat
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
index 1fdd23fe51d..cf785a64301 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -525,7 +525,7 @@ public:
me->IsWithinDistInMap(i->getSource(), range) && i->getSource()->isAlive())
temp.push_back(i->getSource());
- if (temp.size())
+ if (!temp.empty())
{
j = temp.begin();
advance(j, rand()%temp.size());
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
index c1f80fb50af..2b93d4a6d57 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
@@ -247,7 +247,7 @@ class boss_janalai : public CreatureScript
}
//sLog->outError("Eggs %d at middle", templist.size());
- if (!templist.size())
+ if (templist.empty())
return false;
for (std::list<Creature*>::const_iterator i = templist.begin(); i != templist.end(); ++i)
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
index 3a6ccacf753..ab4cb968336 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
@@ -175,7 +175,7 @@ class boss_nalorakk : public CreatureScript
cell.Visit(pair, cSearcher, *(me->GetMap()));
}
- if (!templist.size())
+ if (templist.empty())
return;
for (std::list<Creature*>::const_iterator i = templist.begin(); i != templist.end(); ++i)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 4a394cffe62..ec891f81664 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -525,9 +525,26 @@ class boss_prince_keleseth_icc : public CreatureScript
}
}
+ bool CheckRoom()
+ {
+ if (!CheckBoundary(me))
+ {
+ EnterEvadeMode();
+ if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
+ taldaram->AI()->EnterEvadeMode();
+
+ if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
+ valanar->AI()->EnterEvadeMode();
+
+ return false;
+ }
+
+ return true;
+ }
+
void UpdateAI(uint32 const diff)
{
- if (!UpdateVictim() || !CheckInRoom())
+ if (!UpdateVictim() || !CheckRoom())
return;
events.Update(diff);
@@ -723,9 +740,26 @@ class boss_prince_taldaram_icc : public CreatureScript
}
}
+ bool CheckRoom()
+ {
+ if (!CheckBoundary(me))
+ {
+ EnterEvadeMode();
+ if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
+ keleseth->AI()->EnterEvadeMode();
+
+ if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
+ valanar->AI()->EnterEvadeMode();
+
+ return false;
+ }
+
+ return true;
+ }
+
void UpdateAI(uint32 const diff)
{
- if (!UpdateVictim() || !CheckInRoom())
+ if (!UpdateVictim() || !CheckRoom())
return;
events.Update(diff);
@@ -940,9 +974,26 @@ class boss_prince_valanar_icc : public CreatureScript
}
}
+ bool CheckRoom()
+ {
+ if (!CheckBoundary(me))
+ {
+ EnterEvadeMode();
+ if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
+ keleseth->AI()->EnterEvadeMode();
+
+ if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
+ taldaram->AI()->EnterEvadeMode();
+
+ return false;
+ }
+
+ return true;
+ }
+
void UpdateAI(uint32 const diff)
{
- if (!UpdateVictim() || !CheckInRoom())
+ if (!UpdateVictim() || !CheckRoom())
return;
events.Update(diff);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 5cde7ada233..ba3216eccf6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -148,6 +148,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
_offtank = NULL;
_vampires.clear();
_creditBloodQuickening = false;
+ _killMinchar = false;
}
void EnterCombat(Unit* who)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
index 8298444f4b1..9132031b89d 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
@@ -43,8 +43,6 @@ class icecrown_citadel_teleport : public GameObjectScript
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Upper Spire.", GOSSIP_SENDER_ICC_PORT, UPPER_SPIRE_TELEPORT);
if (instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == DONE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to Sindragosa's Lair", GOSSIP_SENDER_ICC_PORT, SINDRAGOSA_S_LAIR_TELEPORT);
- if (instance->GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE && instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE && instance->GetBossState(DATA_SINDRAGOSA) == DONE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to The Frozen Throne", GOSSIP_SENDER_ICC_PORT, FROZEN_THRONE_TELEPORT);
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(go->GetGOInfo()->GetGossipMenuId()), go->GetGUID());
@@ -72,7 +70,23 @@ class icecrown_citadel_teleport : public GameObjectScript
}
};
+class at_frozen_throne_teleport : public AreaTriggerScript
+{
+ public:
+ at_frozen_throne_teleport() : AreaTriggerScript("at_frozen_throne_teleport") { }
+
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/)
+ {
+ if (InstanceScript* instance = player->GetInstanceScript())
+ if (instance->GetBossState(DATA_PROFESSOR_PUTRICIDE) == DONE && instance->GetBossState(DATA_BLOOD_QUEEN_LANA_THEL) == DONE && instance->GetBossState(DATA_SINDRAGOSA) == DONE)
+ player->CastSpell(player, FROZEN_THRONE_TELEPORT, true);
+
+ return true;
+ }
+};
+
void AddSC_icecrown_citadel_teleport()
{
new icecrown_citadel_teleport();
+ new at_frozen_throne_teleport();
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index ece75fc0b9f..7890f2fd8fa 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -96,14 +96,14 @@ class instance_icecrown_citadel : public InstanceMapScript
PlagueSigilGUID = 0;
BloodwingSigilGUID = 0;
FrostwingSigilGUID = 0;
- memset(PutricidePipeGUIDs, 0, 2*sizeof(uint64));
- memset(PutricideGateGUIDs, 0, 2*sizeof(uint64));
+ memset(PutricidePipeGUIDs, 0, 2 * sizeof(uint64));
+ memset(PutricideGateGUIDs, 0, 2 * sizeof(uint64));
PutricideCollisionGUID = 0;
FestergutGUID = 0;
RotfaceGUID = 0;
ProfessorPutricideGUID = 0;
PutricideTableGUID = 0;
- memset(BloodCouncilGUIDs, 0, 3*sizeof(uint64));
+ memset(BloodCouncilGUIDs, 0, 3 * sizeof(uint64));
BloodCouncilControllerGUID = 0;
BloodQueenLanaThelGUID = 0;
CrokScourgebaneGUID = 0;
@@ -198,6 +198,7 @@ class instance_icecrown_citadel : public InstanceMapScript
case NPC_SE_HIGH_OVERLORD_SAURFANG:
if (TeamInInstance == ALLIANCE)
creature->UpdateEntry(NPC_SE_MURADIN_BRONZEBEARD, ALLIANCE, creature->GetCreatureData());
+ // no break;
case NPC_SE_MURADIN_BRONZEBEARD:
DeathbringerSaurfangEventGUID = creature->GetGUID();
creature->LastUsedScriptID = creature->GetScriptId();
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp
index 73baeae441f..46bf7f99ae5 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp
@@ -129,6 +129,7 @@ enum Events
#define GROUND_Z 391.517f
#define GOSSIP_ITEM_1 "Activate Harpoons!"
#define DATA_QUICK_SHAVE 29192921 // 2919, 2921 are achievement IDs
+#define DATA_IRON_DWARF_MEDIUM_RARE 29232924
const Position PosEngRepair[4] =
{
@@ -890,8 +891,21 @@ class npc_darkrune_guardian : public CreatureScript
void Reset()
{
StormTimer = urand(3000, 6000);
+ killedByBreath = false;
}
+ uint32 GetData(uint32 type)
+ {
+ return type == DATA_IRON_DWARF_MEDIUM_RARE ? killedByBreath : 0;
+ }
+
+ void SetData(uint32 type, uint32 value)
+ {
+ if (type == DATA_IRON_DWARF_MEDIUM_RARE)
+ killedByBreath = value;
+ }
+
+
void UpdateAI(uint32 const Diff)
{
if (!UpdateVictim())
@@ -907,6 +921,9 @@ class npc_darkrune_guardian : public CreatureScript
DoMeleeAttackIfReady();
}
+
+ private:
+ bool killedByBreath;
};
CreatureAI* GetAI(Creature* creature) const
@@ -1007,6 +1024,50 @@ class spell_razorscale_devouring_flame : public SpellScriptLoader
}
};
+class spell_razorscale_flame_breath : public SpellScriptLoader
+{
+ public:
+ spell_razorscale_flame_breath() : SpellScriptLoader("spell_razorscale_flame_breath") { }
+
+ class spell_razorscale_flame_breath_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_razorscale_flame_breath_SpellScript);
+
+ void CheckDamage()
+ {
+ Creature* target = GetHitCreature();
+ if (!target || target->GetEntry() != NPC_DARK_RUNE_GUARDIAN)
+ return;
+
+ if (GetHitDamage() >= int32(target->GetHealth()))
+ target->AI()->SetData(DATA_IRON_DWARF_MEDIUM_RARE, 1);
+ }
+
+ void Register()
+ {
+ OnHit += SpellHitFn(spell_razorscale_flame_breath_SpellScript::CheckDamage);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_razorscale_flame_breath_SpellScript();
+ }
+};
+
+class achievement_iron_dwarf_medium_rare : public AchievementCriteriaScript
+{
+ public:
+ achievement_iron_dwarf_medium_rare() : AchievementCriteriaScript("achievement_iron_dwarf_medium_rare")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ return target && target->IsAIEnabled && target->GetAI()->GetData(DATA_IRON_DWARF_MEDIUM_RARE);
+ }
+};
+
class achievement_quick_shave : public AchievementCriteriaScript
{
public:
@@ -1035,5 +1096,7 @@ void AddSC_boss_razorscale()
new npc_darkrune_guardian();
new npc_darkrune_sentinel();
new spell_razorscale_devouring_flame();
+ new spell_razorscale_flame_breath();
+ new achievement_iron_dwarf_medium_rare();
new achievement_quick_shave();
} \ No newline at end of file
diff --git a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp
index 5ebe89ffea9..b958243e5ec 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp
@@ -144,7 +144,7 @@ public:
// Get the Threat List
std::list<HostileReference *> m_threatlist = me->getThreatManager().getThreatList();
- if (!m_threatlist.size()) // He doesn't have anyone in his threatlist, useless to continue
+ if (m_threatlist.empty()) // He doesn't have anyone in his threatlist, useless to continue
return;
std::list<Unit* > targets;
diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
index c175c0baa8c..dc44a455c34 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp
@@ -776,7 +776,7 @@ public:
target_list.push_back(pTarget);
pTarget = NULL;
}
- if (target_list.size())
+ if (!target_list.empty())
pTarget = *(target_list.begin()+rand()%target_list.size());
me->InterruptNonMeleeSpells(false);
diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp
index f26b34e6308..339d54d5450 100755
--- a/src/server/scripts/World/achievement_scripts.cpp
+++ b/src/server/scripts/World/achievement_scripts.cpp
@@ -188,6 +188,24 @@ class achievement_arena_kills : public AchievementCriteriaScript
uint8 const _arenaType;
};
+class achievement_sickly_gazelle : public AchievementCriteriaScript
+{
+public:
+ achievement_sickly_gazelle() : AchievementCriteriaScript("achievement_sickly_gazelle") { }
+
+ bool OnCheck(Player* /*source*/, Unit* target)
+ {
+ if (!target)
+ return false;
+
+ if (Player* victim = target->ToPlayer())
+ if (victim->IsMounted())
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_achievement_scripts()
{
new achievement_storm_glory();
@@ -198,6 +216,7 @@ void AddSC_achievement_scripts()
new achievement_bg_ic_glaive_grave();
new achievement_bg_ic_mowed_down();
new achievement_bg_sa_artillery();
+ new achievement_sickly_gazelle();
new achievement_arena_kills("achievement_arena_2v2_kills", ARENA_TYPE_2v2);
new achievement_arena_kills("achievement_arena_3v3_kills", ARENA_TYPE_3v3);
new achievement_arena_kills("achievement_arena_5v5_kills", ARENA_TYPE_5v5);