Commit Graph

37621 Commits

Author SHA1 Message Date
Ovahlord
f75fdfef6f warning fix 2022-09-12 09:15:18 +02:00
ariel-
082121cb38 Core/Entities: cleanup of weapon damage
- ScalingStatDistribution/Value (ie heirlooms): apply bonuses in all cases, some calls used nullptr (like after disarm) and item wasn't regaining them
- AP multiplier wasn't correctly reflected after unequipping a weapon
- Correctly set base damages at unequip
2022-09-12 09:15:18 +02:00
ariel-
460c317399 Core/Spells: fix issues with delayed spells and auras
- Was losing info of delayed targets due to remove_if move-assigning targets, it needs to be saved into delayed target vector before returning from lambda
- Delayed auras applying on many targets are now handled gracefully
2022-09-12 09:15:17 +02:00
ariel-
427582b0f7 Core/Spells: only apply aura effects when needed. 2022-09-12 09:15:17 +02:00
ariel-
ae23b5d45a Core/Auras: fix nopch 2022-09-12 09:15:17 +02:00
ariel-
ee99e76fa9 Core/Auras: fix auras apply on player when loading. Fixes Ghost aura flags and player deathstate 2022-09-12 09:15:17 +02:00
ariel-
55577ad85b Core/Spells: Fix some issues with channeled spells and aura duration mods 2022-09-12 09:15:16 +02:00
ariel-
1725fa9006 Core/Entities: fix creatures ignoring immune flags. 2022-09-12 09:15:16 +02:00
ariel-
b3c8d78fa2 Core/Spell: fix SendSpellMiss requiring caster Unit 2022-09-12 09:15:16 +02:00
ariel-
c889b81f2c Core/Spell: fix target checks
- Aura will be applied at last moment possible (after damage) to prevent regressions on #18395
- Partial revert of 9b38a6352c as it wasnt handling correctly checks without spells
2022-09-12 09:15:15 +02:00
ariel-
5e6167ce46 Core/Spells: register and apply individual aura effects on hit handler
- Remove area aura processing from spell system, they're fully handled by aura owner update now
2022-09-12 09:15:15 +02:00
ariel-
9b54c3f842 Core/Spells: tweak 'neutral' spell positivity
- Fixes Mind Control dummy self aura appearing as a debuff
2022-09-12 09:15:15 +02:00
ariel-
1fe5563431 Core/Spells: Fix periodic rolling adding bonuses twice
Calculation is now done in CalculateAmount
2022-09-12 09:15:15 +02:00
ariel-
b6fac86b71 Core/Spells: rework part 5: GameObject casting 2022-09-12 09:15:14 +02:00
Ovahlord
c901772640 Core/Misc:
* applied character database updates for the caster depenency removal
* corrected implementation of SPELL_ATTR3_SUPPRESS_CASTER_PROCS and SPELL_ATTR3_SUPPRESS_TARGET_PROCS based on master branch
* removed a duplicate SpellAuraInterruptFlags::ActionDelayed removal call
2022-09-12 09:15:14 +02:00
ariel-
4bb8c93df8 Core/Spells: rework part 4: iterate over effects first
Implement far spell queue processing

# Conflicts:
#	src/server/game/Spells/Spell.cpp
2022-09-12 09:15:13 +02:00
ariel-
3fbbea61bd Core/Spells: rework part 3: spells only handle at most one UnitAura and one DynObjAura during its lifetime
# Conflicts:
#	src/server/game/Spells/Auras/SpellAuras.h
2022-09-12 09:15:13 +02:00
ariel-
98a988a77a Core/Spells: rework part 2: Split up target selection logic
Target check only determines what kind of entities we can target, spell positivity determines if that entity is valid for attack/assist
2022-09-12 09:15:13 +02:00
ariel-
95bc5dcc40 Core/Spells: rework part 1: Improved positive detection logic
# Conflicts:
#	src/server/game/Spells/SpellInfo.cpp
2022-09-12 09:15:12 +02:00
Ovahlord
36b5e120af build fix 2022-09-12 09:15:12 +02:00
ariel-
2baddd4393 Core/Auras: remove too strict checks in area auras, since a few aren't owned by its caster 2022-09-12 09:15:12 +02:00
Ovahlord
3e89f6c8e3 Core/Scripts: remove hack that caused aura to not be applied and saved twice on owned auras, causing an error on save
- This is handled by group stack rules actually
- Also reset removed aura counter when cleaning removed auras
2022-09-12 09:15:12 +02:00
ariel-
6640641cce Core/Auras: restrict target map update only to area auras as player requires to have auras registered on load 2022-09-12 09:15:12 +02:00
ariel-
e23f4e38cf Core/Auras: skip target map update for one world tick if owner is not yet in world 2022-09-12 09:15:11 +02:00
ariel-
9f9f3fa24f Core/Auras: make area and dynauras condition compliant by using the spellarea searcher instead of script searchers 2022-09-12 09:15:11 +02:00
ariel-
3bfa32d15b Core/Unit: kill unused parameter from SpellxxxBonusTaken 2022-09-12 09:15:11 +02:00
ariel-
6024b7b4fb Core/Unit: corrected calculation for SPELL_AURA_MOD_DAMAGE_TAKEN/SPELL_AURA_MOD_HEALING auras
- Spell bonus calculation and penalty was done twice, but it's simply flat +SP, which should be taken into account before other bonuses
- Fixed missing code from SpellDamageBonusDone/SpellHealingBonusDone and killed multiplication by stack amount twice for default coefficient spells (already multiplied on level penalty)
2022-09-12 09:15:11 +02:00
ariel-
c81f48197d Core/Spells: calculate crit chance only for spells that do damage/healing 2022-09-12 09:15:10 +02:00
ariel-
dc46f0621b Core/Spells: remove 'Vanish Purge' hack, the spell is present on DB and is copy of one in vanilla DBC
Thanks to killerwife for the heads-up
2022-09-12 09:15:10 +02:00
Ovahlord
cecaedfb80 Scripts/Misc: added a few pointer checks in JustDied hook overrides 2022-09-12 09:15:10 +02:00
ariel-
64b9b1c28b Core/Spells: kill unused parameter from Spell constructor 2022-09-12 09:15:10 +02:00
ariel-
0d6840ee7f Core/Spell: killed deprecated code which randomly changed powercost for missed spells 2022-09-12 09:15:09 +02:00
ariel-
80ab03a8af Core/Player: only call _ApplyWeaponDamage for actual weapons 2022-09-12 09:15:09 +02:00
Ovahlord
2b9d976ed1 fixed build 2022-09-12 09:15:09 +02:00
ariel-
276d6e49f1 Core/Entities: killed Creature::SetInCombatWithZone and replaced with AI version
Closes #12108 (again)

