mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
DELETE FROM `disables` WHERE `entry`=7583 AND `sourceType`=4;
|
||||
|
||||
DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7583 AND `type`=11;
|
||||
INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
|
||||
VALUES
|
||||
(7583,11,0,0,'achievement_share_the_love');
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user