mirror of
https://github.com/araxiaonline/mod-mythic-plus.git
synced 2026-06-13 11:12:23 -04:00
Compare commits
24 Commits
refactor-s
...
feature/fu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8d4c5e698 | ||
|
|
9120666bd5 | ||
| 8fbb47b5b6 | |||
| 716ca94e73 | |||
| fa81bd6f79 | |||
| e8ddac961d | |||
| 74c529a2b0 | |||
| 4801ab5484 | |||
| 5fca712e62 | |||
| 1b1c54782b | |||
| 3f3f63f90e | |||
| 64dd608dc4 | |||
| 2dbbccc6eb | |||
|
|
f225a8211b | ||
| 1481fe1cce | |||
| 53218b487a | |||
| 7618b2af58 | |||
| 586858c485 | |||
| a5b22f84ed | |||
| f0f3b26229 | |||
| 18bb3e6599 | |||
| 15c4e22967 | |||
| 27db74e2ae | |||
| 5986d314c7 |
@@ -6,8 +6,8 @@
|
||||
#
|
||||
##########################################################
|
||||
|
||||
Appender.MythicPlusLog=2,5,0,mod-mythic-plus.log,w
|
||||
Appender.MythicPlusConsole=1,5,0,"1 9 3 6 5 8"
|
||||
Appender.MythicPlusLog=2,4,0,mod-mythic-plus.log,w
|
||||
# Appender.MythicPlusConsole=1,5,0,"1 9 3 6 5 8"
|
||||
Logger.module.MythicPlus=5,MythicPlusLog MythicPlusConsole
|
||||
|
||||
##########################################################
|
||||
@@ -36,11 +36,13 @@ MythicPlus.EnableDeathLimits = 1
|
||||
|
||||
##########################################################
|
||||
#
|
||||
# Mythic+ Stat Modifiers By Difficuty
|
||||
# Mythic+ Global Stat Modifiers By Difficulty
|
||||
# - These values are used to adjust the difficulty of enemies and bosses base
|
||||
# stats based on the difficulty of the dungeon.
|
||||
# - Bosses will only receive their multiplier not the Dungeon multiplier to prevent multiplicative scaling.
|
||||
# - These values are used to scale the difficulty of all dungeons across new difficulty modes.
|
||||
#
|
||||
# To scale individual instances you should use the mp_scale_factors table per instance to increase/reduce Modifiers
|
||||
##########################################################
|
||||
|
||||
MythicPlus.Mythic.DungeonHealth = 1.25
|
||||
@@ -103,7 +105,7 @@ MythicPlus.Ascendant.DeathAllowance = 15
|
||||
# - These values are used to set the offset to where items per difficulty will map to.
|
||||
# - Item drops in this mode use the original item entry + on offset to determine the new item entry reward.
|
||||
# - This enables a fast lookup at loot drop time as it is just an addition operation.
|
||||
# - If using the base geneated sql the settings below will map to it. If the offset is incorrect,
|
||||
# - If using the base generated sql the settings below will map to it. If the offset is incorrect,
|
||||
# the item will not be found and the original low level item will be rewarded.
|
||||
#
|
||||
##########################################################
|
||||
@@ -112,8 +114,21 @@ MythicPlus.Mythic.ItemOffset = 20000000
|
||||
MythicPlus.Legendary.ItemOffset = 21000000
|
||||
MythicPlus.Ascendant.ItemOffset = 22000000
|
||||
|
||||
##########################################################
|
||||
# Diminishing Returns
|
||||
# - These values are used to set the diminishing returns for the different difficulties.
|
||||
# - The diminishing returns are used to limit the amount of damage that can be done to a target.
|
||||
# - The diminishing returns are based on the difficulty of the dungeon and the amount of damage that has been done to the target.
|
||||
##########################################################
|
||||
|
||||
MythicPlus.DiminishingExponent = 0.96
|
||||
MythicPlus.DiminishingThreshold.Mythic = 10000
|
||||
MythicPlus.DiminishingThreshold.Legendary = 20000
|
||||
MythicPlus.DiminishingThreshold.Ascendant = 40000
|
||||
|
||||
##############
|
||||
# Scaling Adjusters
|
||||
#############
|
||||
MythicPlus.MeleeAttackPowerDampener = 800
|
||||
MythicPlus.MeleeAttackPowerStart = 3000
|
||||
MythicPlus.ElementalMeleeReducer = 0.50
|
||||
MythicPlus.NormalEnemyReducer = 0.50
|
||||
MythicPlus.NonCreatureSpellReducer = 0.50
|
||||
|
||||
@@ -17,7 +17,7 @@ CREATE TABLE mp_player_instance_data (
|
||||
guid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
difficulty INT UNSIGNED NOT NULL DEFAULT '3',
|
||||
mapId INT UNSIGNED NOT NULL,
|
||||
instanceId INT UNSIGNED,
|
||||
instanceId INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
deaths INT UNSIGNED NOT NULL,
|
||||
|
||||
PRIMARY KEY (guid, mapId, instanceId)
|
||||
@@ -88,13 +88,13 @@ CREATE TABLE mp_player_advancement_history (
|
||||
bonus FLOAT NOT NULL,
|
||||
upgradeRank INT UNSIGNED NOT NULL,
|
||||
diceSpent INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
materialId1 INT UNSIGNED NOT NULL,
|
||||
materialId2 INT UNSIGNED NOT NULL,
|
||||
materialId3 INT UNSIGNED NOT NULL,
|
||||
materialCost1 INT UNSIGNED NOT NULL,
|
||||
materialCost2 INT UNSIGNED NOT NULL,
|
||||
materialCost3 INT UNSIGNED NOT NULL,
|
||||
entryId1 INT UNSIGNED NOT NULL,
|
||||
entryId2 INT UNSIGNED,
|
||||
entryId3 INT UNSIGNED,
|
||||
itemCost1 INT UNSIGNED NOT NULL,
|
||||
itemCost2 INT UNSIGNED,
|
||||
itemCost3 INT UNSIGNED,
|
||||
added TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (guid, advancementId)
|
||||
PRIMARY KEY (guid, advancementId, upgradeRank)
|
||||
);
|
||||
|
||||
|
||||
@@ -4,12 +4,12 @@ DROP TABLE IF EXISTS mp_upgrade_ranks;
|
||||
CREATE TABLE mp_upgrade_ranks (
|
||||
upgradeRank INT UNSIGNED NOT NULL,
|
||||
advancementId INT UNSIGNED NOT NULL,
|
||||
materialId1 INT UNSIGNED NOT NULL,
|
||||
materialId2 INT UNSIGNED NOT NULL,
|
||||
materialId3 INT UNSIGNED NOT NULL,
|
||||
materialCost1 INT UNSIGNED NOT NULL,
|
||||
materialCost2 INT UNSIGNED NOT NULL,
|
||||
materialCost3 INT UNSIGNED NOT NULL,
|
||||
itemEntry1 INT UNSIGNED NOT NULL,
|
||||
itemEntry2 INT UNSIGNED NOT NULL,
|
||||
itemEntry3 INT UNSIGNED NOT NULL,
|
||||
itemCost1 INT UNSIGNED NOT NULL,
|
||||
itemCost2 INT UNSIGNED NOT NULL,
|
||||
itemCost3 INT UNSIGNED NOT NULL,
|
||||
minIncrease1 INT UNSIGNED NOT NULL,
|
||||
maxIncrease1 INT UNSIGNED NOT NULL,
|
||||
minIncrease2 INT UNSIGNED NOT NULL,
|
||||
@@ -23,7 +23,7 @@ CREATE TABLE mp_upgrade_ranks (
|
||||
PRIMARY KEY (upgradeRank, advancementId)
|
||||
);
|
||||
|
||||
-- Used to allocate trade materials based on slot upgrades
|
||||
-- Used to allocate trade materials to a category for fusion into new tradeskills
|
||||
DROP TABLE IF EXISTS mp_material_types;
|
||||
CREATE TABLE mp_material_types (
|
||||
materialId INT UNSIGNED NOT NULL,
|
||||
@@ -38,11 +38,10 @@ CREATE TABLE mp_material_types (
|
||||
DROP TABLE IF EXISTS mp_scale_factors;
|
||||
CREATE TABLE mp_scale_factors (
|
||||
mapId SMALLINT NOT NULL,
|
||||
dmg_bonus INT DEFAULT '100',
|
||||
spell_bonus INT DEFAULT '100',
|
||||
hp_bonus INT DEFAULT '100',
|
||||
difficulty INT DEFAULT '100',
|
||||
max INT DEFAULT '100',
|
||||
|
||||
melee_bonus FLOAT DEFAULT '1',
|
||||
spell_bonus FLOAT DEFAULT '1',
|
||||
heal_bonus FLOAT DEFAULT '1',
|
||||
hp_bonus FLOAT DEFAULT '1',
|
||||
difficulty FLOAT DEFAULT '1',
|
||||
PRIMARY KEY (mapId)
|
||||
);
|
||||
|
||||
@@ -535,3 +535,5 @@ WHERE
|
||||
'Eternal Mana', -- Central crafting material for arcane resistance gear.
|
||||
'Saronite Animus' -- Rare drop from arcane-themed enemies in Icecrown Citadel.
|
||||
);
|
||||
|
||||
REPLACE INTO mp_material_types (materialId, entry, name) VALUES (23, 911002, 'Veilstone');
|
||||
|
||||
@@ -1,81 +1,152 @@
|
||||
-- Last Update: 2021/08/15
|
||||
-- Last Update: 2025/01/17
|
||||
-- Description: Scale factors for Mythic+ dungeons used to normalize dungeon difficulty across expansions.
|
||||
-- 1. Pre 60 level dungeons (13 dmg_bonus, 2 hp_bonus, max 23, difficulty 3)
|
||||
INSERT INTO mp_scale_factors (mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max)
|
||||
-- 1. Pre 60 level dungeons (melee_bonus: 1.9-2.2, spell_bonus: 1.8-1.9, hp_bonus: 2, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(389, 22, 19,2, 3, 23), -- Ragefire Chasm
|
||||
(43, 19, 18,2, 3, 23), -- Wailing Caverns
|
||||
(36, 19, 19,2, 3, 23), -- The Deadmines
|
||||
(33, 19, 19,2, 3, 23), -- Shadowfang Keep
|
||||
(34, 19, 19,2, 3, 23), -- The Stockade
|
||||
(48, 19, 19,2, 3, 23), -- Blackfathom Deeps
|
||||
(90, 19, 19,2, 3, 23), -- Gnomeregan
|
||||
(47, 19, 19,2, 3, 23), -- Razorfen Kraul
|
||||
(189, 19, 19,2, 3, 23), -- Scarlet Monastery (Graveyard)
|
||||
(129, 19, 19,2, 3, 23), -- Razorfen Downs
|
||||
(70, 19, 19,2, 3, 23), -- Uldaman
|
||||
(209, 19, 19,2, 3, 23), -- Zul'Farrak
|
||||
(349, 19, 19,2, 3, 23) -- Maraudon
|
||||
ON DUPLICATE KEY UPDATE mapId = mapId;
|
||||
(389, 2.2, 1.9, 1.9, 2, 3), -- Ragefire Chasm
|
||||
(43, 1.9, 1.8, 1.8, 2, 3), -- Wailing Caverns
|
||||
(36, 1.9, 1.9, 1.9, 2, 3), -- The Deadmines
|
||||
(33, 1.9, 1.9, 1.9, 2, 3), -- Shadowfang Keep
|
||||
(34, 1.9, 1.9, 1.9, 2, 3), -- The Stockade
|
||||
(48, 1.9, 1.9, 1.9, 2, 3), -- Blackfathom Deeps
|
||||
(90, 1.9, 1.9, 1.9, 2, 3), -- Gnomeregan
|
||||
(47, 1.9, 1.9, 1.9, 2, 3), -- Razorfen Kraul
|
||||
(189, 1.9, 1.9, 1.9, 2, 3), -- Scarlet Monastery (Graveyard)
|
||||
(129, 1.9, 1.9, 1.9, 2, 3), -- Razorfen Downs
|
||||
(70, 1.9, 1.9, 1.9, 2, 3), -- Uldaman
|
||||
(209, 1.9, 1.9, 1.9, 2, 3), -- Zul'Farrak
|
||||
(349, 1.9, 1.9, 1.9, 2, 3) -- Maraudon
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
-- 2. Level 60 dungeons for classic (15 dmg_bonus, 3 hp_bonus, max 25, difficulty 3)
|
||||
INSERT INTO mp_scale_factors (mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max)
|
||||
-- 2. Level 60 dungeons for classic (melee_bonus: 1.7, spell_bonus: 2.0, hp_bonus: 3, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(289, 17, 20,3, 3, 25), -- Scholomance
|
||||
(109, 17, 20,3, 3, 25), -- Sunken Temple
|
||||
(329, 17, 20,3, 3, 25), -- Stratholme
|
||||
(229, 17, 20,3, 3, 25), -- Blackrock Spire (Lower)
|
||||
(230, 17, 20,3, 3, 25), -- Blackrock Spire (Upper)
|
||||
(429, 17, 20,3, 3, 25), -- Dire Maul
|
||||
(269, 17, 20,3, 3, 25) -- Temple of Atal'Hakkar
|
||||
ON DUPLICATE KEY UPDATE mapId = mapId;
|
||||
(289, 1.7, 2.0, 2.0, 3, 3), -- Scholomance
|
||||
(109, 1.7, 2.0, 2.0, 3, 3), -- Sunken Temple
|
||||
(329, 1.7, 2.0, 2.0, 3, 3), -- Stratholme
|
||||
(229, 1.7, 2.0, 2.0, 3, 3), -- Blackrock Spire (Lower)
|
||||
(230, 1.7, 2.0, 2.0, 3, 3), -- Blackrock Spire (Upper)
|
||||
(429, 1.7, 2.0, 2.0, 3, 3), -- Dire Maul
|
||||
(269, 1.7, 2.0, 2.0, 3, 3) -- Temple of Atal'Hakkar
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
-- 3. Pre 70 dungeons in Burning Crusade (15 dmg_bonus, 4 hp_bonus, max 26, difficulty 3)
|
||||
INSERT INTO mp_scale_factors (mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max)
|
||||
-- 3. Pre 70 dungeons in Burning Crusade (melee_bonus: 1.6, spell_bonus: 1.4, hp_bonus: 4, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(542, 16, 14,4, 3, 26), -- Hellfire The Blood Furnace
|
||||
(543, 16, 14,4, 3, 26), -- Hellfire Ramparts
|
||||
(545, 16, 14,4, 3, 26), -- Coilfang Steamvaults
|
||||
(546, 16, 14,4, 3, 26), -- Coilfang Reservoir: The Underbog
|
||||
(547, 16, 14,4, 3, 26), -- Coilfang Reservoir: The Underbog
|
||||
(557, 16, 14,4, 3, 26), -- Auchindoun: Mana-Tombs
|
||||
(558, 16, 14,4, 3, 26), -- Auchindoun: Auchenai Crypts
|
||||
(560, 16, 14,4, 3, 26) -- Caverns of Time: Old Hillsbrad Foothills
|
||||
ON DUPLICATE KEY UPDATE mapId = mapId;
|
||||
(542, 1.6, 1.4, 1.4, 4, 3), -- Hellfire The Blood Furnace
|
||||
(543, 1.6, 1.4, 1.4, 4, 3), -- Hellfire Ramparts
|
||||
(545, 1.6, 1.4, 1.4, 4, 3), -- Coilfang Steamvaults
|
||||
(546, 1.6, 1.4, 1.4, 4, 3), -- Coilfang Reservoir: The Underbog
|
||||
(547, 1.6, 1.4, 1.4, 4, 3), -- Coilfang Reservoir: The Slave Pens
|
||||
(557, 1.6, 1.4, 1.4, 4, 3), -- Auchindoun: Mana-Tombs
|
||||
(558, 1.6, 1.4, 1.4, 4, 3), -- Auchindoun: Auchenai Crypts
|
||||
(560, 1.6, 1.4, 1.4, 4, 3) -- Caverns of Time: Old Hillsbrad Foothills
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
-- 4. Level 70 dungeons in Burning Crusade (14 dmg_bonus, 4 hp_bonus, max 29, difficulty 3)
|
||||
INSERT INTO mp_scale_factors (mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max)
|
||||
-- 4. Level 70 dungeons in Burning Crusade (melee_bonus: 1.4, spell_bonus: 1.3, hp_bonus: 4, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(540, 14, 13,4, 3, 29), -- Shattered Halls
|
||||
(556, 14, 13,4, 3, 29), -- Auchindoun: Sethekk Halls
|
||||
(555, 14, 13,4, 3, 29), -- Auchindoun: Shadow Labyrinth
|
||||
(553, 14, 13,4, 3, 29), -- Tempest Keep: The Botanica
|
||||
(554, 14, 13,4, 3, 29), -- Tempest Keep: The Mechanar
|
||||
(552, 14, 13,4, 3, 29), -- Tempest Keep: The Arcatraz
|
||||
(585, 14, 13,4, 3, 29) -- Magisters' Terrace
|
||||
ON DUPLICATE KEY UPDATE mapId = mapId;
|
||||
(540, 1.4, 1.3, 1.3, 4, 3), -- Shattered Halls
|
||||
(556, 1.4, 1.3, 1.3, 4, 3), -- Auchindoun: Sethekk Halls
|
||||
(555, 1.4, 1.3, 1.3, 4, 3), -- Auchindoun: Shadow Labyrinth
|
||||
(553, 1.4, 1.3, 1.3, 4, 3), -- Tempest Keep: The Botanica
|
||||
(554, 1.4, 1.3, 1.3, 4, 3), -- Tempest Keep: The Mechanar
|
||||
(552, 1.4, 1.3, 1.3, 4, 3), -- Tempest Keep: The Arcatraz
|
||||
(585, 1.4, 1.3, 1.3, 4, 3) -- Magisters' Terrace
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
-- 5. Pre 80 dungeons in Wrath of the Lich King (17 dmg_bonus, 3 hp_bonus, max 30, difficulty 3)
|
||||
INSERT INTO mp_scale_factors (mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max)
|
||||
-- 5. Pre 80 dungeons in Wrath of the Lich King (melee_bonus: 1.9, spell_bonus: 1.2, hp_bonus: 3, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(574, 19, 12,3, 3, 30), -- Utgarde Keep
|
||||
(619, 19, 12,3, 3, 30), -- Ahn'kahet: The Old Kingdom
|
||||
(576, 19, 12,3, 3, 30), -- The Nexus
|
||||
(600, 19, 12,3, 3, 30), -- Drak'Tharon Keep
|
||||
(601, 19, 12,3, 3, 30), -- Azjol-Nerub
|
||||
(608, 19, 12,3, 3, 30) -- The Violet Hold
|
||||
ON DUPLICATE KEY UPDATE mapId = mapId;
|
||||
(574, 1.9, 1.2, 1.2, 3, 3), -- Utgarde Keep
|
||||
(619, 1.9, 1.2, 1.2, 3, 3), -- Ahn'kahet: The Old Kingdom
|
||||
(576, 1.9, 1.2, 1.2, 3, 3), -- The Nexus
|
||||
(600, 1.9, 1.2, 1.2, 3, 3), -- Drak'Tharon Keep
|
||||
(601, 1.9, 1.2, 1.2, 3, 3), -- Azjol-Nerub
|
||||
(608, 1.9, 1.2, 1.2, 3, 3) -- The Violet Hold
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
-- 6. Level 80 dungeons in Wrath of the Lich King (19 dmg_bonus, 4 hp_bonus, max 33, difficulty 3)
|
||||
INSERT INTO mp_scale_factors (mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max)
|
||||
-- 6. Level 80 dungeons in Wrath of the Lich King (melee_bonus: 1.9, spell_bonus: 1.3, hp_bonus: 5, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(595, 19, 13,5, 3, 33), -- The Culling of Stratholme
|
||||
(604, 19, 13,5, 3, 33), -- Gundrak
|
||||
(599, 19, 13,5, 3, 33), -- Halls of Stone
|
||||
(602, 19, 13,5, 3, 33), -- Halls of Lightning
|
||||
(578, 19, 13,5, 3, 33), -- The Oculus
|
||||
(650, 19, 13,5, 3, 33), -- Trial of the Champion
|
||||
(632, 19, 13,5, 3, 33), -- The Forge of Souls
|
||||
(658, 19, 13,5, 3, 33), -- Pit of Saron
|
||||
(668, 19, 13,5, 3, 33) -- Halls of Reflection
|
||||
ON DUPLICATE KEY UPDATE mapId = mapId;
|
||||
(595, 1.9, 1.3, 1.3, 5, 3), -- The Culling of Stratholme
|
||||
(604, 1.9, 1.3, 1.3, 5, 3), -- Gundrak
|
||||
(599, 1.9, 1.3, 1.3, 5, 3), -- Halls of Stone
|
||||
(602, 1.9, 1.3, 1.3, 5, 3), -- Halls of Lightning
|
||||
(578, 1.9, 1.3, 1.3, 5, 3), -- The Oculus
|
||||
(650, 1.9, 1.3, 1.3, 5, 3), -- Trial of the Champion
|
||||
(632, 1.9, 1.3, 1.3, 5, 3), -- The Forge of Souls
|
||||
(658, 1.9, 1.3, 1.3, 5, 3), -- Pit of Saron
|
||||
(668, 1.9, 1.3, 1.3, 5, 3) -- Halls of Reflection
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
-- 7. Raid instances (melee_bonus: 2.6, spell_bonus: 2.0, heal_bonus: 1.6, hp_bonus: 3, difficulty: 3)
|
||||
INSERT INTO mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty)
|
||||
VALUES
|
||||
(169, 2.6, 2.0, 1.6, 3, 3), -- Emerald Dream
|
||||
(249, 2.8, 1.6, 1.6, 3, 3), -- Onyxia's Lair
|
||||
(309, 2.0, 1.3, 1.6, 3, 3), -- Zul'Gurub
|
||||
(409, 2.2, 1.4, 1.6, 3, 3), -- Molten Core
|
||||
(469, 2.6, 2.0, 1.6, 3, 3), -- Blackwing Lair
|
||||
(509, 2.6, 2.0, 1.6, 3, 3), -- Ruins of Ahn'Qiraj
|
||||
(531, 2.6, 2.0, 1.6, 3, 3), -- Ahn'Qiraj Temple
|
||||
(532, 2.6, 2.0, 1.6, 3, 3), -- Karazhan
|
||||
(533, 2.0, 1.8, 1.6, 3, 3), -- Naxxramas
|
||||
(534, 2.6, 2.0, 1.6, 3, 3), -- The Battle for Mount Hyjal
|
||||
(544, 2.0, 2.0, 1.6, 3, 3), -- Magtheridon's Lair
|
||||
(548, 2.6, 2.0, 1.6, 3, 3), -- Coilfang: Serpentshrine Cavern
|
||||
(550, 2.6, 2.0, 1.6, 3, 3), -- Tempest Keep
|
||||
(564, 2.9, 2.8, 1.6, 3, 3), -- Black Temple
|
||||
(565, 2.6, 2.0, 1.6, 3, 3), -- Gruul's Lair
|
||||
(568, 2.6, 2.0, 1.6, 3, 3), -- Zul'Aman
|
||||
(580, 2.6, 2.0, 1.6, 3, 3), -- The Sunwell
|
||||
(603, 2.6, 2.0, 1.6, 3, 3), -- Ulduar
|
||||
(615, 2.6, 2.0, 1.6, 3, 3), -- The Obsidian Sanctum
|
||||
(616, 2.6, 2.0, 1.6, 3, 3), -- The Eye of Eternity
|
||||
(624, 2.6, 2.0, 1.6, 3, 3), -- Vault of Archavon
|
||||
(631, 2.8, 2.4, 1.6, 5, 3), -- Icecrown Citadel
|
||||
(649, 3.0, 2.3, 1.6, 4, 3), -- Trial of the Crusader
|
||||
(724, 2.68, 2.0, 1.6, 3, 3) -- The Ruby Sanctum
|
||||
AS new_values
|
||||
ON DUPLICATE KEY UPDATE
|
||||
melee_bonus = new_values.melee_bonus,
|
||||
spell_bonus = new_values.spell_bonus,
|
||||
heal_bonus = new_values.heal_bonus,
|
||||
hp_bonus = new_values.hp_bonus,
|
||||
difficulty = new_values.difficulty;
|
||||
|
||||
@@ -1,253 +1,500 @@
|
||||
-- SQL Script to Insert 50 Ranks for Each Stat
|
||||
REPLACE INTO mp_upgrade_ranks (upgradeRank, advancementId, materialId1, materialCost1, materialId2, materialCost2, materialId3, materialCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES
|
||||
(1, 3, 7, 100, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 3, 7, 150, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 3, 7, 200, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 3, 7, 250, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 3, 7, 300, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 3, 7, 350, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 3, 7, 400, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 3, 7, 450, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 3, 7, 500, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 3, 7, 550, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 3, 7, 500, 8, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 3, 7, 525, 8, 10, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 3, 7, 550, 8, 20, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 3, 7, 575, 8, 30, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 3, 7, 600, 8, 40, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 3, 7, 625, 8, 50, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 3, 7, 650, 8, 60, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 3, 7, 675, 8, 70, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 3, 7, 700, 8, 80, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 3, 7, 725, 8, 90, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 3, 7, 750, 8, 100, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 3, 7, 775, 8, 110, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 3, 7, 800, 8, 120, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 3, 7, 825, 8, 130, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 3, 7, 850, 8, 140, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 3, 7, 875, 8, 150, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 3, 7, 900, 8, 160, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 3, 7, 925, 8, 170, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 3, 7, 950, 8, 180, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 3, 7, 1000, 8, 190, 20, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 3, 7, 1018, 8, 200, 20, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 3, 7, 1036, 8, 210, 20, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 3, 7, 1054, 8, 220, 20, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 3, 7, 1072, 8, 230, 20, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 3, 7, 1090, 8, 240, 20, 18, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 3, 7, 1108, 8, 250, 20, 21, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 3, 7, 1126, 8, 260, 20, 24, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 3, 7, 1144, 8, 270, 20, 27, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 3, 7, 1162, 8, 280, 20, 30, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 3, 7, 1180, 8, 290, 20, 33, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 3, 7, 1198, 8, 300, 20, 36, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 3, 7, 1216, 8, 310, 20, 39, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 3, 7, 1234, 8, 320, 20, 42, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 3, 7, 1252, 8, 330, 20, 45, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 3, 7, 1270, 8, 340, 20, 48, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 3, 7, 1288, 8, 350, 20, 51, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 3, 7, 1306, 8, 360, 20, 54, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 3, 7, 1324, 8, 370, 20, 57, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 3, 7, 1342, 8, 380, 20, 60, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 3, 7, 1360, 8, 390, 20, 63, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 4, 9, 100, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 4, 9, 150, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 4, 9, 200, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 4, 9, 250, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 4, 9, 300, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 4, 9, 350, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 4, 9, 400, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 4, 9, 450, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 4, 9, 500, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 4, 9, 550, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 4, 9, 500, 10, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 4, 9, 525, 10, 10, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 4, 9, 550, 10, 20, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 4, 9, 575, 10, 30, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 4, 9, 600, 10, 40, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 4, 9, 625, 10, 50, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 4, 9, 650, 10, 60, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 4, 9, 675, 10, 70, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 4, 9, 700, 10, 80, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 4, 9, 725, 10, 90, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 4, 9, 750, 10, 100, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 4, 9, 775, 10, 110, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 4, 9, 800, 10, 120, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 4, 9, 825, 10, 130, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 4, 9, 850, 10, 140, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 4, 9, 875, 10, 150, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 4, 9, 900, 10, 160, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 4, 9, 925, 10, 170, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 4, 9, 950, 10, 180, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 4, 9, 1000, 10, 190, 20, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 4, 9, 1018, 10, 200, 20, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 4, 9, 1036, 10, 210, 20, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 4, 9, 1054, 10, 220, 20, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 4, 9, 1072, 10, 230, 20, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 4, 9, 1090, 10, 240, 20, 18, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 4, 9, 1108, 10, 250, 20, 21, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 4, 9, 1126, 10, 260, 20, 24, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 4, 9, 1144, 10, 270, 20, 27, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 4, 9, 1162, 10, 280, 20, 30, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 4, 9, 1180, 10, 290, 20, 33, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 4, 9, 1198, 10, 300, 20, 36, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 4, 9, 1216, 10, 310, 20, 39, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 4, 9, 1234, 10, 320, 20, 42, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 4, 9, 1252, 10, 330, 20, 45, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 4, 9, 1270, 10, 340, 20, 48, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 4, 9, 1288, 10, 350, 20, 51, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 4, 9, 1306, 10, 360, 20, 54, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 4, 9, 1324, 10, 370, 20, 57, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 4, 9, 1342, 10, 380, 20, 60, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 4, 9, 1360, 10, 390, 20, 63, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 0, 1, 100, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 0, 1, 150, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 0, 1, 200, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 0, 1, 250, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 0, 1, 300, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 0, 1, 350, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 0, 1, 400, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 0, 1, 450, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 0, 1, 500, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 0, 1, 550, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 0, 1, 500, 2, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 0, 1, 525, 2, 10, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 0, 1, 550, 2, 20, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 0, 1, 575, 2, 30, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 0, 1, 600, 2, 40, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 0, 1, 625, 2, 50, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 0, 1, 650, 2, 60, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 0, 1, 675, 2, 70, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 0, 1, 700, 2, 80, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 0, 1, 725, 2, 90, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 0, 1, 750, 2, 100, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 0, 1, 775, 2, 110, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 0, 1, 800, 2, 120, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 0, 1, 825, 2, 130, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 0, 1, 850, 2, 140, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 0, 1, 875, 2, 150, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 0, 1, 900, 2, 160, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 0, 1, 925, 2, 170, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 0, 1, 950, 2, 180, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 0, 1, 1000, 2, 190, 20, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 0, 1, 1018, 2, 200, 20, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 0, 1, 1036, 2, 210, 20, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 0, 1, 1054, 2, 220, 20, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 0, 1, 1072, 2, 230, 20, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 0, 1, 1090, 2, 240, 20, 18, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 0, 1, 1108, 2, 250, 20, 21, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 0, 1, 1126, 2, 260, 20, 24, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 0, 1, 1144, 2, 270, 20, 27, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 0, 1, 1162, 2, 280, 20, 30, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 0, 1, 1180, 2, 290, 20, 33, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 0, 1, 1198, 2, 300, 20, 36, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 0, 1, 1216, 2, 310, 20, 39, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 0, 1, 1234, 2, 320, 20, 42, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 0, 1, 1252, 2, 330, 20, 45, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 0, 1, 1270, 2, 340, 20, 48, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 0, 1, 1288, 2, 350, 20, 51, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 0, 1, 1306, 2, 360, 20, 54, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 0, 1, 1324, 2, 370, 20, 57, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 0, 1, 1342, 2, 380, 20, 60, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 0, 1, 1360, 2, 390, 20, 63, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 1, 3, 100, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 1, 3, 150, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 1, 3, 200, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 1, 3, 250, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 1, 3, 300, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 1, 3, 350, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 1, 3, 400, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 1, 3, 450, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 1, 3, 500, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 1, 3, 550, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 1, 3, 500, 4, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 1, 3, 525, 4, 10, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 1, 3, 550, 4, 20, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 1, 3, 575, 4, 30, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 1, 3, 600, 4, 40, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 1, 3, 625, 4, 50, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 1, 3, 650, 4, 60, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 1, 3, 675, 4, 70, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 1, 3, 700, 4, 80, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 1, 3, 725, 4, 90, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 1, 3, 750, 4, 100, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 1, 3, 775, 4, 110, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 1, 3, 800, 4, 120, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 1, 3, 825, 4, 130, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 1, 3, 850, 4, 140, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 1, 3, 875, 4, 150, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 1, 3, 900, 4, 160, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 1, 3, 925, 4, 170, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 1, 3, 950, 4, 180, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 1, 3, 1000, 4, 190, 20, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 1, 3, 1018, 4, 200, 20, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 1, 3, 1036, 4, 210, 20, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 1, 3, 1054, 4, 220, 20, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 1, 3, 1072, 4, 230, 20, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 1, 3, 1090, 4, 240, 20, 18, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 1, 3, 1108, 4, 250, 20, 21, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 1, 3, 1126, 4, 260, 20, 24, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 1, 3, 1144, 4, 270, 20, 27, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 1, 3, 1162, 4, 280, 20, 30, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 1, 3, 1180, 4, 290, 20, 33, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 1, 3, 1198, 4, 300, 20, 36, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 1, 3, 1216, 4, 310, 20, 39, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 1, 3, 1234, 4, 320, 20, 42, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 1, 3, 1252, 4, 330, 20, 45, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 1, 3, 1270, 4, 340, 20, 48, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 1, 3, 1288, 4, 350, 20, 51, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 1, 3, 1306, 4, 360, 20, 54, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 1, 3, 1324, 4, 370, 20, 57, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 1, 3, 1342, 4, 380, 20, 60, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 1, 3, 1360, 4, 390, 20, 63, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 2, 5, 100, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 2, 5, 150, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 2, 5, 200, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 2, 5, 250, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 2, 5, 300, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 2, 5, 350, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 2, 5, 400, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 2, 5, 450, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 2, 5, 500, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 2, 5, 550, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 2, 5, 500, 6, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 2, 5, 525, 6, 10, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 2, 5, 550, 6, 20, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 2, 5, 575, 6, 30, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 2, 5, 600, 6, 40, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 2, 5, 625, 6, 50, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 2, 5, 650, 6, 60, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 2, 5, 675, 6, 70, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 2, 5, 700, 6, 80, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 2, 5, 725, 6, 90, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 2, 5, 750, 6, 100, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 2, 5, 775, 6, 110, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 2, 5, 800, 6, 120, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 2, 5, 825, 6, 130, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 2, 5, 850, 6, 140, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 2, 5, 875, 6, 150, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 2, 5, 900, 6, 160, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 2, 5, 925, 6, 170, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 2, 5, 950, 6, 180, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 2, 5, 1000, 6, 190, 20, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 2, 5, 1018, 6, 200, 20, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 2, 5, 1036, 6, 210, 20, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 2, 5, 1054, 6, 220, 20, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 2, 5, 1072, 6, 230, 20, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 2, 5, 1090, 6, 240, 20, 18, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 2, 5, 1108, 6, 250, 20, 21, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 2, 5, 1126, 6, 260, 20, 24, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 2, 5, 1144, 6, 270, 20, 27, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 2, 5, 1162, 6, 280, 20, 30, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 2, 5, 1180, 6, 290, 20, 33, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 2, 5, 1198, 6, 300, 20, 36, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 2, 5, 1216, 6, 310, 20, 39, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 2, 5, 1234, 6, 320, 20, 42, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 2, 5, 1252, 6, 330, 20, 45, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 2, 5, 1270, 6, 340, 20, 48, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 2, 5, 1288, 6, 350, 20, 51, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 2, 5, 1306, 6, 360, 20, 54, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 2, 5, 1324, 6, 370, 20, 57, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 2, 5, 1342, 6, 380, 20, 60, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 2, 5, 1360, 6, 390, 20, 63, 9, 18, 13, 18, 24, 27, 167, 197, 222)
|
||||
;
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 0, 911005, 0, 0, 5, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 1, 911009, 0, 0, 5, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 2, 911003, 0, 0, 5, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 3, 911007, 0, 0, 5, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 4, 911011, 0, 0, 5, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 5, 911019, 0, 0, 4, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 6, 911017, 0, 0, 4, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 7, 911023, 0, 0, 4, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 8, 911015, 0, 0, 4, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (1, 9, 911021, 0, 0, 4, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 0, 911005, 0, 0, 8, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 1, 911009, 0, 0, 8, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 2, 911003, 0, 0, 8, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 3, 911007, 0, 0, 8, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 4, 911011, 0, 0, 8, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 5, 911019, 0, 0, 6, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 6, 911017, 0, 0, 6, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 7, 911023, 0, 0, 6, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 8, 911015, 0, 0, 6, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (2, 9, 911021, 0, 0, 6, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 0, 911005, 0, 0, 10, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 1, 911009, 0, 0, 10, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 2, 911003, 0, 0, 10, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 3, 911007, 0, 0, 10, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 4, 911011, 0, 0, 10, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 5, 911019, 0, 0, 8, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 6, 911017, 0, 0, 8, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 7, 911023, 0, 0, 8, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 8, 911015, 0, 0, 8, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (3, 9, 911021, 0, 0, 8, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 0, 911005, 0, 0, 13, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 1, 911009, 0, 0, 13, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 2, 911003, 0, 0, 13, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 3, 911007, 0, 0, 13, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 4, 911011, 0, 0, 13, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 5, 911019, 0, 0, 9, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 6, 911017, 0, 0, 9, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 7, 911023, 0, 0, 9, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 8, 911015, 0, 0, 9, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (4, 9, 911021, 0, 0, 9, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 0, 911005, 0, 0, 15, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 1, 911009, 0, 0, 15, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 2, 911003, 0, 0, 15, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 3, 911007, 0, 0, 15, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 4, 911011, 0, 0, 15, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 5, 911019, 0, 0, 11, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 6, 911017, 0, 0, 11, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 7, 911023, 0, 0, 11, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 8, 911015, 0, 0, 11, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (5, 9, 911021, 0, 0, 11, 0, 0, 1, 5, 3, 5, 4, 6, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 0, 911005, 0, 0, 18, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 1, 911009, 0, 0, 18, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 2, 911003, 0, 0, 18, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 3, 911007, 0, 0, 18, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 4, 911011, 0, 0, 18, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 5, 911019, 0, 0, 13, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 6, 911017, 0, 0, 13, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 7, 911023, 0, 0, 13, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 8, 911015, 0, 0, 13, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (6, 9, 911021, 0, 0, 13, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 0, 911005, 0, 0, 20, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 1, 911009, 0, 0, 20, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 2, 911003, 0, 0, 20, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 3, 911007, 0, 0, 20, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 4, 911011, 0, 0, 20, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 5, 911019, 0, 0, 15, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 6, 911017, 0, 0, 15, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 7, 911023, 0, 0, 15, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 8, 911015, 0, 0, 15, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (7, 9, 911021, 0, 0, 15, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 0, 911005, 0, 0, 23, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 1, 911009, 0, 0, 23, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 2, 911003, 0, 0, 23, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 3, 911007, 0, 0, 23, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 4, 911011, 0, 0, 23, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 5, 911019, 0, 0, 16, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 6, 911017, 0, 0, 16, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 7, 911023, 0, 0, 16, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 8, 911015, 0, 0, 16, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (8, 9, 911021, 0, 0, 16, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 0, 911005, 0, 0, 25, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 1, 911009, 0, 0, 25, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 2, 911003, 0, 0, 25, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 3, 911007, 0, 0, 25, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 4, 911011, 0, 0, 25, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 5, 911019, 0, 0, 18, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 6, 911017, 0, 0, 18, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 7, 911023, 0, 0, 18, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 8, 911015, 0, 0, 18, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (9, 9, 911021, 0, 0, 18, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 0, 911005, 0, 0, 28, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 1, 911009, 0, 0, 28, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 2, 911003, 0, 0, 28, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 3, 911007, 0, 0, 28, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 4, 911011, 0, 0, 28, 0, 0, 1, 10, 5, 10, 8, 11, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 5, 911019, 0, 0, 20, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 6, 911017, 0, 0, 20, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 7, 911023, 0, 0, 20, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 8, 911015, 0, 0, 20, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (10, 9, 911021, 0, 0, 20, 0, 0, 3, 7, 5, 7, 8, 10, 25, 50, 75);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 0, 911005, 911006, 0, 25, 0, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 1, 911009, 911010, 0, 25, 0, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 2, 911003, 911004, 0, 25, 0, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 3, 911007, 911008, 0, 25, 0, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 4, 911011, 911012, 0, 25, 0, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 5, 911019, 911020, 0, 18, 0, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 6, 911017, 911018, 0, 18, 0, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 7, 911023, 911024, 0, 18, 0, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 8, 911015, 911016, 0, 18, 0, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (11, 9, 911021, 911022, 0, 18, 0, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 0, 911005, 911006, 0, 27, 2, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 1, 911009, 911010, 0, 27, 2, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 2, 911003, 911004, 0, 27, 2, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 3, 911007, 911008, 0, 27, 2, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 4, 911011, 911012, 0, 27, 2, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 5, 911019, 911020, 0, 19, 2, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 6, 911017, 911018, 0, 19, 2, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 7, 911023, 911024, 0, 19, 2, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 8, 911015, 911016, 0, 19, 2, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (12, 9, 911021, 911022, 0, 19, 2, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 0, 911005, 911006, 0, 28, 4, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 1, 911009, 911010, 0, 28, 4, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 2, 911003, 911004, 0, 28, 4, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 3, 911007, 911008, 0, 28, 4, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 4, 911011, 911012, 0, 28, 4, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 5, 911019, 911020, 0, 20, 4, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 6, 911017, 911018, 0, 20, 4, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 7, 911023, 911024, 0, 20, 4, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 8, 911015, 911016, 0, 20, 4, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (13, 9, 911021, 911022, 0, 20, 4, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 0, 911005, 911006, 0, 29, 6, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 1, 911009, 911010, 0, 29, 6, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 2, 911003, 911004, 0, 29, 6, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 3, 911007, 911008, 0, 29, 6, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 4, 911011, 911012, 0, 29, 6, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 5, 911019, 911020, 0, 22, 6, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 6, 911017, 911018, 0, 22, 6, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 7, 911023, 911024, 0, 22, 6, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 8, 911015, 911016, 0, 22, 6, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (14, 9, 911021, 911022, 0, 22, 6, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 0, 911005, 911006, 0, 30, 8, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 1, 911009, 911010, 0, 30, 8, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 2, 911003, 911004, 0, 30, 8, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 3, 911007, 911008, 0, 30, 8, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 4, 911011, 911012, 0, 30, 8, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 5, 911019, 911020, 0, 23, 8, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 6, 911017, 911018, 0, 23, 8, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 7, 911023, 911024, 0, 23, 8, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 8, 911015, 911016, 0, 23, 8, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (15, 9, 911021, 911022, 0, 23, 8, 0, 5, 9, 7, 9, 12, 14, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 0, 911005, 911006, 0, 32, 10, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 1, 911009, 911010, 0, 32, 10, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 2, 911003, 911004, 0, 32, 10, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 3, 911007, 911008, 0, 32, 10, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 4, 911011, 911012, 0, 32, 10, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 5, 911019, 911020, 0, 24, 10, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 6, 911017, 911018, 0, 24, 10, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 7, 911023, 911024, 0, 24, 10, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 8, 911015, 911016, 0, 24, 10, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (16, 9, 911021, 911022, 0, 24, 10, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 0, 911005, 911006, 0, 33, 12, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 1, 911009, 911010, 0, 33, 12, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 2, 911003, 911004, 0, 33, 12, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 3, 911007, 911008, 0, 33, 12, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 4, 911011, 911012, 0, 33, 12, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 5, 911019, 911020, 0, 25, 12, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 6, 911017, 911018, 0, 25, 12, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 7, 911023, 911024, 0, 25, 12, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 8, 911015, 911016, 0, 25, 12, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (17, 9, 911021, 911022, 0, 25, 12, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 0, 911005, 911006, 0, 34, 14, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 1, 911009, 911010, 0, 34, 14, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 2, 911003, 911004, 0, 34, 14, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 3, 911007, 911008, 0, 34, 14, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 4, 911011, 911012, 0, 34, 14, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 5, 911019, 911020, 0, 27, 14, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 6, 911017, 911018, 0, 27, 14, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 7, 911023, 911024, 0, 27, 14, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 8, 911015, 911016, 0, 27, 14, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (18, 9, 911021, 911022, 0, 27, 14, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 0, 911005, 911006, 0, 35, 16, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 1, 911009, 911010, 0, 35, 16, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 2, 911003, 911004, 0, 35, 16, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 3, 911007, 911008, 0, 35, 16, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 4, 911011, 911012, 0, 35, 16, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 5, 911019, 911020, 0, 28, 16, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 6, 911017, 911018, 0, 28, 16, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 7, 911023, 911024, 0, 28, 16, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 8, 911015, 911016, 0, 28, 16, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (19, 9, 911021, 911022, 0, 28, 16, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 0, 911005, 911006, 0, 37, 18, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 1, 911009, 911010, 0, 37, 18, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 2, 911003, 911004, 0, 37, 18, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 3, 911007, 911008, 0, 37, 18, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 4, 911011, 911012, 0, 37, 18, 0, 3, 12, 7, 12, 12, 15, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 5, 911019, 911020, 0, 29, 18, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 6, 911017, 911018, 0, 29, 18, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 7, 911023, 911024, 0, 29, 18, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 8, 911015, 911016, 0, 29, 18, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (20, 9, 911021, 911022, 0, 29, 18, 0, 7, 11, 9, 11, 16, 18, 50, 75, 100);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 0, 911005, 911006, 0, 38, 20, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 1, 911009, 911010, 0, 38, 20, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 2, 911003, 911004, 0, 38, 20, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 3, 911007, 911008, 0, 38, 20, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 4, 911011, 911012, 0, 38, 20, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 5, 911019, 911020, 0, 30, 20, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 6, 911017, 911018, 0, 30, 20, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 7, 911023, 911024, 0, 30, 20, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 8, 911015, 911016, 0, 30, 20, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (21, 9, 911021, 911022, 0, 30, 20, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 0, 911005, 911006, 0, 39, 22, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 1, 911009, 911010, 0, 39, 22, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 2, 911003, 911004, 0, 39, 22, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 3, 911007, 911008, 0, 39, 22, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 4, 911011, 911012, 0, 39, 22, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 5, 911019, 911020, 0, 32, 22, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 6, 911017, 911018, 0, 32, 22, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 7, 911023, 911024, 0, 32, 22, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 8, 911015, 911016, 0, 32, 22, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (22, 9, 911021, 911022, 0, 32, 22, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 0, 911005, 911006, 0, 40, 24, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 1, 911009, 911010, 0, 40, 24, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 2, 911003, 911004, 0, 40, 24, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 3, 911007, 911008, 0, 40, 24, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 4, 911011, 911012, 0, 40, 24, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 5, 911019, 911020, 0, 33, 24, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 6, 911017, 911018, 0, 33, 24, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 7, 911023, 911024, 0, 33, 24, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 8, 911015, 911016, 0, 33, 24, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (23, 9, 911021, 911022, 0, 33, 24, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 0, 911005, 911006, 0, 42, 26, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 1, 911009, 911010, 0, 42, 26, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 2, 911003, 911004, 0, 42, 26, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 3, 911007, 911008, 0, 42, 26, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 4, 911011, 911012, 0, 42, 26, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 5, 911019, 911020, 0, 34, 26, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 6, 911017, 911018, 0, 34, 26, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 7, 911023, 911024, 0, 34, 26, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 8, 911015, 911016, 0, 34, 26, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (24, 9, 911021, 911022, 0, 34, 26, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 0, 911005, 911006, 0, 43, 28, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 1, 911009, 911010, 0, 43, 28, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 2, 911003, 911004, 0, 43, 28, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 3, 911007, 911008, 0, 43, 28, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 4, 911011, 911012, 0, 43, 28, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 5, 911019, 911020, 0, 35, 28, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 6, 911017, 911018, 0, 35, 28, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 7, 911023, 911024, 0, 35, 28, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 8, 911015, 911016, 0, 35, 28, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (25, 9, 911021, 911022, 0, 35, 28, 0, 9, 13, 11, 13, 20, 22, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 0, 911005, 911006, 0, 44, 30, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 1, 911009, 911010, 0, 44, 30, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 2, 911003, 911004, 0, 44, 30, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 3, 911007, 911008, 0, 44, 30, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 4, 911011, 911012, 0, 44, 30, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 5, 911019, 911020, 0, 37, 30, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 6, 911017, 911018, 0, 37, 30, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 7, 911023, 911024, 0, 37, 30, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 8, 911015, 911016, 0, 37, 30, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (26, 9, 911021, 911022, 0, 37, 30, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 0, 911005, 911006, 0, 45, 32, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 1, 911009, 911010, 0, 45, 32, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 2, 911003, 911004, 0, 45, 32, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 3, 911007, 911008, 0, 45, 32, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 4, 911011, 911012, 0, 45, 32, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 5, 911019, 911020, 0, 38, 32, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 6, 911017, 911018, 0, 38, 32, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 7, 911023, 911024, 0, 38, 32, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 8, 911015, 911016, 0, 38, 32, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (27, 9, 911021, 911022, 0, 38, 32, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 0, 911005, 911006, 0, 47, 34, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 1, 911009, 911010, 0, 47, 34, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 2, 911003, 911004, 0, 47, 34, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 3, 911007, 911008, 0, 47, 34, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 4, 911011, 911012, 0, 47, 34, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 5, 911019, 911020, 0, 39, 34, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 6, 911017, 911018, 0, 39, 34, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 7, 911023, 911024, 0, 39, 34, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 8, 911015, 911016, 0, 39, 34, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (28, 9, 911021, 911022, 0, 39, 34, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 0, 911005, 911006, 0, 48, 36, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 1, 911009, 911010, 0, 48, 36, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 2, 911003, 911004, 0, 48, 36, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 3, 911007, 911008, 0, 48, 36, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 4, 911011, 911012, 0, 48, 36, 0, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 5, 911019, 911020, 0, 40, 36, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 6, 911017, 911018, 0, 40, 36, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 7, 911023, 911024, 0, 40, 36, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 8, 911015, 911016, 0, 40, 36, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (29, 9, 911021, 911022, 0, 40, 36, 0, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 0, 911005, 911006, 911002, 50, 38, 3, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 1, 911009, 911010, 911002, 50, 38, 3, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 2, 911003, 911004, 911002, 50, 38, 3, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 3, 911007, 911008, 911002, 50, 38, 3, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 4, 911011, 911012, 911002, 50, 38, 3, 5, 14, 9, 14, 16, 19, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 5, 911019, 911020, 911002, 35, 38, 3, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 6, 911017, 911018, 911002, 35, 38, 3, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 7, 911023, 911024, 911002, 35, 38, 3, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 8, 911015, 911016, 911002, 35, 38, 3, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (30, 9, 911021, 911022, 911002, 35, 38, 3, 11, 15, 13, 15, 24, 26, 75, 100, 125);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 0, 911005, 911006, 911002, 51, 40, 6, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 1, 911009, 911010, 911002, 51, 40, 6, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 2, 911003, 911004, 911002, 51, 40, 6, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 3, 911007, 911008, 911002, 51, 40, 6, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 4, 911011, 911012, 911002, 51, 40, 6, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 5, 911019, 911020, 911002, 36, 40, 6, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 6, 911017, 911018, 911002, 36, 40, 6, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 7, 911023, 911024, 911002, 36, 40, 6, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 8, 911015, 911016, 911002, 36, 40, 6, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (31, 9, 911021, 911022, 911002, 36, 40, 6, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 0, 911005, 911006, 911002, 52, 42, 9, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 1, 911009, 911010, 911002, 52, 42, 9, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 2, 911003, 911004, 911002, 52, 42, 9, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 3, 911007, 911008, 911002, 52, 42, 9, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 4, 911011, 911012, 911002, 52, 42, 9, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 5, 911019, 911020, 911002, 37, 42, 9, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 6, 911017, 911018, 911002, 37, 42, 9, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 7, 911023, 911024, 911002, 37, 42, 9, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 8, 911015, 911016, 911002, 37, 42, 9, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (32, 9, 911021, 911022, 911002, 37, 42, 9, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 0, 911005, 911006, 911002, 53, 44, 12, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 1, 911009, 911010, 911002, 53, 44, 12, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 2, 911003, 911004, 911002, 53, 44, 12, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 3, 911007, 911008, 911002, 53, 44, 12, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 4, 911011, 911012, 911002, 53, 44, 12, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 5, 911019, 911020, 911002, 38, 44, 12, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 6, 911017, 911018, 911002, 38, 44, 12, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 7, 911023, 911024, 911002, 38, 44, 12, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 8, 911015, 911016, 911002, 38, 44, 12, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (33, 9, 911021, 911022, 911002, 38, 44, 12, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 0, 911005, 911006, 911002, 54, 46, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 1, 911009, 911010, 911002, 54, 46, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 2, 911003, 911004, 911002, 54, 46, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 3, 911007, 911008, 911002, 54, 46, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 4, 911011, 911012, 911002, 54, 46, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 5, 911019, 911020, 911002, 39, 46, 15, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 6, 911017, 911018, 911002, 39, 46, 15, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 7, 911023, 911024, 911002, 39, 46, 15, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 8, 911015, 911016, 911002, 39, 46, 15, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (34, 9, 911021, 911022, 911002, 39, 46, 15, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 0, 911005, 911006, 911002, 55, 48, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 1, 911009, 911010, 911002, 55, 48, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 2, 911003, 911004, 911002, 55, 48, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 3, 911007, 911008, 911002, 55, 48, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 4, 911011, 911012, 911002, 55, 48, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 5, 911019, 911020, 911002, 40, 48, 18, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 6, 911017, 911018, 911002, 40, 48, 18, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 7, 911023, 911024, 911002, 40, 48, 18, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 8, 911015, 911016, 911002, 40, 48, 18, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (35, 9, 911021, 911022, 911002, 40, 48, 18, 13, 17, 15, 17, 28, 30, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 0, 911005, 911006, 911002, 56, 50, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 1, 911009, 911010, 911002, 56, 50, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 2, 911003, 911004, 911002, 56, 50, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 3, 911007, 911008, 911002, 56, 50, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 4, 911011, 911012, 911002, 56, 50, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 5, 911019, 911020, 911002, 41, 50, 21, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 6, 911017, 911018, 911002, 41, 50, 21, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 7, 911023, 911024, 911002, 41, 50, 21, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 8, 911015, 911016, 911002, 41, 50, 21, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (36, 9, 911021, 911022, 911002, 41, 50, 21, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 0, 911005, 911006, 911002, 57, 52, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 1, 911009, 911010, 911002, 57, 52, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 2, 911003, 911004, 911002, 57, 52, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 3, 911007, 911008, 911002, 57, 52, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 4, 911011, 911012, 911002, 57, 52, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 5, 911019, 911020, 911002, 42, 52, 24, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 6, 911017, 911018, 911002, 42, 52, 24, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 7, 911023, 911024, 911002, 42, 52, 24, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 8, 911015, 911016, 911002, 42, 52, 24, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (37, 9, 911021, 911022, 911002, 42, 52, 24, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 0, 911005, 911006, 911002, 58, 54, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 1, 911009, 911010, 911002, 58, 54, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 2, 911003, 911004, 911002, 58, 54, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 3, 911007, 911008, 911002, 58, 54, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 4, 911011, 911012, 911002, 58, 54, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 5, 911019, 911020, 911002, 43, 54, 27, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 6, 911017, 911018, 911002, 43, 54, 27, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 7, 911023, 911024, 911002, 43, 54, 27, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 8, 911015, 911016, 911002, 43, 54, 27, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (38, 9, 911021, 911022, 911002, 43, 54, 27, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 0, 911005, 911006, 911002, 59, 56, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 1, 911009, 911010, 911002, 59, 56, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 2, 911003, 911004, 911002, 59, 56, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 3, 911007, 911008, 911002, 59, 56, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 4, 911011, 911012, 911002, 59, 56, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 5, 911019, 911020, 911002, 44, 56, 30, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 6, 911017, 911018, 911002, 44, 56, 30, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 7, 911023, 911024, 911002, 44, 56, 30, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 8, 911015, 911016, 911002, 44, 56, 30, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (39, 9, 911021, 911022, 911002, 44, 56, 30, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 0, 911005, 911006, 911002, 59, 58, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 1, 911009, 911010, 911002, 59, 58, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 2, 911003, 911004, 911002, 59, 58, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 3, 911007, 911008, 911002, 59, 58, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 4, 911011, 911012, 911002, 59, 58, 15, 7, 16, 11, 16, 20, 23, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 5, 911019, 911020, 911002, 44, 58, 33, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 6, 911017, 911018, 911002, 44, 58, 33, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 7, 911023, 911024, 911002, 44, 58, 33, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 8, 911015, 911016, 911002, 44, 58, 33, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (40, 9, 911021, 911022, 911002, 44, 58, 33, 15, 19, 17, 19, 32, 34, 100, 125, 150);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 0, 911005, 911006, 911002, 60, 60, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 1, 911009, 911010, 911002, 60, 60, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 2, 911003, 911004, 911002, 60, 60, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 3, 911007, 911008, 911002, 60, 60, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 4, 911011, 911012, 911002, 60, 60, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 5, 911019, 911020, 911002, 45, 60, 36, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 6, 911017, 911018, 911002, 45, 60, 36, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 7, 911023, 911024, 911002, 45, 60, 36, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 8, 911015, 911016, 911002, 45, 60, 36, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (41, 9, 911021, 911022, 911002, 45, 60, 36, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 0, 911005, 911006, 911002, 61, 62, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 1, 911009, 911010, 911002, 61, 62, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 2, 911003, 911004, 911002, 61, 62, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 3, 911007, 911008, 911002, 61, 62, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 4, 911011, 911012, 911002, 61, 62, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 5, 911019, 911020, 911002, 46, 62, 39, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 6, 911017, 911018, 911002, 46, 62, 39, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 7, 911023, 911024, 911002, 46, 62, 39, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 8, 911015, 911016, 911002, 46, 62, 39, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (42, 9, 911021, 911022, 911002, 46, 62, 39, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 0, 911005, 911006, 911002, 62, 64, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 1, 911009, 911010, 911002, 62, 64, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 2, 911003, 911004, 911002, 62, 64, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 3, 911007, 911008, 911002, 62, 64, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 4, 911011, 911012, 911002, 62, 64, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 5, 911019, 911020, 911002, 47, 64, 42, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 6, 911017, 911018, 911002, 47, 64, 42, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 7, 911023, 911024, 911002, 47, 64, 42, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 8, 911015, 911016, 911002, 47, 64, 42, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (43, 9, 911021, 911022, 911002, 47, 64, 42, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 0, 911005, 911006, 911002, 63, 66, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 1, 911009, 911010, 911002, 63, 66, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 2, 911003, 911004, 911002, 63, 66, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 3, 911007, 911008, 911002, 63, 66, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 4, 911011, 911012, 911002, 63, 66, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 5, 911019, 911020, 911002, 48, 66, 45, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 6, 911017, 911018, 911002, 48, 66, 45, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 7, 911023, 911024, 911002, 48, 66, 45, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 8, 911015, 911016, 911002, 48, 66, 45, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (44, 9, 911021, 911022, 911002, 48, 66, 45, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 0, 911005, 911006, 911002, 64, 68, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 1, 911009, 911010, 911002, 64, 68, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 2, 911003, 911004, 911002, 64, 68, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 3, 911007, 911008, 911002, 64, 68, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 4, 911011, 911012, 911002, 64, 68, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 5, 911019, 911020, 911002, 49, 68, 48, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 6, 911017, 911018, 911002, 49, 68, 48, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 7, 911023, 911024, 911002, 49, 68, 48, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 8, 911015, 911016, 911002, 49, 68, 48, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (45, 9, 911021, 911022, 911002, 49, 68, 48, 17, 21, 19, 21, 36, 38, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 0, 911005, 911006, 911002, 65, 70, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 1, 911009, 911010, 911002, 65, 70, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 2, 911003, 911004, 911002, 65, 70, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 3, 911007, 911008, 911002, 65, 70, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 4, 911011, 911012, 911002, 65, 70, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 5, 911019, 911020, 911002, 50, 70, 51, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 6, 911017, 911018, 911002, 50, 70, 51, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 7, 911023, 911024, 911002, 50, 70, 51, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 8, 911015, 911016, 911002, 50, 70, 51, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (46, 9, 911021, 911022, 911002, 50, 70, 51, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 0, 911005, 911006, 911002, 66, 72, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 1, 911009, 911010, 911002, 66, 72, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 2, 911003, 911004, 911002, 66, 72, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 3, 911007, 911008, 911002, 66, 72, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 4, 911011, 911012, 911002, 66, 72, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 5, 911019, 911020, 911002, 51, 72, 54, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 6, 911017, 911018, 911002, 51, 72, 54, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 7, 911023, 911024, 911002, 51, 72, 54, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 8, 911015, 911016, 911002, 51, 72, 54, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (47, 9, 911021, 911022, 911002, 51, 72, 54, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 0, 911005, 911006, 911002, 67, 74, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 1, 911009, 911010, 911002, 67, 74, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 2, 911003, 911004, 911002, 67, 74, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 3, 911007, 911008, 911002, 67, 74, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 4, 911011, 911012, 911002, 67, 74, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 5, 911019, 911020, 911002, 52, 74, 57, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 6, 911017, 911018, 911002, 52, 74, 57, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 7, 911023, 911024, 911002, 52, 74, 57, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 8, 911015, 911016, 911002, 52, 74, 57, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (48, 9, 911021, 911022, 911002, 52, 74, 57, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 0, 911005, 911006, 911002, 68, 76, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 1, 911009, 911010, 911002, 68, 76, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 2, 911003, 911004, 911002, 68, 76, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 3, 911007, 911008, 911002, 68, 76, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 4, 911011, 911012, 911002, 68, 76, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 5, 911019, 911020, 911002, 53, 76, 60, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 6, 911017, 911018, 911002, 53, 76, 60, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 7, 911023, 911024, 911002, 53, 76, 60, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 8, 911015, 911016, 911002, 53, 76, 60, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (49, 9, 911021, 911022, 911002, 53, 76, 60, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 0, 911005, 911006, 911002, 68, 78, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 1, 911009, 911010, 911002, 68, 78, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 2, 911003, 911004, 911002, 68, 78, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 3, 911007, 911008, 911002, 68, 78, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 4, 911011, 911012, 911002, 68, 78, 15, 9, 18, 13, 18, 24, 27, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 5, 911019, 911020, 911002, 53, 78, 63, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 6, 911017, 911018, 911002, 53, 78, 63, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 7, 911023, 911024, 911002, 53, 78, 63, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 8, 911015, 911016, 911002, 53, 78, 63, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
REPLACE INTO acore_world.mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemEntry2, itemEntry3, itemCost1, itemCost2, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES (50, 9, 911021, 911022, 911002, 53, 78, 63, 19, 23, 21, 23, 40, 42, 150, 175, 200);
|
||||
|
||||
24
data/sql/db-world/base/08_spell_scripts.sql
Normal file
24
data/sql/db-world/base/08_spell_scripts.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
REPLACE INTO acore_world.spell_script_names (spell_id, ScriptName) VALUES
|
||||
('80000001','spell_mp_titans_strength_aura'),
|
||||
('80000002','spell_mp_steel_forged_aura'),
|
||||
('80000003','spell_mp_celestial_grace_aura'),
|
||||
('80000004','spell_mp_forbidden_knowledge_aura'),
|
||||
('80000005','spell_mp_spectral_reflexes_aura'),
|
||||
('80000006','spell_mp_eldritch_barrier_aura'),
|
||||
('80000007','spell_mp_hellfire_shielding_aura'),
|
||||
('80000008','spell_mp_primal_endurance_aura'),
|
||||
('80000009','spell_mp_lichs_bane_aura'),
|
||||
('80000010','spell_mp_glacial_fortress_aura');
|
||||
|
||||
DELETE FROM `spell_dbc` WHERE `ID` IN (80000001, 80000002, 80000003, 80000004, 80000005, 80000006, 80000007, 80000008, 80000009, 80000010);
|
||||
INSERT INTO `spell_dbc` (`ID`, `Attributes`, `AttributesEx`, `DispelType`, `Effect_1`, `EffectAura_1`,`EffectMiscValue_1`, `Name_Lang_enUS`, `Description_Lang_enUS`) VALUES
|
||||
(80000001, 192, 0, 0, 6, 29, 0, 'Titan\'s Strength', 'Empowers you with the legendary strength of the Titans, enhancing your physical prowess.'),
|
||||
(80000002, 192, 0, 0, 6, 29, 2, 'Steel Forged', 'Transforms your skin into an impenetrable steel armor, deflecting all but the mightiest blows.'),
|
||||
(80000003, 192, 0, 0, 6, 29, 4,'Celestial Grace', 'Blessed with celestial wisdom, you inspire and uplift the spirits of allies around you.'),
|
||||
(80000004, 192, 0, 0, 6, 29, 3,'Forbidden Knowledge', 'You have delved into the forbidden secrets of Azeroth, unlocking arcane mysteries and hidden powers.'),
|
||||
(80000005, 192, 0, 0, 6, 29, 1,'Spectral Reflexes', 'You become a phantom, mastering the art of the blade and dagger with unparalleled precision.'),
|
||||
(80000006, 192, 0, 0, 6, 22, 64,'Eldritch Barrier', 'Erects an eldritch barrier that halts arcane forces in their tracks, shielding you from magical harm.'),
|
||||
(80000007, 192, 0, 0, 6, 22, 4,'Hellfire Shielding', 'You have learned to withstand the infernal flames of hell, emerging unscathed from fiery assaults.'),
|
||||
(80000008, 192, 0, 0, 6, 22, 8,'Primal Endurance', 'Your endurance has been toughened to resist pestilence and plague, rendering you immune to their effects.'),
|
||||
(80000009, 192, 0, 0, 6, 22, 32, 'Lich\'s Bane', 'You possess the knowledge to counter the shadows of the undead, protecting your flesh from their dark touch.'),
|
||||
(80000010, 192, 0, 0, 6, 22, 16, 'Glacial Fortress', 'You can withstand temperatures far below freezing that no mere mortal can endure, encased in a glacial fortress.');
|
||||
97
data/sql/db-world/base/09_custom_items.sql
Normal file
97
data/sql/db-world/base/09_custom_items.sql
Normal file
@@ -0,0 +1,97 @@
|
||||
-- Common dice for stat roles
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911000);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911000, 15, 4, -1, 'Ancient Dice', 52015, 3, 163840, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 'Ancient dice from an unknown origin, maybe someone or something is looking for them.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
-- Rare Item for reseting AA points
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911001);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911001, 0, 4, -1, 'Onyx Spike Relic', 33851, 4, 0, 0, 0, 0, 10000000, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 65082, 0, 10, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, 'This relic has a dangerous aura. Using this seems fatal', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
-- Legendary Veilstone for end game stat upgrades
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911002);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911002, 15, 4, -1, 'Veilstone', 270622, 5, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, 'A gem that holds together the boundary between dimensions.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
-- mythical fusion items
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911003, 7, 1, -1, 'Fused Ore', '', 270620, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 1, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911004, 7, 1, -1, 'Moltenheart Core', 'Mythical ore from high level fusion', 270608, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 1, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911005, 7, 7, -1, 'Fused Cloth', '', 270613, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 7, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911006, 7, 7, -1, 'Soulthread Shroud', 'Mythical cloth from high level fusion', 270601, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 7, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911007, 7, 8, -1, 'Fused Leather', '', 270619, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 8, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911008, 7, 8, -1, 'Ashwild Pelt', 'Mythical leather from high level fusion', 270607, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 8, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911009, 7, 3, -1, 'Fused Compound', '', 270610, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 3, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911010, 7, 3, -1, 'Elixir of Chaos', 'Mythical alchemy component from high level fusion', 270599, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 3, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911011, 7, 4, -1, 'Fused Gem', '', 270616, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 4, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911012, 7, 4, -1, 'Starfused Prism', 'Mythical gemstone from high level fusion', 270604, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 4, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911013, 7, 0, -1, 'Fused Essence', '', 270615, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911014, 7, 0, -1, 'Crystalline Echo', 'Mythical enchanting component from high level fusion', 270603, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911015, 7, 0, -1, 'Fused Frostshard', 'Artifact that emits extreme cold', 270617, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911016, 7, 0, -1, 'Everfrost Crystal', 'Mythical frost component from high level fusion', 270605, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911017, 7, 0, -1, 'Fused Infernostone', 'Artifact that emits extreme heat', 270618, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911018, 7, 0, -1, 'Blazebound Ember', 'Mythical fire component from high level fusion', 270606, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911019, 7, 0, -1, 'Fused Arcane Crystal', 'Artifact of immense arcane power',270611, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911020, 7, 0, -1, 'Spellfire Prism', 'Mythical arcane component from high level fusion', 270600, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911021, 7, 0, -1, 'Fused Shadow Crystal', 'Artifact radiating dark energy', 270621, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911022, 7, 0, -1, 'Eternal Shadow Crystal', 'Mythical shadow component from high level fusion',270609, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911023, 7, 0, -1, 'Fused Earth Shard','Artifact emitting dangerously poisonous vapors',270614, 3, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
REPLACE INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `Description`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `bonding`, `Material`, `VerifiedBuild`) VALUES (911024, 7, 0, -1, 'Verdant Stoneheart', 'Mythical earth component from high level fusion',270602, 4, 262144, 0, 1, 0, 0, 0, -1, -1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 1, 0, 12340);
|
||||
|
||||
-- Flavor Text
|
||||
DELETE FROM `item_template` WHERE (`entry` = 2595);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(2595, 0, 5, -1, 'Jug of Badlands Bourbon', 7921, 1, 0, 0, 1, 50000, 500, 0, -1, -1, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11009, 0, -1, -1, 0, 59, 1000, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 'Mick''s Favorite Drink', 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 12340);
|
||||
|
||||
|
||||
-- Currency
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911050);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911050, 10, 0, -1, 'Badge of the Void', 270626, 4, 2048, 0, 1, 0, 0, 0, -1, -1, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911051);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911051, 10, 0, -1, 'Emblem of Undeath', 270628, 4, 2048, 0, 1, 0, 0, 0, -1, -1, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911052);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911052, 10, 0, -1, 'Emblem of Chaos', 270623, 4, 2048, 0, 1, 0, 0, 0, -1, -1, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911053);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911053, 10, 0, -1, 'Emblem Of Veil', 270632, 4, 2048, 0, 1, 0, 0, 0, -1, -1, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911054);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911054, 10, 0, -1, 'Mythic Badge', 270629, 4, 2048, 0, 1, 0, 0, 0, -1, -1, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 500000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
-- Random loot where greens would drop.
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911100);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911100, 15, 0, -1, 'Shadowy Remains', 270634, 2, 4, 0, 1, 50000000, 12, 0, 32767, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, '', 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 12340);
|
||||
|
||||
DELETE FROM `item_template` WHERE (`entry` = 911101);
|
||||
INSERT INTO `item_template` (`entry`, `class`, `subclass`, `SoundOverrideSubclass`, `name`, `displayid`, `Quality`, `Flags`, `FlagsExtra`, `BuyCount`, `BuyPrice`, `SellPrice`, `InventoryType`, `AllowableClass`, `AllowableRace`, `ItemLevel`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `requiredspell`, `requiredhonorrank`, `RequiredCityRank`, `RequiredReputationFaction`, `RequiredReputationRank`, `maxcount`, `stackable`, `ContainerSlots`, `StatsCount`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `ScalingStatDistribution`, `ScalingStatValue`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `delay`, `ammo_type`, `RangedModRange`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmRate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmRate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmRate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmRate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmRate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `description`, `PageText`, `LanguageID`, `PageMaterial`, `startquest`, `lockid`, `Material`, `sheath`, `RandomProperty`, `RandomSuffix`, `block`, `itemset`, `MaxDurability`, `area`, `Map`, `BagFamily`, `TotemCategory`, `socketColor_1`, `socketContent_1`, `socketColor_2`, `socketContent_2`, `socketColor_3`, `socketContent_3`, `socketBonus`, `GemProperties`, `RequiredDisenchantSkill`, `ArmorDamageModifier`, `duration`, `ItemLimitCategory`, `HolidayId`, `ScriptName`, `DisenchantID`, `FoodType`, `minMoneyLoot`, `maxMoneyLoot`, `flagsCustom`, `VerifiedBuild`) VALUES
|
||||
(911101, 15, 0, -1, 'Veil Fragments', 270635, 2, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 1, 'valuable fragments of a veil stone.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0);
|
||||
|
||||
-- Loot Templates
|
||||
|
||||
DELETE FROM `item_loot_template` WHERE (`Entry` = 911100);
|
||||
INSERT INTO `item_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(911100, 33447, 0, 20, 0, 1, 0, 1, 3, 'Runic Healing Potion'),
|
||||
(911100, 33448, 0, 20, 0, 1, 0, 1, 3, 'Runic Mana Potion'),
|
||||
(911100, 910001, 0, 10, 0, 1, 0, 1, 2, 'Araxia Tokens'),
|
||||
(911100, 911000, 0, 10, 0, 1, 0, 1, 3, 'Ancient Dice'),
|
||||
(911100, 911003, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Ore'),
|
||||
(911100, 911005, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Cloth'),
|
||||
(911100, 911007, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Leather'),
|
||||
(911100, 911009, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Compound'),
|
||||
(911100, 911011, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Gem'),
|
||||
(911100, 911013, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Essence'),
|
||||
(911100, 911015, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Frostshard'),
|
||||
(911100, 911017, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Infernostone'),
|
||||
(911100, 911019, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Arcane Crystal'),
|
||||
(911100, 911021, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Shadow Crystal'),
|
||||
(911100, 911023, 0, 0.5, 0, 1, 0, 1, 1, 'Fused Earth Shard'),
|
||||
(911100, 911101, 0, 35.5, 0, 1, 0, 1, 5, 'Veil Fragments');
|
||||
15
data/sql/db-world/base/10_custom_spells.sql
Normal file
15
data/sql/db-world/base/10_custom_spells.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
REPLACE INTO
|
||||
spell_ranks (first_spell_id, spell_id, `rank`)
|
||||
VALUES
|
||||
(150000, 150000, 1), (150000, 150011, 2), -- Ore Fusion
|
||||
(150001, 150001, 1), (150001, 150012, 2), -- Cloth Fusion
|
||||
(150002, 150002, 1), (150002, 150013, 2), -- Leather Fusion
|
||||
(150003, 150003, 1), (150003, 150014, 2), -- Alchemy Fusion
|
||||
(150004, 150004, 1), (150004, 150015, 2), -- Gem Fusion
|
||||
(150005, 150005, 1), (150005, 150016, 2), -- Essence Fusion
|
||||
(150006, 150006, 1), (150006, 150017, 2), -- Cold Fusion
|
||||
(150007, 150007, 1), (150007, 150018, 2), -- Flame Fusion
|
||||
(150008, 150008, 1), (150008, 150019, 2), -- Arcane Fusion
|
||||
(150009, 150009, 1), (150009, 150020, 2), -- Dark Fusion
|
||||
(150010, 150010, 1), (150010, 150021, 2) -- Earth Fusion
|
||||
;
|
||||
201
data/sql/db-world/base/11_custom_npcs.sql
Normal file
201
data/sql/db-world/base/11_custom_npcs.sql
Normal file
@@ -0,0 +1,201 @@
|
||||
|
||||
-- Mick Ashwild
|
||||
REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500561, 0, 0, 0, 0, 0, 'Mick Ashwild', 'The Mug', NULL, 0, 85, 85, 2, 35, 1, 1, 1.14286, 1, 1, 20, 1, 0, 0, 1.35, 2000, 2000, 1, 1, 1, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 32, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 0.7, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500561);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500561, 0, 9500561, 1, 1, 12340);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500561);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500561, 1, 4090, 0, 0, 0);
|
||||
|
||||
-- Thorin Firehand
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500562);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500562, 0, 0, 0, 0, 0, 'Thorin Firehand', 'The Hammer', NULL, 0, 85, 85, 2, 35, 1, 0.85, 1.14286, 1, 1, 1, 1.1, 3, 0, 2, 1, 0, 2, 2.5, 1, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 32, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 3, 2, 10, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500562);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500562, 1, 11684, 2565, 0, 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500562);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500562, 0, 9500562, 1, 1, 12340);
|
||||
|
||||
|
||||
-- Elowyn Threadbinder
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500563);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500563, 0, 0, 0, 0, 0, 'Elowyn Threadbinder', 'Mystic Artisan', NULL, 0, 85, 85, 0, 35, 1, 1, 1.14286, 1, 1, 30, 1, 3, 0, 1, 2000, 2000, 1, 1, 8, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 32, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500563);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500563, 0, 9500563, 1, 1, 12340);
|
||||
|
||||
|
||||
-- Shivey
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500564);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500564, 0, 0, 0, 0, 0, 'Shivey', 'Professional Arson', NULL, 0, 85, 85, 2, 35, 1, 1, 1.14286, 1, 1, 1, 1, 3, 0, 1, 2000, 2500, 1, 1, 4, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500564);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500564, 1, 28648, 2200, 0, 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500564);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500564, 0, 9500564, 1, 1, 0);
|
||||
|
||||
-- Steve
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500565);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500565, 0, 0, 0, 0, 0, 'Steve', 'The Indestructible', NULL, 0, 85, 85, 2, 35, 1, 1, 1.14286, 1, 1, 1, 1.25, 3, 0, 100, 2000, 2500, 1, 1, 1, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 100, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500565);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500565, 1, 51869, 38462, 0, 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500565);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500565, 0, 9500565, 1.25, 1, 0);
|
||||
|
||||
-- Vaeric
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500566);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500566, 0, 0, 0, 0, 0, 'Vaeric Bloodbane', '', NULL, 0, 85, 85, 2, 35, 1, 1, 1.14286, 1, 1, 1, 1.25, 3, 0, 100, 2000, 2500, 1, 1, 1, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 100, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500566);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500566, 1, 38632, 0, 0, 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500566);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500566, 0, 9500566, 1.25, 1, 0);
|
||||
|
||||
-- Agatha
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500567);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500567, 0, 0, 0, 0, 0, 'Agatha Veil', 'The Wise', NULL, 0, 85, 85, 2, 35, 1, 1, 1.14286, 1, 1, 1, 1.25, 3, 0, 100, 2000, 2500, 1, 1, 1, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 100, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500567);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500567, 0, 9500567, 1.25, 1, 0);
|
||||
|
||||
-- Sylvia
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500568);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500568, 0, 0, 0, 0, 0, 'Sylvia Steelheart', 'Battle Maiden', NULL, 0, 85, 85, 2, 35, 1, 1, 1.14286, 1, 1, 1, 1.25, 3, 0, 100, 2000, 2500, 1, 1, 1, 33024, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 100, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500568);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500568, 1, 38200, 16887, 0, 0);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500568);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500568, 0, 9500568, 1.25, 1, 0);
|
||||
|
||||
|
||||
-- Model Info Updates
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
VALUES (9500561, 0.35, 1.25, 0, 0);
|
||||
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
SELECT 9500562, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender
|
||||
FROM creature_model_info
|
||||
WHERE DisplayID = 9500561;
|
||||
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
SELECT 9500563, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender
|
||||
FROM creature_model_info
|
||||
WHERE DisplayID = 9500561;
|
||||
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
SELECT 9500564, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender
|
||||
FROM creature_model_info
|
||||
WHERE DisplayID = 9500561;
|
||||
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
VALUES (9500565, 0.35, 1.25, 0, 0);
|
||||
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
VALUES (9500566, 0.35, 1.25, 0, 0);
|
||||
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
VALUES (9500567, 0.35, 1.25, 1, 0);
|
||||
|
||||
-- Supporting Cast Spawns
|
||||
-- Agatha
|
||||
DELETE FROM `creature` WHERE (`id1` = 9500567);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
|
||||
(9001011, 9500567, 0, 0, 530, 0, 0, 1, 1, 0, -1990.6, 5214.14, -44.0752, 0.978763, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9001014, 9500567, 0, 0, 571, 0, 0, 1, 1, 0, 5804.06, 639.865, 609.886, 5.98164, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
|
||||
-- Vaeric
|
||||
DELETE FROM `creature` WHERE (`id1` = 9500566);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
|
||||
(9001013, 9500566, 0, 0, 530, 0, 0, 1, 1, 1, -1989.96, 5225.28, -44.6008, 5.71627, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9001015, 9500566, 0, 0, 571, 0, 0, 1, 1, 1, 5826.64, 674.772, 609.885, 5.53385, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
|
||||
-- Slyvia
|
||||
DELETE FROM `creature` WHERE (`id1` = 9500568);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
|
||||
(9001010, 9500568, 0, 0, 530, 0, 0, 1, 1, 1, -1994.38, 5219.83, -44.2111, 0.597826, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9001016, 9500568, 0, 0, 571, 0, 0, 1, 1, 1, 5831.89, 678.204, 609.885, 5.0846, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
|
||||
|
||||
-- Gossip Texts
|
||||
|
||||
-- Vaeric Starter Intro
|
||||
DELETE FROM `npc_text` WHERE (`ID` = 60566);
|
||||
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `BroadcastTextID0`, `lang0`, `Probability0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `BroadcastTextID1`, `lang1`, `Probability1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `BroadcastTextID2`, `lang2`, `Probability2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `BroadcastTextID3`, `lang3`, `Probability3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `BroadcastTextID4`, `lang4`, `Probability4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `BroadcastTextID5`, `lang5`, `Probability5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `BroadcastTextID6`, `lang6`, `Probability6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `BroadcastTextID7`, `lang7`, `Probability7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `VerifiedBuild`) VALUES
|
||||
(60566, 'The Lich King is dead... but his shadow endures.
|
||||
You led the final blow against Arthas.
|
||||
You have strength but can grow stronger yet still.
|
||||
|
||||
Fragments of his power linger... You must stop Kel’Thuzad.
|
||||
|
||||
$n, Return to the battles you thought were finished.
|
||||
Face the darkness reborn. And return those once dead back
|
||||
to dust. While we search for a way to end this.
|
||||
|
||||
How can I aid you?', '', 0, 0, 0, 1, 1, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
|
||||
|
||||
-- Agatha Starter Intro
|
||||
DELETE FROM `npc_text` WHERE (`ID` = 60567);
|
||||
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `BroadcastTextID0`, `lang0`, `Probability0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `BroadcastTextID1`, `lang1`, `Probability1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `BroadcastTextID2`, `lang2`, `Probability2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `BroadcastTextID3`, `lang3`, `Probability3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `BroadcastTextID4`, `lang4`, `Probability4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `BroadcastTextID5`, `lang5`, `Probability5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `BroadcastTextID6`, `lang6`, `Probability6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `BroadcastTextID7`, `lang7`, `Probability7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `VerifiedBuild`) VALUES
|
||||
(60567, 'Kel\\’Thuzad continues to tear through my domain.
|
||||
He must be erased from existence.
|
||||
|
||||
I offer my knowledge —
|
||||
ancient powers... forbidden relics...
|
||||
to strengthen your kind against the unyielding shadows now pouring from my realm into yours.
|
||||
|
||||
Be quick, what do you need?', 'Kel\\’Thuzad continues to tear through my domain.
|
||||
He must be erased from existence.
|
||||
|
||||
I offer my knowledge —
|
||||
ancient powers... forbidden relics...
|
||||
to strengthen your kind against the unyielding shadows now pouring from my realm into yours.
|
||||
|
||||
Be quick, what do you need?', 0, 0, 0, 1, 1, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
|
||||
|
||||
DELETE FROM `npc_text` WHERE (`ID` = 60568);
|
||||
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `BroadcastTextID0`, `lang0`, `Probability0`, `em0_0`, `em0_1`, `em0_2`, `em0_3`, `em0_4`, `em0_5`, `text1_0`, `text1_1`, `BroadcastTextID1`, `lang1`, `Probability1`, `em1_0`, `em1_1`, `em1_2`, `em1_3`, `em1_4`, `em1_5`, `text2_0`, `text2_1`, `BroadcastTextID2`, `lang2`, `Probability2`, `em2_0`, `em2_1`, `em2_2`, `em2_3`, `em2_4`, `em2_5`, `text3_0`, `text3_1`, `BroadcastTextID3`, `lang3`, `Probability3`, `em3_0`, `em3_1`, `em3_2`, `em3_3`, `em3_4`, `em3_5`, `text4_0`, `text4_1`, `BroadcastTextID4`, `lang4`, `Probability4`, `em4_0`, `em4_1`, `em4_2`, `em4_3`, `em4_4`, `em4_5`, `text5_0`, `text5_1`, `BroadcastTextID5`, `lang5`, `Probability5`, `em5_0`, `em5_1`, `em5_2`, `em5_3`, `em5_4`, `em5_5`, `text6_0`, `text6_1`, `BroadcastTextID6`, `lang6`, `Probability6`, `em6_0`, `em6_1`, `em6_2`, `em6_3`, `em6_4`, `em6_5`, `text7_0`, `text7_1`, `BroadcastTextID7`, `lang7`, `Probability7`, `em7_0`, `em7_1`, `em7_2`, `em7_3`, `em7_4`, `em7_5`, `VerifiedBuild`) VALUES
|
||||
(60568, 'You have bothered my Spirit Healer Goddess enough.
|
||||
Besides, Vaeric trusts based on your deeds and I trust Vaeric.
|
||||
|
||||
I learned enough from Agatha to keep that face of yours upright — ancient powers... blah blah...
|
||||
|
||||
Just bring me some dices and fused materials and we can go from there.
|
||||
', 'You have bothered my Spirit Healer Goddess enough.
|
||||
Besides, Vaeric trusts based on your deeds and I trust Vaeric.
|
||||
|
||||
I learned enough from Agatha to keep that face of yours upright — ancient powers... blah blah...
|
||||
|
||||
Just bring me some dices and fused materials and we can go from there.
|
||||
', 0, 0, 0, 1, 1, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
|
||||
|
||||
6
data/sql/db-world/base/12_npcbot_wander_fix.sql
Normal file
6
data/sql/db-world/base/12_npcbot_wander_fix.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
UPDATE creature_template_npcbot_wander_nodes
|
||||
SET maxlevel = 85
|
||||
WHERE maxlevel = 80;
|
||||
|
||||
|
||||
UPDATE battleground_template SET MaxLvl = 85 where MaxLvl = 80;
|
||||
11
data/sql/db-world/base/13_custom_gameobjects.sql
Normal file
11
data/sql/db-world/base/13_custom_gameobjects.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
-- Supporting Cast Environment items
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001043, 185002, 530, 0, 0, 1, 1, -1992.59, 5211.21, -44.239, 0.985043, -0, -0, -0.472849, -0.881143, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001046, 190213, 530, 0, 0, 1, 1, -1999.01, 5226.06, -44.2926, 5.86235, -0, -0, -0.20887, 0.977943, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001047, 182934, 530, 0, 0, 1, 1, -1992.11, 5207.81, -44.7864, 0.95047, -0, -0, -0.457548, -0.889185, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001050, 192935, 530, 0, 0, 1, 1, -1991.3, 5213.01, -44.0442, 1.02353, -0, -0, -0.489717, -0.871881, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001051, 194581, 530, 0, 0, 1, 1, -1993.03, 5220.23, -44.2068, 3.67347, -0, -0, -0.964847, 0.262813, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001052, 182483, 530, 0, 0, 1, 1, -1994.8, 5219.62, -44.2093, 0.71644, -0, -0, -0.350608, -0.936523, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001055, 179846, 530, 0, 0, 1, 1, -1986.62, 5222.6, -44.6557, 3.55485, -0, -0, -0.978728, 0.205163, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001057, 192935, 571, 0, 0, 1, 1, 5804.06, 639.865, 609.886, 5.84656, -0, -0, -0.216585, 0.976264, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001059, 187082, 571, 0, 0, 1, 1, 5829.63, 674.817, 609.886, 5.36498, -0, -0, -0.443142, 0.896452, 300, 0, 1, '', null, null);
|
||||
172
data/sql/db-world/base/13a-gear-rebalance.sql
Normal file
172
data/sql/db-world/base/13a-gear-rebalance.sql
Normal file
@@ -0,0 +1,172 @@
|
||||
-- This rebalances lower level iLevel gear
|
||||
UPDATE item_template
|
||||
SET
|
||||
stat_value1 = CASE
|
||||
WHEN stat_type1 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value1 * 0.75)
|
||||
WHEN stat_type1 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value1 * 0.80)
|
||||
WHEN stat_type1 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value1 * 0.90)
|
||||
ELSE stat_value1
|
||||
END,
|
||||
stat_value2 = CASE
|
||||
WHEN stat_type2 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value2 * 0.75)
|
||||
WHEN stat_type2 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value2 * 0.80)
|
||||
WHEN stat_type2 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value2 * 0.90)
|
||||
ELSE stat_value2
|
||||
END,
|
||||
stat_value3 = CASE
|
||||
WHEN stat_type3 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value3 * 0.75)
|
||||
WHEN stat_type3 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value3 * 0.80)
|
||||
WHEN stat_type3 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value3 * 0.90)
|
||||
ELSE stat_value3
|
||||
END,
|
||||
stat_value4 = CASE
|
||||
WHEN stat_type4 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value4 * 0.75)
|
||||
WHEN stat_type4 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value4 * 0.80)
|
||||
WHEN stat_type4 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value4 * 0.90)
|
||||
ELSE stat_value4
|
||||
END,
|
||||
stat_value5 = CASE
|
||||
WHEN stat_type5 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value5 * 0.75)
|
||||
WHEN stat_type5 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value5 * 0.80)
|
||||
WHEN stat_type5 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value5 * 0.90)
|
||||
ELSE stat_value5
|
||||
END,
|
||||
stat_value6 = CASE
|
||||
WHEN stat_type6 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value6 * 0.75)
|
||||
WHEN stat_type6 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value6 * 0.80)
|
||||
WHEN stat_type6 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value6 * 0.90)
|
||||
ELSE stat_value6
|
||||
END,
|
||||
stat_value7 = CASE
|
||||
WHEN stat_type7 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value7 * 0.75)
|
||||
WHEN stat_type7 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value7 * 0.80)
|
||||
WHEN stat_type7 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value7 * 0.90) ELSE stat_value7
|
||||
END,
|
||||
stat_value8 = CASE
|
||||
WHEN stat_type8 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value8 * 0.75)
|
||||
WHEN stat_type8 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value8 * 0.80)
|
||||
WHEN stat_type8 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value8 * 0.90)
|
||||
ELSE stat_value8
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
-- Rebalance primary strength, agi, intellect down for lower ilvl items
|
||||
UPDATE item_template
|
||||
SET
|
||||
stat_value1 = CASE
|
||||
WHEN stat_type1 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value1 * 0.85)
|
||||
WHEN stat_type1 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value1 * 0.90)
|
||||
ELSE stat_value1
|
||||
END,
|
||||
stat_value2 = CASE
|
||||
WHEN stat_type2 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value2 * 0.85)
|
||||
WHEN stat_type2 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value2 * 0.90)
|
||||
ELSE stat_value2
|
||||
END,
|
||||
stat_value3 = CASE
|
||||
WHEN stat_type3 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value3 * 0.85)
|
||||
WHEN stat_type3 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value3 * 0.90)
|
||||
ELSE stat_value3
|
||||
END,
|
||||
stat_value4 = CASE
|
||||
WHEN stat_type4 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value4 * 0.85)
|
||||
WHEN stat_type4 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value4 * 0.90)
|
||||
ELSE stat_value4
|
||||
END,
|
||||
stat_value5 = CASE
|
||||
WHEN stat_type5 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value5 * 0.85)
|
||||
WHEN stat_type5 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value5 * 0.90)
|
||||
ELSE stat_value5
|
||||
END,
|
||||
stat_value6 = CASE
|
||||
WHEN stat_type6 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value6 * 0.85)
|
||||
WHEN stat_type6 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value6 * 0.90)
|
||||
ELSE stat_value6
|
||||
END,
|
||||
stat_value7 = CASE
|
||||
WHEN stat_type7 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value7 * 0.85)
|
||||
WHEN stat_type7 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value7 * 0.90)
|
||||
ELSE stat_value7
|
||||
END,
|
||||
stat_value8 = CASE
|
||||
WHEN stat_type8 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value8 * 0.85)
|
||||
WHEN stat_type8 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value8 * 0.90)
|
||||
ELSE stat_value8
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
-- Nerf hit / spell hit crit rating and others items 300-315 by 15% and 10%
|
||||
UPDATE item_template
|
||||
SET
|
||||
stat_value1 = CASE
|
||||
WHEN (stat_type1 BETWEEN 16 AND 37 OR stat_type1 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value1 * 0.85)
|
||||
WHEN (stat_type1 BETWEEN 16 AND 37 OR stat_type1 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value1 * 0.90)
|
||||
ELSE stat_value1
|
||||
END,
|
||||
stat_value2 = CASE
|
||||
WHEN (stat_type2 BETWEEN 16 AND 37 OR stat_type2 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value2 * 0.85)
|
||||
WHEN (stat_type2 BETWEEN 16 AND 37 OR stat_type2 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value2 * 0.90)
|
||||
ELSE stat_value2
|
||||
END,
|
||||
stat_value3 = CASE
|
||||
WHEN (stat_type3 BETWEEN 16 AND 37 OR stat_type3 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value3 * 0.85)
|
||||
WHEN (stat_type3 BETWEEN 16 AND 37 OR stat_type3 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value3 * 0.90)
|
||||
ELSE stat_value3
|
||||
END,
|
||||
stat_value4 = CASE
|
||||
WHEN (stat_type4 BETWEEN 16 AND 37 OR stat_type4 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value4 * 0.85)
|
||||
WHEN (stat_type4 BETWEEN 16 AND 37 OR stat_type4 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value4 * 0.90)
|
||||
ELSE stat_value4
|
||||
END,
|
||||
stat_value5 = CASE
|
||||
WHEN (stat_type5 BETWEEN 16 AND 37 OR stat_type5 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value5 * 0.85)
|
||||
WHEN (stat_type5 BETWEEN 16 AND 37 OR stat_type5 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value5 * 0.90)
|
||||
ELSE stat_value5
|
||||
END,
|
||||
stat_value6 = CASE
|
||||
WHEN (stat_type6 BETWEEN 16 AND 37 OR stat_type6 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value6 * 0.85)
|
||||
WHEN (stat_type6 BETWEEN 16 AND 37 OR stat_type6 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value6 * 0.90)
|
||||
ELSE stat_value6
|
||||
END,
|
||||
stat_value7 = CASE
|
||||
WHEN (stat_type7 BETWEEN 16 AND 37 OR stat_type7 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value7 * 0.85)
|
||||
WHEN (stat_type7 BETWEEN 16 AND 37 OR stat_type7 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value7 * 0.90)
|
||||
ELSE stat_value7
|
||||
END,
|
||||
stat_value8 = CASE
|
||||
WHEN (stat_type8 BETWEEN 16 AND 37 OR stat_type8 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value8 * 0.85)
|
||||
WHEN (stat_type8 BETWEEN 16 AND 37 OR stat_type8 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value8 * 0.90)
|
||||
ELSE stat_value8
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
-- reduce damage on lower level items
|
||||
UPDATE item_template
|
||||
SET
|
||||
dmg_min1 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_min1 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_min1 * 0.90)
|
||||
ELSE dmg_min1
|
||||
END,
|
||||
dmg_max1 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_max1 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_max1 * 0.90)
|
||||
ELSE dmg_max1
|
||||
END,
|
||||
dmg_min2 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_min2 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_min2 * 0.90)
|
||||
ELSE dmg_min2
|
||||
END,
|
||||
dmg_max2 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_max2 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_max2 * 0.90)
|
||||
ELSE dmg_max2
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
|
||||
1483
data/sql/db-world/base/14_emblem_gear.sql
Normal file
1483
data/sql/db-world/base/14_emblem_gear.sql
Normal file
File diff suppressed because it is too large
Load Diff
67
data/sql/db-world/base/15_new_npc_vendors.sql
Normal file
67
data/sql/db-world/base/15_new_npc_vendors.sql
Normal file
@@ -0,0 +1,67 @@
|
||||
-- Tier 1 and 2 Vendors
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500800);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500800, 0, 0, 0, 0, 0, 'Champion Miluria', 'Mythic I Weapons and Gear', '', 0, 80, 80, 2, 2027, 128, 1, 1.14286, 1, 1, 20, 1, 0, 0, 1, 2000, 2000, 1, 1, 8, 768, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 10314);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500800);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500800, 0, 29832, 1, 1, 10314);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500800);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
(9500800, 1, 29405, 6618, 0, 18019);
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500801);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500801, 0, 0, 0, 0, 0, 'Paldesse', 'Mythic I Cloth Armor', '', 0, 80, 80, 0, 2007, 4224, 1, 1.14286, 1, 1, 20, 1, 0, 0, 1, 2000, 2000, 1, 1, 8, 512, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500801);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500801, 0, 25594, 1, 1, 12340);
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500802);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500802, 0, 0, 0, 0, 0, 'Griselda Hunderland', 'Mythic I Plate Armor', '', 0, 80, 80, 0, 2007, 4224, 1, 1.14286, 1, 1, 20, 1, 0, 0, 1, 2000, 2000, 1, 1, 1, 512, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'SmartAI', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500802);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500802, 0, 25881, 1, 1, 12340);
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500803);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500803, 0, 0, 0, 0, 0, 'Valerie Langrom', 'Mythic I Leather Armor', '', 0, 80, 80, 2, 2007, 4224, 1, 1.14286, 1, 1, 20, 1, 0, 0, 1, 2000, 2000, 1, 1, 1, 0, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500803);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500803, 0, 25878, 1, 1, 12340);
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500804);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500804, 0, 0, 0, 0, 0, 'Bragund Brightlink', 'Mythic I Mail Armor', '', 0, 80, 80, 2, 2007, 4224, 1, 1.14286, 1, 1, 20, 1, 0, 0, 1, 2000, 2000, 1, 1, 1, 0, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'SmartAI', 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500804);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500804, 0, 26321, 1, 1, 12340);
|
||||
|
||||
-- Tiers 3 and 4
|
||||
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 9500805);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(9500805, 0, 0, 0, 0, 0, 'Captain Dirgehammer', 'Mythic II Weapons and Gear ', NULL, 0, 65, 65, 1, 1078, 4224, 1, 1.14286, 1, 1, 18, 1, 0, 0, 1, 2000, 2000, 1, 1, 1, 4864, 2048, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 1, 2, 1, 1, 1, 0, 0, 1, 0, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500805);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500805, 0, 12917, 1, 1, 12340);
|
||||
|
||||
-- Tier 5
|
||||
|
||||
|
||||
|
||||
-- Spawns
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001025, 9500800, 0, 0, 571, 0, 0, 1, 1, 1, 5738.66, 741.002, 641.74, 4.1062, 300, 0, 0, 10080, 8814, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001026, 9500801, 0, 0, 571, 0, 0, 1, 1, 0, 5736.61, 742.711, 641.75, 4.04965, 300, 0, 0, 3739, 8814, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001027, 9500802, 0, 0, 571, 0, 0, 1, 1, 0, 5732.59, 746.182, 641.762, 4.01431, 300, 0, 0, 5342, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001028, 9500803, 0, 0, 571, 0, 0, 1, 1, 0, 5730.76, 747.711, 641.761, 4.16746, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001029, 9500804, 0, 0, 571, 0, 0, 1, 1, 0, 5725.58, 750.971, 641.768, 4.48476, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
|
||||
|
||||
10344
data/sql/db-world/base/16_molten_core_mythic_gear.sql
Normal file
10344
data/sql/db-world/base/16_molten_core_mythic_gear.sql
Normal file
File diff suppressed because it is too large
Load Diff
503
scripts/upgrade_ranks/generate_stat_upgrades.sql
Normal file
503
scripts/upgrade_ranks/generate_stat_upgrades.sql
Normal file
@@ -0,0 +1,503 @@
|
||||
-- SQL Script to Insert 50 Ranks for Each Stat
|
||||
INSERT INTO mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemCost1, itemEntry2, itemCost2, itemEntry3, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES
|
||||
(1, 0, 911005, 5, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 0, 911005, 8, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 0, 911005, 10, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 0, 911005, 13, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 0, 911005, 15, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 0, 911005, 18, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 0, 911005, 20, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 0, 911005, 23, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 0, 911005, 25, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 0, 911005, 28, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 0, 911005, 25, 911006, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 0, 911005, 27, 911006, 2, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 0, 911005, 28, 911006, 4, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 0, 911005, 29, 911006, 6, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 0, 911005, 30, 911006, 8, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 0, 911005, 32, 911006, 10, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 0, 911005, 33, 911006, 12, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 0, 911005, 34, 911006, 14, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 0, 911005, 35, 911006, 16, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 0, 911005, 37, 911006, 18, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 0, 911005, 38, 911006, 20, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 0, 911005, 39, 911006, 22, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 0, 911005, 40, 911006, 24, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 0, 911005, 42, 911006, 26, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 0, 911005, 43, 911006, 28, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 0, 911005, 44, 911006, 30, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 0, 911005, 45, 911006, 32, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 0, 911005, 47, 911006, 34, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 0, 911005, 48, 911006, 36, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 0, 911005, 50, 911006, 38, 911002, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 0, 911005, 51, 911006, 40, 911002, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 0, 911005, 52, 911006, 42, 911002, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 0, 911005, 53, 911006, 44, 911002, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 0, 911005, 54, 911006, 46, 911002, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 0, 911005, 55, 911006, 48, 911002, 15, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 0, 911005, 56, 911006, 50, 911002, 15, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 0, 911005, 57, 911006, 52, 911002, 15, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 0, 911005, 58, 911006, 54, 911002, 15, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 0, 911005, 59, 911006, 56, 911002, 15, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 0, 911005, 59, 911006, 58, 911002, 15, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 0, 911005, 60, 911006, 60, 911002, 15, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 0, 911005, 61, 911006, 62, 911002, 15, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 0, 911005, 62, 911006, 64, 911002, 15, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 0, 911005, 63, 911006, 66, 911002, 15, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 0, 911005, 64, 911006, 68, 911002, 15, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 0, 911005, 65, 911006, 70, 911002, 15, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 0, 911005, 66, 911006, 72, 911002, 15, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 0, 911005, 67, 911006, 74, 911002, 15, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 0, 911005, 68, 911006, 76, 911002, 15, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 0, 911005, 68, 911006, 78, 911002, 15, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 1, 911009, 5, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 1, 911009, 8, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 1, 911009, 10, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 1, 911009, 13, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 1, 911009, 15, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 1, 911009, 18, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 1, 911009, 20, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 1, 911009, 23, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 1, 911009, 25, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 1, 911009, 28, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 1, 911009, 25, 911010, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 1, 911009, 27, 911010, 2, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 1, 911009, 28, 911010, 4, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 1, 911009, 29, 911010, 6, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 1, 911009, 30, 911010, 8, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 1, 911009, 32, 911010, 10, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 1, 911009, 33, 911010, 12, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 1, 911009, 34, 911010, 14, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 1, 911009, 35, 911010, 16, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 1, 911009, 37, 911010, 18, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 1, 911009, 38, 911010, 20, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 1, 911009, 39, 911010, 22, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 1, 911009, 40, 911010, 24, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 1, 911009, 42, 911010, 26, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 1, 911009, 43, 911010, 28, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 1, 911009, 44, 911010, 30, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 1, 911009, 45, 911010, 32, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 1, 911009, 47, 911010, 34, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 1, 911009, 48, 911010, 36, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 1, 911009, 50, 911010, 38, 911002, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 1, 911009, 51, 911010, 40, 911002, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 1, 911009, 52, 911010, 42, 911002, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 1, 911009, 53, 911010, 44, 911002, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 1, 911009, 54, 911010, 46, 911002, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 1, 911009, 55, 911010, 48, 911002, 15, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 1, 911009, 56, 911010, 50, 911002, 15, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 1, 911009, 57, 911010, 52, 911002, 15, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 1, 911009, 58, 911010, 54, 911002, 15, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 1, 911009, 59, 911010, 56, 911002, 15, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 1, 911009, 59, 911010, 58, 911002, 15, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 1, 911009, 60, 911010, 60, 911002, 15, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 1, 911009, 61, 911010, 62, 911002, 15, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 1, 911009, 62, 911010, 64, 911002, 15, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 1, 911009, 63, 911010, 66, 911002, 15, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 1, 911009, 64, 911010, 68, 911002, 15, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 1, 911009, 65, 911010, 70, 911002, 15, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 1, 911009, 66, 911010, 72, 911002, 15, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 1, 911009, 67, 911010, 74, 911002, 15, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 1, 911009, 68, 911010, 76, 911002, 15, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 1, 911009, 68, 911010, 78, 911002, 15, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 2, 911003, 5, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 2, 911003, 8, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 2, 911003, 10, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 2, 911003, 13, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 2, 911003, 15, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 2, 911003, 18, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 2, 911003, 20, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 2, 911003, 23, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 2, 911003, 25, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 2, 911003, 28, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 2, 911003, 25, 911004, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 2, 911003, 27, 911004, 2, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 2, 911003, 28, 911004, 4, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 2, 911003, 29, 911004, 6, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 2, 911003, 30, 911004, 8, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 2, 911003, 32, 911004, 10, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 2, 911003, 33, 911004, 12, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 2, 911003, 34, 911004, 14, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 2, 911003, 35, 911004, 16, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 2, 911003, 37, 911004, 18, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 2, 911003, 38, 911004, 20, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 2, 911003, 39, 911004, 22, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 2, 911003, 40, 911004, 24, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 2, 911003, 42, 911004, 26, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 2, 911003, 43, 911004, 28, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 2, 911003, 44, 911004, 30, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 2, 911003, 45, 911004, 32, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 2, 911003, 47, 911004, 34, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 2, 911003, 48, 911004, 36, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 2, 911003, 50, 911004, 38, 911002, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 2, 911003, 51, 911004, 40, 911002, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 2, 911003, 52, 911004, 42, 911002, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 2, 911003, 53, 911004, 44, 911002, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 2, 911003, 54, 911004, 46, 911002, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 2, 911003, 55, 911004, 48, 911002, 15, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 2, 911003, 56, 911004, 50, 911002, 15, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 2, 911003, 57, 911004, 52, 911002, 15, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 2, 911003, 58, 911004, 54, 911002, 15, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 2, 911003, 59, 911004, 56, 911002, 15, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 2, 911003, 59, 911004, 58, 911002, 15, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 2, 911003, 60, 911004, 60, 911002, 15, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 2, 911003, 61, 911004, 62, 911002, 15, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 2, 911003, 62, 911004, 64, 911002, 15, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 2, 911003, 63, 911004, 66, 911002, 15, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 2, 911003, 64, 911004, 68, 911002, 15, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 2, 911003, 65, 911004, 70, 911002, 15, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 2, 911003, 66, 911004, 72, 911002, 15, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 2, 911003, 67, 911004, 74, 911002, 15, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 2, 911003, 68, 911004, 76, 911002, 15, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 2, 911003, 68, 911004, 78, 911002, 15, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 3, 911007, 5, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 3, 911007, 8, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 3, 911007, 10, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 3, 911007, 13, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 3, 911007, 15, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 3, 911007, 18, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 3, 911007, 20, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 3, 911007, 23, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 3, 911007, 25, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 3, 911007, 28, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 3, 911007, 25, 911008, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 3, 911007, 27, 911008, 2, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 3, 911007, 28, 911008, 4, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 3, 911007, 29, 911008, 6, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 3, 911007, 30, 911008, 8, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 3, 911007, 32, 911008, 10, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 3, 911007, 33, 911008, 12, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 3, 911007, 34, 911008, 14, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 3, 911007, 35, 911008, 16, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 3, 911007, 37, 911008, 18, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 3, 911007, 38, 911008, 20, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 3, 911007, 39, 911008, 22, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 3, 911007, 40, 911008, 24, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 3, 911007, 42, 911008, 26, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 3, 911007, 43, 911008, 28, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 3, 911007, 44, 911008, 30, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 3, 911007, 45, 911008, 32, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 3, 911007, 47, 911008, 34, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 3, 911007, 48, 911008, 36, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 3, 911007, 50, 911008, 38, 911002, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 3, 911007, 51, 911008, 40, 911002, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 3, 911007, 52, 911008, 42, 911002, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 3, 911007, 53, 911008, 44, 911002, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 3, 911007, 54, 911008, 46, 911002, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 3, 911007, 55, 911008, 48, 911002, 15, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 3, 911007, 56, 911008, 50, 911002, 15, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 3, 911007, 57, 911008, 52, 911002, 15, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 3, 911007, 58, 911008, 54, 911002, 15, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 3, 911007, 59, 911008, 56, 911002, 15, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 3, 911007, 59, 911008, 58, 911002, 15, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 3, 911007, 60, 911008, 60, 911002, 15, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 3, 911007, 61, 911008, 62, 911002, 15, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 3, 911007, 62, 911008, 64, 911002, 15, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 3, 911007, 63, 911008, 66, 911002, 15, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 3, 911007, 64, 911008, 68, 911002, 15, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 3, 911007, 65, 911008, 70, 911002, 15, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 3, 911007, 66, 911008, 72, 911002, 15, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 3, 911007, 67, 911008, 74, 911002, 15, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 3, 911007, 68, 911008, 76, 911002, 15, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 3, 911007, 68, 911008, 78, 911002, 15, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 4, 911011, 5, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 20, 50, 75),
|
||||
(2, 4, 911011, 8, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 23, 53, 78),
|
||||
(3, 4, 911011, 10, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 26, 56, 81),
|
||||
(4, 4, 911011, 13, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 29, 59, 84),
|
||||
(5, 4, 911011, 15, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 32, 62, 87),
|
||||
(6, 4, 911011, 18, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 35, 65, 90),
|
||||
(7, 4, 911011, 20, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 38, 68, 93),
|
||||
(8, 4, 911011, 23, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 41, 71, 96),
|
||||
(9, 4, 911011, 25, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 44, 74, 99),
|
||||
(10, 4, 911011, 28, 0, 0, 0, 0, 1, 10, 5, 10, 8, 11, 47, 77, 102),
|
||||
(11, 4, 911011, 25, 911012, 0, 0, 0, 3, 12, 7, 12, 12, 15, 50, 80, 105),
|
||||
(12, 4, 911011, 27, 911012, 2, 0, 0, 3, 12, 7, 12, 12, 15, 53, 83, 108),
|
||||
(13, 4, 911011, 28, 911012, 4, 0, 0, 3, 12, 7, 12, 12, 15, 56, 86, 111),
|
||||
(14, 4, 911011, 29, 911012, 6, 0, 0, 3, 12, 7, 12, 12, 15, 59, 89, 114),
|
||||
(15, 4, 911011, 30, 911012, 8, 0, 0, 3, 12, 7, 12, 12, 15, 62, 92, 117),
|
||||
(16, 4, 911011, 32, 911012, 10, 0, 0, 3, 12, 7, 12, 12, 15, 65, 95, 120),
|
||||
(17, 4, 911011, 33, 911012, 12, 0, 0, 3, 12, 7, 12, 12, 15, 68, 98, 123),
|
||||
(18, 4, 911011, 34, 911012, 14, 0, 0, 3, 12, 7, 12, 12, 15, 71, 101, 126),
|
||||
(19, 4, 911011, 35, 911012, 16, 0, 0, 3, 12, 7, 12, 12, 15, 74, 104, 129),
|
||||
(20, 4, 911011, 37, 911012, 18, 0, 0, 3, 12, 7, 12, 12, 15, 77, 107, 132),
|
||||
(21, 4, 911011, 38, 911012, 20, 0, 0, 5, 14, 9, 14, 16, 19, 80, 110, 135),
|
||||
(22, 4, 911011, 39, 911012, 22, 0, 0, 5, 14, 9, 14, 16, 19, 83, 113, 138),
|
||||
(23, 4, 911011, 40, 911012, 24, 0, 0, 5, 14, 9, 14, 16, 19, 86, 116, 141),
|
||||
(24, 4, 911011, 42, 911012, 26, 0, 0, 5, 14, 9, 14, 16, 19, 89, 119, 144),
|
||||
(25, 4, 911011, 43, 911012, 28, 0, 0, 5, 14, 9, 14, 16, 19, 92, 122, 147),
|
||||
(26, 4, 911011, 44, 911012, 30, 0, 0, 5, 14, 9, 14, 16, 19, 95, 125, 150),
|
||||
(27, 4, 911011, 45, 911012, 32, 0, 0, 5, 14, 9, 14, 16, 19, 98, 128, 153),
|
||||
(28, 4, 911011, 47, 911012, 34, 0, 0, 5, 14, 9, 14, 16, 19, 101, 131, 156),
|
||||
(29, 4, 911011, 48, 911012, 36, 0, 0, 5, 14, 9, 14, 16, 19, 104, 134, 159),
|
||||
(30, 4, 911011, 50, 911012, 38, 911002, 3, 5, 14, 9, 14, 16, 19, 107, 137, 162),
|
||||
(31, 4, 911011, 51, 911012, 40, 911002, 6, 7, 16, 11, 16, 20, 23, 110, 140, 165),
|
||||
(32, 4, 911011, 52, 911012, 42, 911002, 9, 7, 16, 11, 16, 20, 23, 113, 143, 168),
|
||||
(33, 4, 911011, 53, 911012, 44, 911002, 12, 7, 16, 11, 16, 20, 23, 116, 146, 171),
|
||||
(34, 4, 911011, 54, 911012, 46, 911002, 15, 7, 16, 11, 16, 20, 23, 119, 149, 174),
|
||||
(35, 4, 911011, 55, 911012, 48, 911002, 15, 7, 16, 11, 16, 20, 23, 122, 152, 177),
|
||||
(36, 4, 911011, 56, 911012, 50, 911002, 15, 7, 16, 11, 16, 20, 23, 125, 155, 180),
|
||||
(37, 4, 911011, 57, 911012, 52, 911002, 15, 7, 16, 11, 16, 20, 23, 128, 158, 183),
|
||||
(38, 4, 911011, 58, 911012, 54, 911002, 15, 7, 16, 11, 16, 20, 23, 131, 161, 186),
|
||||
(39, 4, 911011, 59, 911012, 56, 911002, 15, 7, 16, 11, 16, 20, 23, 134, 164, 189),
|
||||
(40, 4, 911011, 59, 911012, 58, 911002, 15, 7, 16, 11, 16, 20, 23, 137, 167, 192),
|
||||
(41, 4, 911011, 60, 911012, 60, 911002, 15, 9, 18, 13, 18, 24, 27, 140, 170, 195),
|
||||
(42, 4, 911011, 61, 911012, 62, 911002, 15, 9, 18, 13, 18, 24, 27, 143, 173, 198),
|
||||
(43, 4, 911011, 62, 911012, 64, 911002, 15, 9, 18, 13, 18, 24, 27, 146, 176, 201),
|
||||
(44, 4, 911011, 63, 911012, 66, 911002, 15, 9, 18, 13, 18, 24, 27, 149, 179, 204),
|
||||
(45, 4, 911011, 64, 911012, 68, 911002, 15, 9, 18, 13, 18, 24, 27, 152, 182, 207),
|
||||
(46, 4, 911011, 65, 911012, 70, 911002, 15, 9, 18, 13, 18, 24, 27, 155, 185, 210),
|
||||
(47, 4, 911011, 66, 911012, 72, 911002, 15, 9, 18, 13, 18, 24, 27, 158, 188, 213),
|
||||
(48, 4, 911011, 67, 911012, 74, 911002, 15, 9, 18, 13, 18, 24, 27, 161, 191, 216),
|
||||
(49, 4, 911011, 68, 911012, 76, 911002, 15, 9, 18, 13, 18, 24, 27, 164, 194, 219),
|
||||
(50, 4, 911011, 68, 911012, 78, 911002, 15, 9, 18, 13, 18, 24, 27, 167, 197, 222),
|
||||
(1, 5, 911019, 4, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 20, 50, 75),
|
||||
(2, 5, 911019, 6, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 23, 53, 78),
|
||||
(3, 5, 911019, 8, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 26, 56, 81),
|
||||
(4, 5, 911019, 9, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 29, 59, 84),
|
||||
(5, 5, 911019, 11, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 32, 62, 87),
|
||||
(6, 5, 911019, 13, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 35, 65, 90),
|
||||
(7, 5, 911019, 15, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 38, 68, 93),
|
||||
(8, 5, 911019, 16, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 41, 71, 96),
|
||||
(9, 5, 911019, 18, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 44, 74, 99),
|
||||
(10, 5, 911019, 20, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 47, 77, 102),
|
||||
(11, 5, 911019, 18, 911020, 0, 0, 0, 5, 9, 7, 9, 12, 14, 50, 80, 105),
|
||||
(12, 5, 911019, 19, 911020, 2, 0, 0, 5, 9, 7, 9, 12, 14, 53, 83, 108),
|
||||
(13, 5, 911019, 20, 911020, 4, 0, 0, 5, 9, 7, 9, 12, 14, 56, 86, 111),
|
||||
(14, 5, 911019, 22, 911020, 6, 0, 0, 5, 9, 7, 9, 12, 14, 59, 89, 114),
|
||||
(15, 5, 911019, 23, 911020, 8, 0, 0, 5, 9, 7, 9, 12, 14, 62, 92, 117),
|
||||
(16, 5, 911019, 24, 911020, 10, 0, 0, 7, 11, 9, 11, 16, 18, 65, 95, 120),
|
||||
(17, 5, 911019, 25, 911020, 12, 0, 0, 7, 11, 9, 11, 16, 18, 68, 98, 123),
|
||||
(18, 5, 911019, 27, 911020, 14, 0, 0, 7, 11, 9, 11, 16, 18, 71, 101, 126),
|
||||
(19, 5, 911019, 28, 911020, 16, 0, 0, 7, 11, 9, 11, 16, 18, 74, 104, 129),
|
||||
(20, 5, 911019, 29, 911020, 18, 0, 0, 7, 11, 9, 11, 16, 18, 77, 107, 132),
|
||||
(21, 5, 911019, 30, 911020, 20, 0, 0, 9, 13, 11, 13, 20, 22, 80, 110, 135),
|
||||
(22, 5, 911019, 32, 911020, 22, 0, 0, 9, 13, 11, 13, 20, 22, 83, 113, 138),
|
||||
(23, 5, 911019, 33, 911020, 24, 0, 0, 9, 13, 11, 13, 20, 22, 86, 116, 141),
|
||||
(24, 5, 911019, 34, 911020, 26, 0, 0, 9, 13, 11, 13, 20, 22, 89, 119, 144),
|
||||
(25, 5, 911019, 35, 911020, 28, 0, 0, 9, 13, 11, 13, 20, 22, 92, 122, 147),
|
||||
(26, 5, 911019, 37, 911020, 30, 0, 0, 11, 15, 13, 15, 24, 26, 95, 125, 150),
|
||||
(27, 5, 911019, 38, 911020, 32, 0, 0, 11, 15, 13, 15, 24, 26, 98, 128, 153),
|
||||
(28, 5, 911019, 39, 911020, 34, 0, 0, 11, 15, 13, 15, 24, 26, 101, 131, 156),
|
||||
(29, 5, 911019, 40, 911020, 36, 0, 0, 11, 15, 13, 15, 24, 26, 104, 134, 159),
|
||||
(30, 5, 911019, 35, 911020, 38, 911002, 3, 11, 15, 13, 15, 24, 26, 107, 137, 162),
|
||||
(31, 5, 911019, 36, 911020, 40, 911002, 6, 13, 17, 15, 17, 28, 30, 110, 140, 165),
|
||||
(32, 5, 911019, 37, 911020, 42, 911002, 9, 13, 17, 15, 17, 28, 30, 113, 143, 168),
|
||||
(33, 5, 911019, 38, 911020, 44, 911002, 12, 13, 17, 15, 17, 28, 30, 116, 146, 171),
|
||||
(34, 5, 911019, 39, 911020, 46, 911002, 15, 13, 17, 15, 17, 28, 30, 119, 149, 174),
|
||||
(35, 5, 911019, 40, 911020, 48, 911002, 18, 13, 17, 15, 17, 28, 30, 122, 152, 177),
|
||||
(36, 5, 911019, 41, 911020, 50, 911002, 21, 15, 19, 17, 19, 32, 34, 125, 155, 180),
|
||||
(37, 5, 911019, 42, 911020, 52, 911002, 24, 15, 19, 17, 19, 32, 34, 128, 158, 183),
|
||||
(38, 5, 911019, 43, 911020, 54, 911002, 27, 15, 19, 17, 19, 32, 34, 131, 161, 186),
|
||||
(39, 5, 911019, 44, 911020, 56, 911002, 30, 15, 19, 17, 19, 32, 34, 134, 164, 189),
|
||||
(40, 5, 911019, 44, 911020, 58, 911002, 33, 15, 19, 17, 19, 32, 34, 137, 167, 192),
|
||||
(41, 5, 911019, 45, 911020, 60, 911002, 36, 17, 21, 19, 21, 36, 38, 140, 170, 195),
|
||||
(42, 5, 911019, 46, 911020, 62, 911002, 39, 17, 21, 19, 21, 36, 38, 143, 173, 198),
|
||||
(43, 5, 911019, 47, 911020, 64, 911002, 42, 17, 21, 19, 21, 36, 38, 146, 176, 201),
|
||||
(44, 5, 911019, 48, 911020, 66, 911002, 45, 17, 21, 19, 21, 36, 38, 149, 179, 204),
|
||||
(45, 5, 911019, 49, 911020, 68, 911002, 48, 17, 21, 19, 21, 36, 38, 152, 182, 207),
|
||||
(46, 5, 911019, 50, 911020, 70, 911002, 51, 19, 23, 21, 23, 40, 42, 155, 185, 210),
|
||||
(47, 5, 911019, 51, 911020, 72, 911002, 54, 19, 23, 21, 23, 40, 42, 158, 188, 213),
|
||||
(48, 5, 911019, 52, 911020, 74, 911002, 57, 19, 23, 21, 23, 40, 42, 161, 191, 216),
|
||||
(49, 5, 911019, 53, 911020, 76, 911002, 60, 19, 23, 21, 23, 40, 42, 164, 194, 219),
|
||||
(50, 5, 911019, 53, 911020, 78, 911002, 63, 19, 23, 21, 23, 40, 42, 167, 197, 222)
|
||||
(1, 6, 911017, 4, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 20, 50, 75),
|
||||
(2, 6, 911017, 6, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 23, 53, 78),
|
||||
(3, 6, 911017, 8, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 26, 56, 81),
|
||||
(4, 6, 911017, 9, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 29, 59, 84),
|
||||
(5, 6, 911017, 11, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 32, 62, 87),
|
||||
(6, 6, 911017, 13, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 35, 65, 90),
|
||||
(7, 6, 911017, 15, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 38, 68, 93),
|
||||
(8, 6, 911017, 16, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 41, 71, 96),
|
||||
(9, 6, 911017, 18, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 44, 74, 99),
|
||||
(10, 6, 911017, 20, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 47, 77, 102),
|
||||
(11, 6, 911017, 18, 911018, 0, 0, 0, 5, 9, 7, 9, 12, 14, 50, 80, 105),
|
||||
(12, 6, 911017, 19, 911018, 2, 0, 0, 5, 9, 7, 9, 12, 14, 53, 83, 108),
|
||||
(13, 6, 911017, 20, 911018, 4, 0, 0, 5, 9, 7, 9, 12, 14, 56, 86, 111),
|
||||
(14, 6, 911017, 22, 911018, 6, 0, 0, 5, 9, 7, 9, 12, 14, 59, 89, 114),
|
||||
(15, 6, 911017, 23, 911018, 8, 0, 0, 5, 9, 7, 9, 12, 14, 62, 92, 117),
|
||||
(16, 6, 911017, 24, 911018, 10, 0, 0, 7, 11, 9, 11, 16, 18, 65, 95, 120),
|
||||
(17, 6, 911017, 25, 911018, 12, 0, 0, 7, 11, 9, 11, 16, 18, 68, 98, 123),
|
||||
(18, 6, 911017, 27, 911018, 14, 0, 0, 7, 11, 9, 11, 16, 18, 71, 101, 126),
|
||||
(19, 6, 911017, 28, 911018, 16, 0, 0, 7, 11, 9, 11, 16, 18, 74, 104, 129),
|
||||
(20, 6, 911017, 29, 911018, 18, 0, 0, 7, 11, 9, 11, 16, 18, 77, 107, 132),
|
||||
(21, 6, 911017, 30, 911018, 20, 0, 0, 9, 13, 11, 13, 20, 22, 80, 110, 135),
|
||||
(22, 6, 911017, 32, 911018, 22, 0, 0, 9, 13, 11, 13, 20, 22, 83, 113, 138),
|
||||
(23, 6, 911017, 33, 911018, 24, 0, 0, 9, 13, 11, 13, 20, 22, 86, 116, 141),
|
||||
(24, 6, 911017, 34, 911018, 26, 0, 0, 9, 13, 11, 13, 20, 22, 89, 119, 144),
|
||||
(25, 6, 911017, 35, 911018, 28, 0, 0, 9, 13, 11, 13, 20, 22, 92, 122, 147),
|
||||
(26, 6, 911017, 37, 911018, 30, 0, 0, 11, 15, 13, 15, 24, 26, 95, 125, 150),
|
||||
(27, 6, 911017, 38, 911018, 32, 0, 0, 11, 15, 13, 15, 24, 26, 98, 128, 153),
|
||||
(28, 6, 911017, 39, 911018, 34, 0, 0, 11, 15, 13, 15, 24, 26, 101, 131, 156),
|
||||
(29, 6, 911017, 40, 911018, 36, 0, 0, 11, 15, 13, 15, 24, 26, 104, 134, 159),
|
||||
(30, 6, 911017, 35, 911018, 38, 911002, 3, 11, 15, 13, 15, 24, 26, 107, 137, 162),
|
||||
(31, 6, 911017, 36, 911018, 40, 911002, 6, 13, 17, 15, 17, 28, 30, 110, 140, 165),
|
||||
(32, 6, 911017, 37, 911018, 42, 911002, 9, 13, 17, 15, 17, 28, 30, 113, 143, 168),
|
||||
(33, 6, 911017, 38, 911018, 44, 911002, 12, 13, 17, 15, 17, 28, 30, 116, 146, 171),
|
||||
(34, 6, 911017, 39, 911018, 46, 911002, 15, 13, 17, 15, 17, 28, 30, 119, 149, 174),
|
||||
(35, 6, 911017, 40, 911018, 48, 911002, 18, 13, 17, 15, 17, 28, 30, 122, 152, 177),
|
||||
(36, 6, 911017, 41, 911018, 50, 911002, 21, 15, 19, 17, 19, 32, 34, 125, 155, 180),
|
||||
(37, 6, 911017, 42, 911018, 52, 911002, 24, 15, 19, 17, 19, 32, 34, 128, 158, 183),
|
||||
(38, 6, 911017, 43, 911018, 54, 911002, 27, 15, 19, 17, 19, 32, 34, 131, 161, 186),
|
||||
(39, 6, 911017, 44, 911018, 56, 911002, 30, 15, 19, 17, 19, 32, 34, 134, 164, 189),
|
||||
(40, 6, 911017, 44, 911018, 58, 911002, 33, 15, 19, 17, 19, 32, 34, 137, 167, 192),
|
||||
(41, 6, 911017, 45, 911018, 60, 911002, 36, 17, 21, 19, 21, 36, 38, 140, 170, 195),
|
||||
(42, 6, 911017, 46, 911018, 62, 911002, 39, 17, 21, 19, 21, 36, 38, 143, 173, 198),
|
||||
(43, 6, 911017, 47, 911018, 64, 911002, 42, 17, 21, 19, 21, 36, 38, 146, 176, 201),
|
||||
(44, 6, 911017, 48, 911018, 66, 911002, 45, 17, 21, 19, 21, 36, 38, 149, 179, 204),
|
||||
(45, 6, 911017, 49, 911018, 68, 911002, 48, 17, 21, 19, 21, 36, 38, 152, 182, 207),
|
||||
(46, 6, 911017, 50, 911018, 70, 911002, 51, 19, 23, 21, 23, 40, 42, 155, 185, 210),
|
||||
(47, 6, 911017, 51, 911018, 72, 911002, 54, 19, 23, 21, 23, 40, 42, 158, 188, 213),
|
||||
(48, 6, 911017, 52, 911018, 74, 911002, 57, 19, 23, 21, 23, 40, 42, 161, 191, 216),
|
||||
(49, 6, 911017, 53, 911018, 76, 911002, 60, 19, 23, 21, 23, 40, 42, 164, 194, 219),
|
||||
(50, 6, 911017, 53, 911018, 78, 911002, 63, 19, 23, 21, 23, 40, 42, 167, 197, 222),
|
||||
(1, 7, 911023, 4, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 20, 50, 75),
|
||||
(2, 7, 911023, 6, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 23, 53, 78),
|
||||
(3, 7, 911023, 8, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 26, 56, 81),
|
||||
(4, 7, 911023, 9, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 29, 59, 84),
|
||||
(5, 7, 911023, 11, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 32, 62, 87),
|
||||
(6, 7, 911023, 13, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 35, 65, 90),
|
||||
(7, 7, 911023, 15, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 38, 68, 93),
|
||||
(8, 7, 911023, 16, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 41, 71, 96),
|
||||
(9, 7, 911023, 18, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 44, 74, 99),
|
||||
(10, 7, 911023, 20, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 47, 77, 102),
|
||||
(11, 7, 911023, 18, 911024, 0, 0, 0, 5, 9, 7, 9, 12, 14, 50, 80, 105),
|
||||
(12, 7, 911023, 19, 911024, 2, 0, 0, 5, 9, 7, 9, 12, 14, 53, 83, 108),
|
||||
(13, 7, 911023, 20, 911024, 4, 0, 0, 5, 9, 7, 9, 12, 14, 56, 86, 111),
|
||||
(14, 7, 911023, 22, 911024, 6, 0, 0, 5, 9, 7, 9, 12, 14, 59, 89, 114),
|
||||
(15, 7, 911023, 23, 911024, 8, 0, 0, 5, 9, 7, 9, 12, 14, 62, 92, 117),
|
||||
(16, 7, 911023, 24, 911024, 10, 0, 0, 7, 11, 9, 11, 16, 18, 65, 95, 120),
|
||||
(17, 7, 911023, 25, 911024, 12, 0, 0, 7, 11, 9, 11, 16, 18, 68, 98, 123),
|
||||
(18, 7, 911023, 27, 911024, 14, 0, 0, 7, 11, 9, 11, 16, 18, 71, 101, 126),
|
||||
(19, 7, 911023, 28, 911024, 16, 0, 0, 7, 11, 9, 11, 16, 18, 74, 104, 129),
|
||||
(20, 7, 911023, 29, 911024, 18, 0, 0, 7, 11, 9, 11, 16, 18, 77, 107, 132),
|
||||
(21, 7, 911023, 30, 911024, 20, 0, 0, 9, 13, 11, 13, 20, 22, 80, 110, 135),
|
||||
(22, 7, 911023, 32, 911024, 22, 0, 0, 9, 13, 11, 13, 20, 22, 83, 113, 138),
|
||||
(23, 7, 911023, 33, 911024, 24, 0, 0, 9, 13, 11, 13, 20, 22, 86, 116, 141),
|
||||
(24, 7, 911023, 34, 911024, 26, 0, 0, 9, 13, 11, 13, 20, 22, 89, 119, 144),
|
||||
(25, 7, 911023, 35, 911024, 28, 0, 0, 9, 13, 11, 13, 20, 22, 92, 122, 147),
|
||||
(26, 7, 911023, 37, 911024, 30, 0, 0, 11, 15, 13, 15, 24, 26, 95, 125, 150),
|
||||
(27, 7, 911023, 38, 911024, 32, 0, 0, 11, 15, 13, 15, 24, 26, 98, 128, 153),
|
||||
(28, 7, 911023, 39, 911024, 34, 0, 0, 11, 15, 13, 15, 24, 26, 101, 131, 156),
|
||||
(29, 7, 911023, 40, 911024, 36, 0, 0, 11, 15, 13, 15, 24, 26, 104, 134, 159),
|
||||
(30, 7, 911023, 35, 911024, 38, 911002, 3, 11, 15, 13, 15, 24, 26, 107, 137, 162),
|
||||
(31, 7, 911023, 36, 911024, 40, 911002, 6, 13, 17, 15, 17, 28, 30, 110, 140, 165),
|
||||
(32, 7, 911023, 37, 911024, 42, 911002, 9, 13, 17, 15, 17, 28, 30, 113, 143, 168),
|
||||
(33, 7, 911023, 38, 911024, 44, 911002, 12, 13, 17, 15, 17, 28, 30, 116, 146, 171),
|
||||
(34, 7, 911023, 39, 911024, 46, 911002, 15, 13, 17, 15, 17, 28, 30, 119, 149, 174),
|
||||
(35, 7, 911023, 40, 911024, 48, 911002, 18, 13, 17, 15, 17, 28, 30, 122, 152, 177),
|
||||
(36, 7, 911023, 41, 911024, 50, 911002, 21, 15, 19, 17, 19, 32, 34, 125, 155, 180),
|
||||
(37, 7, 911023, 42, 911024, 52, 911002, 24, 15, 19, 17, 19, 32, 34, 128, 158, 183),
|
||||
(38, 7, 911023, 43, 911024, 54, 911002, 27, 15, 19, 17, 19, 32, 34, 131, 161, 186),
|
||||
(39, 7, 911023, 44, 911024, 56, 911002, 30, 15, 19, 17, 19, 32, 34, 134, 164, 189),
|
||||
(40, 7, 911023, 44, 911024, 58, 911002, 33, 15, 19, 17, 19, 32, 34, 137, 167, 192),
|
||||
(41, 7, 911023, 45, 911024, 60, 911002, 36, 17, 21, 19, 21, 36, 38, 140, 170, 195),
|
||||
(42, 7, 911023, 46, 911024, 62, 911002, 39, 17, 21, 19, 21, 36, 38, 143, 173, 198),
|
||||
(43, 7, 911023, 47, 911024, 64, 911002, 42, 17, 21, 19, 21, 36, 38, 146, 176, 201),
|
||||
(44, 7, 911023, 48, 911024, 66, 911002, 45, 17, 21, 19, 21, 36, 38, 149, 179, 204),
|
||||
(45, 7, 911023, 49, 911024, 68, 911002, 48, 17, 21, 19, 21, 36, 38, 152, 182, 207),
|
||||
(46, 7, 911023, 50, 911024, 70, 911002, 51, 19, 23, 21, 23, 40, 42, 155, 185, 210),
|
||||
(47, 7, 911023, 51, 911024, 72, 911002, 54, 19, 23, 21, 23, 40, 42, 158, 188, 213),
|
||||
(48, 7, 911023, 52, 911024, 74, 911002, 57, 19, 23, 21, 23, 40, 42, 161, 191, 216),
|
||||
(49, 7, 911023, 53, 911024, 76, 911002, 60, 19, 23, 21, 23, 40, 42, 164, 194, 219),
|
||||
(50, 7, 911023, 53, 911024, 78, 911002, 63, 19, 23, 21, 23, 40, 42, 167, 197, 222),
|
||||
(1, 8, 911015, 4, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 20, 50, 75),
|
||||
(2, 8, 911015, 6, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 23, 53, 78),
|
||||
(3, 8, 911015, 8, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 26, 56, 81),
|
||||
(4, 8, 911015, 9, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 29, 59, 84),
|
||||
(5, 8, 911015, 11, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 32, 62, 87),
|
||||
(6, 8, 911015, 13, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 35, 65, 90),
|
||||
(7, 8, 911015, 15, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 38, 68, 93),
|
||||
(8, 8, 911015, 16, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 41, 71, 96),
|
||||
(9, 8, 911015, 18, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 44, 74, 99),
|
||||
(10, 8, 911015, 20, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 47, 77, 102),
|
||||
(11, 8, 911015, 18, 911016, 0, 0, 0, 5, 9, 7, 9, 12, 14, 50, 80, 105),
|
||||
(12, 8, 911015, 19, 911016, 2, 0, 0, 5, 9, 7, 9, 12, 14, 53, 83, 108),
|
||||
(13, 8, 911015, 20, 911016, 4, 0, 0, 5, 9, 7, 9, 12, 14, 56, 86, 111),
|
||||
(14, 8, 911015, 22, 911016, 6, 0, 0, 5, 9, 7, 9, 12, 14, 59, 89, 114),
|
||||
(15, 8, 911015, 23, 911016, 8, 0, 0, 5, 9, 7, 9, 12, 14, 62, 92, 117),
|
||||
(16, 8, 911015, 24, 911016, 10, 0, 0, 7, 11, 9, 11, 16, 18, 65, 95, 120),
|
||||
(17, 8, 911015, 25, 911016, 12, 0, 0, 7, 11, 9, 11, 16, 18, 68, 98, 123),
|
||||
(18, 8, 911015, 27, 911016, 14, 0, 0, 7, 11, 9, 11, 16, 18, 71, 101, 126),
|
||||
(19, 8, 911015, 28, 911016, 16, 0, 0, 7, 11, 9, 11, 16, 18, 74, 104, 129),
|
||||
(20, 8, 911015, 29, 911016, 18, 0, 0, 7, 11, 9, 11, 16, 18, 77, 107, 132),
|
||||
(21, 8, 911015, 30, 911016, 20, 0, 0, 9, 13, 11, 13, 20, 22, 80, 110, 135),
|
||||
(22, 8, 911015, 32, 911016, 22, 0, 0, 9, 13, 11, 13, 20, 22, 83, 113, 138),
|
||||
(23, 8, 911015, 33, 911016, 24, 0, 0, 9, 13, 11, 13, 20, 22, 86, 116, 141),
|
||||
(24, 8, 911015, 34, 911016, 26, 0, 0, 9, 13, 11, 13, 20, 22, 89, 119, 144),
|
||||
(25, 8, 911015, 35, 911016, 28, 0, 0, 9, 13, 11, 13, 20, 22, 92, 122, 147),
|
||||
(26, 8, 911015, 37, 911016, 30, 0, 0, 11, 15, 13, 15, 24, 26, 95, 125, 150),
|
||||
(27, 8, 911015, 38, 911016, 32, 0, 0, 11, 15, 13, 15, 24, 26, 98, 128, 153),
|
||||
(28, 8, 911015, 39, 911016, 34, 0, 0, 11, 15, 13, 15, 24, 26, 101, 131, 156),
|
||||
(29, 8, 911015, 40, 911016, 36, 0, 0, 11, 15, 13, 15, 24, 26, 104, 134, 159),
|
||||
(30, 8, 911015, 35, 911016, 38, 911002, 3, 11, 15, 13, 15, 24, 26, 107, 137, 162),
|
||||
(31, 8, 911015, 36, 911016, 40, 911002, 6, 13, 17, 15, 17, 28, 30, 110, 140, 165),
|
||||
(32, 8, 911015, 37, 911016, 42, 911002, 9, 13, 17, 15, 17, 28, 30, 113, 143, 168),
|
||||
(33, 8, 911015, 38, 911016, 44, 911002, 12, 13, 17, 15, 17, 28, 30, 116, 146, 171),
|
||||
(34, 8, 911015, 39, 911016, 46, 911002, 15, 13, 17, 15, 17, 28, 30, 119, 149, 174),
|
||||
(35, 8, 911015, 40, 911016, 48, 911002, 18, 13, 17, 15, 17, 28, 30, 122, 152, 177),
|
||||
(36, 8, 911015, 41, 911016, 50, 911002, 21, 15, 19, 17, 19, 32, 34, 125, 155, 180),
|
||||
(37, 8, 911015, 42, 911016, 52, 911002, 24, 15, 19, 17, 19, 32, 34, 128, 158, 183),
|
||||
(38, 8, 911015, 43, 911016, 54, 911002, 27, 15, 19, 17, 19, 32, 34, 131, 161, 186),
|
||||
(39, 8, 911015, 44, 911016, 56, 911002, 30, 15, 19, 17, 19, 32, 34, 134, 164, 189),
|
||||
(40, 8, 911015, 44, 911016, 58, 911002, 33, 15, 19, 17, 19, 32, 34, 137, 167, 192),
|
||||
(41, 8, 911015, 45, 911016, 60, 911002, 36, 17, 21, 19, 21, 36, 38, 140, 170, 195),
|
||||
(42, 8, 911015, 46, 911016, 62, 911002, 39, 17, 21, 19, 21, 36, 38, 143, 173, 198),
|
||||
(43, 8, 911015, 47, 911016, 64, 911002, 42, 17, 21, 19, 21, 36, 38, 146, 176, 201),
|
||||
(44, 8, 911015, 48, 911016, 66, 911002, 45, 17, 21, 19, 21, 36, 38, 149, 179, 204),
|
||||
(45, 8, 911015, 49, 911016, 68, 911002, 48, 17, 21, 19, 21, 36, 38, 152, 182, 207),
|
||||
(46, 8, 911015, 50, 911016, 70, 911002, 51, 19, 23, 21, 23, 40, 42, 155, 185, 210),
|
||||
(47, 8, 911015, 51, 911016, 72, 911002, 54, 19, 23, 21, 23, 40, 42, 158, 188, 213),
|
||||
(48, 8, 911015, 52, 911016, 74, 911002, 57, 19, 23, 21, 23, 40, 42, 161, 191, 216),
|
||||
(49, 8, 911015, 53, 911016, 76, 911002, 60, 19, 23, 21, 23, 40, 42, 164, 194, 219),
|
||||
(50, 8, 911015, 53, 911016, 78, 911002, 63, 19, 23, 21, 23, 40, 42, 167, 197, 222),
|
||||
(1, 9, 911021, 4, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 20, 50, 75),
|
||||
(2, 9, 911021, 6, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 23, 53, 78),
|
||||
(3, 9, 911021, 8, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 26, 56, 81),
|
||||
(4, 9, 911021, 9, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 29, 59, 84),
|
||||
(5, 9, 911021, 11, 0, 0, 0, 0, 1, 5, 3, 5, 4, 6, 32, 62, 87),
|
||||
(6, 9, 911021, 13, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 35, 65, 90),
|
||||
(7, 9, 911021, 15, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 38, 68, 93),
|
||||
(8, 9, 911021, 16, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 41, 71, 96),
|
||||
(9, 9, 911021, 18, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 44, 74, 99),
|
||||
(10, 9, 911021, 20, 0, 0, 0, 0, 3, 7, 5, 7, 8, 10, 47, 77, 102),
|
||||
(11, 9, 911021, 18, 911022, 0, 0, 0, 5, 9, 7, 9, 12, 14, 50, 80, 105),
|
||||
(12, 9, 911021, 19, 911022, 2, 0, 0, 5, 9, 7, 9, 12, 14, 53, 83, 108),
|
||||
(13, 9, 911021, 20, 911022, 4, 0, 0, 5, 9, 7, 9, 12, 14, 56, 86, 111),
|
||||
(14, 9, 911021, 22, 911022, 6, 0, 0, 5, 9, 7, 9, 12, 14, 59, 89, 114),
|
||||
(15, 9, 911021, 23, 911022, 8, 0, 0, 5, 9, 7, 9, 12, 14, 62, 92, 117),
|
||||
(16, 9, 911021, 24, 911022, 10, 0, 0, 7, 11, 9, 11, 16, 18, 65, 95, 120),
|
||||
(17, 9, 911021, 25, 911022, 12, 0, 0, 7, 11, 9, 11, 16, 18, 68, 98, 123),
|
||||
(18, 9, 911021, 27, 911022, 14, 0, 0, 7, 11, 9, 11, 16, 18, 71, 101, 126),
|
||||
(19, 9, 911021, 28, 911022, 16, 0, 0, 7, 11, 9, 11, 16, 18, 74, 104, 129),
|
||||
(20, 9, 911021, 29, 911022, 18, 0, 0, 7, 11, 9, 11, 16, 18, 77, 107, 132),
|
||||
(21, 9, 911021, 30, 911022, 20, 0, 0, 9, 13, 11, 13, 20, 22, 80, 110, 135),
|
||||
(22, 9, 911021, 32, 911022, 22, 0, 0, 9, 13, 11, 13, 20, 22, 83, 113, 138),
|
||||
(23, 9, 911021, 33, 911022, 24, 0, 0, 9, 13, 11, 13, 20, 22, 86, 116, 141),
|
||||
(24, 9, 911021, 34, 911022, 26, 0, 0, 9, 13, 11, 13, 20, 22, 89, 119, 144),
|
||||
(25, 9, 911021, 35, 911022, 28, 0, 0, 9, 13, 11, 13, 20, 22, 92, 122, 147),
|
||||
(26, 9, 911021, 37, 911022, 30, 0, 0, 11, 15, 13, 15, 24, 26, 95, 125, 150),
|
||||
(27, 9, 911021, 38, 911022, 32, 0, 0, 11, 15, 13, 15, 24, 26, 98, 128, 153),
|
||||
(28, 9, 911021, 39, 911022, 34, 0, 0, 11, 15, 13, 15, 24, 26, 101, 131, 156),
|
||||
(29, 9, 911021, 40, 911022, 36, 0, 0, 11, 15, 13, 15, 24, 26, 104, 134, 159),
|
||||
(30, 9, 911021, 35, 911022, 38, 911002, 3, 11, 15, 13, 15, 24, 26, 107, 137, 162),
|
||||
(31, 9, 911021, 36, 911022, 40, 911002, 6, 13, 17, 15, 17, 28, 30, 110, 140, 165),
|
||||
(32, 9, 911021, 37, 911022, 42, 911002, 9, 13, 17, 15, 17, 28, 30, 113, 143, 168),
|
||||
(33, 9, 911021, 38, 911022, 44, 911002, 12, 13, 17, 15, 17, 28, 30, 116, 146, 171),
|
||||
(34, 9, 911021, 39, 911022, 46, 911002, 15, 13, 17, 15, 17, 28, 30, 119, 149, 174),
|
||||
(35, 9, 911021, 40, 911022, 48, 911002, 18, 13, 17, 15, 17, 28, 30, 122, 152, 177),
|
||||
(36, 9, 911021, 41, 911022, 50, 911002, 21, 15, 19, 17, 19, 32, 34, 125, 155, 180),
|
||||
(37, 9, 911021, 42, 911022, 52, 911002, 24, 15, 19, 17, 19, 32, 34, 128, 158, 183),
|
||||
(38, 9, 911021, 43, 911022, 54, 911002, 27, 15, 19, 17, 19, 32, 34, 131, 161, 186),
|
||||
(39, 9, 911021, 44, 911022, 56, 911002, 30, 15, 19, 17, 19, 32, 34, 134, 164, 189),
|
||||
(40, 9, 911021, 44, 911022, 58, 911002, 33, 15, 19, 17, 19, 32, 34, 137, 167, 192),
|
||||
(41, 9, 911021, 45, 911022, 60, 911002, 36, 17, 21, 19, 21, 36, 38, 140, 170, 195),
|
||||
(42, 9, 911021, 46, 911022, 62, 911002, 39, 17, 21, 19, 21, 36, 38, 143, 173, 198),
|
||||
(43, 9, 911021, 47, 911022, 64, 911002, 42, 17, 21, 19, 21, 36, 38, 146, 176, 201),
|
||||
(44, 9, 911021, 48, 911022, 66, 911002, 45, 17, 21, 19, 21, 36, 38, 149, 179, 204),
|
||||
(45, 9, 911021, 49, 911022, 68, 911002, 48, 17, 21, 19, 21, 36, 38, 152, 182, 207),
|
||||
(46, 9, 911021, 50, 911022, 70, 911002, 51, 19, 23, 21, 23, 40, 42, 155, 185, 210),
|
||||
(47, 9, 911021, 51, 911022, 72, 911002, 54, 19, 23, 21, 23, 40, 42, 158, 188, 213),
|
||||
(48, 9, 911021, 52, 911022, 74, 911002, 57, 19, 23, 21, 23, 40, 42, 161, 191, 216),
|
||||
(49, 9, 911021, 53, 911022, 76, 911002, 60, 19, 23, 21, 23, 40, 42, 164, 194, 219),
|
||||
(50, 9, 911021, 53, 911022, 78, 911002, 63, 19, 23, 21, 23, 40, 42, 167, 197, 222),
|
||||
;
|
||||
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
)
|
||||
|
||||
@@ -15,13 +16,80 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
RESIST_FROST = iota
|
||||
RESIST_ARCANE = iota
|
||||
RESIST_FIRE
|
||||
RESIST_NATURE
|
||||
RESIST_FROST
|
||||
RESIST_SHADOW
|
||||
RESIST_ARCANE
|
||||
)
|
||||
|
||||
// Return the itemEntry for a state item and based on quality (3 - rare, 4 - epic)
|
||||
func getStatItemEntry(statID int, quality int) int {
|
||||
switch statID {
|
||||
case STAT_INTELLECT:
|
||||
if quality == 3 {
|
||||
return 911005
|
||||
}
|
||||
return 911006
|
||||
case STAT_SPIRIT:
|
||||
if quality == 3 {
|
||||
return 911009
|
||||
}
|
||||
return 911010
|
||||
case STAT_STRENGTH:
|
||||
if quality == 3 {
|
||||
return 911003
|
||||
}
|
||||
return 911004
|
||||
case STAT_AGILITY:
|
||||
if quality == 3 {
|
||||
return 911007
|
||||
}
|
||||
return 911008
|
||||
case STAT_STAMINA:
|
||||
if quality == 3 {
|
||||
return 911011
|
||||
}
|
||||
return 911012
|
||||
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
func getResistItemEntry(resistID int, quality int) int {
|
||||
switch resistID {
|
||||
case RESIST_FROST:
|
||||
if quality == 3 {
|
||||
return 911015
|
||||
}
|
||||
return 911016
|
||||
case RESIST_FIRE:
|
||||
if quality == 3 {
|
||||
return 911017
|
||||
}
|
||||
return 911018
|
||||
case RESIST_NATURE:
|
||||
if quality == 3 {
|
||||
return 911023
|
||||
}
|
||||
return 911024
|
||||
case RESIST_SHADOW:
|
||||
if quality == 3 {
|
||||
return 911021
|
||||
}
|
||||
return 911022
|
||||
case RESIST_ARCANE:
|
||||
if quality == 3 {
|
||||
return 911019
|
||||
}
|
||||
return 911020
|
||||
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Output file for the SQL script
|
||||
outputFile, err := os.Create("generate_stat_upgrades.sql")
|
||||
@@ -40,9 +108,17 @@ func main() {
|
||||
STAT_STAMINA: "Stamina",
|
||||
}
|
||||
|
||||
resistTypes := map[int]string{
|
||||
RESIST_ARCANE: "Arcane",
|
||||
RESIST_FIRE: "Fire",
|
||||
RESIST_NATURE: "Nature",
|
||||
RESIST_FROST: "Frost",
|
||||
RESIST_SHADOW: "Shadow",
|
||||
}
|
||||
|
||||
// Start writing the SQL script
|
||||
fmt.Fprintln(outputFile, "-- SQL Script to Insert 50 Ranks for Each Stat")
|
||||
fmt.Fprintln(outputFile, "INSERT INTO mp_upgrade_ranks (upgradeRank, advancementId, materialId1, materialCost1, materialId2, materialCost2, materialId3, materialCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES")
|
||||
fmt.Fprintln(outputFile, "INSERT INTO mp_upgrade_ranks (upgradeRank, advancementId, itemEntry1, itemCost1, itemEntry2, itemCost2, itemEntry3, itemCost3, minIncrease1, maxIncrease1, minIncrease2, maxIncrease2, minIncrease3, maxIncrease3, chanceCost1, chanceCost2, chanceCost3) VALUES")
|
||||
|
||||
// Iterate over stats
|
||||
for statID := range stats {
|
||||
@@ -59,6 +135,9 @@ func main() {
|
||||
materialCost = 1000 + (rank-30)*18
|
||||
}
|
||||
|
||||
// Make adjustment for new fusion core types
|
||||
itemCost1 := int(math.Ceil(float64(materialCost) / 20))
|
||||
|
||||
// Stat growth
|
||||
minIncrease1 := 1 + (rank-1)/10*2
|
||||
maxIncrease1 := 10 + (rank-1)/10*2
|
||||
@@ -74,31 +153,112 @@ func main() {
|
||||
chanceCost3 := 75 + (rank-1)*3
|
||||
|
||||
// use material ids from the mp_material_types table material1 should be common stuff.
|
||||
materialId1 := statID*2 + 1
|
||||
itemEntry1 := getStatItemEntry(statID, 3)
|
||||
|
||||
// material2 should be rare stuff only required after rank 10 at growth rate of 5 per rank
|
||||
materialId2, materialCost2 := 0, 0
|
||||
itemEntry2, itemCost2 := 0, 0
|
||||
if rank > 10 {
|
||||
materialId2 = statID*2 + 2
|
||||
materialCost2 = (rank - 11) * 10
|
||||
itemEntry2 = getStatItemEntry(statID, 4)
|
||||
itemCost2 = (rank - 11) * 10
|
||||
}
|
||||
|
||||
materialId3, materialCost3 := 0, 0
|
||||
// Adjust from old formula to new mythic fusion core types
|
||||
itemCost2 = int(math.Ceil(float64(itemCost2) / 5))
|
||||
|
||||
itemEntry3, itemCost3 := 0, 0
|
||||
if rank >= 30 {
|
||||
materialId3 = 20 // Group lot of raid only items
|
||||
materialCost3 = (rank - 29) * 3
|
||||
itemEntry3 = 911002 // veilstones
|
||||
itemCost3 = (rank - 29) * 3
|
||||
if itemCost3 > 15 {
|
||||
itemCost3 = 15
|
||||
}
|
||||
}
|
||||
|
||||
// Write SQL insert statement for this rank
|
||||
sql := fmt.Sprintf(
|
||||
"(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
|
||||
rank, statID, materialId1, materialCost, materialId2, materialCost2, materialId3, materialCost3,
|
||||
rank, statID, itemEntry1, itemCost1, itemEntry2, itemCost2, itemEntry3, itemCost3,
|
||||
minIncrease1, maxIncrease1, minIncrease2, maxIncrease1, minIncrease3, maxIncrease3,
|
||||
chanceCost1, chanceCost2, chanceCost3,
|
||||
)
|
||||
|
||||
// Add a comma for all but the last line
|
||||
if !(statID == STAT_SPIRIT && rank == 50) {
|
||||
isLastStat := statID == STAT_STAMINA && rank == 50
|
||||
isLastResist := false
|
||||
isLast := isLastStat && len(resistTypes) == 0 || isLastResist
|
||||
|
||||
if !isLast {
|
||||
sql += ","
|
||||
}
|
||||
fmt.Fprintln(outputFile, sql)
|
||||
}
|
||||
}
|
||||
|
||||
// Iterate over resists
|
||||
for resistId := range resistTypes {
|
||||
resistIdbump := resistId + 5
|
||||
for rank := 1; rank <= 50; rank++ {
|
||||
// Material cost increases by 50 per rank
|
||||
materialCost := 50
|
||||
if rank < 11 {
|
||||
materialCost = 75 + (rank-1)*35
|
||||
}
|
||||
if rank >= 11 && rank < 30 {
|
||||
materialCost = 350 + (rank-11)*25
|
||||
}
|
||||
if rank >= 30 {
|
||||
materialCost = 700 + (rank-30)*18
|
||||
}
|
||||
|
||||
// Make adjustment for new fusion core types
|
||||
itemCost1 := int(math.Ceil(float64(materialCost) / 20))
|
||||
|
||||
// Stat growth
|
||||
minIncrease1 := 1 + (rank-1)/5*2
|
||||
maxIncrease1 := 5 + (rank-1)/5*2
|
||||
|
||||
minIncrease2 := (minIncrease1 + maxIncrease1) / 2
|
||||
maxIncrease3Bonus := (rank-1)/5*2 + 1
|
||||
|
||||
maxIncrease3 := maxIncrease1 + maxIncrease3Bonus
|
||||
minIncrease3 := maxIncrease3 - 2
|
||||
|
||||
// Dice costs
|
||||
chanceCost1 := 20 + (rank-1)*3
|
||||
chanceCost2 := 50 + (rank-1)*3
|
||||
chanceCost3 := 75 + (rank-1)*3
|
||||
|
||||
// use material ids from the mp_material_types table material1 should be common stuff.
|
||||
itemEntry1 := getResistItemEntry(resistId, 3)
|
||||
|
||||
// material2 should be rare stuff only required after rank 10 at growth rate of 5 per rank
|
||||
itemEntry2, itemCost2 := 0, 0
|
||||
if rank > 10 {
|
||||
itemEntry2 = getResistItemEntry(resistId, 4)
|
||||
itemCost2 = (rank - 11) * 10
|
||||
}
|
||||
|
||||
// Adjust from old formula to new mythic fusion core types
|
||||
itemCost2 = int(math.Ceil(float64(itemCost2) / 5))
|
||||
|
||||
itemEntry3, itemCost3 := 0, 0
|
||||
if rank >= 30 {
|
||||
itemEntry3 = 911002 // veilstones
|
||||
itemCost3 = (rank - 29) * 3
|
||||
}
|
||||
|
||||
// Write SQL insert statement for this rank
|
||||
sql := fmt.Sprintf(
|
||||
"(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
|
||||
rank, resistIdbump, itemEntry1, itemCost1, itemEntry2, itemCost2, itemEntry3, itemCost3,
|
||||
minIncrease1, maxIncrease1, minIncrease2, maxIncrease1, minIncrease3, maxIncrease3,
|
||||
chanceCost1, chanceCost2, chanceCost3,
|
||||
)
|
||||
|
||||
// Add a comma for all but the last line
|
||||
isLast := resistId == RESIST_ARCANE && rank == 50
|
||||
|
||||
if !isLast {
|
||||
sql += ","
|
||||
}
|
||||
fmt.Fprintln(outputFile, sql)
|
||||
|
||||
@@ -9,18 +9,37 @@
|
||||
#include <string_view>
|
||||
#include <tuple>
|
||||
#include <mutex>
|
||||
#include <exception>
|
||||
|
||||
std::string MpAdvancementsToString(MpAdvancements advancement)
|
||||
{
|
||||
switch (advancement)
|
||||
{
|
||||
case MP_ADV_INTELLECT: return "Intellect";
|
||||
case MP_ADV_SPIRIT: return "Spirit";
|
||||
case MP_ADV_STRENGTH: return "Strength";
|
||||
case MP_ADV_AGILITY: return "Agility";
|
||||
case MP_ADV_STAMINA: return "Stamina";
|
||||
case MP_ADV_RESIST_ARCANE: return "Arcane Resistance";
|
||||
case MP_ADV_RESIST_FIRE: return "Fire Resistance";
|
||||
case MP_ADV_RESIST_NATURE: return "Nature Resistance";
|
||||
case MP_ADV_RESIST_FROST: return "Frost Resistance";
|
||||
case MP_ADV_RESIST_SHADOW: return "Shadow Resistance";
|
||||
default: return "Unknown Advancement";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Table schema for upgrade ranks populated by go script:
|
||||
*
|
||||
* upgradeRank INT UNSIGNED NOT NULL,
|
||||
* advancementId INT UNSIGNED NOT NULL,
|
||||
* materialId1 INT UNSIGNED NOT NULL,
|
||||
* materialId2 INT UNSIGNED NOT NULL,
|
||||
* materialId3 INT UNSIGNED NOT NULL,
|
||||
* materialCost INT UNSIGNED NOT NULL,
|
||||
* materialCost2 INT UNSIGNED NOT NULL,
|
||||
* materialCost3 INT UNSIGNED NOT NULL,
|
||||
* itemEntry1 INT UNSIGNED NOT NULL,
|
||||
* itemEntry2 INT UNSIGNED NOT NULL,
|
||||
* itemEntry3 INT UNSIGNED NOT NULL,
|
||||
* itemCost1 INT UNSIGNED NOT NULL,
|
||||
* itemCost2 INT UNSIGNED NOT NULL,
|
||||
* itemCost3 INT UNSIGNED NOT NULL,
|
||||
* minIncrease1 INT UNSIGNED NOT NULL,
|
||||
* maxIncrease1 INT UNSIGNED NOT NULL,
|
||||
* minIncrease2 INT UNSIGNED NOT NULL,
|
||||
@@ -45,12 +64,12 @@ int32 AdvancementMgr::LoadAdvancementRanks() {
|
||||
SELECT
|
||||
upgradeRank,
|
||||
advancementId,
|
||||
materialId1,
|
||||
materialId2,
|
||||
materialId3,
|
||||
materialCost1,
|
||||
materialCost2,
|
||||
materialCost3,
|
||||
itemEntry1,
|
||||
itemEntry2,
|
||||
itemEntry3,
|
||||
itemCost1,
|
||||
itemCost2,
|
||||
itemCost3,
|
||||
minIncrease1,
|
||||
maxIncrease1,
|
||||
minIncrease2,
|
||||
@@ -65,20 +84,24 @@ int32 AdvancementMgr::LoadAdvancementRanks() {
|
||||
|
||||
QueryResult result = WorldDatabase.Query(query);
|
||||
if (!result) {
|
||||
MpLogger::error("Failed to load mythic scale factors from database");
|
||||
MpLogger::error("Failed to load advancement ranks from database");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Load all the material types into memory for reference
|
||||
|
||||
|
||||
|
||||
do {
|
||||
Field* fields = result->Fetch();
|
||||
uint32 upgradeRank = fields[0].Get<uint32>();
|
||||
uint32 advancementId = fields[1].Get<uint32>();
|
||||
uint32 materialId1 = fields[2].Get<uint32>();
|
||||
uint32 materialId2 = fields[3].Get<uint32>();
|
||||
uint32 materialId3 = fields[4].Get<uint32>();
|
||||
uint32 materialCost1 = fields[5].Get<uint32>();
|
||||
uint32 materialCost2 = fields[6].Get<uint32>();
|
||||
uint32 materialCost3 = fields[7].Get<uint32>();
|
||||
uint32 itemEntry1 = fields[2].Get<uint32>();
|
||||
uint32 itemEntry2 = fields[3].Get<uint32>();
|
||||
uint32 itemEntry3 = fields[4].Get<uint32>();
|
||||
uint32 itemCost1 = fields[5].Get<uint32>();
|
||||
uint32 itemCost2 = fields[6].Get<uint32>();
|
||||
uint32 itemCost3 = fields[7].Get<uint32>();
|
||||
uint32 minIncrease1 = fields[8].Get<uint32>();
|
||||
uint32 maxIncrease1 = fields[9].Get<uint32>();
|
||||
uint32 minIncrease2 = fields[10].Get<uint32>();
|
||||
@@ -100,13 +123,12 @@ int32 AdvancementMgr::LoadAdvancementRanks() {
|
||||
.rollCost = {chanceCost1, chanceCost2, chanceCost3},
|
||||
.lowRange = std::make_pair(minIncrease1, maxIncrease1),
|
||||
.midRange = std::make_pair(minIncrease2, maxIncrease2),
|
||||
.highRange = std::make_pair(minIncrease3, maxIncrease3)
|
||||
.highRange = std::make_pair(minIncrease3, maxIncrease3),
|
||||
.material1 = std::make_pair(itemEntry1, itemCost1),
|
||||
.material2 = std::make_pair(itemEntry2, itemCost2),
|
||||
.material3 = std::make_pair(itemEntry3, itemCost3)
|
||||
};
|
||||
|
||||
rank.materialCost.emplace(materialId1, materialCost1);
|
||||
rank.materialCost.emplace(materialId2, materialCost2);
|
||||
rank.materialCost.emplace(materialId3, materialCost3);
|
||||
|
||||
_advancementRanks.try_emplace(std::make_pair(upgradeRank, advancement), rank);
|
||||
|
||||
} while (result->NextRow());
|
||||
@@ -126,7 +148,7 @@ int32 AdvancementMgr::LoadAdvancementRanks() {
|
||||
* This loads the player advancements when a player logs in stores it into memory for access by spell scripts that
|
||||
* are applied to the player on login to apply the bonuses.
|
||||
*/
|
||||
int32 AdvancementMgr::LoadPlayerAdvancements(Player* player) {
|
||||
void AdvancementMgr::LoadPlayerAdvancements(Player* player) {
|
||||
|
||||
std::lock_guard<std::mutex> lock(_playerAdvancementMutex);
|
||||
|
||||
@@ -144,13 +166,18 @@ int32 AdvancementMgr::LoadPlayerAdvancements(Player* player) {
|
||||
QueryResult result = CharacterDatabase.Query(query, player->GetGUID().GetCounter());
|
||||
|
||||
// If the player does not have any upgrades just return perfectly fine not a problem until they purchase one.
|
||||
|
||||
if(!result) {
|
||||
return 0;
|
||||
MpLogger::info("Player {} has no advancements", player->GetName());
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 count = 0;
|
||||
uint32 guid = player->GetGUID().GetCounter();
|
||||
|
||||
// Loop through all results to load all advancements for this player
|
||||
do {
|
||||
Field* fields = result->Fetch();
|
||||
uint32 guid = fields[0].Get<uint32>();
|
||||
uint32 advancementId = fields[1].Get<uint32>();
|
||||
float bonus = fields[2].Get<float>();
|
||||
uint32 upgradeRank = fields[3].Get<uint32>();
|
||||
@@ -166,9 +193,13 @@ int32 AdvancementMgr::LoadPlayerAdvancements(Player* player) {
|
||||
// List of all ranks keyed by rank, advancementId
|
||||
_playerAdvancements[guid][advancement] = playerRank;
|
||||
|
||||
MpLogger::debug("Loaded player {} advancement {} rank {} with bonus {}",
|
||||
player->GetName(), static_cast<int>(advancement), upgradeRank, bonus);
|
||||
|
||||
count++;
|
||||
} while (result->NextRow());
|
||||
|
||||
return result->GetRowCount();
|
||||
MpLogger::info("Loaded {} advancements for player {}", count, player->GetName());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -183,21 +214,25 @@ int32 AdvancementMgr::LoadMaterialTypes() {
|
||||
FROM mp_material_types
|
||||
)";
|
||||
|
||||
QueryResult result = WorldDatabase.Query(query);
|
||||
if(QueryResult result = WorldDatabase.Query(query)) {
|
||||
|
||||
do {
|
||||
Field* fields = result->Fetch();
|
||||
uint32 materialId = fields[0].Get<uint32>();
|
||||
uint32 entry = fields[1].Get<uint32>();
|
||||
do {
|
||||
Field* fields = result->Fetch();
|
||||
uint32 materialId = fields[0].Get<uint32>();
|
||||
uint32 entry = fields[1].Get<uint32>();
|
||||
|
||||
if(!_materialTypes.contains(materialId)) {
|
||||
_materialTypes.emplace(materialId,std::vector<uint32>());
|
||||
}
|
||||
_materialTypes.at(materialId).push_back(entry);
|
||||
if(!_materialTypes.contains(materialId)) {
|
||||
_materialTypes.emplace(materialId,std::vector<uint32>());
|
||||
}
|
||||
_materialTypes.at(materialId).push_back(entry);
|
||||
|
||||
} while (result->NextRow());
|
||||
} while (result->NextRow());
|
||||
|
||||
return result->GetRowCount();
|
||||
return result->GetRowCount();
|
||||
} else {
|
||||
MpLogger::error("Query failed to load material types from database");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
MpAdvancementRank* AdvancementMgr::GetAdvancementRank(uint32 rank, MpAdvancements advancement)
|
||||
@@ -229,22 +264,17 @@ MpPlayerRank* AdvancementMgr::GetPlayerAdvancementRank(Player* player, MpAdvance
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool AdvancementMgr::UpgradeAdvancement(Player* player, MpAdvancements advancement, uint32 diceCostLevel, uint32 itemEntry1, uint32 itemEntry2, uint32 itemEntry3)
|
||||
uint32 AdvancementMgr::UpgradeAdvancement(Player* player, MpAdvancements advancement, uint32 diceCostLevel)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_playerAdvancementMutex);
|
||||
|
||||
// Validators to make sure inputs are correct to perform the upgrade
|
||||
if(!player) {
|
||||
MpLogger::error("Could not upgrade advancement for player, player was nullpointer");
|
||||
return false;
|
||||
throw new std::runtime_error("Could not upgrade advancement for player, player was nullpointer");
|
||||
}
|
||||
if(diceCostLevel < 1 || diceCostLevel > 3) {
|
||||
MpLogger::error("Invalid dice cost level valid vales (1,2,3) received {} for player {}", diceCostLevel, player->GetName());
|
||||
return false;
|
||||
}
|
||||
if(itemEntry1 == 0) {
|
||||
MpLogger::error("Material1 can not be 0 can not perform advancement upgrade for player {} Advancement {}", player->GetName(), advancement);
|
||||
return false;
|
||||
throw new std::runtime_error(Acore::StringFormat("Invalid dice cost level valid vales (1,2,3) received {} for player {}", diceCostLevel, player->GetName()));
|
||||
}
|
||||
|
||||
MpPlayerRank* playerRank = GetPlayerAdvancementRank(player, advancement);
|
||||
@@ -260,35 +290,60 @@ bool AdvancementMgr::UpgradeAdvancement(Player* player, MpAdvancements advanceme
|
||||
}
|
||||
|
||||
if(playerRank->rank == MP_MAX_ADVANCEMENT_RANK) {
|
||||
MpLogger::error("Player {} has reached the maximum rank for advancement {}", player->GetName(), advancement);
|
||||
return false;
|
||||
MpLogger::debug("Player {} has reached the maximum rank for advancement {}", player->GetName(), advancement);
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32 newRank = playerRank->rank + 1;
|
||||
MpAdvancementRank* advancementRank = GetAdvancementRank(newRank, advancement);
|
||||
if(!advancementRank->IsValid()) {
|
||||
MpLogger::error("Advancement {} rank {} could not be found", advancement, newRank);
|
||||
return false;
|
||||
if(advancementRank == nullptr || !advancementRank->IsValid()) {
|
||||
MpLogger::error("Advancement rank could not be found. Rank: {} Advancement: {}", newRank, static_cast<int>(advancement));
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Get the items needed to upgrade this advancement
|
||||
uint32 itemEntry1 = advancementRank->material1.first;
|
||||
uint32 itemEntry2 = advancementRank->material2.first;
|
||||
uint32 itemEntry3 = advancementRank->material3.first;
|
||||
|
||||
// If the player has the items needed to upgrade this advancement, then remove the items from the player inventory and apply the upgrade
|
||||
if(!_PlayerHasItems(player, advancementRank, diceCostLevel, itemEntry1, itemEntry2, itemEntry3)) {
|
||||
MpLogger::info("Player {} does not have the required items to upgrade advancement {}", player->GetName(), advancement);
|
||||
return false;
|
||||
MpLogger::debug("Player {} does not have the required items to upgrade advancement {}", player->GetName(), advancement);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Charge the player the cost of the upgrade
|
||||
_ChargeItemCost(player, advancementRank, diceCostLevel, itemEntry1, itemEntry2, itemEntry3);
|
||||
|
||||
MpLogger::debug("Player {} has upgraded advancement {} to rank {}", player->GetName(), advancement, newRank);
|
||||
|
||||
// Finally get the bonus to apply for the player
|
||||
float roll = _RollAdvancement(advancementRank, diceCostLevel);
|
||||
float roll = round(_RollAdvancement(advancementRank, diceCostLevel));
|
||||
|
||||
// Update the player advancement rank in memory and database
|
||||
playerRank->rank = newRank;
|
||||
playerRank->diceSpent += advancementRank->rollCost[diceCostLevel];
|
||||
playerRank->diceSpent += advancementRank->rollCost[diceCostLevel-1];
|
||||
|
||||
// round the roll to a whole number and add to player rank
|
||||
playerRank->bonus += roll;
|
||||
|
||||
return true;
|
||||
MpLogger::debug("Player {} has upgraded advancement {} to rank {} with bonus {} to new total bonus of {}", player->GetName(), advancement, newRank, roll, playerRank->bonus);
|
||||
|
||||
// Save the advancement to the database
|
||||
_SaveAdvancement(player, advancementRank, playerRank, advancementRank->rollCost[diceCostLevel-1], roll, itemEntry1, itemEntry2, itemEntry3);
|
||||
|
||||
// Remove and reapply the aura to refresh the spell with the latest bonuses
|
||||
uint32 spellId = MpConstants::GetAdvancementAura(advancement);
|
||||
if (spellId > 0)
|
||||
{
|
||||
MpLogger::info("Refreshing advancement aura {} for player {}", spellId, player->GetName());
|
||||
|
||||
// First remove the aura completely
|
||||
player->RemoveAura(spellId);
|
||||
player->AddAura(spellId, player);
|
||||
}
|
||||
|
||||
return roll;
|
||||
}
|
||||
|
||||
bool AdvancementMgr::ResetPlayerAdvancements(Player* /*player*/)
|
||||
@@ -298,7 +353,7 @@ bool AdvancementMgr::ResetPlayerAdvancements(Player* /*player*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
void AdvancementMgr::_ResetPlayerAdvancement(Player* player, MpAdvancements advancement)
|
||||
void AdvancementMgr::_ResetPlayerAdvancement(Player* /*player*/, MpAdvancements /*advancement*/)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_playerAdvancementMutex);
|
||||
return;
|
||||
@@ -308,6 +363,7 @@ void AdvancementMgr::_ResetPlayerAdvancement(Player* player, MpAdvancements adva
|
||||
float AdvancementMgr::_RollAdvancement(MpAdvancementRank* advancementRank, uint32 diceCostLevel)
|
||||
{
|
||||
uint32 min, max;
|
||||
min = max = 0;
|
||||
|
||||
switch (diceCostLevel)
|
||||
{
|
||||
@@ -324,92 +380,186 @@ float AdvancementMgr::_RollAdvancement(MpAdvancementRank* advancementRank, uint3
|
||||
max = advancementRank->highRange.second;
|
||||
break;
|
||||
default:
|
||||
MpLogger::error("Invalid dice cost level valid vales (1,2,3) received {} for rank roll", diceCostLevel, advancementRank->rank);
|
||||
MpLogger::error("Invalid dice cost level valid vales (1,2,3) received {} for rank roll {}", diceCostLevel, advancementRank->rank);
|
||||
break;
|
||||
}
|
||||
|
||||
MpLogger::debug("Rolling for rank {} dice level {} min {} max {}", advancementRank->rank, diceCostLevel, min, max);
|
||||
|
||||
return frand(min, max);
|
||||
}
|
||||
|
||||
// Checks the players inventory to validate they have the required items to perform an upgrade based on the set cost for the passed in level.
|
||||
/**
|
||||
* Checks the players inventory to validate they have the required items to perform an upgrade based on the set cost for the passed in level.
|
||||
* @todo refactor this to be more generic
|
||||
*/
|
||||
bool AdvancementMgr::_PlayerHasItems(Player* player, MpAdvancementRank* advancementRank, uint32 diceCostLevel, uint32 itemEntry1, uint32 itemEntry2, uint32 itemEntry3)
|
||||
{
|
||||
// Check if player has the required dice to upgrade the advancement if not do nothing.
|
||||
uint32 diceCost = advancementRank->materialCost.at(diceCostLevel);
|
||||
MpLogger::debug("Checking items for player {} dice level {} item1 {} item2 {} item3 {}",
|
||||
player->GetName(), diceCostLevel, itemEntry1, itemEntry2, itemEntry3);
|
||||
|
||||
// Check if player has the required dice to upgrade the advancement
|
||||
uint32 diceCost = advancementRank->rollCost[diceCostLevel-1];
|
||||
if(!player->HasItemCount(MpConstants::ANCIENT_DICE, diceCost)) {
|
||||
MpLogger::info("Player {} does not have enough dice to upgrade advancement {}", player->GetName(), advancementRank->advancementId);
|
||||
MpLogger::info("Player {} does not have enough dice to upgrade advancement {}",
|
||||
player->GetName(), advancementRank->advancementId);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Validate the passed in item for materialId 1 is valid and the player has enough to purchase.
|
||||
if(itemEntry1 > 0) {
|
||||
if(!advancementRank->HasMaterial(itemEntry1)) {
|
||||
MpLogger::error("Material1 {} is not a valid material for advancement {}", itemEntry1, advancementRank->advancementId);
|
||||
return false;
|
||||
// Check material 1 (required)
|
||||
if (advancementRank->material1.first > 0) {
|
||||
if (itemEntry1 == 0) {
|
||||
throw std::runtime_error("Primary material entry is required but was not provided");
|
||||
}
|
||||
|
||||
if(!player->HasItemCount(itemEntry1, advancementRank->materialCost[itemEntry1])) {
|
||||
MpLogger::info("Player {} does not have enough material {} to upgrade advancement {}", player->GetName(), itemEntry1, advancementRank->advancementId);
|
||||
uint32 requiredCount = advancementRank->material1.second;
|
||||
if (!player->HasItemCount(itemEntry1, requiredCount)) {
|
||||
MpLogger::info("Player {} does not have enough of item {} for advancement {}, requires: {}",
|
||||
player->GetName(), itemEntry1, advancementRank->advancementId, requiredCount);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(itemEntry2 > 0) {
|
||||
if(!advancementRank->HasMaterial(itemEntry2)) {
|
||||
MpLogger::error("Material1 {} is not a valid material for advancement {}", itemEntry2, advancementRank->advancementId);
|
||||
// Check material 2 (optional)
|
||||
if (advancementRank->material2.first > 0) {
|
||||
if (itemEntry2 == 0) {
|
||||
MpLogger::debug("Secondary material is required but not provided");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!player->HasItemCount(itemEntry2, advancementRank->materialCost[itemEntry2])) {
|
||||
MpLogger::info("Player {} does not have enough material {} to upgrade advancement {}", player->GetName(), itemEntry2, advancementRank->advancementId);
|
||||
uint32 requiredCount = advancementRank->material2.second;
|
||||
if (!player->HasItemCount(itemEntry2, requiredCount)) {
|
||||
MpLogger::info("Player {} does not have enough of item {} for advancement {}, requires: {}",
|
||||
player->GetName(), itemEntry2, advancementRank->advancementId, requiredCount);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(itemEntry3 > 0) {
|
||||
if(!advancementRank->HasMaterial(itemEntry3)) {
|
||||
MpLogger::error("Material1 {} is not a valid material for advancement {}", itemEntry3, advancementRank->advancementId);
|
||||
// Check material 3 (optional)
|
||||
if (advancementRank->material3.first > 0) {
|
||||
if (itemEntry3 == 0) {
|
||||
MpLogger::debug("Tertiary material is required but not provided");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!player->HasItemCount(itemEntry3, advancementRank->materialCost[itemEntry3])) {
|
||||
MpLogger::info("Player {} does not have enough material {} to upgrade advancement {}", player->GetName(), itemEntry3, advancementRank->advancementId);
|
||||
uint32 requiredCount = advancementRank->material3.second;
|
||||
if (!player->HasItemCount(itemEntry3, requiredCount)) {
|
||||
MpLogger::info("Player {} does not have enough of item {} for advancement {}, requires: {}",
|
||||
player->GetName(), itemEntry3, advancementRank->advancementId, requiredCount);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MpLogger::debug("Player {} has all required materials to upgrade advancement {}",
|
||||
player->GetName(), advancementRank->advancementId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Remove all items required for the upgrade.
|
||||
void AdvancementMgr::_ChargeItemCost(Player *player, MpAdvancementRank* advancementRank, uint32 diceCostLevel, uint32 itemEntry1, uint32 itemEntry2, uint32 itemEntry3)
|
||||
{
|
||||
uint32 diceCost = advancementRank->materialCost[diceCostLevel];
|
||||
Item* item = player->GetItemByEntry(MpConstants::ANCIENT_DICE);
|
||||
item->SetCount(item->GetCount() - diceCost);
|
||||
item->SendUpdateToPlayer(player);
|
||||
MpLogger::debug("Charging player {} dice level {} item1 {} item2 {} item3 {}",
|
||||
player->GetName(), diceCostLevel, itemEntry1, itemEntry2, itemEntry3);
|
||||
|
||||
// Remove the material from the player inventory
|
||||
if(itemEntry1 > 0) {
|
||||
item = player->GetItemByEntry(itemEntry1);
|
||||
item->SetCount(item->GetCount() - advancementRank->materialCost[itemEntry1]);
|
||||
item->SendUpdateToPlayer(player); // Update the client with the new dice count
|
||||
// Remove the dice cost
|
||||
uint32 diceCost = advancementRank->rollCost[diceCostLevel-1];
|
||||
player->DestroyItemCount(MpConstants::ANCIENT_DICE, diceCost, true);
|
||||
|
||||
// Remove material 1 if it exists
|
||||
if (itemEntry1 > 0 && advancementRank->material1.first > 0) {
|
||||
player->DestroyItemCount(itemEntry1, advancementRank->material1.second, true);
|
||||
}
|
||||
|
||||
if(itemEntry2 > 0) {
|
||||
item = player->GetItemByEntry(itemEntry2);
|
||||
item->SetCount(item->GetCount() - advancementRank->materialCost[itemEntry2]);
|
||||
item->SendUpdateToPlayer(player); // Update the client with the new dice count
|
||||
// Remove material 2 if it exists
|
||||
if (itemEntry2 > 0 && advancementRank->material2.first > 0) {
|
||||
player->DestroyItemCount(itemEntry2, advancementRank->material2.second, true);
|
||||
}
|
||||
|
||||
if(itemEntry3 > 0) {
|
||||
item = player->GetItemByEntry(itemEntry3);
|
||||
item->SetCount(item->GetCount() - advancementRank->materialCost[itemEntry3]);
|
||||
item->SendUpdateToPlayer(player); // Update the client with the new dice count
|
||||
// Remove material 3 if it exists
|
||||
if (itemEntry3 > 0 && advancementRank->material3.first > 0) {
|
||||
player->DestroyItemCount(itemEntry3, advancementRank->material3.second, true);
|
||||
}
|
||||
|
||||
return;
|
||||
MpLogger::debug("Successfully charged player {} for advancement upgrade", player->GetName());
|
||||
}
|
||||
|
||||
void AdvancementMgr::_SaveAdvancement(Player* player, MpAdvancementRank* advancementRank, MpPlayerRank* playerRank, uint32 diceCost, float roll, uint32 itemEntry1, uint32 itemEntry2, uint32 itemEntry3)
|
||||
{
|
||||
// Save the advancement to the database
|
||||
try {
|
||||
constexpr std::string_view insert = R"(
|
||||
INSERT INTO mp_player_advancements (guid, advancementId, bonus, upgradeRank, diceSpent)
|
||||
VALUES ({}, {}, {}, {}, {})
|
||||
ON DUPLICATE KEY UPDATE
|
||||
bonus = {},
|
||||
upgradeRank = {},
|
||||
diceSpent = {}
|
||||
)";
|
||||
|
||||
MpLogger::debug("Saving advancement for player {} bonus {} advancement {} rank {}", player->GetName(), playerRank->bonus, advancementRank->advancementId, playerRank->rank);
|
||||
CharacterDatabase.DirectExecute(insert,
|
||||
player->GetGUID().GetCounter(),
|
||||
advancementRank->advancementId,
|
||||
playerRank->bonus,
|
||||
playerRank->rank,
|
||||
playerRank->diceSpent,
|
||||
playerRank->bonus,
|
||||
playerRank->rank,
|
||||
playerRank->diceSpent
|
||||
);
|
||||
} catch (const std::exception& e) {
|
||||
MpLogger::error("Failed to save advancement for player {}: {}", player->GetName(), e.what());
|
||||
} catch (...) {
|
||||
MpLogger::error("Failed to save advancement for player {}: unknown error", player->GetName());
|
||||
}
|
||||
|
||||
try {
|
||||
constexpr std::string_view insertHistory = R"(
|
||||
INSERT INTO mp_player_advancement_history (guid, advancementId, bonus, upgradeRank, diceSpent, entryId1, entryId2, entryId3, itemCost1, itemCost2, itemCost3)
|
||||
VALUES ({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})
|
||||
)";
|
||||
|
||||
MpLogger::debug("Saving advancement history for player {} advancement {} rank {}", player->GetName(), advancementRank->advancementId, playerRank->rank);
|
||||
CharacterDatabase.Execute(insertHistory,
|
||||
player->GetGUID().GetCounter(),
|
||||
advancementRank->advancementId,
|
||||
roll,
|
||||
playerRank->rank,
|
||||
diceCost,
|
||||
itemEntry1,
|
||||
itemEntry2,
|
||||
itemEntry3,
|
||||
advancementRank->material1.second,
|
||||
advancementRank->material2.second,
|
||||
advancementRank->material3.second
|
||||
);
|
||||
} catch (const std::exception& e) {
|
||||
MpLogger::error("Failed to save advancement history for player {}: {}", player->GetName(), e.what());
|
||||
} catch (...) {
|
||||
MpLogger::error("Failed to save advancement history for player {}: unknown error", player->GetName());
|
||||
}
|
||||
}
|
||||
|
||||
// void _DBSaveAdvancement(Player* player, MpAdvancementRank* advancementRank, MpPlayerRank* playerRank)
|
||||
// {
|
||||
// // Save the advancement to the database
|
||||
// constexpr std::string_view query = R"(
|
||||
// INSERT INTO mp_player_advancements (guid, advancementId, bonus, upgradeRank, diceSpent)
|
||||
// VALUES ({}, {}, {}, {}, {})
|
||||
// ON DUPLICATE KEY UPDATE
|
||||
// bonus = {},
|
||||
// upgradeRank = {},
|
||||
// diceSpent = {}
|
||||
// )";
|
||||
|
||||
// CharacterDatabase.Execute(query,
|
||||
// player->GetGUID().GetCounter(),
|
||||
// advancementRank->advancementId,
|
||||
// roll,
|
||||
// playerRank->rank,
|
||||
// playerRank->diceSpent,
|
||||
// roll,
|
||||
// playerRank->rank,
|
||||
// playerRank->diceSpent
|
||||
// );
|
||||
// }
|
||||
|
||||
@@ -11,19 +11,21 @@
|
||||
|
||||
enum MpAdvancements
|
||||
{
|
||||
MP_ADV_STRENGTH = 0,
|
||||
MP_ADV_AGILITY = 1,
|
||||
MP_ADV_STAMINA = 2,
|
||||
MP_ADV_INTELLECT = 3,
|
||||
MP_ADV_SPIRIT = 4,
|
||||
MP_ADV_RESIST_FIRE = 5,
|
||||
MP_ADV_RESIST_NATURE = 6,
|
||||
MP_ADV_RESIST_FROST = 7,
|
||||
MP_ADV_RESIST_SHADOW = 8,
|
||||
MP_ADV_RESIST_ARCANE = 9,
|
||||
MP_ADV_INTELLECT = 0,
|
||||
MP_ADV_SPIRIT = 1,
|
||||
MP_ADV_STRENGTH = 2,
|
||||
MP_ADV_AGILITY = 3,
|
||||
MP_ADV_STAMINA = 4,
|
||||
MP_ADV_RESIST_ARCANE = 5,
|
||||
MP_ADV_RESIST_FIRE = 6,
|
||||
MP_ADV_RESIST_NATURE = 7,
|
||||
MP_ADV_RESIST_FROST = 8,
|
||||
MP_ADV_RESIST_SHADOW = 9,
|
||||
MP_ADV_MAX = 10
|
||||
};
|
||||
|
||||
std::string MpAdvancementsToString(MpAdvancements advancement);
|
||||
|
||||
/**
|
||||
* Advancement Rank represents each level for a stat increase that has can be purchases.
|
||||
* It includes materials, type, and range of successful roll.
|
||||
@@ -41,6 +43,11 @@ struct MpAdvancementRank
|
||||
std::pair<uint32 /*min*/, uint32 /*max*/> midRange;
|
||||
std::pair<uint32 /*min*/, uint32 /*max*/> highRange;
|
||||
|
||||
// materialId levels
|
||||
std::pair<uint32 /*materialId*/, uint32 /*quantity*/> material1;
|
||||
std::pair<uint32 /*materialId*/, uint32 /*quantity*/> material2;
|
||||
std::pair<uint32 /*materialId*/, uint32 /*quantity*/> material3;
|
||||
|
||||
// Used to validate this struct is set correctly
|
||||
bool IsValid() {
|
||||
return (rank > 0 && advancementId >= 0 && advancementId < MP_ADV_MAX);
|
||||
@@ -95,7 +102,7 @@ public:
|
||||
// Loads advancement information from the database into memory when players are logged in or server starts.
|
||||
int32 LoadAdvancementRanks();
|
||||
int32 LoadMaterialTypes();
|
||||
int32 LoadPlayerAdvancements(Player* player);
|
||||
void LoadPlayerAdvancements(Player* player);
|
||||
|
||||
// Methods for looking up advancement rank data
|
||||
MpAdvancementRank* GetAdvancementRank(uint32 rank, MpAdvancements advancement);
|
||||
@@ -114,7 +121,7 @@ public:
|
||||
* mixed materials is more complicated and the UI to support it is much more complex, while this is not as nice it is much simpler to implement.
|
||||
* That means all materials have to be selected and passed in at the time of making this call.
|
||||
*/
|
||||
bool UpgradeAdvancement(Player* player, MpAdvancements advancement, uint32 diceCostLevel, uint32 itemEntry1, uint32 itemEntry2, uint32 itemEntry3);
|
||||
uint32 UpgradeAdvancement(Player* player, MpAdvancements advancement, uint32 diceCostLevel);
|
||||
|
||||
// Used to reset all advancements for a specific player
|
||||
bool ResetPlayerAdvancements(Player* player);
|
||||
@@ -135,8 +142,11 @@ private:
|
||||
// Removes items from player inventory based on the required advancement rank.
|
||||
void _ChargeItemCost(Player* player, MpAdvancementRank* advancementRank, uint32 diceCostLevel, uint32 itemEntry1, uint32 itemEntry2, uint32 itemEntry3);
|
||||
|
||||
// This will save the advancement for the player advancement in memory and database
|
||||
void _SaveAdvancement(Player* player, MpAdvancementRank* advancementRank, MpPlayerRank* playerRank, uint32 diceCost, float roll, uint32 itemEntry1, uint32 itemEntry2 = 0, uint32 itemEntry3 = 0);
|
||||
|
||||
// This will save the advancement purchase to the history database
|
||||
void _DBSaveAdvancement(Player* player, MpAdvancementRank* advancementRank, MpPlayerRank* playerRank, uint32 diceCost, float roll);
|
||||
// void _DBSaveAdvancement(Player* player, MpAdvancementRank* advancementRank, MpPlayerRank* playerRank, uint32 diceCost, float roll);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -21,7 +21,8 @@ bool MpClientDispatcher::Dispatch(MpClientEvent event, Player* player, std::vect
|
||||
|
||||
// Build the message string in same format to send to the client.
|
||||
std::string_view eventName = MpClientEventNames.at(event);
|
||||
std::string message = std::to_string(player->GetGUID().GetCounter()) + "|" + eventName.data();
|
||||
uint32 playerGuid = player->GetGUID().GetCounter();
|
||||
std::string message = "s|" + std::to_string(playerGuid) + "|" + std::string(eventName);
|
||||
for(auto& arg : args) {
|
||||
message += "|" + arg;
|
||||
}
|
||||
@@ -29,17 +30,19 @@ bool MpClientDispatcher::Dispatch(MpClientEvent event, Player* player, std::vect
|
||||
std::string prefix = std::string(MP_DATA_CHAT_CHANNEL);
|
||||
std::string fullmsg = prefix + "\t" + message;
|
||||
|
||||
MpLogger::debug("Dispatching client event: {} length {} for event {}", fullmsg, fullmsg.length(), std::string(eventName));
|
||||
|
||||
WorldPacket data(SMSG_MESSAGECHAT, 100);
|
||||
data << uint8(CHAT_MSG_ADDON);
|
||||
data << uint8(ChatMsg::CHAT_MSG_WHISPER);
|
||||
data << int32(LANG_ADDON);
|
||||
data << player->GetGUID().GetCounter();
|
||||
data << player->GetGUID();
|
||||
data << uint32(0);
|
||||
data << player->GetGUID().GetCounter();
|
||||
data << player->GetGUID();
|
||||
data << uint32(fullmsg.length() + 1);
|
||||
data << fullmsg;
|
||||
data << uint8(0);
|
||||
|
||||
player->GetSession()->SendPacket(&data);
|
||||
return 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ enum class MpEvent
|
||||
UpgradeAdvancement, // Upgrades a player advancement 1 level
|
||||
ResetAdvancement, // Resets a player Advancement back to 0
|
||||
ResetAllAdvancements, // Resets all player advancements
|
||||
GetPlayerRank, // Get the rank requirements for an advancement to the next levels
|
||||
GetAdvancementRank // Get the details about the rank of a specific advancement (cost, bonus, etc)
|
||||
};
|
||||
|
||||
@@ -24,6 +25,7 @@ enum class MpClientEvent
|
||||
UpgradeAdvancement,
|
||||
ResetAdvancement,
|
||||
ResetAllAdvancements,
|
||||
GetPlayerRank,
|
||||
GetAdvancementRank
|
||||
};
|
||||
|
||||
@@ -32,7 +34,8 @@ inline std::unordered_map<std::string_view, MpEvent> MpEventMap = {{
|
||||
{"UpgradeAdvancement", MpEvent::UpgradeAdvancement},
|
||||
{"ResetAdvancement", MpEvent::ResetAdvancement},
|
||||
{"ResetAllAdvancements", MpEvent::ResetAllAdvancements},
|
||||
{"GetAdvancementRank", MpEvent::ResetAllAdvancements}
|
||||
{"GetPlayerRank", MpEvent::GetPlayerRank},
|
||||
{"GetAdvancementRank", MpEvent::GetAdvancementRank}
|
||||
}};
|
||||
|
||||
inline std::unordered_map<MpClientEvent, std::string_view> MpClientEventNames = {{
|
||||
@@ -40,6 +43,7 @@ inline std::unordered_map<MpClientEvent, std::string_view> MpClientEventNames =
|
||||
{MpClientEvent::UpgradeAdvancement, "UpgradeAdvancement"},
|
||||
{MpClientEvent::ResetAdvancement, "ResetAdvancement"},
|
||||
{MpClientEvent::ResetAllAdvancements, "ResetAllAdvancements"},
|
||||
{MpClientEvent::GetPlayerRank, "GetPlayerRank"},
|
||||
{MpClientEvent::GetAdvancementRank, "GetAdvancementRank"}
|
||||
}};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "MpEvent.h"
|
||||
#include "MpLogger.h"
|
||||
#include "AdvancementMgr.h"
|
||||
#include "../AdvancementMgr.h"
|
||||
#include "MpEventProcessor.h"
|
||||
#include "MpClientDispatcher.h"
|
||||
#include "Player.h"
|
||||
@@ -15,28 +15,55 @@
|
||||
/**
|
||||
* Handles Updates to a players advancement system
|
||||
* Event format
|
||||
* p|playerGuid|UpgradeAdvancement|advancementId|rank|diceSpent|bonus
|
||||
*/
|
||||
enum class MP_EVENT_CODE
|
||||
{
|
||||
SUCCESS = 0,
|
||||
|
||||
// Message Errors
|
||||
INVALID_EVENT = 100,
|
||||
INVALID_ARGUMENT_SIZE = 201,
|
||||
INVALID_ARGUMENT = 202,
|
||||
INVALID_ARGUMENT_TYPE = 203,
|
||||
|
||||
// Game Response Codes
|
||||
FAILED_UPGRADE_ADV = 300,
|
||||
|
||||
// Unknown Error
|
||||
UNKNOWN_ERROR = 400,
|
||||
NO_HANDLER = 401
|
||||
|
||||
};
|
||||
|
||||
std::string EventCodeToString(MP_EVENT_CODE code)
|
||||
{
|
||||
switch(code) {
|
||||
case MP_EVENT_CODE::SUCCESS: return "Success";
|
||||
case MP_EVENT_CODE::INVALID_EVENT: return "Invalid event";
|
||||
case MP_EVENT_CODE::INVALID_ARGUMENT_SIZE: return "Invalid argument size";
|
||||
case MP_EVENT_CODE::INVALID_ARGUMENT: return "Invalid argument";
|
||||
case MP_EVENT_CODE::INVALID_ARGUMENT_TYPE: return "Invalid argument type";
|
||||
case MP_EVENT_CODE::FAILED_UPGRADE_ADV: return "Failed to upgrade advancement";
|
||||
case MP_EVENT_CODE::NO_HANDLER: return "No handler for event";
|
||||
default: return "Unknown error";
|
||||
}
|
||||
}
|
||||
|
||||
// Send an error event to the client
|
||||
bool SendEventError(Player* player, const std::string& method, MP_EVENT_CODE code, std::string message)
|
||||
bool SendEventError(Player* player, const std::string& /* method*/, MP_EVENT_CODE code, std::string message)
|
||||
{
|
||||
std::vector<std::string> clientError = { std::to_string(static_cast<int>(code)), message };
|
||||
MpLogger::error("Event Processor) Sending client error: {} {}", code, message);
|
||||
MpLogger::error("(Event Processor) Sending client error: {} {}", code, message);
|
||||
sMpClientDispatcher->Dispatch(MpClientEvent::Error, player, clientError);
|
||||
return false;
|
||||
}
|
||||
|
||||
class UpdateAdvancements : public MpEventInterface
|
||||
/**
|
||||
* Upgrade a Player Advancement
|
||||
* Message Format:
|
||||
* p|playerGuid|UpgradeAdvancement|advancementId|diceLevel|itemEntry1|itemEntry2|itemEntry3
|
||||
*/
|
||||
class UpgradeAdvancements : public MpEventInterface
|
||||
{
|
||||
public:
|
||||
const std::string EventName() const override
|
||||
@@ -44,44 +71,66 @@ class UpdateAdvancements : public MpEventInterface
|
||||
return "UpgradeAdvancement";
|
||||
}
|
||||
|
||||
bool Execute(Player* player, std::vector<std::string>& args)
|
||||
bool Execute(Player* player, std::vector<std::string>& args) override
|
||||
{
|
||||
// Store the event data to send back to the client for parsing
|
||||
std::vector<std::string> eventData;
|
||||
|
||||
MpLogger::info("(EventProcessor) Executing {}}", EventName());
|
||||
std::string eventName = EventName();
|
||||
MpLogger::info("(EventProcessor) Executing {}", eventName.c_str());
|
||||
for(auto& arg : args) {
|
||||
MpLogger::info("{} Arg: {}", EventName(), arg);
|
||||
}
|
||||
|
||||
// Validate the message is int he right format
|
||||
if(args.size() != 5) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT_SIZE, "Invalid number of arguments expected 5, found " + std::to_string(args.size()));
|
||||
// Validate the message is in the right format
|
||||
if(args.size() != 2) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT_SIZE, "Invalid number of arguments expected 2, found " + std::to_string(args.size()));
|
||||
}
|
||||
|
||||
uint32 advancementId = std::stoi(args[0]);
|
||||
uint32 advancementId, diceLevel;
|
||||
try {
|
||||
advancementId = std::stoi(args[0]);
|
||||
} catch (const std::exception& e) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id format: " + args[0]);
|
||||
}
|
||||
|
||||
if(advancementId >= MpAdvancements::MP_ADV_MAX) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id " + args[0] + " max is " + std::to_string(MpAdvancements::MP_ADV_MAX));
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id " + args[0] + " max valid id is " + std::to_string(MpAdvancements::MP_ADV_MAX - 1));
|
||||
}
|
||||
|
||||
uint32 diceLevel = std::stoi(args[1]);
|
||||
try {
|
||||
diceLevel = std::stoi(args[1]);
|
||||
} catch (const std::exception& e) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid dice level format: " + args[1]);
|
||||
}
|
||||
|
||||
if(diceLevel < 1 || diceLevel > 3) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid dice level " + args[1] + " valid values are 1,2,3");
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid dice level " + args[1] + " valid values are 1,2,3");
|
||||
}
|
||||
|
||||
uint32 itemEntry1 = std::stoi(args[2]);
|
||||
if(itemEntry1 == 0) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid item entry1 can not be empty " + args[2]);
|
||||
uint32 increase;
|
||||
try {
|
||||
increase = sAdvancementMgr->UpgradeAdvancement(player, static_cast<MpAdvancements>(advancementId), diceLevel);
|
||||
if(increase == 0) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Failed to upgrade advancement invalid request see error logs for player " + player->GetName());
|
||||
}
|
||||
} catch(const std::exception& e) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::FAILED_UPGRADE_ADV, "Failed to upgrade: " + std::string(e.what()) + " for player " + player->GetName());
|
||||
}
|
||||
|
||||
uint32 itemEntry2 = std::stoi(args[3]);
|
||||
uint32 itemEntry3 = std::stoi(args[4]);
|
||||
|
||||
// Upgrade the advancement for the player!
|
||||
if(! sAdvancementMgr->UpgradeAdvancement(player, static_cast<MpAdvancements>(advancementId), diceLevel, itemEntry1, itemEntry2, itemEntry3)) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Failed to upgrade advancement for player " + player->GetName());
|
||||
// Only proceed to here if no errors occurred
|
||||
MpPlayerRank* playerRank = sAdvancementMgr->GetPlayerAdvancementRank(player, static_cast<MpAdvancements>(advancementId));
|
||||
if (!playerRank) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Failed to get advancement rank for player " + player->GetName());
|
||||
}
|
||||
eventData = {"0", "success"};
|
||||
|
||||
// Format the success event data for client increase|newrank|bonus
|
||||
eventData = {
|
||||
EventCodeToString(MP_EVENT_CODE::SUCCESS),
|
||||
std::to_string(increase),
|
||||
std::to_string(playerRank->rank),
|
||||
std::to_string(playerRank->bonus)
|
||||
};
|
||||
|
||||
// Send response back to the client
|
||||
sMpClientDispatcher->Dispatch(MpClientEvent::UpgradeAdvancement, player, eventData);
|
||||
@@ -90,15 +139,24 @@ class UpdateAdvancements : public MpEventInterface
|
||||
}
|
||||
};
|
||||
|
||||
class GetAdvancementRank : public MpEventInterface
|
||||
/**
|
||||
* @brief Event is used to get the rank requirements for an advancement to the next levels
|
||||
*
|
||||
* Message Format:
|
||||
* p|playerGuid|GetPlayerRank|advancementId
|
||||
*
|
||||
* Returns:
|
||||
* p|playerGuid|GetPlayerRank|rank|bonus|spentDice
|
||||
*/
|
||||
class GetPlayerRank : public MpEventInterface
|
||||
{
|
||||
public:
|
||||
const std::string EventName() const override
|
||||
{
|
||||
return "GetAdvancementRank";
|
||||
return "GetPlayerRank";
|
||||
}
|
||||
|
||||
bool Execute(Player* player, std::vector<std::string>& args)
|
||||
bool Execute(Player* player, std::vector<std::string>& args) override
|
||||
{
|
||||
// Store the event data to send back to the client for parsing
|
||||
std::vector<std::string> eventData;
|
||||
@@ -113,27 +171,111 @@ class GetAdvancementRank : public MpEventInterface
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT_SIZE, "Invalid number of arguments expected 1, found " + std::to_string(args.size()));
|
||||
}
|
||||
|
||||
uint32 advancementId = std::stoi(args[0]);
|
||||
uint32 advancementId;
|
||||
try {
|
||||
advancementId = std::stoi(args[0]);
|
||||
} catch (const std::exception& e) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id format: " + args[0]);
|
||||
}
|
||||
|
||||
if(advancementId >= MpAdvancements::MP_ADV_MAX) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id " + args[0] + " max is " + std::to_string(MpAdvancements::MP_ADV_MAX));
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id " + args[0] + " max valid id is " + std::to_string(MpAdvancements::MP_ADV_MAX - 1));
|
||||
}
|
||||
|
||||
MpAdvancementRank* rank = sAdvancementMgr->GetAdvancementRank(1, static_cast<MpAdvancements>(advancementId));
|
||||
if(!rank) {
|
||||
MpPlayerRank* playerRank = sAdvancementMgr->GetPlayerAdvancementRank(player, static_cast<MpAdvancements>(advancementId));
|
||||
if(!playerRank) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Failed to get advancement rank for player " + player->GetName());
|
||||
}
|
||||
|
||||
eventData = {std::to_string(rank->rank), std::to_string(rank->advancementId)};
|
||||
eventData = {
|
||||
EventCodeToString(MP_EVENT_CODE::SUCCESS),
|
||||
std::to_string(playerRank->rank),
|
||||
std::to_string(playerRank->bonus),
|
||||
std::to_string(playerRank->diceSpent)
|
||||
};
|
||||
|
||||
// Send response back to the client
|
||||
sMpClientDispatcher->Dispatch(MpClientEvent::GetPlayerRank, player, eventData);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Event is used to get the rank requirements for an advancement to the next levels
|
||||
*
|
||||
* Message Format:
|
||||
* p|playerGuid|GetAdvancmentRank|advancementId|rank
|
||||
*
|
||||
* Returns:
|
||||
* p|playerGuid|GetAdvancementRank|advancementId|rank|min1|max1|min2|max2|min3|max3|itemEntry1|itemEntryCost1|itemEntry2|itemEntryCost2|itemEntry3|itemEntryCost3
|
||||
*/
|
||||
class GetAdvancementRank : public MpEventInterface {
|
||||
public:
|
||||
const std::string EventName() const override
|
||||
{
|
||||
return "GetAdvancementRank";
|
||||
}
|
||||
|
||||
bool Execute(Player* player, std::vector<std::string>& args) override
|
||||
{
|
||||
if(args.size() != 2) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT_SIZE, "Invalid number of arguments expected 2, found " + std::to_string(args.size()));
|
||||
}
|
||||
|
||||
uint32 advancementId, rank;
|
||||
try {
|
||||
advancementId = std::stoi(args[0]);
|
||||
} catch (const std::exception& e) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id format: " + args[0]);
|
||||
}
|
||||
|
||||
if(advancementId >= MpAdvancements::MP_ADV_MAX) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid advancement id " + args[0] + " max valid id is " + std::to_string(MpAdvancements::MP_ADV_MAX - 1));
|
||||
}
|
||||
|
||||
try {
|
||||
rank = std::stoi(args[1]);
|
||||
} catch (const std::exception& e) {
|
||||
return SendEventError(player, EventName(), MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid rank format: " + args[1]);
|
||||
}
|
||||
|
||||
if(rank == 0) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Invalid rank " + args[1] + " can not be empty");
|
||||
}
|
||||
|
||||
MpAdvancementRank* advRank = sAdvancementMgr->GetAdvancementRank(rank, static_cast<MpAdvancements>(advancementId));
|
||||
if(!advRank) {
|
||||
return SendEventError(player, EventName(),MP_EVENT_CODE::INVALID_ARGUMENT, "Failed to get advancement rank for player " + player->GetName());
|
||||
}
|
||||
|
||||
std::vector<std::string> eventData = {
|
||||
EventCodeToString(MP_EVENT_CODE::SUCCESS),
|
||||
std::to_string(advRank->advancementId),
|
||||
std::to_string(advRank->rank),
|
||||
std::to_string(advRank->lowRange.first),
|
||||
std::to_string(advRank->lowRange.second),
|
||||
std::to_string(advRank->midRange.first),
|
||||
std::to_string(advRank->midRange.second),
|
||||
std::to_string(advRank->highRange.first),
|
||||
std::to_string(advRank->highRange.second),
|
||||
std::to_string(advRank->material1.first),
|
||||
std::to_string(advRank->material1.second),
|
||||
std::to_string(advRank->material2.first),
|
||||
std::to_string(advRank->material2.second),
|
||||
std::to_string(advRank->material3.first),
|
||||
std::to_string(advRank->material3.second)
|
||||
};
|
||||
|
||||
// Send response back to the client
|
||||
sMpClientDispatcher->Dispatch(MpClientEvent::GetAdvancementRank, player, eventData);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void MP_Register_EventHandlers()
|
||||
{
|
||||
auto updateAdvancements = std::make_shared<UpdateAdvancements>();
|
||||
sMpEventProcessor->RegisterHandler(MpEvent::UpgradeAdvancement, updateAdvancements);
|
||||
sMpEventProcessor->RegisterHandler(MpEvent::UpgradeAdvancement, std::make_shared<UpgradeAdvancements>());
|
||||
sMpEventProcessor->RegisterHandler(MpEvent::GetPlayerRank, std::make_shared<GetPlayerRank>());
|
||||
sMpEventProcessor->RegisterHandler(MpEvent::GetAdvancementRank, std::make_shared<GetAdvancementRank>());
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "MpEventProcessor.h"
|
||||
#include "MythicPlus.h"
|
||||
#include "MpLogger.h"
|
||||
#include "MpClientDispatcher.h"
|
||||
#include "Player.h"
|
||||
#include <boost/algorithm/string/replace.hpp>
|
||||
|
||||
@@ -65,6 +66,10 @@ void MpEventProcessor::RegisterHandler(MpEvent event, std::shared_ptr<MpEventInt
|
||||
// This fires the execution to the actual event.
|
||||
bool MpEventProcessor::Dispatch(MpEvent event, Player* player, std::vector<std::string>& args) {
|
||||
if(!_eventHandlers.contains(event)) {
|
||||
|
||||
// Send a client message back also to the player
|
||||
std::vector<std::string> clientError = { "Error", "No handler registered for event: " + std::to_string(static_cast<int>(event)) };
|
||||
sMpClientDispatcher->Dispatch(MpClientEvent::Error, player, clientError);
|
||||
MpLogger::warn("No handler registered for event: {}", event);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,112 @@
|
||||
|
||||
#ifndef MP_CONSTANTS_H
|
||||
#define MP_CONSTANTS_H
|
||||
|
||||
#include "AdvancementMgr.h"
|
||||
|
||||
namespace MpConstants
|
||||
{
|
||||
// Spell IDs for passive stat and resist bonuses
|
||||
constexpr int TITANS_STRENGTH_AURA = 80000001; // strength
|
||||
constexpr int STEEL_FORGED_AURA = 80000002; // stamina
|
||||
constexpr int CELESTIAL_GRACE_AURA = 80000003; // spirit
|
||||
constexpr int FORBIDDEN_KNOWLEDGE_AURA = 80000004; // intellect
|
||||
constexpr int SPECTRAL_REFLEXES_AURA = 80000005; // agility
|
||||
constexpr int ELDRITCH_BARRIER_AURA = 80000006; // arcane resistance
|
||||
constexpr int HELLFIRE_SHIELDING_AURA = 80000007; // fire resistance
|
||||
constexpr int PRIMAL_ENDURACE_AURA = 80000008; // nature resistance
|
||||
constexpr int LICHS_BANE_AURA = 80000009; // shadow resistance
|
||||
constexpr int GLACIAL_FORTRESS_AURA = 80000010; // frost resistance
|
||||
|
||||
/**
|
||||
* @brief Adds a static method for looking up the corect advancement aura based on the advancement type.
|
||||
*
|
||||
* @param advancement
|
||||
* @return int
|
||||
*/
|
||||
static int GetAdvancementAura(MpAdvancements advancement)
|
||||
{
|
||||
switch (advancement)
|
||||
{
|
||||
case MpAdvancements::MP_ADV_INTELLECT:
|
||||
return MpConstants::FORBIDDEN_KNOWLEDGE_AURA;
|
||||
case MpAdvancements::MP_ADV_SPIRIT:
|
||||
return MpConstants::CELESTIAL_GRACE_AURA;
|
||||
case MpAdvancements::MP_ADV_STRENGTH:
|
||||
return MpConstants::TITANS_STRENGTH_AURA;
|
||||
case MpAdvancements::MP_ADV_AGILITY:
|
||||
return MpConstants::SPECTRAL_REFLEXES_AURA;
|
||||
case MpAdvancements::MP_ADV_STAMINA:
|
||||
return MpConstants::STEEL_FORGED_AURA;
|
||||
case MpAdvancements::MP_ADV_RESIST_ARCANE:
|
||||
return MpConstants::ELDRITCH_BARRIER_AURA;
|
||||
case MpAdvancements::MP_ADV_RESIST_FIRE:
|
||||
return MpConstants::HELLFIRE_SHIELDING_AURA;
|
||||
case MpAdvancements::MP_ADV_RESIST_NATURE:
|
||||
return MpConstants::PRIMAL_ENDURACE_AURA;
|
||||
case MpAdvancements::MP_ADV_RESIST_FROST:
|
||||
return MpConstants::GLACIAL_FORTRESS_AURA;
|
||||
case MpAdvancements::MP_ADV_RESIST_SHADOW:
|
||||
return MpConstants::LICHS_BANE_AURA;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Spells used for learning how to make items used for advancement.
|
||||
constexpr int SPELL_ORE_FUSION = 150000;
|
||||
constexpr int SPELL_CLOTH_FUSION = 150001;
|
||||
constexpr int SPELL_LEATHER_FUSION = 150002;
|
||||
constexpr int SPELL_ALCHEMY_FUSION = 150003;
|
||||
constexpr int SPELL_GEM_FUSION = 150004;
|
||||
constexpr int SPELL_ESSENCE_FUSION = 150005;
|
||||
constexpr int SPELL_COLD_FUSION = 150006;
|
||||
constexpr int SPELL_FLAME_FUSION = 150007;
|
||||
constexpr int SPELL_ARCANE_FUSION = 150008;
|
||||
constexpr int SPELL_DARK_FUSION = 150009;
|
||||
constexpr int SPELL_EARTH_FUSION = 150010;
|
||||
constexpr int SPELL_ORE_FUSION_RANK_2 = 150011;
|
||||
constexpr int SPELL_CLOTH_FUSION_RANK_2 = 150012;
|
||||
constexpr int SPELL_LEATHER_FUSION_RANK_2 = 150013;
|
||||
constexpr int SPELL_ALCHEMY_FUSION_RANK_2 = 150014;
|
||||
constexpr int SPELL_GEM_FUSION_RANK_2 = 150015;
|
||||
constexpr int SPELL_ESSENCE_FUSION_RANK_2 = 150016;
|
||||
constexpr int SPELL_COLD_FUSION_RANK_2 = 150017;
|
||||
constexpr int SPELL_FLAME_FUSION_RANK_2 = 150018;
|
||||
constexpr int SPELL_ARCANE_FUSION_RANK_2 = 150019;
|
||||
constexpr int SPELL_DARK_FUSION_RANK_2 = 150020;
|
||||
constexpr int SPELL_EARTH_FUSION_RANK_2 = 150021;
|
||||
|
||||
// New dropping unique items for mythic plus
|
||||
constexpr int ANCIENT_DICE = 911000;
|
||||
constexpr int DARK_SPIKE = 911001;
|
||||
constexpr int DARK_SPIKE = 911001;
|
||||
constexpr int VEILSTONE = 911002;
|
||||
|
||||
// Item IDs for fused materials used in advancement crafting
|
||||
constexpr int FUSED_RARE_ORE = 911003;
|
||||
constexpr int FUSED_MYTHIC_ORE = 911004;
|
||||
constexpr int FUSED_RARE_CLOTH = 911005;
|
||||
constexpr int FUSED_MYTHIC_CLOTH = 911006;
|
||||
constexpr int FUSED_RARE_LEATHER = 911007;
|
||||
constexpr int FUSED_MYTHIC_LEATHER = 911008;
|
||||
constexpr int FUSED_RARE_ALCHEMY = 911009;
|
||||
constexpr int FUSED_MYTHIC_ALCHEMY = 911010;
|
||||
constexpr int FUSED_RARE_GEM = 911011;
|
||||
constexpr int FUSED_MYTHIC_GEM = 911012;
|
||||
constexpr int FUSED_RARE_ESSENCE = 911013;
|
||||
constexpr int FUSED_MYTHIC_ESSENCE = 911014;
|
||||
constexpr int FUSED_RARE_ICE_STONE = 911015;
|
||||
constexpr int FUSED_MYTHIC_ICE_STONE = 911016;
|
||||
constexpr int FUSED_RARE_INFERNAL_STONE = 911017;
|
||||
constexpr int FUSED_MYTHIC_INFERNAL_STONE = 911018;
|
||||
constexpr int FUSED_RARE_ARCANE_CRYSTAL = 911019;
|
||||
constexpr int FUSED_MYTHIC_ARCANE_CRYSTAL = 911020;
|
||||
constexpr int FUSED_RARE_DARK_CRYSTAL = 911021;
|
||||
constexpr int FUSED_MYTHIC_DARK_CRYSTAL = 911022;
|
||||
constexpr int FUSED_RARE_EARTH_STONE = 911023;
|
||||
constexpr int FUSED_MYTHIC_EARTH_STONE = 911024;
|
||||
|
||||
// Shadowy Remains
|
||||
constexpr int SHADOWY_REMAINS = 911100;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "Chat.h"
|
||||
#include "Group.h"
|
||||
#include "MpLogger.h"
|
||||
#include "Chat.h"
|
||||
|
||||
// Adds an entry for the group difficult to memory and updats database
|
||||
void MpDataStore::AddGroupData(Group *group, MpGroupData groupData) {
|
||||
@@ -55,9 +56,8 @@ void MpDataStore::AddGroupData(Group *group, MpGroupData groupData) {
|
||||
if(!player) {
|
||||
MpLogger::error("AddGroupData called with null player in instance");
|
||||
}
|
||||
ChatHandler(player->GetSession()).SendSysMessage("The group leader has changed the difficulty setting. You have been removed from the instance.");
|
||||
//("The group leader has changed the difficulty setting. You have been removed from the instance.");
|
||||
// player->GetSession()->SendNotification("The group leader has changed the difficulty setting. You have been removed from the instance.");
|
||||
|
||||
ChatHandler(player->GetSession()).SendNotification("The group leader has changed the difficulty setting. You have been removed from the instance.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,10 +79,7 @@ void MpDataStore::AddGroupData(Group *group, MpGroupData groupData) {
|
||||
MpLogger::error("AddGroupData called with null player in instance");
|
||||
}
|
||||
|
||||
if(player) {
|
||||
ChatHandler(player->GetSession()).SendSysMessage("The group leader has changed the difficulty setting. You have been removed from the instance.");
|
||||
// player->GetSession()->SendNotification("The group leader has changed the difficulty setting. You have been removed from the instance."); -- previous implementation for older core users
|
||||
}
|
||||
ChatHandler(player->GetSession()).SendNotification("The group leader has changed the difficulty setting. You have been removed from the instance.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +135,7 @@ void MpDataStore::RemoveGroupData(Group *group) {
|
||||
MpLogger::debug("RemoveGroupData for group {}", group->GetGUID().GetCounter());
|
||||
_groupData->erase(group->GetGUID());
|
||||
|
||||
CharacterDatabase.Execute("DELETE FROM group_difficulty WHERE guid = {}) ", group->GetGUID().GetCounter());
|
||||
CharacterDatabase.Execute("DELETE FROM group_difficulty WHERE guid = {}", group->GetGUID().GetCounter());
|
||||
}
|
||||
|
||||
// Adds PlayerData related to MythicRun Status to map
|
||||
@@ -176,7 +173,7 @@ void MpDataStore::RemoveInstanceData(uint32 mapId, uint32 instanceId) {
|
||||
|
||||
void MpDataStore::AddCreatureData(ObjectGuid guid, MpCreatureData creatureData) {
|
||||
// MpLogger::debug("AddInstanceCreatureData for creature {}", guid.GetCounter());
|
||||
_instanceCreatureData->emplace(guid, creatureData);
|
||||
_instanceCreatureData->insert_or_assign(guid, std::move(creatureData));
|
||||
}
|
||||
|
||||
MpCreatureData* MpDataStore::GetCreatureData(ObjectGuid guid) {
|
||||
@@ -223,45 +220,61 @@ MpScaleFactor MpDataStore::GetScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return _scaleFactors->at(key);
|
||||
}
|
||||
|
||||
// Just send back untouched bonus database will override.
|
||||
return MpScaleFactor{
|
||||
.dmgBonus = 3,
|
||||
.healthBonus = 2,
|
||||
.maxDamageBonus = 30
|
||||
.meleeBonus = 1.0f,
|
||||
.spellBonus = 1.0f,
|
||||
.healBonus = 1.0f,
|
||||
.healthBonus = 1.0f
|
||||
};
|
||||
}
|
||||
|
||||
int32 MpDataStore::GetHealthScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
float MpDataStore::GetHealthScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return GetScaleFactor(mapId, difficulty).healthBonus;
|
||||
}
|
||||
|
||||
int32 MpDataStore::GetDamageScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return GetScaleFactor(mapId, difficulty).dmgBonus;
|
||||
float MpDataStore::GetMeleeScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return GetScaleFactor(mapId, difficulty).meleeBonus;
|
||||
}
|
||||
|
||||
int32 MpDataStore::GetSpellScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
float MpDataStore::GetSpellScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return GetScaleFactor(mapId, difficulty).spellBonus;
|
||||
}
|
||||
|
||||
int32 MpDataStore::GetMaxDamageScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return GetScaleFactor(mapId, difficulty).maxDamageBonus;
|
||||
float MpDataStore::GetHealScaleFactor(int32 mapId, int32 difficulty) const {
|
||||
return GetScaleFactor(mapId, difficulty).healBonus;
|
||||
}
|
||||
|
||||
void MpDataStore::SetHealthScaleFactor(int32 mapId, int32 difficulty, int32 newValue) {
|
||||
uint32 MpDataStore::GetPlayerHealthAvg(uint32 level) const {
|
||||
if (_playerHealthAvg.contains(level)) {
|
||||
return _playerHealthAvg.at(level);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MpDataStore::SetHealScaleFactor(int32 mapId, int32 difficulty, float newValue) {
|
||||
auto key = GetScaleFactorKey(mapId, difficulty);
|
||||
if (_scaleFactors && _scaleFactors->contains(key)) {
|
||||
_scaleFactors->at(key).healBonus = newValue;
|
||||
}
|
||||
}
|
||||
|
||||
void MpDataStore::SetHealthScaleFactor(int32 mapId, int32 difficulty, float newValue) {
|
||||
auto key = GetScaleFactorKey(mapId, difficulty);
|
||||
if (_scaleFactors && _scaleFactors->contains(key)) {
|
||||
_scaleFactors->at(key).healthBonus = newValue;
|
||||
}
|
||||
}
|
||||
|
||||
void MpDataStore::SetDamageScaleFactor(int32 mapId, int32 difficulty, int32 newValue) {
|
||||
void MpDataStore::SetMeleeScaleFactor(int32 mapId, int32 difficulty, float newValue) {
|
||||
auto key = GetScaleFactorKey(mapId, difficulty);
|
||||
|
||||
if (_scaleFactors && _scaleFactors->contains(key)) {
|
||||
_scaleFactors->at(key).dmgBonus = newValue;
|
||||
_scaleFactors->at(key).meleeBonus = newValue;
|
||||
}
|
||||
}
|
||||
|
||||
void MpDataStore::SetSpellScaleFactor(int32 mapId, int32 difficulty, int32 newValue) {
|
||||
void MpDataStore::SetSpellScaleFactor(int32 mapId, int32 difficulty, float newValue) {
|
||||
auto key = GetScaleFactorKey(mapId, difficulty);
|
||||
if (_scaleFactors && _scaleFactors->contains(key)) {
|
||||
_scaleFactors->at(key).spellBonus = newValue;
|
||||
@@ -272,7 +285,7 @@ int32 MpDataStore::LoadScaleFactors() {
|
||||
_scaleFactors->clear();
|
||||
|
||||
// 0 1 2 3 4 5
|
||||
QueryResult result = WorldDatabase.Query("SELECT mapId, dmg_bonus, spell_bonus, hp_bonus, difficulty, max FROM mp_scale_factors");
|
||||
QueryResult result = WorldDatabase.Query("SELECT mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty FROM mp_scale_factors");
|
||||
if (!result) {
|
||||
MpLogger::error("Failed to load mythic scale factors from database");
|
||||
return 0;
|
||||
@@ -281,17 +294,17 @@ int32 MpDataStore::LoadScaleFactors() {
|
||||
do {
|
||||
Field* fields = result->Fetch();
|
||||
uint32 mapId = fields[0].Get<uint32>();
|
||||
int32 damageBonus = fields[1].Get<int32>();
|
||||
int32 spellBonus = fields[2].Get<int32>();
|
||||
int32 healthBonus = fields[3].Get<int32>();
|
||||
int32 difficulty = fields[4].Get<int32>();
|
||||
int32 maxDamageBonus = fields[5].Get<int32>();
|
||||
float meleeBonus = fields[1].Get<float>();
|
||||
float spellBonus = fields[2].Get<float>();
|
||||
float healBonus = fields[3].Get<float>();
|
||||
float healthBonus = fields[4].Get<float>();
|
||||
int32 difficulty = fields[5].Get<int32>();
|
||||
|
||||
MpScaleFactor scaleFactor = {
|
||||
.dmgBonus = damageBonus,
|
||||
.healthBonus = healthBonus,
|
||||
.meleeBonus = meleeBonus,
|
||||
.spellBonus = spellBonus,
|
||||
.maxDamageBonus = maxDamageBonus
|
||||
.healBonus = healBonus,
|
||||
.healthBonus = healthBonus
|
||||
};
|
||||
|
||||
_scaleFactors->emplace(GetScaleFactorKey(mapId, difficulty), scaleFactor);
|
||||
@@ -301,6 +314,45 @@ int32 MpDataStore::LoadScaleFactors() {
|
||||
return int32(_scaleFactors->size());
|
||||
}
|
||||
|
||||
void MpDataStore::LoadPlayerHealthAvg() {
|
||||
_playerHealthAvg.clear();
|
||||
|
||||
std::string_view query = R"(
|
||||
SELECT
|
||||
Level,
|
||||
ROUND(CASE
|
||||
WHEN Level BETWEEN 1 AND 30 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 1.5
|
||||
WHEN Level BETWEEN 31 AND 50 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 1.7
|
||||
WHEN Level BETWEEN 51 AND 59 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 2.0
|
||||
WHEN Level BETWEEN 60 AND 69 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 2.3
|
||||
WHEN Level BETWEEN 70 AND 79 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 2.6
|
||||
WHEN Level BETWEEN 80 AND 84 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 3.0
|
||||
WHEN Level >= 85 THEN ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20) * 4.0
|
||||
ELSE ((AVG(Stamina) - 20) * 10 + AVG(BaseHP) + 20)
|
||||
END) AS BaseHealth
|
||||
FROM
|
||||
player_class_stats
|
||||
GROUP BY
|
||||
Level
|
||||
ORDER BY
|
||||
Level;
|
||||
)";
|
||||
|
||||
if (QueryResult result = WorldDatabase.Query(query.data())) {
|
||||
do {
|
||||
Field* fields = result->Fetch();
|
||||
uint32 level = fields[0].Get<uint32>();
|
||||
uint32 baseHealth = fields[1].Get<uint32>();
|
||||
|
||||
_playerHealthAvg[level] = baseHealth;
|
||||
|
||||
} while (result->NextRow());
|
||||
|
||||
} else {
|
||||
MpLogger::error("Failed to load player health averages from database");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Database Calls below for storing player data.
|
||||
* @todo refactor to use prepared statements
|
||||
|
||||
@@ -143,17 +143,22 @@ struct MpGroupData
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Struct used for internal scaling of mythic+ difficulty. Fine-tuned in
|
||||
* database.
|
||||
*/
|
||||
struct MpScaleFactor
|
||||
{
|
||||
int32 dmgBonus;
|
||||
int32 healthBonus;
|
||||
int32 spellBonus;
|
||||
int32 maxDamageBonus;
|
||||
float meleeBonus;
|
||||
float spellBonus;
|
||||
float healBonus;
|
||||
float healthBonus;
|
||||
|
||||
std::string ToString() const {
|
||||
return "MpScaleFactor: { dmgBonus: " + std::to_string(dmgBonus) +
|
||||
return "MpScaleFactor: { meleeBonus: " + std::to_string(meleeBonus) +
|
||||
", healthBonus: " + std::to_string(healthBonus) +
|
||||
", spellBonus: " + std::to_string(spellBonus) + "}";
|
||||
", spellBonus: " + std::to_string(spellBonus) +
|
||||
", healBonus: " + std::to_string(healBonus) + "}";
|
||||
}
|
||||
|
||||
};
|
||||
@@ -211,6 +216,7 @@ struct MpCreatureData
|
||||
{
|
||||
Creature* creature;
|
||||
bool scaled;
|
||||
DeathState lastDeathState; // used to determine if a creature has been respawned
|
||||
|
||||
// AttackPower calculated based on settings
|
||||
uint32 NewAttackPower;
|
||||
@@ -220,6 +226,7 @@ struct MpCreatureData
|
||||
|
||||
// Original information about the creature that was altered.
|
||||
uint8 originalLevel;
|
||||
uint32 originalInstanceHealth; // Health the creature would have in instance before Mythic+ scaling
|
||||
|
||||
CreatureBaseStats const* originalStats;
|
||||
MpDifficulty difficulty;
|
||||
@@ -229,7 +236,7 @@ struct MpCreatureData
|
||||
std::vector<std::string> affixes;
|
||||
|
||||
MpCreatureData(Creature* creature)
|
||||
: creature(creature), scaled(false)
|
||||
: creature(creature), scaled(false), originalInstanceHealth(0)
|
||||
{
|
||||
if(creature) {
|
||||
originalLevel = creature->GetLevel();
|
||||
@@ -237,6 +244,9 @@ struct MpCreatureData
|
||||
originalLevel,
|
||||
creature->GetCreatureTemplate()->unit_class
|
||||
);
|
||||
|
||||
originalInstanceHealth = creature->GetMaxHealth();
|
||||
|
||||
}
|
||||
|
||||
auras.reserve(3);
|
||||
@@ -259,7 +269,7 @@ struct MpCreatureData
|
||||
|
||||
std::string origStatsStr;
|
||||
if(originalStats) {
|
||||
uint32 health = *originalStats->BaseHealth;
|
||||
uint32 health = originalInstanceHealth;
|
||||
uint32 mana = originalStats->BaseMana;
|
||||
uint32 armor = originalStats->BaseArmor;
|
||||
uint32 ap = originalStats->AttackPower;
|
||||
@@ -323,6 +333,10 @@ private:
|
||||
// use to mimic pattern normals scale to heroic (loaded at server start)
|
||||
std::unique_ptr<std::map<std::pair<int32,int32>,MpScaleFactor>> _scaleFactors; // {mapId,difficulty}
|
||||
|
||||
// Player mapping of level to average amount of health for that level, this is used for scaling against
|
||||
// percentages to more consistently scale damage from spells and healing from creatures.
|
||||
std::unordered_map<uint32, uint32> _playerHealthAvg; // level -> avg health
|
||||
|
||||
// Single creature multipliers used to scale creatures individually that may need tuned up or down.
|
||||
// std::unique_ptr<std::unordered_map<uint32, CreatureOverride>> _creatureOverrides;
|
||||
|
||||
@@ -377,15 +391,19 @@ public:
|
||||
std::vector<MpCreatureData*> GetUnscaledCreatures(uint32 mapId, uint32 instanceId);
|
||||
|
||||
// Scale factors are used to determine a base bonus for enemies base on the instance difficulty
|
||||
int32 GetHealthScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
int32 GetDamageScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
int32 GetMaxDamageScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
int32 GetSpellScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
float GetHealthScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
float GetMeleeScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
float GetSpellScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
float GetHealScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
MpScaleFactor GetScaleFactor(int32 mapId, int32 difficulty) const;
|
||||
|
||||
void SetDamageScaleFactor(int32 mapId, int32 difficulty, int32 value);
|
||||
void SetHealthScaleFactor(int32 mapId, int32 difficulty, int32 value);
|
||||
void SetSpellScaleFactor(int32 mapId, int32 difficulty, int32 value);
|
||||
void SetMeleeScaleFactor(int32 mapId, int32 difficulty, float value);
|
||||
void SetHealthScaleFactor(int32 mapId, int32 difficulty, float value);
|
||||
void SetSpellScaleFactor(int32 mapId, int32 difficulty, float value);
|
||||
void SetHealScaleFactor(int32 mapId, int32 difficulty, float value);
|
||||
|
||||
// Retrieves the average players hp pool for a player level
|
||||
uint32 GetPlayerHealthAvg(uint32 level) const;
|
||||
|
||||
// Individual Creature Scaling Multipliers
|
||||
// void AddCreatureOverride(uint32 entry, CreatureOverride* override);
|
||||
@@ -401,6 +419,9 @@ public:
|
||||
// Used at initial server load
|
||||
int32 LoadScaleFactors();
|
||||
|
||||
// Load the player health average from the database
|
||||
void LoadPlayerHealthAvg();
|
||||
|
||||
// Database API calls
|
||||
void DBUpdatePlayerInstanceData(ObjectGuid playerGuid, MpDifficulty difficulty, uint32 mapId = 0, uint32 instanceId = 0, uint32 deaths = 0);
|
||||
|
||||
|
||||
@@ -2,35 +2,74 @@
|
||||
#define MP_LOGGER_H
|
||||
|
||||
#include "Log.h"
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <boost/stacktrace.hpp>
|
||||
|
||||
class MpLogger
|
||||
{
|
||||
|
||||
public:
|
||||
template<typename... Args>
|
||||
static void debug(const char* fmt, Args&&... args) {
|
||||
LOG_DEBUG("module.MythicPlus", "[MythicPlus] DEBUG " + std::string(fmt), std::forward<Args>(args)...);
|
||||
try {
|
||||
LOG_DEBUG("module.MythicPlus", "[MythicPlus] DEBUG " + std::string(fmt), std::forward<Args>(args)...);
|
||||
} catch (const std::exception& e) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] DEBUG EXCEPTION: " + std::string(e.what()) +
|
||||
"\nStack trace: " + boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
|
||||
} catch (...) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] DEBUG NON-STANDARD EXCEPTION");
|
||||
}
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
static void error(const char* fmt, Args&&... args) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] ERROR " + std::string(fmt), std::forward<Args>(args)...);
|
||||
try {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] ERROR " + std::string(fmt), std::forward<Args>(args)...);
|
||||
} catch (const std::exception& e) {
|
||||
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] ERROR EXCEPTION: " + std::string(e.what()) +
|
||||
"\nStack trace: " + boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
|
||||
} catch (...) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] ERROR NON-STANDARD EXCEPTION");
|
||||
}
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
static void info(const char* fmt, Args&&... args) {
|
||||
LOG_INFO("module.MythicPlus", "[MythicPlus] INFO " + std::string(fmt), std::forward<Args>(args)...);
|
||||
try {
|
||||
LOG_INFO("module.MythicPlus", "[MythicPlus] INFO " + std::string(fmt), std::forward<Args>(args)...);
|
||||
} catch (const std::exception& e) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] INFO EXCEPTION: " + std::string(e.what()) +
|
||||
"\nStack trace: " + boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
|
||||
} catch (...) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] INFO NON-STANDARD EXCEPTION");
|
||||
}
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
static void warn(const char* fmt, Args&&... args) {
|
||||
LOG_WARN("module.MythicPlus", "[MythicPlus] WARN " + std::string(fmt), std::forward<Args>(args)...);
|
||||
try {
|
||||
LOG_WARN("module.MythicPlus", "[MythicPlus] WARN " + std::string(fmt), std::forward<Args>(args)...);
|
||||
} catch (const std::exception& e) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] WARN EXCEPTION: " + std::string(e.what()) +
|
||||
"\nStack trace: " + boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
|
||||
} catch (...) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] WARN NON-STANDARD EXCEPTION");
|
||||
}
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
static void trace(const char* fmt, Args&&... args) {
|
||||
LOG_TRACE("module.MythicPlus", "[MythicPlus] TRACE " + std::string(fmt), std::forward<Args>(args)...);
|
||||
try {
|
||||
LOG_TRACE("module.MythicPlus", "[MythicPlus] TRACE " + std::string(fmt), std::forward<Args>(args)...);
|
||||
} catch (const std::exception& e) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] TRACE EXCEPTION: " + std::string(e.what()) +
|
||||
"\nStack trace: " + boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
|
||||
} catch (...) {
|
||||
LOG_ERROR("module.MythicPlus", "[MythicPlus] TRACE NON-STANDARD EXCEPTION");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif // MP_LOGGER_H
|
||||
|
||||
@@ -143,9 +143,13 @@ bool MythicPlus::IsCreatureEligible(Creature* creature)
|
||||
#if defined(MOD_PRESENT_NPCBOTS)
|
||||
// Safely check if the creature is an NPC Bot
|
||||
if (creature->IsNPCBot()) {
|
||||
MpLogger::debug("Creature {} is an NPC Bot, do not scale", creature->GetName());
|
||||
return false;
|
||||
}
|
||||
|
||||
if(creature->GetBotOwner()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// Check for NPC-related flags (vendor, gossip, quest giver, trainer, etc.)
|
||||
@@ -181,6 +185,10 @@ void MythicPlus::AddCreatureForScaling(Creature* creature)
|
||||
void MythicPlus::AddScaledCreature(Creature* creature, MpInstanceData* instanceData)
|
||||
{
|
||||
MpCreatureData creatureData = MpCreatureData(creature);
|
||||
creatureData.SetScaled(true);
|
||||
creatureData.SetDifficulty(instanceData->difficulty);
|
||||
creatureData.lastDeathState = creature->getDeathState();
|
||||
|
||||
sMpDataStore->AddCreatureData(creature->GetGUID(), creatureData);
|
||||
|
||||
// allow small variance in level for non-boss creatures
|
||||
@@ -197,24 +205,7 @@ void MythicPlus::AddScaledCreature(Creature* creature, MpInstanceData* instanceD
|
||||
|
||||
// We know the creature is scaled and in the instance to fire the event.
|
||||
// sCreatureHooks->AddToInstance(creature);
|
||||
std::string name = creature->GetName();
|
||||
|
||||
// Assign random affix for now.
|
||||
if (roll_chance_i(50)) {
|
||||
uint32 irand = urand(0, 2);
|
||||
|
||||
if(irand == 0) {
|
||||
creature->AddAura(23341, creature);
|
||||
} else if(irand == 1) {
|
||||
creature->AddAura(34711, creature);
|
||||
|
||||
} else {
|
||||
creature->AddAura(774, creature);
|
||||
}
|
||||
}
|
||||
|
||||
creatureData.SetScaled(true);
|
||||
creatureData.SetDifficulty(instanceData->difficulty);
|
||||
|
||||
// MpLogger::debug("Scaled Creature {} Entry {} Id {} level from {} to {}",
|
||||
// creature->GetName(),
|
||||
@@ -237,7 +228,10 @@ void MythicPlus::ScaleAll(Player* player, MpInstanceData* instanceData)
|
||||
{
|
||||
std::vector<MpCreatureData*> creatures = sMpDataStore->GetInstanceCreatures(player->GetMapId(), player->GetInstanceId());
|
||||
for (MpCreatureData* creatureData : creatures) {
|
||||
ScaleCreature(creatureData->creature->GetLevel(), creatureData->creature, &instanceData->creature, instanceData->difficulty);
|
||||
// Only scale living creatures
|
||||
if (creatureData->creature && creatureData->creature->IsAlive()) {
|
||||
ScaleCreature(creatureData->creature->GetLevel(), creatureData->creature, &instanceData->creature, instanceData->difficulty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,16 +248,23 @@ void MythicPlus::RemoveCreature(Creature* creature)
|
||||
|
||||
void MythicPlus::ScaleCreature(uint8 level, Creature* creature, MpMultipliers* multipliers, MpDifficulty difficulty)
|
||||
{
|
||||
uint32 origLevel = creature->GetLevel();
|
||||
CreatureTemplate const* cInfo = creature->GetCreatureTemplate();
|
||||
uint32 mapId = creature->GetMapId();
|
||||
|
||||
// get the map difficulty from the map instance to see if it is a heroic or normal set instance
|
||||
InstanceMap *instanceMap = creature->GetMap()->ToInstanceMap();
|
||||
if (!instanceMap) {
|
||||
MpLogger::error("Invalid instance map ScaleCreature()");
|
||||
return;
|
||||
}
|
||||
|
||||
creature->SetLevel(level);
|
||||
CreatureBaseStats const* stats = sObjectMgr->GetCreatureBaseStats(
|
||||
level,
|
||||
cInfo->unit_class
|
||||
);
|
||||
|
||||
// Scale the creatures base health
|
||||
uint32 basehp = stats->BaseHealth[EXPANSION_WRATH_OF_THE_LICH_KING];
|
||||
uint32 health = CalculateNewHealth(creature, cInfo, mapId, difficulty, basehp, multipliers->health);
|
||||
|
||||
@@ -276,6 +277,7 @@ void MythicPlus::ScaleCreature(uint8 level, Creature* creature, MpMultipliers* m
|
||||
/**
|
||||
* @TODO: Figure out mana later for unit_types 2 and 8
|
||||
*/
|
||||
// Scale the creatures mana pool
|
||||
uint32 mana = uint32(std::ceil(stats->BaseMana * cInfo->ModMana));
|
||||
creature->SetCreateMana(mana);
|
||||
creature->SetMaxPower(POWER_MANA, mana);
|
||||
@@ -290,29 +292,31 @@ void MythicPlus::ScaleCreature(uint8 level, Creature* creature, MpMultipliers* m
|
||||
}
|
||||
|
||||
MpInstanceData *instanceData = sMpDataStore->GetInstanceData(creature->GetMapId(), creature->GetInstanceId());
|
||||
int32 meleeDamage = sMpDataStore->GetDamageScaleFactor(creature->GetMapId(), instanceData->difficulty);
|
||||
if(creature->IsDungeonBoss() || creature->GetEntry() == 23682) {
|
||||
// Give the boss an increase in casting speed.
|
||||
creature->SetFloatValue(UNIT_MOD_CAST_SPEED, 1.20f);
|
||||
|
||||
// Handle new melee/range scaling with simple formula (for simplicity range will just be 80% of melee bonus)
|
||||
float meleeMultiplier = sMpDataStore->GetMeleeScaleFactor(creature->GetMapId(), instanceData->difficulty);
|
||||
|
||||
// Since Heroic Scaling can get out of hand. Reduce the instance multiplier by way too much 10%
|
||||
if(instanceMap->IsHeroic() || instanceMap->Is25ManRaid()) {
|
||||
// if the enemy is a boss reduce it by less
|
||||
meleeMultiplier *= 0.9f;
|
||||
}
|
||||
|
||||
// Calculate the level difference
|
||||
float levelDifference = creature->GetLevel() - origLevel;
|
||||
// Scale up the attack power based on the instance set in the database difficulty table.
|
||||
uint32 ap = std::ceil(stats->AttackPower * meleeMultiplier);
|
||||
uint32 rangeAp = std::ceil(stats->RangedAttackPower * meleeMultiplier * 0.4f);
|
||||
|
||||
// New formula with adjusted divisor for smoother scaling
|
||||
float scalingFactor;
|
||||
|
||||
uint32 ap = uint32(sMythicPlus->meleeAttackPowerStart - sMythicPlus->meleeAttackPowerDampener);
|
||||
uint32 rangeAp = irand(215, 357);
|
||||
|
||||
scalingFactor = CalculateScaling(levelDifference, meleeDamage);
|
||||
ap = uint32(stats->AttackPower * scalingFactor);
|
||||
rangeAp = uint32(rangeAp * scalingFactor);
|
||||
// Additionally need to add in a decrease in attack power for normal non elite enemies
|
||||
if (creature->GetCreatureTemplate()->rank == CREATURE_ELITE_NORMAL) {
|
||||
// Reduced scaling for elite/boss spells to prevent them from hitting too hard
|
||||
ap *= normalEnemyReducer;
|
||||
rangeAp *= normalEnemyReducer;
|
||||
}
|
||||
|
||||
MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creature->GetGUID());
|
||||
if(creatureData) {
|
||||
creatureData->NewAttackPower = ap;
|
||||
creatureData->AttackPowerScaleMultiplier = scalingFactor;
|
||||
creatureData->AttackPowerScaleMultiplier = meleeMultiplier;
|
||||
}
|
||||
|
||||
// Set scaled attack power
|
||||
@@ -321,7 +325,10 @@ void MythicPlus::ScaleCreature(uint8 level, Creature* creature, MpMultipliers* m
|
||||
|
||||
// set the base weapon damage
|
||||
creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, stats->BaseDamage[EXPANSION_WRATH_OF_THE_LICH_KING], 0);
|
||||
creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, stats->BaseDamage[EXPANSION_WRATH_OF_THE_LICH_KING], 0);
|
||||
creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, stats->BaseDamage[EXPANSION_WRATH_OF_THE_LICH_KING] * 1.5f, 0);
|
||||
|
||||
creature->SetBaseWeaponDamage(RANGED_ATTACK, MINDAMAGE, stats->BaseDamage[EXPANSION_WRATH_OF_THE_LICH_KING] * 0.5f, 0);
|
||||
creature->SetBaseWeaponDamage(RANGED_ATTACK, MAXDAMAGE, stats->BaseDamage[EXPANSION_WRATH_OF_THE_LICH_KING] * 0.8f, 0);
|
||||
|
||||
// Update all stats to apply the new damage values
|
||||
creature->UpdateAllStats();
|
||||
@@ -330,154 +337,311 @@ void MythicPlus::ScaleCreature(uint8 level, Creature* creature, MpMultipliers* m
|
||||
uint32 armor = uint32(std::ceil(stats->BaseArmor * multipliers->armor * cInfo->ModArmor));
|
||||
creature->SetArmor(armor);
|
||||
|
||||
float updatedAp = creature->GetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE);
|
||||
float updatedRangeAp = creature->GetModifierValue(UNIT_MOD_ATTACK_POWER_RANGED, BASE_VALUE);
|
||||
|
||||
MpLogger::debug("Updated Attack Powers: {} {}", updatedAp, updatedRangeAp);
|
||||
}
|
||||
|
||||
int32 MythicPlus::ScaleDamageSpell(SpellInfo const * spellInfo, uint32 damage, MpCreatureData* creatureData, Creature* creature, Unit* target, float damageMultiplier)
|
||||
{
|
||||
int32 MythicPlus::CalculateSpellDamage(uint32 baseDamage, int originalLevel, int targetLevel) {
|
||||
float origHpPool = sMpDataStore->GetPlayerHealthAvg(originalLevel);
|
||||
float targetHpPool = sMpDataStore->GetPlayerHealthAvg(targetLevel);
|
||||
|
||||
// Using a % of expected damage of the average player pool creates a better consistent experience when scaling spells
|
||||
float percentDamage = baseDamage / origHpPool;
|
||||
|
||||
// If the percentage damage is less than 2% cap it at 2% to prevent spells from being too powerful
|
||||
if(percentDamage < 0.02f) {
|
||||
percentDamage = 0.02f;
|
||||
}
|
||||
|
||||
MpLogger::debug("OrigHpPool: {} TargetHpPool: {} Percent Damage: {}", origHpPool, targetHpPool, percentDamage);
|
||||
MpLogger::debug("Original Damage: {} Scaled Damage: {}", baseDamage, static_cast<int32>(std::ceil(percentDamage * targetHpPool)));
|
||||
int32 scaledDamage = static_cast<int32>(std::ceil(percentDamage * targetHpPool));
|
||||
|
||||
return scaledDamage;
|
||||
}
|
||||
|
||||
int32 MythicPlus::CalculateHealScaling(uint32 baseHeal, uint32 originalTargetHealth, uint32 targetMaxHealth) {
|
||||
if (originalTargetHealth == 0) {
|
||||
MpLogger::debug("Original target health is 0, returning base heal: {}", baseHeal);
|
||||
return baseHeal;
|
||||
}
|
||||
|
||||
// Calculate the percentage of the original heal relative to original creature health
|
||||
float percentHeal = static_cast<float>(baseHeal) / static_cast<float>(originalTargetHealth);
|
||||
|
||||
if (percentHeal < 0.01f) {
|
||||
percentHeal = 0.01f;
|
||||
}
|
||||
|
||||
// Cap the percentage at 100% aka full heal of current max health of caster
|
||||
if (percentHeal > 1.0f) {
|
||||
percentHeal = 1.0f;
|
||||
}
|
||||
|
||||
// Scale the heal based on the current creature's max health
|
||||
int32 scaledHeal = static_cast<int32>(std::ceil(percentHeal * targetMaxHealth));
|
||||
|
||||
MpLogger::debug("HEALING: >>> OrigHealth: {} CurrentMaxHealth: {} Percent Heal: {} Original Heal: {} Scaled Heal: {}",
|
||||
originalTargetHealth, targetMaxHealth, percentHeal, baseHeal, scaledHeal);
|
||||
|
||||
return scaledHeal;
|
||||
}
|
||||
|
||||
int32 MythicPlus::ScaleDamageSpell(SpellInfo const * spellInfo, uint32 damage, MpCreatureData* creatureData, Creature* creature, Unit* /* target */, float damageMultiplier)
|
||||
{
|
||||
if (!spellInfo) {
|
||||
MpLogger::error("Invalid spell info ScaleDamageSpell()");
|
||||
return damage;
|
||||
}
|
||||
|
||||
if(!creatureData) {
|
||||
// this is probably a summoned object or totem so going to cheat here and just use the flat modifer
|
||||
|
||||
// Handle totems that do some nasty things to us Slave Pens anyone
|
||||
if(creature->IsTotem()) {
|
||||
Unit* owner = creature->GetOwner();
|
||||
if(owner) {
|
||||
float lvlDmgBonus = float(85 - owner->GetLevel() / 10.0f);
|
||||
return int32(damage * lvlDmgBonus * damageMultiplier);
|
||||
} else {
|
||||
return damage * damageMultiplier;
|
||||
}
|
||||
}
|
||||
|
||||
MpLogger::error("Invalid creature data ScaleDamageSpell()");
|
||||
return damage * damageMultiplier;
|
||||
}
|
||||
|
||||
if(!creature) {
|
||||
MpLogger::error("Invalid creature ScaleDamageSpell()");
|
||||
return damage * damageMultiplier;
|
||||
}
|
||||
|
||||
int32 originalLevel = creatureData->originalLevel;
|
||||
|
||||
MpInstanceData *instanceData = sMpDataStore->GetInstanceData(creature->GetMapId(), creature->GetInstanceId());
|
||||
int32 spellBonus = sMpDataStore->GetSpellScaleFactor(creature->GetMapId(), instanceData->difficulty);
|
||||
// if((creature->IsDungeonBoss() && creature->isElite()) || creature->GetEntry() == 23682) {
|
||||
// spellBonus *= 1.15;
|
||||
// }
|
||||
|
||||
// Calculate the level difference
|
||||
float levelDifference = creature->GetLevel() - originalLevel;
|
||||
|
||||
// New formula with adjusted divisor for smoother scaling
|
||||
// float scalingFactor = 1 + (std::log2(levelDifference + 1) * (float(spellBonus)));
|
||||
|
||||
float scalingFactor = CalculateScaling(levelDifference, spellBonus);
|
||||
|
||||
// float scalingFactor = pow(float((creature->GetLevel() - originalLevel) / 10.0f ), float(spellBonus) / 5.0f);
|
||||
// MpLogger::debug("Creature {} original level: {} New Level{} and Scaling level {}", creature->GetName(), originalLevel, creature->GetLevel(), scalingFactor);
|
||||
|
||||
int32 totalDamage = 0;
|
||||
auto effects = spellInfo->GetEffects();
|
||||
for (uint8 i = 0; i < effects.size(); ++i)
|
||||
{
|
||||
SpellEffectInfo effect = effects[i];
|
||||
if(effect.IsAura()) {
|
||||
switch(spellInfo->Effects[i].ApplyAuraName) {
|
||||
case SPELL_AURA_PERIODIC_DAMAGE:
|
||||
case SPELL_AURA_PERIODIC_DAMAGE_PERCENT:
|
||||
case SPELL_AURA_POWER_BURN:
|
||||
case SPELL_AURA_PERIODIC_LEECH:
|
||||
case SPELL_AURA_PERIODIC_TRIGGER_SPELL:
|
||||
case SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE:
|
||||
case SPELL_AURA_PERIODIC_DUMMY:
|
||||
case SPELL_AURA_DUMMY:
|
||||
totalDamage += effect.CalcValue(creature, nullptr, target);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch(effect.Effect)
|
||||
{
|
||||
case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE:
|
||||
case SPELL_EFFECT_WEAPON_DAMAGE:
|
||||
case SPELL_EFFECT_NORMALIZED_WEAPON_DMG:
|
||||
return damage;
|
||||
|
||||
case SPELL_EFFECT_SCHOOL_DAMAGE:
|
||||
case SPELL_EFFECT_ENVIRONMENTAL_DAMAGE:
|
||||
case SPELL_EFFECT_POWER_BURN:
|
||||
case SPELL_EFFECT_HEALTH_LEECH:
|
||||
case SPELL_EFFECT_TRIGGER_SPELL:
|
||||
case SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE:
|
||||
case SPELL_EFFECT_DUMMY:
|
||||
totalDamage += effect.CalcValue(creature, nullptr, target);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(totalDamage == 0) {
|
||||
if (!instanceData) {
|
||||
MpLogger::debug("No instance data found for spell scaling, using original damage");
|
||||
return damage;
|
||||
}
|
||||
|
||||
MpLogger::debug(" >>> Spell {} damage scaled from for spell New Damage: {} using: scaling Factor: {} and damage Multi: {}",spellInfo->SpellName[0], totalDamage, scalingFactor, damageMultiplier);
|
||||
float scaleFactor = sMpDataStore->GetSpellScaleFactor(creature->GetMapId(), instanceData->difficulty);
|
||||
|
||||
// Apply scaling factor and the set multiplier from the instance data
|
||||
totalDamage = int32(totalDamage * scalingFactor * damageMultiplier);
|
||||
MpLogger::debug("DAMAGE SPELL: >> ScaleFactor: {} DamageMultiplier: {}", scaleFactor, damageMultiplier);
|
||||
|
||||
// MpLogger::debug("Spell {} damage scaled from for spell New Damage: {} using: scaling Factor: {} and damage Multi: {}",spellInfo->SpellName[0], totalDamage, scalingFactor, damageMultiplier);
|
||||
return totalDamage;
|
||||
// calculate the global modifier x instance modifier
|
||||
float totalModifier = damageMultiplier * scaleFactor;
|
||||
|
||||
// If for some reason there is not a creature, just use the global modifier x instance modifier
|
||||
if(!creature) {
|
||||
MpLogger::error("Invalid creature ScaleDamageSpell()");
|
||||
return damage * totalModifier;
|
||||
}
|
||||
|
||||
// Use the already calculated damage as the base for scaling
|
||||
int32 newDamage = damage;
|
||||
|
||||
// Handle Summoned unit modifiers as
|
||||
if(!creatureData) {
|
||||
|
||||
// handle if bot pets if NPCBot is installed.
|
||||
#ifdef NPCBOT
|
||||
if(creature->IsNPCBotOrPet()) {
|
||||
return damage;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Handle totems and summons - scale based on owner's details because they will not have creature data
|
||||
if(creature->IsTotem() || creature->IsSummon()) {
|
||||
|
||||
Unit* owner = creature->GetOwner();
|
||||
if(owner && owner->IsCreature()) {
|
||||
Creature* ownerCreature = owner->ToCreature();
|
||||
|
||||
// Look up the owner creature's original level from MpDataStore
|
||||
MpCreatureData* ownerCreatureData = sMpDataStore->GetCreatureData(ownerCreature->GetGUID());
|
||||
if (ownerCreatureData) {
|
||||
MpLogger::debug("DAMAGE SPELL: >> Creature is a totem or summon Creature Name {} and owner {} owner original level {} owner level {}", creature->GetName(), ownerCreature->GetName(), ownerCreatureData->originalLevel, ownerCreature->GetLevel());
|
||||
int32 ownerOriginalLevel = ownerCreatureData->originalLevel;
|
||||
|
||||
if (ownerCreature->GetCreatureTemplate()->rank == CREATURE_ELITE_NORMAL) {
|
||||
totalModifier = totalModifier * normalEnemyReducer;
|
||||
}
|
||||
newDamage = CalculateSpellDamage(damage, ownerOriginalLevel, ownerCreature->GetLevel());
|
||||
} else {
|
||||
// Fallback if no creature data found - use current level
|
||||
if(ownerCreature->GetCreatureTemplate()->rank == CREATURE_ELITE_NORMAL) {
|
||||
totalModifier = totalModifier * normalEnemyReducer;
|
||||
}
|
||||
newDamage = CalculateSpellDamage(damage, ownerCreature->GetLevel(), ownerCreature->GetLevel());
|
||||
MpLogger::debug("No creature data found for owner {}, using current level for scaling", ownerCreature->GetGUID().ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
MpLogger::error("Invalid creature data ScaleDamageSpell()");
|
||||
return damage * totalModifier;
|
||||
}
|
||||
} else {
|
||||
newDamage = CalculateSpellDamage(damage, creatureData->originalLevel, creature->GetLevel());
|
||||
if (creature->GetCreatureTemplate()->rank == CREATURE_ELITE_NORMAL) {
|
||||
// Reduced scaling for elite/boss spells to prevent them from hitting too hard
|
||||
totalModifier = totalModifier * 0.85f;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the additional damage from scaling (scaled damage - original damage)
|
||||
int32 additionalDamage = newDamage - damage;
|
||||
|
||||
// Apply the scaling modifier to the additional damage only
|
||||
int32 scaledAdditionalDamage = additionalDamage * totalModifier;
|
||||
|
||||
// Use the diminishing return values from the configuration
|
||||
uint32 threshold = sMythicPlus->diminishingThresholds[instanceData->difficulty];
|
||||
float diminishingExponent = sMythicPlus->diminishingExponent;
|
||||
|
||||
// Apply diminishing returns only to the additional scaled damage if it exceeds threshold
|
||||
if (static_cast<uint32>(scaledAdditionalDamage) > threshold) {
|
||||
// Calculate the diminished excess additional damage
|
||||
float excess = scaledAdditionalDamage - threshold;
|
||||
float diminishedExcess = pow(excess, diminishingExponent);
|
||||
scaledAdditionalDamage = threshold + diminishedExcess;
|
||||
|
||||
MpLogger::debug("DAMAGE SPELL: >> Above Diminishing Threshold for Spell {} - Original: {}, Additional: {}, Diminished Additional: {}, Final: {}",
|
||||
spellInfo->SpellName[0], damage, additionalDamage * totalModifier, scaledAdditionalDamage, damage + scaledAdditionalDamage);
|
||||
} else {
|
||||
MpLogger::debug("DAMAGE SPELL: >> Below Diminishing Threshold for Spell {} - Original: {}, Additional: {}, Final: {}",
|
||||
spellInfo->SpellName[0], damage, scaledAdditionalDamage, damage + scaledAdditionalDamage);
|
||||
}
|
||||
|
||||
// If this is a heroic instance the additional spell damage should be increased by 50%
|
||||
InstanceMap* instanceMap = creature->GetMap()->ToInstanceMap();
|
||||
if (instanceMap && (instanceMap->IsHeroic() || instanceMap->Is25ManRaid())) {
|
||||
scaledAdditionalDamage = scaledAdditionalDamage * 1.5f;
|
||||
}
|
||||
|
||||
// Return original damage + scaled additional damage (with potential diminishing returns)
|
||||
return damage + scaledAdditionalDamage;
|
||||
}
|
||||
|
||||
int32 MythicPlus::ScaleHealSpell(SpellInfo const * spellInfo, uint32 heal, MpCreatureData* creatureData, Creature* creature, Creature* /* target */, float healMultiplier)
|
||||
int32 MythicPlus::ScaleHealSpell(SpellInfo const * spellInfo, uint32 heal, MpCreatureData* creatureData, Creature* creature, Creature* target, float healMultiplier)
|
||||
{
|
||||
|
||||
if (!spellInfo) {
|
||||
MpLogger::error("Invalid spell info ScaleHealSpell()");
|
||||
return 0;
|
||||
return heal;
|
||||
}
|
||||
|
||||
if(!creatureData) {
|
||||
MpLogger::error("Invalid creature data ScaleHealSpell()");
|
||||
return 0;
|
||||
MpInstanceData *instanceData = sMpDataStore->GetInstanceData(creature->GetMapId(), creature->GetInstanceId());
|
||||
if (!instanceData) {
|
||||
MpLogger::debug("No instance data found for heal scaling, using original heal");
|
||||
return heal;
|
||||
}
|
||||
|
||||
float scaleFactor = sMpDataStore->GetHealScaleFactor(creature->GetMapId(), instanceData->difficulty);
|
||||
|
||||
MpLogger::debug("HEALING: >>> HealScaleFactor: {} HealMultiplier: {}", scaleFactor, healMultiplier);
|
||||
|
||||
// calculate the global modifier x instance modifier
|
||||
float totalModifier = healMultiplier * scaleFactor;
|
||||
|
||||
// If for some reason there is not a creature, just use the global modifier x instance modifier
|
||||
if(!creature) {
|
||||
MpLogger::error("Invalid creature ScaleHealSpell()");
|
||||
return 0;
|
||||
return heal * totalModifier;
|
||||
}
|
||||
|
||||
auto effects = spellInfo->GetEffects();
|
||||
for (uint8 i = 0; i < effects.size(); ++i)
|
||||
{
|
||||
MpLogger::debug(" >>> Spell {} effect {} value: {} by creature {}", spellInfo->SpellName[i], effects[i].Effect, heal, creature->GetName());
|
||||
// Use the already calculated heal as the base for scaling
|
||||
int32 newHeal = heal;
|
||||
|
||||
// Handle Summoned unit modifiers
|
||||
if(!creatureData) {
|
||||
|
||||
// handle if bot pets if NPCBot is installed.
|
||||
#ifdef NPCBOT
|
||||
if(creature->IsNPCBotOrPet()) {
|
||||
return heal;
|
||||
}
|
||||
#endif
|
||||
|
||||
MpLogger::debug("HEALING: >>> Scaling heal to target: {} with spell: {}", target->GetName(), spellInfo->SpellName[0]);
|
||||
|
||||
// Handle totems and summons - scale based on owner's details because they will not have creature data
|
||||
if(creature->IsTotem() || creature->IsSummon()) {
|
||||
Unit* owner = creature->GetOwner();
|
||||
if(owner && owner->IsCreature()) {
|
||||
Creature* ownerCreature = owner->ToCreature();
|
||||
|
||||
// Look up the owner creature's original level from MpDataStore
|
||||
MpCreatureData* ownerCreatureData = sMpDataStore->GetCreatureData(ownerCreature->GetGUID());
|
||||
if (ownerCreatureData) {
|
||||
if (ownerCreature->GetCreatureTemplate()->rank == CREATURE_ELITE_NORMAL) {
|
||||
totalModifier = totalModifier * normalEnemyReducer; // Less reduction for heals than damage
|
||||
}
|
||||
// Scale heal based on target's health, not caster's health
|
||||
if (target) {
|
||||
MpCreatureData* targetCreatureData = sMpDataStore->GetCreatureData(target->GetGUID());
|
||||
uint32 targetOriginalHealth = targetCreatureData && targetCreatureData->originalInstanceHealth > 0 ?
|
||||
targetCreatureData->originalInstanceHealth : target->GetMaxHealth();
|
||||
MpLogger::debug("HEALING: >>> Scaling heal to target: {} Original Instance Health: {} New Health: {}", target->GetName(), targetOriginalHealth, target->GetMaxHealth());
|
||||
newHeal = CalculateHealScaling(heal, targetOriginalHealth, target->GetMaxHealth());
|
||||
} else {
|
||||
newHeal = heal;
|
||||
}
|
||||
} else {
|
||||
// Fallback if no creature data found - use current level
|
||||
if(ownerCreature->GetCreatureTemplate()->rank == CREATURE_ELITE_NORMAL) {
|
||||
totalModifier = totalModifier * normalEnemyReducer; // Less reduction for heals than damage
|
||||
}
|
||||
// Scale heal based on target's health, not caster's health
|
||||
if (target) {
|
||||
MpCreatureData* targetCreatureData = sMpDataStore->GetCreatureData(target->GetGUID());
|
||||
uint32 targetOriginalHealth = targetCreatureData && targetCreatureData->originalInstanceHealth > 0 ?
|
||||
targetCreatureData->originalInstanceHealth : target->GetMaxHealth();
|
||||
|
||||
MpLogger::debug("HEALING: >>> Scaling heal to target: {} Original Instance Health: {} New Health: {}", target->GetName(), targetOriginalHealth, target->GetMaxHealth());
|
||||
|
||||
newHeal = CalculateHealScaling(heal, targetOriginalHealth, target->GetMaxHealth());
|
||||
} else {
|
||||
newHeal = heal;
|
||||
}
|
||||
MpLogger::debug("No creature data found for owner {}, using current level for scaling", ownerCreature->GetGUID().ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
MpLogger::error("Invalid creature data ScaleHealSpell()");
|
||||
return heal * totalModifier;
|
||||
}
|
||||
} else {
|
||||
// Scale heal based on target's health, not caster's health
|
||||
if (target) {
|
||||
// Get target's original instance health for scaling comparison
|
||||
MpCreatureData* targetCreatureData = sMpDataStore->GetCreatureData(target->GetGUID());
|
||||
uint32 targetOriginalHealth = targetCreatureData && targetCreatureData->originalInstanceHealth > 0 ?
|
||||
targetCreatureData->originalInstanceHealth : target->GetMaxHealth();
|
||||
MpLogger::debug("HEALING: >>> Scaling heal to target: {} Original Instance Health: {} New Health: {}", target->GetName(), targetOriginalHealth, target->GetMaxHealth());
|
||||
newHeal = CalculateHealScaling(heal, targetOriginalHealth, target->GetMaxHealth());
|
||||
} else {
|
||||
// No target available, use original heal
|
||||
newHeal = heal;
|
||||
}
|
||||
}
|
||||
|
||||
int32 originalLevel = creatureData->originalLevel;
|
||||
// Calculate the additional heal from scaling (scaled heal - original heal)
|
||||
int32 additionalHeal = newHeal - heal;
|
||||
|
||||
float levelDifference = creature->GetLevel() - originalLevel;
|
||||
float spellBonus = sMpDataStore->GetSpellScaleFactor(creature->GetMapId(), creature->GetInstanceId());
|
||||
// Apply the scaling modifier to the additional heal only
|
||||
int32 scaledAdditionalHeal = additionalHeal * totalModifier;
|
||||
|
||||
float scalingFactor = CalculateScaling(levelDifference, spellBonus, 2.5f);
|
||||
// Use the diminishing return values from the configuration (same as damage)
|
||||
uint32 threshold = sMythicPlus->diminishingThresholds[instanceData->difficulty];
|
||||
float diminishingExponent = sMythicPlus->diminishingExponent;
|
||||
|
||||
MpLogger::debug(" >>> Spell {} healed scaled from for spell New Heal: {} using: scaling Factor: {} and damage Multi: {}",spellInfo->SpellName[0], heal, scalingFactor, healMultiplier);
|
||||
return int32(heal * scalingFactor * healMultiplier);
|
||||
// Apply diminishing returns only to the additional scaled heal if it exceeds threshold * 2 since enemies have much more health.
|
||||
if (scaledAdditionalHeal > threshold * 2.0f) {
|
||||
// Calculate the diminished excess additional heal
|
||||
float excess = scaledAdditionalHeal - threshold;
|
||||
float diminishedExcess = pow(excess, diminishingExponent * 0.95f); // slightly reduce the diminishing returns for heals
|
||||
scaledAdditionalHeal = threshold + diminishedExcess;
|
||||
|
||||
MpLogger::debug("HEALING: >>> Above Diminishing Threshold for Heal Spell {} - Original: {}, Additional: {}, Diminished Additional: {}, Final: {}",
|
||||
spellInfo->SpellName[0], heal, additionalHeal * totalModifier, scaledAdditionalHeal, heal + scaledAdditionalHeal);
|
||||
} else {
|
||||
MpLogger::debug("HEALING: >>> Below Diminishing Threshold for Heal Spell {} - Original: {}, Additional: {}, Final: {}",
|
||||
spellInfo->SpellName[0], heal, scaledAdditionalHeal, heal + scaledAdditionalHeal);
|
||||
}
|
||||
|
||||
// If this is a heroic instance the additional heal be only slightly increased
|
||||
InstanceMap* instanceMap = creature->GetMap()->ToInstanceMap();
|
||||
if (instanceMap && (instanceMap->IsHeroic() || instanceMap->Is25ManRaid())) {
|
||||
scaledAdditionalHeal = scaledAdditionalHeal * 1.15f;
|
||||
}
|
||||
|
||||
// Return original heal + scaled additional heal (with potential diminishing returns)
|
||||
return heal + scaledAdditionalHeal;
|
||||
}
|
||||
|
||||
void MythicPlus::GroupReset(Group* /*group*/, Map* /* map */) {
|
||||
// Stubbed out for later implementation
|
||||
}
|
||||
|
||||
|
||||
bool MythicPlus::IsFinalBoss(Creature* creature) {
|
||||
std::array<uint32, 128> finalBosses = {
|
||||
// --- WoW Classic Dungeons ---
|
||||
@@ -638,46 +802,87 @@ float GetTypeHealthModifier(int32 Rank)
|
||||
// This takes the orignal health and scales flat based on the factor then applies the configuration modifier from the conf file
|
||||
uint32 CalculateNewHealth(Creature* creature, CreatureTemplate const* cInfo, uint32 mapId, MpDifficulty difficulty, uint32 origHealth, float confHPMod)
|
||||
{
|
||||
//
|
||||
int32 rank = 0;
|
||||
if(cInfo && cInfo->rank > 0) {
|
||||
rank = cInfo->rank;
|
||||
}
|
||||
|
||||
// These Factors that increase or decrease health based on different settings applied to the creature
|
||||
|
||||
// Health Variation is used to create some random element to HP so not all creatures of the same level
|
||||
// have the same HP for more variety.
|
||||
float healthVariation;
|
||||
|
||||
// if(creature->IsPet() || creature->IsSummon() || creature->IsTotem()) {
|
||||
// return origHealth;
|
||||
// }
|
||||
|
||||
// This is the fine grained hpScaleFactor set for the instance (and/or) creature overrides in the database.
|
||||
int32 hpScaleFactor = sMpDataStore->GetHealthScaleFactor(mapId, difficulty);
|
||||
|
||||
// Add some variance to the healthpool so enemies are not all the same
|
||||
if(creature->IsDungeonBoss() || creature->GetEntry() == HEADLESS_HORSEMAN || creature->isWorldBoss()) { // Is a boss of some kind
|
||||
healthVariation = frand(1.1f, 1.2f);
|
||||
} else if(creature->isElite() || cInfo->rank == CREATURE_ELITE_RARE) { // Is Elite Mob
|
||||
healthVariation = frand(1.0f, 1.10f);
|
||||
hpScaleFactor *= 0.90;
|
||||
} else if(creature->IsSummon() || creature->IsPet() || creature->IsTotem()) { // Is a pet or summon
|
||||
if(creature->IsDungeonBoss() || creature->isWorldBoss() || creature->isElite() || cInfo->rank == CREATURE_ELITE_RARE) {
|
||||
healthVariation = frand(1.0f, 1.15f);
|
||||
} else { // This addresses Normals and other trash from getting to big a HP bonus
|
||||
healthVariation = frand(1.0f, 1.05f);
|
||||
hpScaleFactor *= 0.65;
|
||||
} else {
|
||||
hpScaleFactor *= 0.50;
|
||||
}
|
||||
|
||||
// Add in special overrides here as necessary:
|
||||
if(creature->GetEntry() == HEADLESS_HORSEMAN) {
|
||||
healthVariation = frand(1.0f, 1.1f);
|
||||
hpScaleFactor *= 0.55;
|
||||
}
|
||||
|
||||
float unitTypeMod = GetTypeHealthModifier(rank);
|
||||
uint32 basehp = uint32(std::ceil(origHealth * unitTypeMod * healthVariation));
|
||||
uint32 basehp;
|
||||
|
||||
// Only apply unitTypeMod for non-normal enemies
|
||||
if (rank != CREATURE_ELITE_NORMAL) {
|
||||
basehp = uint32(std::ceil(origHealth * healthVariation * unitTypeMod));
|
||||
} else {
|
||||
basehp = uint32(std::ceil(origHealth * healthVariation));
|
||||
}
|
||||
|
||||
// if it is a heroic instance give the enemy an additional 20% boost
|
||||
InstanceMap* instanceMap = creature->GetMap()->ToInstanceMap();
|
||||
if (instanceMap && instanceMap->IsRaidOrHeroicDungeon()) {
|
||||
basehp *= 1.25f;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Calculating the final creature health encompasses all the potential modifiers
|
||||
* CreatureTemplate.HealthModifier (ModHealth) - Creatures that are capable of being in a Heroic instance get a boost here
|
||||
* even though they are the same. In this case we allow
|
||||
*
|
||||
* hpScaleFactor: allows to tweak the bonus modifier more directly at a creature or instance level, since
|
||||
* you can not override it in cInfo directly as it is loaded statically from database
|
||||
*
|
||||
* confHPMod: is from the mythic settings directly.
|
||||
*/
|
||||
if(cInfo->ModHealth > 0.0f) {
|
||||
return uint32(basehp * (cInfo->ModHealth + hpScaleFactor) * confHPMod);
|
||||
|
||||
} else {
|
||||
return uint32(basehp * (hpScaleFactor) * confHPMod);
|
||||
return uint32(basehp * hpScaleFactor * confHPMod);
|
||||
}
|
||||
}
|
||||
|
||||
// Calculates a logarithmic growth curve using scaling factor of percentages increase 50 = 1.5, 100 = 2.0,... this allows for fine grain tuning per instance.
|
||||
float CalculateScaling(int levelDifference, float scaleFactor, float constant, float growthFactor) {
|
||||
float scaling = constant * std::pow(2.0f, levelDifference / growthFactor) * (1 + (scaleFactor / 100.0f));
|
||||
// Calculates a balanced growth curve that provides good scaling across all level ranges
|
||||
float CalculateScaling(int levelDifference, float scaleFactor, float constant, float /*growthFactor*/) {
|
||||
float levelMultiplier;
|
||||
|
||||
if (levelDifference <= 0) {
|
||||
// High-level creatures need a minimum boost
|
||||
levelMultiplier = 1.5f; // Minimum 50% boost for near-level or higher creatures
|
||||
} else if (levelDifference <= 10) {
|
||||
// Moderate scaling for small level differences
|
||||
levelMultiplier = 1.5f + (levelDifference * 0.2f); // 1.5x to 3.5x
|
||||
} else if (levelDifference <= 30) {
|
||||
// Higher scaling for medium level differences
|
||||
levelMultiplier = 3.5f + ((levelDifference - 10) * 0.15f); // 3.5x to 6.5x
|
||||
} else {
|
||||
// Cap extreme scaling for very low level creatures
|
||||
levelMultiplier = 6.5f + std::min((levelDifference - 30) * 0.05f, 3.5f); // Cap at 10x
|
||||
}
|
||||
|
||||
float scaling = constant * levelMultiplier * (1 + (scaleFactor / 100.0f));
|
||||
return scaling;
|
||||
}
|
||||
|
||||
@@ -699,4 +904,3 @@ float GetTypeDamageModifier(int32 Rank)
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,10 +69,20 @@ public:
|
||||
uint32 legendaryItemOffset;
|
||||
uint32 ascendantItemOffset;
|
||||
|
||||
// Scaling modifiers
|
||||
// Scaling modifiers (Deprecated)
|
||||
uint32 meleeAttackPowerDampener;
|
||||
uint32 meleeAttackPowerStart;
|
||||
|
||||
// Spell Damage Diminishing Returns
|
||||
float diminishingExponent;
|
||||
std::unordered_map<MpDifficulty, uint32> diminishingThresholds;
|
||||
|
||||
// Specialized variables used in calculations
|
||||
float elementalMeleeReducer;
|
||||
float normalEnemyReducer;
|
||||
float nonCreatureSpellReducer;
|
||||
|
||||
|
||||
enum MP_UNIT_EVENT_TYPE
|
||||
{
|
||||
UNIT_EVENT_MELEE,
|
||||
@@ -132,6 +142,12 @@ public:
|
||||
// This scales a heal spell up based on the how much % the original heal spell was
|
||||
int32 ScaleHealSpell(SpellInfo const * spellInfo, uint32 heal, MpCreatureData* creatureData, Creature* creature, Creature* target, float healMultiplier);
|
||||
|
||||
// Calculate spell damage based on player health pools
|
||||
int32 CalculateSpellDamage(uint32 baseDamage, int originalLevel, int targetLevel);
|
||||
|
||||
// Calculate heal scaling based on creature health percentages
|
||||
int32 CalculateHealScaling(uint32 baseHeal, uint32 originalHealth, uint32 currentMaxHealth);
|
||||
|
||||
static bool IsFinalBoss(Creature* creature);
|
||||
static void GroupReset(Group* group, Map* map);
|
||||
|
||||
@@ -146,6 +162,8 @@ float CalculateScaling(int levelDifference, float scaleFactor, float constant =
|
||||
uint32 CalculateNewHealth(Creature* creature, CreatureTemplate const* cInfo, uint32 mapId, MpDifficulty difficulty, uint32 origHealth, float confHPMod);
|
||||
float CalculateNewBaseDamage(CreatureTemplate const* cInfo, uint32 mapId, MpDifficulty difficulty, float origDamage);
|
||||
|
||||
|
||||
|
||||
#define sMythicPlus MythicPlus::instance()
|
||||
|
||||
#endif // MYTHICPLUS_H
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "MpScheduler.h"
|
||||
#include "MpLogger.h"
|
||||
#include "Spells/AdvancmentSpells.cpp"
|
||||
|
||||
// Creature Overrides
|
||||
enum {
|
||||
@@ -8,7 +9,6 @@ enum {
|
||||
|
||||
// This adds schedulers for use across scripts scoped to MythicPlus
|
||||
void Add_MP_Schedulers() {
|
||||
MpLogger::debug("Add_MP_Schedulers()");
|
||||
new MpScheduler_WorldScript();
|
||||
}
|
||||
|
||||
@@ -23,20 +23,25 @@ void Add_MP_UnitScripts();
|
||||
void Add_MP_WorldScripts();
|
||||
void Add_MP_PlayerMessageEvents();
|
||||
|
||||
// Spell Scripts
|
||||
void AddSC_AdvancementSpells();
|
||||
|
||||
void Addmod_mythic_plusScripts() {
|
||||
Add_MP_AllCreatureScripts();
|
||||
Add_MP_AllMapScripts();
|
||||
Add_MP_CommandScripts();
|
||||
Add_MP_GlobalScripts();
|
||||
// Add_MP_GroupScripts();
|
||||
Add_MP_PlayerScripts();
|
||||
Add_MP_UnitScripts();
|
||||
Add_MP_WorldScripts();
|
||||
Add_MP_Schedulers();
|
||||
Add_MP_PlayerMessageEvents();
|
||||
|
||||
// new Ragefire_Bazzalan_Mythic();
|
||||
// Spell Scripts
|
||||
AddSC_AdvancementSpells();
|
||||
|
||||
// new Ragefire_Bazzalan_Mythic();
|
||||
// Add_MP_GroupScripts();
|
||||
// list of boss / creature event handlers
|
||||
// new Ragefire_Bazzalan_Mythic(RAGEFIRE_BAZZALAN);
|
||||
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
|
||||
class MythicPlus_AllCreatureScript : public AllCreatureScript
|
||||
{
|
||||
private:
|
||||
std::unordered_map<ObjectGuid, uint32> m_creatureUpdateTimers;
|
||||
|
||||
public:
|
||||
MythicPlus_AllCreatureScript() : AllCreatureScript("MythicPlus_AllCreatureScript") {}
|
||||
|
||||
@@ -14,9 +17,89 @@ public:
|
||||
// {
|
||||
// }
|
||||
|
||||
// void OnAllCreatureUpdate(Creature* creature, uint32 diff) override
|
||||
// {
|
||||
// }
|
||||
void OnCreatureRespawn(Creature* creature)
|
||||
{
|
||||
Map* map = creature->GetMap();
|
||||
if (!sMythicPlus->IsMapEligible(map)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sMythicPlus->IsCreatureEligible(creature)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If we have instance data, scale the creature, otherwise add it to be scaled later
|
||||
if (MpInstanceData* instanceData = sMpDataStore->GetInstanceData(map->GetId(), map->GetInstanceId())) {
|
||||
sMythicPlus->AddScaledCreature(creature, instanceData);
|
||||
} else {
|
||||
sMythicPlus->AddCreatureForScaling(creature);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This hook runs every update for all creatures in the world.
|
||||
* We only need to concern ourselves with creatures in the scope of our mythic+ instances.
|
||||
* Need to detect the following changes:
|
||||
* - Creature Death State - to trigger respawn scaling.
|
||||
* - Other events where a creature enters the instance that is not scaled, then should be scaled up. Some special events normal enemies will be scripted
|
||||
* to show up in encounters these will not trigger the OnCreatureAddWorld, because they were not during the initial load of the instance. (Though sometimes summons do trigger this?)
|
||||
*
|
||||
* @param creature
|
||||
* @param diff
|
||||
*/
|
||||
void OnAllCreatureUpdate(Creature* creature, uint32 diff) override
|
||||
{
|
||||
// Skip any creatures not in an instance we are scaling first to avoid unnecessary work
|
||||
if (!sMythicPlus->IsMapEligible(creature->GetMap())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sMythicPlus->IsCreatureEligible(creature)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// throttle this check per creature to only run if more than 20ms has passed since last check
|
||||
ObjectGuid creatureGuid = creature->GetGUID();
|
||||
m_creatureUpdateTimers[creatureGuid] += diff;
|
||||
if(m_creatureUpdateTimers[creatureGuid] < 20) {
|
||||
return;
|
||||
}
|
||||
m_creatureUpdateTimers[creatureGuid] = 0;
|
||||
|
||||
|
||||
auto instanceData = sMpDataStore->GetInstanceData(creature->GetMapId(), creature->GetInstanceId());
|
||||
// no instance data yet means dont scale.
|
||||
if(!instanceData) {
|
||||
return;
|
||||
}
|
||||
|
||||
MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creature->GetGUID());
|
||||
|
||||
// this is a creature that was not scaled at instance load time, we need to scale it now.
|
||||
if(!creatureData) {
|
||||
MpLogger::debug("OnAllCreatureUpdate: Unknown Creature Add event scaling creature: {}", creature->GetName());
|
||||
sMythicPlus->AddScaledCreature(creature, sMpDataStore->GetInstanceData(creature->GetMap()->GetId(), creature->GetMap()->GetInstanceId()));
|
||||
return;
|
||||
}
|
||||
DeathState currentState = creature->getDeathState();
|
||||
|
||||
// record the death of our scaled creature
|
||||
if(currentState == DeathState::Corpse && creatureData->lastDeathState != DeathState::Corpse) {
|
||||
creatureData->lastDeathState = currentState;
|
||||
return;
|
||||
}
|
||||
|
||||
if(currentState == DeathState::Alive && creatureData->lastDeathState == DeathState::Corpse) {
|
||||
MpLogger::debug("OnAllCreatureUpdate: Creature Death event scaling creature: {} level: {} guid: {} event: {}", creature->GetName(), creatureData->creature->GetLevel(), creature->GetGUID().ToString(), creature->getDeathState());
|
||||
if(creature->IsDungeonBoss() || creature->GetEntry() == 23682) {
|
||||
sMythicPlus->AddScaledCreature(creature, instanceData);
|
||||
} else {
|
||||
sMythicPlus->AddScaledCreature(creature, instanceData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// When a new creature is added into a mythic+ map add it to the list of creatures to scale later.
|
||||
void OnCreatureAddWorld(Creature* creature) override
|
||||
@@ -32,6 +115,7 @@ public:
|
||||
|
||||
// if we have instance data about zone then just scale the creature otherwise add to be scaled once we do.
|
||||
MpInstanceData* instanceData = sMpDataStore->GetInstanceData(map->GetId(), map->GetInstanceId());
|
||||
|
||||
if(instanceData) {
|
||||
sMythicPlus->AddScaledCreature(creature, instanceData);
|
||||
} else {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
#include "Chat.h"
|
||||
#include "AdvancementMgr.h"
|
||||
#include "MpDataStore.h"
|
||||
#include "MythicPlus.h"
|
||||
#include "MpDataStore.h"
|
||||
@@ -38,7 +39,8 @@ public:
|
||||
{"mp", commandTableMain},
|
||||
{"mythicplus", commandTableMain},
|
||||
{"mp debug", HandleDebug, SEC_PLAYER, Console::No},
|
||||
{"mp reload", HandleReload, SEC_GAMEMASTER, Console::No}
|
||||
{"mp reload", HandleReload, SEC_GAMEMASTER, Console::No},
|
||||
{"advancement", HandleAdvancement, SEC_PLAYER, Console::No}
|
||||
};
|
||||
|
||||
return commandTable;
|
||||
@@ -155,7 +157,7 @@ public:
|
||||
group->SetDungeonDifficulty(DUNGEON_DIFFICULTY_NORMAL);
|
||||
}
|
||||
else {
|
||||
handler->PSendSysMessage("|cFFFF0000 Invalid difficulty level. Expected values are 'mythic', 'legendary', or 'ascendant'.");
|
||||
handler->PSendSysMessage("|cFFFF0000 Invalid difficulty level. Expected values are 'normal', 'heroic', 'mythic', 'legendary', or 'ascendant'.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -186,14 +188,11 @@ public:
|
||||
Map* map = player->GetMap();
|
||||
uint32 mapId = player->GetMapId();
|
||||
|
||||
std::string status = Acore::StringFormat(
|
||||
"Mythic+ Status:\n"
|
||||
" Mythic+ Enabled: %s\n"
|
||||
" Mythic+ Item Rewards: %s\n"
|
||||
" Mythic+ DeathLimits: %s\n",
|
||||
sMythicPlus->Enabled ? "Yes" : "No",
|
||||
sMythicPlus->EnableItemRewards ? "Yes" : "No",
|
||||
sMythicPlus->EnableDeathLimits ? "Yes" : "No");
|
||||
std::string status = Acore::StringFormat("Mythic+ Status:\n Mythic+ Enabled: {}\n Mythic+ Item Rewards: {}\n Mythic+ DeathLimits: {}\n",
|
||||
std::string((sMythicPlus->Enabled) ? "Yes" : "No"),
|
||||
std::string((sMythicPlus->EnableItemRewards) ? "Yes" : "No"),
|
||||
std::string((sMythicPlus->EnableDeathLimits) ? "Yes" : "No")
|
||||
);
|
||||
|
||||
if (player->GetGroup()) {
|
||||
auto groupData = sMpDataStore->GetGroupData(player->GetGroup()->GetGUID());
|
||||
@@ -204,10 +203,7 @@ public:
|
||||
scaleFactors = sMpDataStore->GetScaleFactor(mapId, groupData->difficulty);
|
||||
}
|
||||
|
||||
status += Acore::StringFormat(
|
||||
" Group Difficulty: %u\n"
|
||||
" Group Deaths: %u\n"
|
||||
" Scale FactorStr %s\n",
|
||||
status += Acore::StringFormat(" Group Difficulty: {}\n Group Deaths: {}\n Scale FactorStr {}\n",
|
||||
(groupData->difficulty) ? groupData->difficulty : 0,
|
||||
(groupData->GetDeaths(player->GetMapId(), player->GetInstanceId())),
|
||||
scaleFactors.ToString()
|
||||
@@ -315,9 +311,9 @@ public:
|
||||
auto groupData = sMpDataStore->GetGroupData(player->GetGroup()->GetGUID());
|
||||
|
||||
if(groupData) {
|
||||
uint32 value = std::stoi(args[0]);
|
||||
sMpDataStore->SetDamageScaleFactor(player->GetMapId(), groupData->difficulty, value);
|
||||
handler->PSendSysMessage(Acore::StringFormat("Melee scale factor set to: %u", value));
|
||||
float value = std::stof(args[0]);
|
||||
sMpDataStore->SetMeleeScaleFactor(player->GetMapId(), groupData->difficulty, value);
|
||||
handler->PSendSysMessage(Acore::StringFormat("Melee scale factor set to: {}", value));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -343,9 +339,9 @@ public:
|
||||
auto groupData = sMpDataStore->GetGroupData(player->GetGroup()->GetGUID());
|
||||
|
||||
if(groupData) {
|
||||
uint32 value = std::stoi(args[0]);
|
||||
float value = std::stof(args[0]);
|
||||
sMpDataStore->SetSpellScaleFactor(player->GetMapId(), groupData->difficulty, value);
|
||||
handler->PSendSysMessage(Acore::StringFormat("Spell scale factor set to: %u", value));
|
||||
handler->PSendSysMessage(Acore::StringFormat("Spell scale factor set to: {}", value));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -371,9 +367,9 @@ public:
|
||||
auto groupData = sMpDataStore->GetGroupData(player->GetGroup()->GetGUID());
|
||||
|
||||
if(groupData) {
|
||||
uint32 value = std::stoi(args[0]);
|
||||
float value = std::stof(args[0]);
|
||||
sMpDataStore->SetHealthScaleFactor(player->GetMapId(), groupData->difficulty, value);
|
||||
handler->PSendSysMessage(Acore::StringFormat("Health scale factor set to: %u", value));
|
||||
handler->PSendSysMessage(Acore::StringFormat("Health scale factor set to: {}", value));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -382,6 +378,29 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleAdvancement(ChatHandler* handler)
|
||||
{
|
||||
Player* player = handler->GetSession()->GetPlayer();
|
||||
std::string message = "";
|
||||
|
||||
for(int i =0; i < MpAdvancements::MP_ADV_MAX; i++) {
|
||||
MpPlayerRank* playerRank = sAdvancementMgr->GetPlayerAdvancementRank(player, static_cast<MpAdvancements>(i));
|
||||
if(!playerRank) {
|
||||
continue;
|
||||
}
|
||||
|
||||
message += Acore::StringFormat("Your Advancement Bonuses: \n {}: {} bonus: {}", MpAdvancementsToString(static_cast<MpAdvancements>(i)), playerRank->rank, playerRank->bonus);
|
||||
}
|
||||
|
||||
if(message.empty()) {
|
||||
message = "You have no advancements.";
|
||||
}
|
||||
|
||||
handler->PSendSysMessage(message);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void Add_MP_CommandScripts()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "MpLogger.h"
|
||||
#include "MythicPlus.h"
|
||||
#include "MpConstants.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "Player.h"
|
||||
#include "Map.h"
|
||||
@@ -11,7 +12,7 @@ public:
|
||||
MythicPlus_GlobalScript() : GlobalScript("MythicPlus_GlobalScript") { }
|
||||
|
||||
// This adds the mythic+ item scaling to the loot table for enemies
|
||||
void OnBeforeDropAddItem(Player const* player, Loot& /*loot*/, bool /*canRate*/, uint16 /*lootMode*/, LootStoreItem* LootStoreItem, LootStore const& store) override {
|
||||
void OnBeforeDropAddItem(Player const* player, Loot& loot, bool /*canRate*/, uint16 /*lootMode*/, LootStoreItem* LootStoreItem, LootStore const& store) override {
|
||||
|
||||
if(LootStoreItem->itemid == 0) {
|
||||
return;
|
||||
@@ -44,8 +45,30 @@ public:
|
||||
// get the item to scale up
|
||||
ItemTemplate const* origItem = sObjectMgr->GetItemTemplate(LootStoreItem->itemid);
|
||||
if (!origItem) {
|
||||
MpLogger::warn("Item not found for itemid {} in OnBeforeDropAddItem()", LootStoreItem->itemid);
|
||||
return;
|
||||
|
||||
// If there is not a scaled up item and the item is a below quality green then set an invalid item_id so it is not added to loot
|
||||
ItemTemplate const* nonMythicItem = sObjectMgr->GetItemTemplate(LootStoreItem->itemid);
|
||||
if (nonMythicItem->Quality < 2) {
|
||||
LootStoreItem->itemid = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// otherwise roll a chance to see a shadowy remains item is provided instead only if there is not already a shadowy remains item on the corpse
|
||||
bool hasShadowyRemains = false;
|
||||
for (auto& item : loot.items) {
|
||||
if(item.itemid == MpConstants::SHADOWY_REMAINS) {
|
||||
hasShadowyRemains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasShadowyRemains) {
|
||||
LootStoreItem->itemid = MpConstants::SHADOWY_REMAINS;
|
||||
return;
|
||||
} else {
|
||||
LootStoreItem->itemid = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 newItemId = origItem->ItemId + mythicSettings->itemOffset;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "ScriptMgr.h"
|
||||
#include "TaskScheduler.h"
|
||||
#include "AdvancementMgr.h"
|
||||
#include "Formulas.h"
|
||||
|
||||
class MythicPlus_PlayerScript : public PlayerScript
|
||||
{
|
||||
@@ -39,13 +40,13 @@ public:
|
||||
|
||||
MpGroupData *data = sMpDataStore->GetGroupData(player->GetGroup());
|
||||
if (!data) {
|
||||
MpLogger::warn("Missin group data for player {}", player->GetName());
|
||||
MpLogger::warn("Missing group data for player {}", player->GetName());
|
||||
return;
|
||||
}
|
||||
|
||||
MpPlayerData *playerData = sMpDataStore->GetPlayerData(player->GetGUID());
|
||||
if (!playerData) {
|
||||
MpLogger::warn("Missin player data for player {}", player->GetName());
|
||||
MpLogger::warn("Missing player data for player {}", player->GetName());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -108,17 +109,107 @@ public:
|
||||
// // ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_BOSS_EMOTE, LANG_UNIVERSAL, nullptr, player, message);
|
||||
// // player->GetSession()->SendPacket(&data);
|
||||
// }
|
||||
|
||||
// map->ToInstanceMap()->Reset(0);
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
void OnBeforeLootMoney(Player* player, Loot* loot) override
|
||||
{
|
||||
if (!loot->sourceWorldObjectGUID.IsCreature()) return;
|
||||
|
||||
Creature* creature = player->GetMap()->GetCreature(loot->sourceWorldObjectGUID);
|
||||
if (!creature) return;
|
||||
|
||||
#ifdef NPC_BOT
|
||||
if(creature->IsNPCBotOrPet()) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Check if this is a Mythic+ scaled creature
|
||||
MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creature->GetGUID());
|
||||
if (!creatureData || !creatureData->IsScaled()) return;
|
||||
|
||||
// Different gold ranges based on creature rank
|
||||
uint32 bossMinGold = 10000;
|
||||
uint32 bossMaxGold = 13500;
|
||||
|
||||
uint32 minGold, maxGold;
|
||||
|
||||
// Determine gold range based on creature rank
|
||||
if (creature->isWorldBoss() || creature->IsDungeonBoss())
|
||||
{
|
||||
// Boss: full range
|
||||
minGold = bossMinGold;
|
||||
maxGold = bossMaxGold;
|
||||
}
|
||||
else if (creature->GetCreatureTemplate()->rank == CREATURE_ELITE_RARE ||
|
||||
creature->GetCreatureTemplate()->rank == CREATURE_ELITE_ELITE)
|
||||
{
|
||||
// Elite: 70% of boss range
|
||||
minGold = uint32(bossMinGold * 0.7f);
|
||||
maxGold = uint32(bossMaxGold * 0.7f);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Normal: 40% of boss range
|
||||
minGold = uint32(bossMinGold * 0.4f);
|
||||
maxGold = uint32(bossMaxGold * 0.4f);
|
||||
}
|
||||
|
||||
// Generate random gold amount in appropriate range
|
||||
uint32 newGold = urand(minGold, maxGold);
|
||||
|
||||
// Apply server money rate
|
||||
newGold = uint32(newGold * sWorld->getRate(RATE_DROP_MONEY));
|
||||
|
||||
loot->gold = newGold;
|
||||
}
|
||||
|
||||
void OnGiveXP(Player* player, uint32& amount, Unit* victim, uint8 xpSource) override
|
||||
{
|
||||
if (xpSource != XPSOURCE_KILL || !victim) return;
|
||||
|
||||
Creature* creature = victim->ToCreature();
|
||||
if (!creature) return;
|
||||
|
||||
#ifdef NPC_BOT
|
||||
if(creature->IsNPCBotOrPet()) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Check if this is a Mythic+ scaled creature
|
||||
MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creature->GetGUID());
|
||||
if (!creatureData || !creatureData->IsScaled()) return;
|
||||
|
||||
// Recalculate XP using scaled level instead of original level
|
||||
uint32 newBaseXP = Acore::XP::BaseGain(
|
||||
player->GetLevel(),
|
||||
creature->GetLevel(), // This is now the scaled level
|
||||
GetContentLevelsForMapAndZone(creature->GetMapId(), creature->GetZoneId())
|
||||
);
|
||||
|
||||
// Apply same modifiers as original calculation
|
||||
float xpMod = 1.0f;
|
||||
if (creature->isElite()) {
|
||||
xpMod *= creature->GetMap()->IsDungeon() ? 2.75f : 2.0f;
|
||||
}
|
||||
xpMod *= creature->GetCreatureTemplate()->ModExperience;
|
||||
|
||||
amount = uint32(newBaseXP * xpMod * 1.5f); // flat bonus modifier for mythic dungeons
|
||||
}
|
||||
void OnLogin(Player* player) override
|
||||
{
|
||||
MpLogger::info("Player {} logged in", player->GetName());
|
||||
|
||||
// Load the player advancement data for the player when they login
|
||||
int32 size = sAdvancementMgr->LoadPlayerAdvancements(player);
|
||||
MpLogger::info("Loaded {} player advancements for player {}", size, player->GetName());
|
||||
sAdvancementMgr->LoadPlayerAdvancements(player);
|
||||
|
||||
// Cast all unique advancement spells
|
||||
for(uint32 i = 1; i <= 10; ++i) {
|
||||
uint32 spellId = 80000000 + i;
|
||||
MpLogger::info("Casting spell {} to player {}", spellId, player->GetName());
|
||||
player->AddAura(spellId, player);
|
||||
}
|
||||
}
|
||||
|
||||
// When a player is bound to an instance need to make sure they are saved in the data soure to retrieve later.
|
||||
|
||||
@@ -2,12 +2,251 @@
|
||||
#include "Player.h"
|
||||
#include "MythicPlus.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
|
||||
class MythicPlus_UnitScript : public UnitScript
|
||||
{
|
||||
public:
|
||||
MythicPlus_UnitScript() : UnitScript("MythicPlus_UnitScript", true) { }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Handles damage from non-creature sources (GameObjects, Players, etc.)
|
||||
* @tparam DamageType Type of damage (int32/float)
|
||||
* @param target Target of the damage
|
||||
* @param attacker The non-creature attacker (passed by reference and may be modified)
|
||||
* @param damage Reference to damage value (will be modified)
|
||||
* @param spellInfo The spell being cast
|
||||
* @param eventType Type of event (spell/melee/etc)
|
||||
*/
|
||||
template<typename DamageType>
|
||||
void HandleNonCreatureAttacker(Unit* target, Unit*& attacker, DamageType& damage,
|
||||
SpellInfo const* spellInfo, MythicPlus::MP_UNIT_EVENT_TYPE eventType)
|
||||
{
|
||||
Map* map = target ? target->GetMap() : nullptr;
|
||||
std::string attackerType = "nullptr";
|
||||
std::string attackerName = "unknown";
|
||||
uint32 entry = 0;
|
||||
|
||||
if (attacker) {
|
||||
if (attacker->GetTypeId() == TYPEID_GAMEOBJECT) {
|
||||
attackerType = "GameObject";
|
||||
if (GameObject* go = attacker->ToGameObject()) {
|
||||
entry = go->GetEntry();
|
||||
if (GameObjectTemplate const* goInfo = go->GetGOInfo()) {
|
||||
attackerName = goInfo->name;
|
||||
}
|
||||
}
|
||||
} else if (attacker->GetTypeId() == TYPEID_PLAYER) {
|
||||
attackerType = "Player";
|
||||
attackerName = attacker->GetName();
|
||||
} else if (attacker->GetTypeId() == TYPEID_UNIT) {
|
||||
attackerType = "Unit (non-creature)";
|
||||
attackerName = attacker->GetName();
|
||||
} else {
|
||||
attackerType = "Unknown Type";
|
||||
}
|
||||
}
|
||||
|
||||
// Try to find a creature attacker from target's attackers list if we have one use it for scaling
|
||||
Unit::AttackerSet const& attackers = target ? target->getAttackers() : Unit::AttackerSet();
|
||||
if (!attackers.empty()) {
|
||||
attacker = *attackers.begin();
|
||||
if (Creature* creatureAttacker = attacker->ToCreature()) {
|
||||
|
||||
if (MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creatureAttacker->GetGUID())) {
|
||||
damage = static_cast<DamageType>(modifyIncomingDmgHeal(eventType, target, creatureAttacker,
|
||||
static_cast<uint32>(damage), spellInfo)) * sMythicPlus->nonCreatureSpellReducer;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
MpLogger::debug("====== SPELL SCALING: Non-Creature attacker - Name: {}, Spell: {}({}), Damage: {}",
|
||||
attackerName,
|
||||
spellInfo ? spellInfo->SpellName[0] : "No Spell",
|
||||
spellInfo ? spellInfo->Id : 0,
|
||||
damage);
|
||||
|
||||
if (map) {
|
||||
if (MpInstanceData* instanceData = sMpDataStore->GetInstanceData(map->GetId(), map->GetInstanceId())) {
|
||||
damage = static_cast<DamageType>(damage * instanceData->creature.spell * sMythicPlus->nonCreatureSpellReducer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Fallback to instance-based scaling if we can't find a nearest creature
|
||||
else if (map) {
|
||||
if (MpInstanceData* instanceData = sMpDataStore->GetInstanceData(map->GetId(), map->GetInstanceId())) {
|
||||
damage = static_cast<DamageType>(damage * instanceData->creature.spell * sMythicPlus->nonCreatureSpellReducer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Default scaling if no specific handler applied
|
||||
return;
|
||||
}
|
||||
|
||||
// Helper function to determine if a spell scales with Attack Power
|
||||
bool IsAttackPowerScalingSpell(SpellInfo const* spellInfo) {
|
||||
if (!spellInfo || spellInfo->Effects.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto mainEffect = spellInfo->Effects[0];
|
||||
|
||||
// Check 1: Direct weapon damage effects
|
||||
bool isWeaponEffect = (mainEffect.Effect == SPELL_EFFECT_WEAPON_DAMAGE ||
|
||||
mainEffect.Effect == SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL ||
|
||||
mainEffect.Effect == SPELL_EFFECT_NORMALIZED_WEAPON_DMG ||
|
||||
mainEffect.Effect == SPELL_EFFECT_WEAPON_PERCENT_DAMAGE);
|
||||
|
||||
// Check 2: Damage class indicates melee/ranged (scales with AP)
|
||||
bool isMeleeOrRanged = (spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE ||
|
||||
spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED);
|
||||
|
||||
// Check 3: Requires weapon equipment
|
||||
bool requiresWeapon = (spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON);
|
||||
|
||||
// Check 4: Specific spell families known to scale with AP
|
||||
bool isKnownAPSpell = false;
|
||||
if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE) {
|
||||
// Rogue poisons and weapon-based abilities
|
||||
isKnownAPSpell = (spellInfo->SpellFamilyFlags[0] & 0x10000) || // Deadly Poison flag
|
||||
(spellInfo->SpellFamilyFlags[1] & 0x80000); // Other poison flags
|
||||
}
|
||||
|
||||
// Return true if any indicator suggests AP scaling
|
||||
return (isWeaponEffect || isMeleeOrRanged || requiresWeapon || isKnownAPSpell);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This functions processes spell damage for DOTs and Direct Damage Spells it
|
||||
* handles special cases for Melee scaling spells and AP scaling spells also so they
|
||||
* are not scaled up twice and murder all my friends
|
||||
*
|
||||
* @tparam DamageType
|
||||
* @param target
|
||||
* @param attacker
|
||||
* @param damage
|
||||
* @param spellInfo
|
||||
* @param eventType
|
||||
* @param logPrefix
|
||||
*/
|
||||
|
||||
template<typename DamageType>
|
||||
void ProcessSpellDamage(Unit* target, Unit* attacker, DamageType& damage, SpellInfo const* spellInfo, MythicPlus::MP_UNIT_EVENT_TYPE eventType, const std::string& logPrefix) {
|
||||
if(damage == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If this is a special case where the attacker is not a creature
|
||||
if (!attacker || !attacker->ToCreature()) {
|
||||
return HandleNonCreatureAttacker(target, attacker, damage, spellInfo, eventType);
|
||||
}
|
||||
|
||||
Creature* creatureCaster = attacker->ToCreature();
|
||||
MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creatureCaster->GetGUID());
|
||||
|
||||
if (!creatureCaster) {
|
||||
MpLogger::error("Creature caster is null in map {}", attacker ? attacker->GetMap()->GetId() : 0);
|
||||
return;
|
||||
}
|
||||
if (!creatureData) {
|
||||
MpLogger::error("Failed to get creature data for {} in map {}", creatureCaster->GetName(), attacker ? attacker->GetMap()->GetId() : 0);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if this spell scales with Attack Power
|
||||
if (IsAttackPowerScalingSpell(spellInfo)) {
|
||||
|
||||
// need another special case here to determine if a spell was not scaled up by AP meaning the incoming damage is close to the
|
||||
// original effect of the spell and therefore should instead use spell effect scaling it should be no more than 15% of the original effect
|
||||
bool notScaledByAP = false;
|
||||
if (spellInfo && !spellInfo->Effects.empty()) {
|
||||
int32 baseEffect = spellInfo->Effects[0].CalcValue(attacker, nullptr, nullptr);
|
||||
if (damage <= (baseEffect * 1.15f)) {
|
||||
// MpLogger::debug(">>>> MELEE SPELL SCALING: Spell {} (ID: {}) is not scaled by AP damage: {} vs originalEffect: {}",
|
||||
// spellInfo->SpellName[0], spellInfo->Id, damage, baseEffect);
|
||||
notScaledByAP = true;
|
||||
}
|
||||
} else {
|
||||
// If we can't determine the base effect, default to treating it as not AP-scaled
|
||||
notScaledByAP = true;
|
||||
// MpLogger::debug(">>>> MELEE SPELL SCALING: Could not determine base effect for spell, defaulting to spell scaling");
|
||||
}
|
||||
|
||||
// if the effect type of the spell is not physical (aka not mitigated by armor/defense) then it needs to instead have the typical
|
||||
// spell damage multiplier applied instead of melee damage scaling
|
||||
if (! notScaledByAP && (spellInfo->SchoolMask == SPELL_SCHOOL_NORMAL || spellInfo->SchoolMask == SPELL_SCHOOL_MASK_NORMAL)) {
|
||||
uint32 meleeDamage = static_cast<uint32>(std::max(0, static_cast<int32>(damage)));
|
||||
|
||||
damage = modifyIncomingDmgHeal(MythicPlus::UNIT_EVENT_MELEE, target, attacker, meleeDamage);
|
||||
|
||||
// MpLogger::debug(">>MELEE SPELL SCALING: {} hits with spell: {} ID: {} meleeDamage: {} damage: {}", attacker->GetName(), spellInfo->SpellName[0], spellInfo->Id, meleeDamage, damage);
|
||||
} else {
|
||||
|
||||
// get the creatures original attack power
|
||||
SpellEffectInfo const& effect = spellInfo->Effects[0];
|
||||
uint32 spellDmg = static_cast<uint32>(effect.CalcValue(attacker, nullptr, nullptr) * effect.CalcDamageMultiplier(attacker, nullptr));
|
||||
|
||||
// now take the original attack power * 0.08 and add it to the spell damage
|
||||
uint32 apDmg = static_cast<uint32>(creatureData->originalStats->AttackPower * 0.10f);
|
||||
uint32 finalDmg = spellDmg + apDmg;
|
||||
|
||||
// MpLogger::debug(">> AP BASED DAMAGE Scaledown: origDamage: {} | spellDmg: {} | apDmg: {} | finalDmg: {}", static_cast<int32>(damage), spellDmg, apDmg, finalDmg);
|
||||
|
||||
damage = modifyIncomingDmgHeal(MythicPlus::UNIT_EVENT_SPELL, target, attacker, finalDmg, spellInfo);
|
||||
|
||||
// need to take into consideration if this is a stacking spell and multiply the final damage by the number of stacks
|
||||
if(spellInfo->AttributesEx3 & SPELL_ATTR3_DOT_STACKING_RULE) {
|
||||
|
||||
Aura* aura = target->GetAura(spellInfo->Id, attacker->GetGUID());
|
||||
uint32 stacks = aura ? aura->GetStackAmount() : 1;
|
||||
if(aura) {
|
||||
damage *= stacks;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Reverse the CalcValue scaling to get original base damage
|
||||
int32 originalDamage = static_cast<int32>(damage);
|
||||
|
||||
if (creatureCaster && creatureData && creatureData->originalLevel < 70) {
|
||||
CreatureTemplate const* cInfo = creatureCaster->GetCreatureTemplate();
|
||||
|
||||
// Get the scaling factors used in CalcValue
|
||||
CreatureBaseStats const* pCBS = sObjectMgr->GetCreatureBaseStats(creatureCaster->GetLevel(), creatureCaster->getClass());
|
||||
float CBSPowerCreature = pCBS->BaseDamage[cInfo->expansion];
|
||||
|
||||
uint32 tempLevel = spellInfo->SpellLevel;
|
||||
if(tempLevel == 0) {
|
||||
tempLevel = creatureData->originalLevel;
|
||||
}
|
||||
|
||||
CreatureBaseStats const* spellCBS = sObjectMgr->GetCreatureBaseStats(tempLevel, creatureCaster->getClass());
|
||||
float CBSPowerSpell = spellCBS->BaseDamage[cInfo->expansion];
|
||||
|
||||
// MpLogger::debug("SPELL SCALING: Creature Lvl {} -> {} | Spell Lvl {} | tempLevel: {} | CBSPowerCreature: {} CBSPowerSpell: {}",
|
||||
// creatureData->originalLevel, creatureCaster->GetLevel(), tempLevel, CBSPowerCreature, CBSPowerSpell);
|
||||
|
||||
// Reverse the CalcValue scaling: originalDamage = scaledDamage / (CBSPowerCreature / CBSPowerSpell)
|
||||
if (CBSPowerCreature > 0.0f) {
|
||||
originalDamage = static_cast<int32>(static_cast<int32>(damage) * (CBSPowerSpell / CBSPowerCreature));
|
||||
// MpLogger::debug("SPELL SCALING: Reversed CalcValue scaling - Scaled: {} -> Original: {} (Factor: {:.2f})",
|
||||
// damage, originalDamage, CBSPowerSpell / CBSPowerCreature);
|
||||
}
|
||||
}
|
||||
|
||||
// Apply Mythic+ scaling to the original base damage
|
||||
damage = static_cast<DamageType>(modifyIncomingDmgHeal(eventType, target, attacker, static_cast<uint32>(originalDamage), spellInfo));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage, SpellInfo const* spellInfo) override {
|
||||
if (!target && !attacker) {
|
||||
return;
|
||||
@@ -32,16 +271,20 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(isHot) {
|
||||
damage = modifyIncomingDmgHeal(MythicPlus::UNIT_EVENT_HOT, target, attacker, damage, spellInfo);
|
||||
} else {
|
||||
damage = modifyIncomingDmgHeal(MythicPlus::UNIT_EVENT_DOT, target, attacker, damage, spellInfo);
|
||||
ProcessSpellDamage(target, attacker, damage, spellInfo, MythicPlus::UNIT_EVENT_DOT, "DOT DAMAGE");
|
||||
}
|
||||
}
|
||||
|
||||
void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage, SpellInfo const* spellInfo) override {
|
||||
if (!target && !attacker) {
|
||||
|
||||
if(spellInfo) {
|
||||
// MpLogger::info("ModifySpellDamageTaken: Target and attacker are null for spell: {} ID: {}", spellInfo->SpellName[0], spellInfo->Id);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -50,11 +293,17 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
if(sMythicPlus->EligibleDamageTarget(target)) {
|
||||
MpLogger::debug("ModifySpellDamageTaken: {} hits {} with spell: {}", attacker->GetName(), target->GetName(), spellInfo->SpellName[0]);
|
||||
if(!sMythicPlus->EligibleDamageTarget(target)) {
|
||||
if(spellInfo) {
|
||||
// MpLogger::info("ModifySpellDamageTaken: Target is not eligible for spell: {} ID: {}", spellInfo->SpellName[0], spellInfo->Id);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
damage = modifyIncomingDmgHeal(MythicPlus::UNIT_EVENT_SPELL, target, attacker, damage, spellInfo);
|
||||
// MpLogger::debug("ModifySpellDamageTaken: {} hits {} with spell: {} ID: {}", attacker ? attacker->GetName() : "[null]", target ? target->GetName() : "[null]", spellInfo ? spellInfo->SpellName[0] : "[no spell]", spellInfo ? spellInfo->Id : 0);
|
||||
|
||||
// Use the generic ProcessSpellDamage function
|
||||
ProcessSpellDamage(target, attacker, damage, spellInfo, MythicPlus::UNIT_EVENT_SPELL, "SPELL DAMAGE");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,6 +339,7 @@ public:
|
||||
|
||||
uint32 modifyIncomingDmgHeal(MythicPlus::MP_UNIT_EVENT_TYPE eventType,Unit* target, Unit* attacker, uint32 damageOrHeal, SpellInfo const* spellInfo = nullptr) {
|
||||
if (!target && !attacker) {
|
||||
// MpLogger::info("modifyIncomingDmgHeal: Target and attacker are null for event {}", eventType);
|
||||
return damageOrHeal;
|
||||
}
|
||||
|
||||
@@ -105,7 +355,7 @@ public:
|
||||
}
|
||||
|
||||
#if defined(MOD_PRESENT_NPCBOTS)
|
||||
if (attacker && attacker->IsNPCBot()) {
|
||||
if (attacker && attacker->IsNPCBotOrPet()) {
|
||||
return damageOrHeal;
|
||||
}
|
||||
#endif
|
||||
@@ -148,34 +398,42 @@ public:
|
||||
*/
|
||||
switch (eventType) {
|
||||
case MythicPlus::UNIT_EVENT_MELEE:
|
||||
if(creature->IsDungeonBoss() || creature->GetEntry() == 23682) {
|
||||
|
||||
// Damage that is not mitigated by armor needs to be debuffed as it hits too hard and without resists
|
||||
// it hits too hard give everyone a benefit of 30% armor reduction
|
||||
MpLogger::debug(">>> Modify Melee Damage: Creature Name: {} alteredDmgHeal: {} School Mask: {}", creature->GetName(), alteredDmgHeal, creature->GetMeleeDamageSchoolMask());
|
||||
if(creature->GetMeleeDamageSchoolMask() != SPELL_SCHOOL_MASK_NORMAL && creature->GetMeleeDamageSchoolMask() != SPELL_SCHOOL_MASK_NONE) {
|
||||
damageOrHeal = damageOrHeal * 0.50f;
|
||||
}
|
||||
if(creature->IsDungeonBoss() || creature->isWorldBoss() || creature->GetEntry() == 23682) {
|
||||
alteredDmgHeal = damageOrHeal * instanceData->boss.melee;
|
||||
} else {
|
||||
alteredDmgHeal = damageOrHeal * instanceData->creature.melee;
|
||||
}
|
||||
MpLogger::debug("Incoming Melee New Damage: {}({}) {} hits {}", alteredDmgHeal, damageOrHeal, attacker->GetName(), target->GetName());
|
||||
|
||||
// MpLogger::debug(">>>>>>>>>>>> Incoming Melee New Damage: {}({}) {} hits {}", alteredDmgHeal, damageOrHeal, attacker->GetName(), target->GetName());
|
||||
|
||||
break;
|
||||
case MythicPlus::UNIT_EVENT_DOT:
|
||||
case MythicPlus::UNIT_EVENT_SPELL:
|
||||
if(creature->IsDungeonBoss() || creature->GetEntry() == 23682) {
|
||||
if(creature->IsDungeonBoss() || creature->isWorldBoss() || creature->GetEntry() == 23682) {
|
||||
if(spellInfo) {
|
||||
// MpLogger::debug("Scaling spell {} using ScaleDamageSpell() Original Damage: {} New Damage: {}", spellInfo->SpellName[0], damageOrHeal, alteredDmgHeal);
|
||||
alteredDmgHeal = sMythicPlus->ScaleDamageSpell(spellInfo, damageOrHeal, sMpDataStore->GetCreatureData(attacker->GetGUID()), creature, target, instanceData->boss.spell);
|
||||
} else {
|
||||
alteredDmgHeal = damageOrHeal * instanceData->boss.spell;
|
||||
// MpLogger::debug("Scaling spell {} using flat modifier Original Damage: {} New Damage: {}", spellInfo->SpellName[0], damageOrHeal, alteredDmgHeal);
|
||||
}
|
||||
} else {
|
||||
if(spellInfo) {
|
||||
// MpLogger::debug("Scaling spell {} using ScaleDamageSpell() Original Damage: {} New Damage: {}", spellInfo->SpellName[0], damageOrHeal, alteredDmgHeal);
|
||||
alteredDmgHeal = sMythicPlus->ScaleDamageSpell(spellInfo, damageOrHeal, sMpDataStore->GetCreatureData(attacker->GetGUID()), creature, target, instanceData->creature.spell);
|
||||
} else {
|
||||
// MpLogger::debug("Scaling spell {} using flat modifier Original Damage: {} New Damage: {}", spellInfo->SpellName[0], damageOrHeal, alteredDmgHeal);
|
||||
alteredDmgHeal = damageOrHeal * instanceData->creature.spell;
|
||||
}
|
||||
}
|
||||
|
||||
if(spellInfo) {
|
||||
MpLogger::debug("Incoming spell New Damage: {}({}) {} hits {} spell: {} ID: {}", alteredDmgHeal, damageOrHeal, attacker->GetName(), target->GetName(), spellInfo->SpellName[0], spellInfo->Id);
|
||||
} else {
|
||||
MpLogger::debug("Incoming spell New Damage: {}({}) {} hits {}", alteredDmgHeal, damageOrHeal, attacker->GetName(), target->GetName());
|
||||
}
|
||||
break;
|
||||
case MythicPlus::UNIT_EVENT_HEAL:
|
||||
case MythicPlus::UNIT_EVENT_HOT:
|
||||
@@ -189,18 +447,22 @@ public:
|
||||
if(sMythicPlus->EligibleHealTarget(target) && (eventType == MythicPlus::UNIT_EVENT_HEAL || eventType == MythicPlus::UNIT_EVENT_HOT)) {
|
||||
if(creature->IsDungeonBoss()) {
|
||||
if(spellInfo) {
|
||||
alteredDmgHeal = sMythicPlus->ScaleHealSpell(spellInfo, damageOrHeal, sMpDataStore->GetCreatureData(attacker->GetGUID()), creature, attacker->ToCreature(), instanceData->boss.spell);
|
||||
alteredDmgHeal = sMythicPlus->ScaleHealSpell(spellInfo, damageOrHeal, sMpDataStore->GetCreatureData(attacker->GetGUID()), creature, attacker->ToCreature(), instanceData->boss.spell * 0.7f);
|
||||
} else {
|
||||
alteredDmgHeal = damageOrHeal * instanceData->boss.spell;
|
||||
alteredDmgHeal = damageOrHeal * instanceData->boss.spell * 0.7f;
|
||||
}
|
||||
} else {
|
||||
if(spellInfo) {
|
||||
alteredDmgHeal = sMythicPlus->ScaleHealSpell(spellInfo, damageOrHeal, sMpDataStore->GetCreatureData(attacker->GetGUID()), creature, attacker->ToCreature(), instanceData->creature.spell);
|
||||
alteredDmgHeal = sMythicPlus->ScaleHealSpell(spellInfo, damageOrHeal, sMpDataStore->GetCreatureData(attacker->GetGUID()), creature, attacker->ToCreature(), instanceData->creature.spell * 0.7f);
|
||||
} else {
|
||||
alteredDmgHeal = damageOrHeal * instanceData->creature.spell;
|
||||
alteredDmgHeal = damageOrHeal * instanceData->creature.spell * 0.70f;
|
||||
}
|
||||
}
|
||||
MpLogger::debug("Incoming heal: {}({}) {} hits {}", alteredDmgHeal, damageOrHeal, attacker->GetName(), target->GetName());
|
||||
MpLogger::debug("Incoming heal: {}({}) {} hits {}",
|
||||
alteredDmgHeal,
|
||||
damageOrHeal,
|
||||
attacker ? attacker->GetName() : "[null]",
|
||||
target ? target->GetName() : "[null]");
|
||||
}
|
||||
|
||||
return alteredDmgHeal > 0 ? alteredDmgHeal : damageOrHeal;
|
||||
|
||||
@@ -89,8 +89,17 @@ public:
|
||||
sMythicPlus->legendaryItemOffset = sConfigMgr->GetOption<uint32>("MythicPlus.Legendary.ItemOffset", 21000000);
|
||||
sMythicPlus->ascendantItemOffset = sConfigMgr->GetOption<uint32>("MythicPlus.Ascendant.ItemOffset", 22000000);
|
||||
|
||||
sMythicPlus->meleeAttackPowerDampener = sConfigMgr->GetOption<uint32>("MythicPlus.MeleeAttackPowerDampener", 2000);
|
||||
sMythicPlus->meleeAttackPowerStart = sConfigMgr->GetOption<uint32>("MythicPlus.MeleeAttackPowerStart", 10000);
|
||||
// Get diminishing returns from configuration
|
||||
sMythicPlus->diminishingExponent = sConfigMgr->GetOption<float>("MythicPlus.DiminishingExponent", 0.975f);
|
||||
sMythicPlus->diminishingThresholds = {
|
||||
{MpDifficulty::MP_DIFFICULTY_MYTHIC, sConfigMgr->GetOption<uint32>("MythicPlus.DiminishingThreshold.Mythic", 10000)},
|
||||
{MpDifficulty::MP_DIFFICULTY_LEGENDARY, sConfigMgr->GetOption<uint32>("MythicPlus.DiminishingThreshold.Legendary", 20000)},
|
||||
{MpDifficulty::MP_DIFFICULTY_ASCENDANT, sConfigMgr->GetOption<uint32>("MythicPlus.DiminishingThreshold.Ascendant", 40000)}
|
||||
};
|
||||
|
||||
sMythicPlus->elementalMeleeReducer = sConfigMgr->GetOption<float>("MythicPlus.ElementalMeleeReducer", 0.50f);
|
||||
sMythicPlus->normalEnemyReducer = sConfigMgr->GetOption<float>("MythicPlus.NormalEnemyReducer", 0.50f);
|
||||
sMythicPlus->nonCreatureSpellReducer = sConfigMgr->GetOption<float>("MythicPlus.NonCreatureSpellReducer", 0.50f);
|
||||
}
|
||||
|
||||
void OnStartup() override
|
||||
@@ -104,6 +113,9 @@ public:
|
||||
size = sAdvancementMgr->LoadMaterialTypes();
|
||||
MpLogger::info("Loaded {} material types...", size);
|
||||
|
||||
sMpDataStore->LoadPlayerHealthAvg();
|
||||
MpLogger::info("Loaded player health averages used for scaling calculations...");
|
||||
|
||||
// Registering event handlers for the Mythic+ events from client
|
||||
MP_Register_EventHandlers();
|
||||
MpLogger::info("Registered Mythic+ Event Handlers...");
|
||||
|
||||
277
src/Spells/AdvancmentSpells.cpp
Normal file
277
src/Spells/AdvancmentSpells.cpp
Normal file
@@ -0,0 +1,277 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "MpConstants.h"
|
||||
#include "PetDefines.h"
|
||||
#include "Player.h"
|
||||
#include "AdvancementMgr.h"
|
||||
#include "MpLogger.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "UnitAI.h"
|
||||
#include "World.h"
|
||||
|
||||
|
||||
class spell_mp_titans_strength_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_titans_strength_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_STRENGTH);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Titans Strength to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_titans_strength_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_titans_strength_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_STAT);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_steel_forged_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_steel_forged_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_STAMINA);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Steel Forged to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_steel_forged_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_steel_forged_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_STAT);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_celestial_grace_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_celestial_grace_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_SPIRIT);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Celestial Grace to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_celestial_grace_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_celestial_grace_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_STAT);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_forbidden_knowledge_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_forbidden_knowledge_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_INTELLECT);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Forbidden Knowledge to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_forbidden_knowledge_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_forbidden_knowledge_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_STAT);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_spectral_reflexes_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_spectral_reflexes_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_AGILITY);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Spectral Reflexes to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_spectral_reflexes_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_spectral_reflexes_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_STAT);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_eldritch_barrier_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_eldritch_barrier_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_RESIST_ARCANE);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Eldritch Barrier to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_eldritch_barrier_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_eldritch_barrier_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_RESISTANCE);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_hellfire_shielding_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_hellfire_shielding_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_RESIST_FIRE);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Hellfire Shielding to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_hellfire_shielding_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_hellfire_shielding_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_RESISTANCE);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_primal_endurance_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_primal_endurance_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_RESIST_NATURE);
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Primal Endurance to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_primal_endurance_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_primal_endurance_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_RESISTANCE);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_lichs_bane_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_lichs_bane_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_RESIST_SHADOW);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Lich's Bane to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_lichs_bane_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_lichs_bane_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_RESISTANCE);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_mp_glacial_fortress_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mp_glacial_fortress_aura);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
auto rank = sAdvancementMgr->GetPlayerAdvancementRank(player, MpAdvancements::MP_ADV_RESIST_FROST);
|
||||
|
||||
if(!rank) {
|
||||
amount = 0; // player does not have an advancement
|
||||
return;
|
||||
}
|
||||
|
||||
amount = static_cast<int32>(rank->bonus);
|
||||
MpLogger::info("In Calc Amount Advancement Glacial Fortress to Player {} bonus {}", player->GetName(), amount);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
MpLogger::info("Registering spell_mp_glacial_fortress_aura");
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mp_glacial_fortress_aura::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_MOD_RESISTANCE);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_AdvancementSpells()
|
||||
{
|
||||
RegisterSpellScript(spell_mp_titans_strength_aura);
|
||||
RegisterSpellScript(spell_mp_steel_forged_aura);
|
||||
RegisterSpellScript(spell_mp_celestial_grace_aura);
|
||||
RegisterSpellScript(spell_mp_forbidden_knowledge_aura);
|
||||
RegisterSpellScript(spell_mp_spectral_reflexes_aura);
|
||||
RegisterSpellScript(spell_mp_eldritch_barrier_aura);
|
||||
RegisterSpellScript(spell_mp_hellfire_shielding_aura);
|
||||
RegisterSpellScript(spell_mp_primal_endurance_aura);
|
||||
RegisterSpellScript(spell_mp_lichs_bane_aura);
|
||||
RegisterSpellScript(spell_mp_glacial_fortress_aura);
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
// #include "CreatureScript.h"
|
||||
// #include "PetDefines.h"
|
||||
// #include "Player.h"
|
||||
// #include "MpLogger.h"
|
||||
// #include "SpellAuraEffects.h"
|
||||
// #include "SpellInfo.h"
|
||||
// #include "SpellMgr.h"
|
||||
// #include "SpellScript.h"
|
||||
// #include "SpellScriptLoader.h"
|
||||
// #include "UnitAI.h"
|
||||
// #include "World.h"
|
||||
|
||||
|
||||
// class spell_mp_toughness_aura : public AuraScript
|
||||
// {
|
||||
// PrepareAuraScript(spell_mp_toughness_aura);
|
||||
|
||||
// void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
// {
|
||||
// Player* player = GetTarget()->ToPlayer();
|
||||
// if (!player)
|
||||
// return;
|
||||
|
||||
// MpLogger::info("Applying Advancement Toughness to Player {}", player->GetName());
|
||||
|
||||
// if (Unit* caster = GetCaster())
|
||||
// {
|
||||
// if (caster->IsPlayer())
|
||||
// {
|
||||
// Player* player = caster->ToPlayer();
|
||||
|
||||
// // Add 500 Strength
|
||||
// player->HandleStatModifier(UNIT_MOD_STAT_STRENGTH, TOTAL_VALUE, 500, true);
|
||||
|
||||
// // Apply red glow visual effect
|
||||
// caster->SendPlaySpellVisual(11674); // Visual ID 11674 for red glow
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
// {
|
||||
// LOG_INFO("server.worldserver", "spell_custom_red_glow_strength_aura::HandleEffectRemove");
|
||||
|
||||
// if (Unit* caster = GetCaster())
|
||||
// {
|
||||
// if (caster->IsPlayer())
|
||||
// {
|
||||
// Player* player = caster->ToPlayer();
|
||||
|
||||
// // Remove 500 Strength
|
||||
// player->HandleStatModifier(UNIT_MOD_STAT_STRENGTH, TOTAL_VALUE, 500, false);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// void Register() override
|
||||
// {
|
||||
// LOG_INFO("server.worldserver", "spell_custom_red_glow_strength_aura::Register");
|
||||
|
||||
// OnEffectApply += AuraEffectApplyFn(spell_custom_red_glow_strength_aura::HandleEffectApply, EFFECT_0, SPELL_AURA_MOD_STAT, AURA_EFFECT_HANDLE_REAL);
|
||||
// OnEffectRemove += AuraEffectRemoveFn(spell_custom_red_glow_strength_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_MOD_STAT, AURA_EFFECT_HANDLE_REAL);
|
||||
// }
|
||||
// };
|
||||
|
||||
// void AddSC_spell_custom_red_glow_strength_aura()
|
||||
// {
|
||||
// // LOG_INFO("server.loading", "Registering spell custom_red_glow_strength_aura");
|
||||
// RegisterSpellScript(spell_custom_red_glow_strength_aura);
|
||||
// }
|
||||
Reference in New Issue
Block a user