Skip to content

Commit 42c969e

Browse files
Merge AzerothCore 3.3.5 to ElunaAzerothcore [skip ci]
2 parents f3c7c86 + 5b22c8f commit 42c969e

13 files changed

Lines changed: 52 additions & 74 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ local.properties
9595
.project
9696
.cproject
9797

98+
# vcpkg integration
99+
/vcpkg/
100+
/vcpkg-ports/
101+
98102

99103
# ==================
100104
#
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
-- DB update 2026_04_14_00 -> 2026_04_15_00
2+
-- Erekem Guards: add UNIT_FLAG_IMMUNE_TO_PC (0x100)
3+
UPDATE `creature_template` SET `unit_flags` = `unit_flags` | 0x100 WHERE `entry` IN (29395, 31513);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- DB update 2026_04_15_00 -> 2026_04_15_01
2+
3+
-- Set respawn time on 0 (17 - Force Despawn).
4+
UPDATE `smart_scripts` SET `action_param2` = 0 WHERE (`entryorguid` = 29686) AND (`source_type` = 0) AND (`id` IN (7));
5+
6+
-- Set Text Type on 12 (say).
7+
UPDATE `creature_text` SET `Type` = 12 WHERE (`CreatureID` = 29686) AND (`GroupID` = 0);

src/server/game/Entities/Unit/Unit.cpp

Lines changed: 19 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2238,20 +2238,11 @@ uint32 Unit::CalcArmorReducedDamage(Unit const* attacker, Unit const* victim, co
22382238
if (Player* modOwner = attacker->GetSpellModOwner())
22392239
modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_IGNORE_ARMOR, armor);
22402240

2241-
AuraEffectList const& ResIgnoreAurasAb = attacker->GetAuraEffectsByType(SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST);
2242-
for (AuraEffectList::const_iterator j = ResIgnoreAurasAb.begin(); j != ResIgnoreAurasAb.end(); ++j)
2243-
{
2244-
if ((*j)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL
2245-
&& (*j)->IsAffectedOnSpell(spellInfo))
2246-
armor = std::floor(AddPct(armor, -(*j)->GetAmount()));
2247-
}
2248-
2249-
AuraEffectList const& ResIgnoreAuras = attacker->GetAuraEffectsByType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST);
2250-
for (AuraEffectList::const_iterator j = ResIgnoreAuras.begin(); j != ResIgnoreAuras.end(); ++j)
2251-
{
2252-
if ((*j)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL)
2253-
armor = std::floor(AddPct(armor, -(*j)->GetAmount()));
2254-
}
2241+
// Apply ability-specific ignore target resist effects for physical damage (armor)
2242+
AuraEffectList const& targetIgnoreRes = attacker->GetAuraEffectsByType(SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST);
2243+
for (AuraEffect const* aurEff : targetIgnoreRes)
2244+
if (aurEff->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL && aurEff->IsAffectedOnSpell(spellInfo))
2245+
armor = std::floor(AddPct(armor, -aurEff->GetAmount()));
22552246

22562247
// Apply Player CR_ARMOR_PENETRATION rating and buffs from stances\specializations etc.
22572248
if (attacker->IsPlayer())
@@ -2399,8 +2390,6 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited)
23992390
return true;
24002391
});
24012392
damageResisted -= damageResisted * (mult - 1.0f);
2402-
mult = attacker->GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_IGNORE_TARGET_RESIST, schoolMask);
2403-
damageResisted -= damageResisted * (mult - 1.0f);
24042393
}
24052394

24062395
// pussywizard:
@@ -8986,21 +8975,15 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui
89868975
TakenTotalMod = 1.0f;
89878976
}
89888977

