aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <qaston@gmail.com>2011-06-23 15:52:30 +0200
committerQAston <qaston@gmail.com>2011-06-23 15:52:30 +0200
commitb54b72ba5446c20faa4b67bb6433e353d0be72f6 (patch)
tree6e9cf9dd5873e964b924ac79e231b0a63b4bde78 /src
parentdc8a926c8d79d60e172b3b8789a1aa32892ce50c (diff)
parent0263b3d4343139d714ac21c93da98c2f538e5153 (diff)
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/CharacterHandler.cpp12
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp55
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp21
3 files changed, 57 insertions, 31 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
index df5becb315f..0424bb3aab8 100755
--- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
@@ -525,11 +525,11 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte
uint32 freeHeroicSlots = sWorld->getIntConfig(CONFIG_HEROIC_CHARACTERS_PER_REALM);
Field* field = result->Fetch();
- uint8 accRace = field[1].GetUInt32();
+ uint8 accRace = field[1].GetUInt8();
if (GetSecurity() == SEC_PLAYER && createInfo->Class == CLASS_DEATH_KNIGHT)
{
- uint8 accClass = field[2].GetUInt32();
+ uint8 accClass = field[2].GetUInt8();
if (accClass == CLASS_DEATH_KNIGHT)
{
if (freeHeroicSlots > 0)
@@ -549,7 +549,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte
if (!hasHeroicReqLevel)
{
- uint32 accLevel = field[0].GetUInt32();
+ uint8 accLevel = field[0].GetUInt8();
if (accLevel >= heroicReqLevel)
hasHeroicReqLevel = true;
}
@@ -583,14 +583,14 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte
break;
field = result->Fetch();
- accRace = field[1].GetUInt32();
+ accRace = field[1].GetUInt8();
if (!haveSameRace)
haveSameRace = createInfo->Race == accRace;
if (GetSecurity() == SEC_PLAYER && createInfo->Class == CLASS_DEATH_KNIGHT)
{
- uint8 acc_class = field[2].GetUInt32();
+ uint8 acc_class = field[2].GetUInt8();
if (acc_class == CLASS_DEATH_KNIGHT)
{
if (freeHeroicSlots > 0)
@@ -610,7 +610,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte
if (!hasHeroicReqLevel)
{
- uint32 acc_level = field[0].GetUInt32();
+ uint8 acc_level = field[0].GetUInt8();
if (acc_level >= heroicReqLevel)
hasHeroicReqLevel = true;
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
index c1b82f71687..93acb74cee6 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
@@ -53,7 +53,6 @@ enum Yells
enum Achievements
{
ACHIEV_WHAT_THE_ECK = 1864,
- ACHIEV_SHARE_THE_LOVE = 2152
};
enum Displays
@@ -68,6 +67,8 @@ enum CombatPhase
RHINO
};
+#define DATA_SHARE_THE_LOVE 1
+
class boss_gal_darah : public CreatureScript
{
public:
@@ -92,7 +93,8 @@ public:
uint32 uiImpalingChargeTimer;
uint32 uiStompTimer;
uint32 uiTransformationTimer;
- std::set<uint64> lImpaledPlayers;
+ std::list<uint64> impaledList;
+ uint8 shareTheLove;
CombatPhase Phase;
@@ -113,7 +115,8 @@ public:
uiTransformationTimer = 9*IN_MILLISECONDS;
uiPhaseCounter = 0;
- lImpaledPlayers.clear();
+ impaledList.clear();
+ shareTheLove = 0;
bStartOfTransformation = true;
@@ -135,7 +138,6 @@ public:
void UpdateAI(const uint32 diff)
{
- //Return since we have no target
if (!UpdateVictim())
return;
@@ -235,7 +237,7 @@ public:
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
{
DoCast(pTarget, SPELL_IMPALING_CHARGE);
- lImpaledPlayers.insert(pTarget->GetGUID());
+ CheckAchievement(pTarget->GetGUID());
}
uiImpalingChargeTimer = 31*IN_MILLISECONDS;
++uiPhaseCounter;
@@ -247,6 +249,28 @@ public:
DoMeleeAttackIfReady();
}
+ // 5 UNIQUE party members
+ void CheckAchievement(uint64 guid)
+ {
+ bool playerExists = false;
+ for (std::list<uint64>::iterator itr = impaledList.begin(); itr != impaledList.end(); ++itr)
+ if (guid != *itr)
+ playerExists = true;
+
+ if (playerExists)
+ ++shareTheLove;
+
+ impaledList.push_back(guid);
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ if (type == DATA_SHARE_THE_LOVE)
+ return shareTheLove;
+
+ return 0;
+ }
+
void JustDied(Unit* /*killer*/)
{
DoScriptText(SAY_DEATH, me);
@@ -255,9 +279,6 @@ public:
{
if (IsHeroic())
{
- if (lImpaledPlayers.size() == 5)
- pInstance->DoCompleteAchievement(ACHIEV_SHARE_THE_LOVE);
-
AchievementEntry const *achievWhatTheEck = GetAchievementStore()->LookupEntry(ACHIEV_WHAT_THE_ECK);
if (achievWhatTheEck)
{
@@ -283,7 +304,25 @@ public:
};
+class achievement_share_the_love : public AchievementCriteriaScript
+{
+ public:
+ achievement_share_the_love() : AchievementCriteriaScript("achievement_share_the_love")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* GalDarah = target->ToCreature())
+ if (GalDarah->AI()->GetData(DATA_SHARE_THE_LOVE) >= 5)
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_boss_gal_darah()
{
new boss_gal_darah();
+ new achievement_share_the_love();
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
index 34ccd0aec93..eece702f984 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
@@ -60,8 +60,7 @@ Position const RiftLocation[6] =
{ 651.72f, -297.44f, -9.37f, 0.0f }
};
-#define ACTION_RIFT_DEAD 1
-#define DATA_CHAOS_THEORY 2
+#define DATA_CHAOS_THEORY 1
class boss_anomalus : public CreatureScript
{
@@ -110,12 +109,6 @@ class boss_anomalus : public CreatureScript
instance->SetData(DATA_ANOMALUS_EVENT, DONE);
}
- void DoAction(int32 const action)
- {
- if (action == ACTION_RIFT_DEAD)
- chaosTheory = false;
- }
-
uint32 GetData(uint32 type)
{
if (type == DATA_CHAOS_THEORY)
@@ -124,10 +117,10 @@ class boss_anomalus : public CreatureScript
return 0;
}
- void SetData(uint32 id, uint32 data)
+ void SummonedCreatureDies(Creature* summoned, Unit* who)
{
- if (id == DATA_CHAOS_THEORY)
- chaosTheory = data ? true : false;
+ if (summoned->GetEntry() == MOB_CHAOTIC_RIFT)
+ chaosTheory = false;
}
void UpdateAI(uint32 const diff)
@@ -219,12 +212,6 @@ class mob_chaotic_rift : public CreatureScript
DoCast(me, SPELL_ARCANEFORM, false);
}
- void JustDied(Unit* /*who*/)
- {
- if (Creature* Anomalus = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ANOMALUS)))
- Anomalus->AI()->DoAction(ACTION_RIFT_DEAD);
- }
-
void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())