(cherry picked from commit 7c9722a4ae)

# Conflicts:
#	src/server/game/AI/SmartScripts/SmartScript.cpp
#	src/server/game/Entities/Creature/Creature.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
#	src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
#	src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
#	src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
#	src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
#	src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
#	src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
2022-09-12 09:15:09 +02:00
Ovahlord
4e3c6bcf6a DB: added a missing spell script name from a cherrypick 2022-09-12 09:15:08 +02:00
Ovahlord
30e219bfa1 Core/Entities: don't allow client control if player is still affected by any lose of control state 2022-09-12 09:15:08 +02:00
ariel-
0f69e644d2 Core/PlayerAI: perform cast checks on auto ranged attack 2022-09-12 09:15:08 +02:00
ariel-
c9e732b0bf This hook modifies damage AFTER it has been reduced by target auras/armor/resistances etc, it's useful if you want to scale damage by a factor, but not to add flat bonuses.
We're fixing those by moving calculation to Launch phase, where target taken bonuses haven't been used yet.

- Bronjahm: Magic's Bane
- BPC: Shadow Prison
- Oculus: Shock Lance
- Ymiron: Dark Slash (extra fix, it was wrongly damaging half of total health, it's supposed to be half of CURRENT health!)
- DK: Raise Ally Thrash spell (also extra fix: corrected formula)
- Warrior: Bloodthirst (shouldn't matter much as it's damage class none and those don't get bonuses by default)
- Warrior: Concussion Blow
- Warlock: extra fix for Haunt, healing part shouldn't scale with spell power
2022-09-12 09:15:08 +02:00
Ovahlord
b4f9844ce0 Scripts/Misc: added a few more nullptr checks in DamageTaken hooks 2022-09-12 09:15:07 +02:00
ariel-
51045c3b50 Core/Scripts: added nullptr checks to DamageTaken hooks
Since cb9e72e521 attacker may not be in world when hook is called

(cherry picked from commit 0db5c2df3f)

# Conflicts:
#	src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
#	src/server/scripts/World/npcs_special.cpp
2022-09-12 09:15:07 +02:00
Ovahlord
1c09965c0f fixed another cherrypick typo 2022-09-12 09:15:07 +02:00
Ovahlord
5ff7fda516 resolved a cherrypick mistake 2022-09-12 09:15:07 +02:00
ariel-
8054d99c8a Core/Scripts: fix some spells double dipping from done/taken bonuses 2022-09-12 09:15:07 +02:00
ariel-
7f587d988c Core/Auras: fix static analysis issues
CID 1384433
CID 1384436
2022-09-12 09:15:06 +02:00
ariel-
5d8fc591ed Core/Unit: fix mess-up with CalcArmorReducedDamage parameter order 2022-09-12 09:15:06 +02:00
ariel-
29fddba8fd Core/Entities: Port some refactors from f1986c6aaf 2022-09-12 09:15:06 +02:00
ariel-
6fc5bfcd08 Core/Unit: fixed crash 2022-09-12 09:15:05 +02:00
ariel-
fd228f6c41 Core/Unit: simplified and arranged spell bonus calculation 2022-09-12 09:15:05 +02:00
ariel-
a804af7219 Core/Spell: SpellValueOverrides encapsulation
- No sense to let scripts use SpellValueOverrides, we already have modifiers in CastSpellExtraArgs struct
2022-09-12 09:15:04 +02:00