diff --git a/sql/updates/world/custom/custom_2018_11_02_00_world.sql b/sql/updates/world/custom/custom_2018_11_02_00_world.sql new file mode 100644 index 00000000000..e60dcf5b3b3 --- /dev/null +++ b/sql/updates/world/custom/custom_2018_11_02_00_world.sql @@ -0,0 +1,13 @@ +-- Voidwalker +UPDATE `pet_levelstats` SET `hp`= 43285, `mana`= 23422, `armor`= 27943, `str`= 453, `agi`= 883, `sta`= 353, `inte`= 159, `spi`= 225 WHERE `creature_entry`= 1860 AND `level`= 85; +UPDATE `pet_levelstats` SET `hp`= 35908, `mana`= 19537, `armor`= 24957, `str`= 420, `agi`= 737, `sta`= 348, `inte`= 157, `spi`= 222 WHERE `creature_entry`= 1860 AND `level`= 84; +UPDATE `pet_levelstats` SET `hp`= 28531, `mana`= 15652, `armor`= 21970, `str`= 395, `agi`= 590, `sta`= 343, `inte`= 155, `spi`= 219 WHERE `creature_entry`= 1860 AND `level`= 83; +UPDATE `pet_levelstats` SET `hp`= 21155, `mana`= 11767, `armor`= 18984, `str`= 370, `agi`= 444, `sta`= 338, `inte`= 153, `spi`= 215 WHERE `creature_entry`= 1860 AND `level`= 82; +UPDATE `pet_levelstats` SET `hp`= 13778, `mana`= 7882, `armor`= 15997, `str`= 345, `agi`= 297, `sta`= 333, `inte`= 151, `spi`= 212 WHERE `creature_entry`= 1860 AND `level`= 81; + +-- Doomguard, Felhunter, Succubus and Imp +UPDATE `pet_levelstats` SET `hp`= 43285, `mana`= 23422, `armor`= 16083, `str`= 453, `agi`= 883, `sta`= 353, `inte`= 159, `spi`= 225 WHERE `creature_entry` IN (1863, 17252, 417, 416) AND `level`= 85; +UPDATE `pet_levelstats` SET `hp`= 35908, `mana`= 19537, `armor`= 15469, `str`= 420, `agi`= 737, `sta`= 348, `inte`= 157, `spi`= 222 WHERE `creature_entry` IN (1863, 17252, 417, 416) AND `level`= 84; +UPDATE `pet_levelstats` SET `hp`= 28531, `mana`= 15652, `armor`= 14854, `str`= 395, `agi`= 590, `sta`= 343, `inte`= 155, `spi`= 219 WHERE `creature_entry` IN (1863, 17252, 417, 416) AND `level`= 83; +UPDATE `pet_levelstats` SET `hp`= 21155, `mana`= 11767, `armor`= 14240, `str`= 370, `agi`= 444, `sta`= 338, `inte`= 153, `spi`= 215 WHERE `creature_entry` IN (1863, 17252, 417, 416) AND `level`= 82; +UPDATE `pet_levelstats` SET `hp`= 13778, `mana`= 7882, `armor`= 13625, `str`= 345, `agi`= 297, `sta`= 333, `inte`= 151, `spi`= 212 WHERE `creature_entry` IN (1863, 17252, 417, 416) AND `level`= 81; diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index e7c3df6f1b9..796c39d48be 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -83,6 +83,11 @@ enum MiscPetCalculate SPELL_PET_HEALTH_SCALING = 61679, }; +enum WarlockSpellIconId +{ + SPELL_ICON_ID_GLYPH_OF_VOID_WALKER = 217, +}; + class spell_warl_pet_scaling_01 : public AuraScript { PrepareAuraScript(spell_warl_pet_scaling_01); @@ -95,35 +100,35 @@ class spell_warl_pet_scaling_01 : public AuraScript { if (Player* owner = pet->GetOwner()) { - float stamina = std::max(0.0f, owner->GetStat(STAT_STAMINA) - owner->GetCreateStat(STAT_STAMINA)); - stamina *= 0.75f; + float stamina = owner->GetStat(STAT_STAMINA) * 0.6496f; float staminaBonus = 0.0f; - float maxHealthBonus = 0.0f; switch (pet->GetEntry()) { case ENTRY_IMP: - staminaBonus = uint32(stamina * 8.4f); - maxHealthBonus = owner->CountPctFromMaxHealth(30); + staminaBonus = stamina * 8.4f; break; case ENTRY_FELGUARD: case ENTRY_VOIDWALKER: - staminaBonus = uint32(stamina * 11.0f); - maxHealthBonus = owner->CountPctFromMaxHealth(50); + staminaBonus = stamina * 11.0f; break; case ENTRY_SUCCUBUS: - staminaBonus = uint32(stamina * 9.1f); - maxHealthBonus = owner->CountPctFromMaxHealth(40); + staminaBonus = stamina * 9.1f; break; case ENTRY_FELHUNTER: - staminaBonus = uint32(stamina * 9.5f); - maxHealthBonus = owner->CountPctFromMaxHealth(40); + staminaBonus = stamina * 9.5f; break; default: break; } - amount = int32(staminaBonus + maxHealthBonus); + float glyphBonus = 0.0f; + // Glyph of Voidwalker + if (pet->GetEntry() == ENTRY_VOIDWALKER) + if (AuraEffect* glyphEffect = owner->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, SPELL_ICON_ID_GLYPH_OF_VOID_WALKER, EFFECT_0)) + glyphBonus = CalculatePct(pet->GetCreateHealth() + staminaBonus, glyphEffect->GetAmount()); + + amount = int32(staminaBonus + glyphBonus); } } } @@ -194,8 +199,7 @@ class spell_warl_pet_scaling_02 : public AuraScript break; } - float ownerMana = CalculatePct(owner->GetMaxPower(POWER_MANA), 30); - amount = int32(ownerMana + manaBonus); + amount = int32(manaBonus); } } } @@ -526,7 +530,7 @@ class spell_hun_pet_scaling_01 : public AuraScript else if (pet->HasAura(SPELL_HUNTER_PET_CUNNING_MARKER)) mod = 0.725f; - float stamina = std::max(0.0f, owner->GetStat(STAT_STAMINA) - owner->GetCreateStat(STAT_STAMINA)); + float stamina = owner->GetStat(STAT_STAMINA); uint32 bonus = (stamina * mod) * 14.0f; amount = bonus; } @@ -1103,7 +1107,7 @@ class spell_mage_water_elemental_scaling_01 : public AuraScript { if (Player* owner = pet->GetOwner()) { - float stamina = CalculatePct(std::max(0.0f, (owner->GetStat(STAT_STAMINA) - owner->GetCreateStat(STAT_STAMINA))), 30); + float stamina = CalculatePct(owner->GetStat(STAT_STAMINA), 30); float staminaBonus = stamina * 7.5f; float maxHealthBonus = owner->CountPctFromMaxHealth(50);