aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortreak <goodfeelingzzz@gmail.com>2014-11-08 19:53:11 +0000
committerDDuarte <dnpd.dd@gmail.com>2014-11-08 19:53:11 +0000
commitaa5a002180747aa7a47308b3e21f6f21cde461f1 (patch)
tree9b38d851e19d3a7f28353b26845b3a15bfdf907a
parentf330b70eb5579b032140d926d48d7f4fbfac41be (diff)
Scripts/Ulduar: fix Achievs "Champion of Ulduar" and "Conqueror of Ulduar"
Signed-off-by: treak <goodfeelingzzz@gmail.com> (cherry picked from commit 341e374c723f0dc78e755ca962d22d5d9a8f54d8) Conflicts: src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp Codestyle (cherry picked from commit 3530b938a8d390d4d39ac840d5b0e7403b08dbc5)
-rw-r--r--sql/updates/world/2014_XX_XX_XX_world.sql58
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp58
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h49
3 files changed, 155 insertions, 10 deletions
diff --git a/sql/updates/world/2014_XX_XX_XX_world.sql b/sql/updates/world/2014_XX_XX_XX_world.sql
new file mode 100644
index 00000000000..e6969ee08ab
--- /dev/null
+++ b/sql/updates/world/2014_XX_XX_XX_world.sql
@@ -0,0 +1,58 @@
+DELETE FROM `disables` WHERE `entry` IN (10042, 10340, 10341, 10342, 10347, 10348, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10357, 10361, 10362, 10363, 10364, 10403, 10404, 10439, 10582, 10583, 10598, 10599, 10719) AND `sourceType` = 4;
+
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10042, 10340, 10341, 10342, 10347, 10348, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10357, 10361, 10362, 10363, 10364, 10403, 10404, 10439, 10582, 10583, 10598, 10599, 10719);
+INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`) VALUES
+-- 10
+(10042, 18, 0),
+(10042, 12, 0),
+(10342, 18, 0),
+(10342, 12, 0),
+(10340, 18, 0),
+(10340, 12, 0),
+(10341, 18, 0),
+(10341, 12, 0),
+(10598, 18, 0),
+(10598, 12, 0),
+(10348, 18, 0),
+(10348, 12, 0),
+(10351, 18, 0),
+(10351, 12, 0),
+(10439, 18, 0),
+(10439, 12, 0),
+(10403, 18, 0),
+(10403, 12, 0),
+(10582, 18, 0),
+(10582, 12, 0),
+(10347, 18, 0),
+(10347, 12, 0),
+(10349, 18, 0),
+(10349, 12, 0),
+(10350, 18, 0),
+(10350, 12, 0),
+-- 25
+(10352, 18, 0),
+(10352, 12, 1),
+(10355, 18, 0),
+(10355, 12, 1),
+(10353, 18, 0),
+(10353, 12, 1),
+(10354, 18, 0),
+(10354, 12, 1),
+(10599, 18, 0),
+(10599, 12, 1),
+(10357, 18, 0),
+(10357, 12, 1),
+(10363, 18, 0),
+(10363, 12, 1),
+(10719, 18, 0),
+(10719, 12, 1),
+(10404, 18, 0),
+(10404, 12, 1),
+(10583, 18, 0),
+(10583, 12, 1),
+(10361, 18, 0),
+(10361, 12, 1),
+(10362, 18, 0),
+(10362, 12, 1),
+(10364, 18, 0),
+(10364, 12, 1);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 5e8273dce67..cdbbf755390 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -83,6 +83,7 @@ class instance_ulduar : public InstanceMapScript
IsDriveMeCrazyEligible = true;
_algalonSummoned = false;
_summonAlgalon = false;
+ _CoUAchivePlayerDeathMask = 0;
memset(_summonObservationRingKeeper, 0, sizeof(_summonObservationRingKeeper));
memset(_summonYSKeeper, 0, sizeof(_summonYSKeeper));
@@ -592,6 +593,19 @@ class instance_ulduar : public InstanceMapScript
void OnUnitDeath(Unit* unit) override
{
+ // Champion/Conqueror of Ulduar
+ if (unit->GetTypeId() == TYPEID_PLAYER)
+ {
+ for (uint8 i = 0; i < BOSS_ALGALON; i++)
+ {
+ if (GetBossState(i) == IN_PROGRESS)
+ {
+ _CoUAchivePlayerDeathMask |= (1 << i);
+ SaveToDB();
+ }
+ }
+ }
+
Creature* creature = unit->ToCreature();
if (!creature)
return;
@@ -1007,6 +1021,45 @@ class instance_ulduar : public InstanceMapScript
case CRITERIA_ALONE_IN_THE_DARKNESS_10:
case CRITERIA_ALONE_IN_THE_DARKNESS_25:
return keepersCount == 0;
+ case CRITERIA_C_O_U_LEVIATHAN_10:
+ case CRITERIA_C_O_U_LEVIATHAN_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_LEVIATHAN)) == 0;
+ case CRITERIA_C_O_U_IGNIS_10:
+ case CRITERIA_C_O_U_IGNIS_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_IGNIS)) == 0;
+ case CRITERIA_C_O_U_RAZORSCALE_10:
+ case CRITERIA_C_O_U_RAZORSCALE_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_RAZORSCALE)) == 0;
+ case CRITERIA_C_O_U_XT002_10:
+ case CRITERIA_C_O_U_XT002_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_XT002)) == 0;
+ case CRITERIA_C_O_U_IRON_COUNCIL_10:
+ case CRITERIA_C_O_U_IRON_COUNCIL_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_ASSEMBLY_OF_IRON)) == 0;
+ case CRITERIA_C_O_U_KOLOGARN_10:
+ case CRITERIA_C_O_U_KOLOGARN_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_KOLOGARN)) == 0;
+ case CRITERIA_C_O_U_AURIAYA_10:
+ case CRITERIA_C_O_U_AURIAYA_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_AURIAYA)) == 0;
+ case CRITERIA_C_O_U_HODIR_10:
+ case CRITERIA_C_O_U_HODIR_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_HODIR)) == 0;
+ case CRITERIA_C_O_U_THORIM_10:
+ case CRITERIA_C_O_U_THORIM_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_THORIM)) == 0;
+ case CRITERIA_C_O_U_FREYA_10:
+ case CRITERIA_C_O_U_FREYA_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_FREYA)) == 0;
+ case CRITERIA_C_O_U_MIMIRON_10:
+ case CRITERIA_C_O_U_MIMIRON_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_MIMIRON)) == 0;
+ case CRITERIA_C_O_U_VEZAX_10:
+ case CRITERIA_C_O_U_VEZAX_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_VEZAX)) == 0;
+ case CRITERIA_C_O_U_YOGG_SARON_10:
+ case CRITERIA_C_O_U_YOGG_SARON_25:
+ return (_CoUAchivePlayerDeathMask & (1 << BOSS_YOGG_SARON)) == 0;
}
return false;
@@ -1018,6 +1071,8 @@ class instance_ulduar : public InstanceMapScript
for (uint8 i = 0; i < 4; ++i)
data << ' ' << uint32(!KeeperGUIDs[i].IsEmpty() ? 1 : 0);
+
+ data << ' ' << _CoUAchivePlayerDeathMask;
}
void ReadSaveDataMore(std::istringstream& data) override
@@ -1056,6 +1111,8 @@ class instance_ulduar : public InstanceMapScript
_summonObservationRingKeeper[2] = true;
if (GetBossState(BOSS_MIMIRON) == DONE && !_summonYSKeeper[3])
_summonObservationRingKeeper[3] = true;
+
+ data >> _CoUAchivePlayerDeathMask;
}
void Update(uint32 diff) override
@@ -1095,6 +1152,7 @@ class instance_ulduar : public InstanceMapScript
bool _summonYSKeeper[4];
uint32 _maxArmorItemLevel;
uint32 _maxWeaponItemLevel;
+ uint32 _CoUAchivePlayerDeathMask;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
index 82c4ef140f1..1b4330b0faf 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
@@ -36,16 +36,16 @@ enum UlduarBosses
BOSS_ASSEMBLY_OF_IRON = 4,
BOSS_KOLOGARN = 5,
BOSS_AURIAYA = 6,
- BOSS_MIMIRON = 7,
- BOSS_HODIR = 8,
- BOSS_THORIM = 9,
- BOSS_FREYA = 10,
- BOSS_BRIGHTLEAF = 11,
- BOSS_IRONBRANCH = 12,
- BOSS_STONEBARK = 13,
- BOSS_VEZAX = 14,
- BOSS_YOGG_SARON = 15,
- BOSS_ALGALON = 16,
+ BOSS_HODIR = 7,
+ BOSS_THORIM = 8,
+ BOSS_FREYA = 9,
+ BOSS_MIMIRON = 10,
+ BOSS_VEZAX = 11,
+ BOSS_YOGG_SARON = 12,
+ BOSS_ALGALON = 13,
+ BOSS_BRIGHTLEAF = 14,
+ BOSS_IRONBRANCH = 15,
+ BOSS_STONEBARK = 16,
};
enum UlduarNPCs
@@ -295,6 +295,35 @@ enum UlduarAchievementCriteriaIds
CRITERIA_ALONE_IN_THE_DARKNESS_10 = 10412,
CRITERIA_ALONE_IN_THE_DARKNESS_25 = 10417,
CRITERIA_HERALD_OF_TITANS = 10678,
+
+ // Champion of Ulduar
+ CRITERIA_C_O_U_LEVIATHAN_10 = 10042,
+ CRITERIA_C_O_U_IGNIS_10 = 10342,
+ CRITERIA_C_O_U_RAZORSCALE_10 = 10340,
+ CRITERIA_C_O_U_XT002_10 = 10341,
+ CRITERIA_C_O_U_IRON_COUNCIL_10 = 10598,
+ CRITERIA_C_O_U_KOLOGARN_10 = 10348,
+ CRITERIA_C_O_U_AURIAYA_10 = 10351,
+ CRITERIA_C_O_U_HODIR_10 = 10439,
+ CRITERIA_C_O_U_THORIM_10 = 10403,
+ CRITERIA_C_O_U_FREYA_10 = 10582,
+ CRITERIA_C_O_U_MIMIRON_10 = 10347,
+ CRITERIA_C_O_U_VEZAX_10 = 10349,
+ CRITERIA_C_O_U_YOGG_SARON_10 = 10350,
+ // Conqueror of Ulduar
+ CRITERIA_C_O_U_LEVIATHAN_25 = 10352,
+ CRITERIA_C_O_U_IGNIS_25 = 10355,
+ CRITERIA_C_O_U_RAZORSCALE_25 = 10353,
+ CRITERIA_C_O_U_XT002_25 = 10354,
+ CRITERIA_C_O_U_IRON_COUNCIL_25 = 10599,
+ CRITERIA_C_O_U_KOLOGARN_25 = 10357,
+ CRITERIA_C_O_U_AURIAYA_25 = 10363,
+ CRITERIA_C_O_U_HODIR_25 = 10719,
+ CRITERIA_C_O_U_THORIM_25 = 10404,
+ CRITERIA_C_O_U_FREYA_25 = 10583,
+ CRITERIA_C_O_U_MIMIRON_25 = 10361,
+ CRITERIA_C_O_U_VEZAX_25 = 10362,
+ CRITERIA_C_O_U_YOGG_SARON_25 = 10364
};
enum UlduarData