8989-
// xinef: sanctified wrath talent
8990-
if (caster && TakenTotalMod < 1.0f && caster->HasIgnoreTargetResistAura())
8978+
// Sanctified Wrath (bypass damage reduction)
8979+
if (caster && TakenTotalMod < 1.0f && caster->HasIgnoreTargetResistModifiersAura())
89918980
{
8992-
float ignoreModifier = 1.0f - TakenTotalMod;
8993-
bool addModifier = false;
8994-
AuraEffectList const& ResIgnoreAuras = caster->GetAuraEffectsByType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST);
8995-
for (AuraEffectList::const_iterator j = ResIgnoreAuras.begin(); j != ResIgnoreAuras.end(); ++j)
8996-
if ((*j)->GetMiscValue() & spellProto->SchoolMask)
8997-
{
8998-
ApplyPct(ignoreModifier, (*j)->GetAmount());
8999-
addModifier = true;
9000-
}
8981+
float damageModifier = 1.0f - TakenTotalMod;
8982+
for (AuraEffect const* aurEff : caster->GetAuraEffectsByType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST_MODIFIERS))
8983+
if (aurEff->GetMiscValue() & spellProto->SchoolMask)
8984+
AddPct(damageModifier, -aurEff->GetAmount());
90018985

9002-
if (addModifier)
9003-
TakenTotalMod += ignoreModifier;
8986+
TakenTotalMod = 1.0f - damageModifier;
90048987
}
90058988

90068989
float tmpDamage = (float(pdamage) + TakenTotal) * TakenTotalMod;
@@ -10448,21 +10431,15 @@ uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackT
1044810431
TakenTotalMod = 1.0f;
1044910432
}
1045010433

10451-
// xinef: sanctified wrath talent
10452-
if (TakenTotalMod < 1.0f && attacker->HasIgnoreTargetResistAura())
10434+
// Sanctified Wrath (bypass damage reduction)
10435+
if (TakenTotalMod < 1.0f && attacker->HasIgnoreTargetResistModifiersAura())
1045310436
{
10454-
float ignoreModifier = 1.0f - TakenTotalMod;
10455-
bool addModifier = false;
10456-
AuraEffectList const& ResIgnoreAuras = attacker->GetAuraEffectsByType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST);
10457-
for (AuraEffectList::const_iterator j = ResIgnoreAuras.begin(); j != ResIgnoreAuras.end(); ++j)
10458-
if ((*j)->GetMiscValue() & damageSchoolMask)
10459-
{
10460-
ApplyPct(ignoreModifier, (*j)->GetAmount());
10461-
addModifier = true;
10462-
}
10437+
float damageModifier = 1.0f - TakenTotalMod;
10438+
for (AuraEffect const* aurEff : attacker->GetAuraEffectsByType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST_MODIFIERS))
10439+
if (aurEff->GetMiscValue() & damageSchoolMask)
10440+
AddPct(damageModifier, -aurEff->GetAmount());
1046310441

10464-
if (addModifier)
10465-
TakenTotalMod += ignoreModifier;
10442+
TakenTotalMod = 1.0f - damageModifier;
1046610443
}
1046710444

1046810445
float tmpDamage = (float(pdamage) + TakenFlatBenefit) * TakenTotalMod;

src/server/game/Entities/Unit/Unit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1826,7 +1826,7 @@ class Unit : public WorldObject
18261826
[[nodiscard]] bool HasShapeshiftAura() const { return HasAuraType(SPELL_AURA_MOD_SHAPESHIFT); }
18271827
[[nodiscard]] bool HasDecreaseSpeedAura() const { return HasAuraType(SPELL_AURA_MOD_DECREASE_SPEED); }
18281828
[[nodiscard]] bool HasPacifyAura() const { return HasAuraType(SPELL_AURA_MOD_PACIFY); }
1829-
[[nodiscard]] bool HasIgnoreTargetResistAura() const { return HasAuraType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST); }
1829+
[[nodiscard]] bool HasIgnoreTargetResistModifiersAura() const { return HasAuraType(SPELL_AURA_MOD_IGNORE_TARGET_RESIST_MODIFIERS); }
18301830
[[nodiscard]] bool HasIncreaseMountedSpeedAura() const { return HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED); }
18311831
[[nodiscard]] bool HasIncreaseMountedFlightSpeedAura() const { return HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED); }
18321832

src/server/game/Scripting/ScriptDefines/PlayerScript.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ void ScriptMgr::OnPlayerSetServerSideVisibilityDetect(Player* player, ServerSide
917917
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_SET_SERVER_SIDE_VISIBILITY_DETECT, script->OnPlayerSetServerSideVisibilityDetect(player, type, sec));
918918
}
919919

920-
void ScriptMgr::OnPlayerResurrect(Player* player, float restore_percent, bool applySickness)
920+
void ScriptMgr::OnPlayerResurrect(Player* player, float restore_percent, bool& applySickness)
921921
{
922922
#ifdef ELUNA
923923
if (Eluna* e = player->GetEluna())

src/server/game/Scripting/ScriptDefines/PlayerScript.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ class PlayerScript : public ScriptObject
627627

628628
virtual void OnPlayerSetServerSideVisibilityDetect(Player* /*player*/, ServerSideVisibilityType& /*type*/, AccountTypes& /*sec*/) { }
629629

630-
virtual void OnPlayerResurrect(Player* /*player*/, float /*restore_percent*/, bool /*applySickness*/) { }
630+
virtual void OnPlayerResurrect(Player* /*player*/, float /*restore_percent*/, bool& /*applySickness*/) { }
631631

632632
// Called before selecting the graveyard when releasing spirit
633633
virtual void OnPlayerBeforeChooseGraveyard(Player* /*player*/, TeamId /*teamId*/, bool /*nearCorpse*/, uint32& /*graveyardOverride*/) { }

src/server/game/Scripting/ScriptMgr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ class ScriptMgr
443443
bool OnPlayerCanSetTradeItem(Player* player, Item* tradedItem, uint8 tradeSlot);
444444
void OnPlayerSetServerSideVisibility(Player* player, ServerSideVisibilityType& type, AccountTypes& sec);
445445
void OnPlayerSetServerSideVisibilityDetect(Player* player, ServerSideVisibilityType& type, AccountTypes& sec);
446-
void OnPlayerResurrect(Player* player, float restore_percent, bool applySickness);
446+
void OnPlayerResurrect(Player* player, float restore_percent, bool& applySickness);
447447
void OnPlayerBeforeChooseGraveyard(Player* player, TeamId teamId, bool nearCorpse, uint32& graveyardOverride);
448448
bool OnPlayerCanUseChat(Player* player, uint32 type, uint32 language, std::string& msg);
449449
bool OnPlayerCanUseChat(Player* player, uint32 type, uint32 language, std::string& msg, Player* receiver);

src/server/game/Spells/Auras/SpellAuraDefines.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ enum AuraType
329329
SPELL_AURA_266 = 266,
330330
SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL = 267,
331331
SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT = 268,
332-
SPELL_AURA_MOD_IGNORE_TARGET_RESIST = 269,
332+
SPELL_AURA_MOD_IGNORE_TARGET_RESIST_MODIFIERS = 269, // Sanctified Wrath, reduces effectiveness of a target's damage reduction effects like Shield Wall
333333
SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST = 270, // Possibly need swap vs 195 aura used only in 1 spell Chaos Bolt Passive
334334
SPELL_AURA_MOD_DAMAGE_FROM_CASTER = 271,
335335
SPELL_AURA_IGNORE_MELEE_RESET = 272,

src/server/scripts/Commands/cs_spellinfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ class spellinfo_commandscript : public CommandScript
494494
case SPELL_AURA_266: return "SPELL_AURA_266";
495495
case SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL: return "SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL";
496496
case SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT: return "SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT";
497-
case SPELL_AURA_MOD_IGNORE_TARGET_RESIST: return "SPELL_AURA_MOD_IGNORE_TARGET_RESIST";
497+
case SPELL_AURA_MOD_IGNORE_TARGET_RESIST_MODIFIERS: return "SPELL_AURA_MOD_IGNORE_TARGET_RESIST_MODIFIERS";
498498
case SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST: return "SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST";
499499
case SPELL_AURA_MOD_DAMAGE_FROM_CASTER: return "SPELL_AURA_MOD_DAMAGE_FROM_CASTER";
500500
case SPELL_AURA_IGNORE_MELEE_RESET: return "SPELL_AURA_IGNORE_MELEE_RESET";

0 commit comments

Comments
 (0)