Commit Graph

1460 Commits

Author SHA1 Message Date
ariel-
4d14f613f3 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)
2018-02-12 16:52:59 -03:00
ariel-
52873a7072 Core/Spells: calculate crit chance only for spells that do damage/healing
Refs #18813
2018-02-12 00:21:26 -03:00
ariel-
2d2c43f4b9 Core/Spells: fix SPELLMOD_DAMAGE application order for melee spells
Closes #20597
2018-02-04 21:28:15 -03:00
Shauren
21ad8761e9 Core/Spells: Exclude spells with no MaxLevel from coefficient downranking penalty 2018-01-27 13:06:48 +01:00
Shauren
2ab4e6c7aa Core/Spells: Fixed downranking coefficient penalty formula
Closes #21318
2018-01-27 12:19:18 +01:00
ariel-
e315e41d36 Core/Entities: don't allow client control if player is still affected by any lose of control state 2018-01-22 14:13:46 -03:00
ariel-
514c847881 Core/Unit: fixed Global cooldown cancelation on spell interrupt
Thanks to Nyeriah for the heads up
2018-01-22 03:55:14 -03:00
ariel-
4402f71eb7 Core/Spells: fix Spirit of Redemption
- Who would have suspected GetAuraEffect (iconId override) did a check against null spellfamilyflags?
- Remove mirror timers hack (triggered spell already allows underwater breathing)
2018-01-21 21:18:02 -03:00
Treeston
2c86c78f04 Core/Unit: Remove a superfluous threat state update in SetPhaseMask. 2018-01-21 15:34:39 +01:00
joschiwald
5f54149107 Core/Battleground: Dropped battleground texts from trinity_string and replaced them with proper BroadcastText
(cherry picked from commit ed318fdc46)

Fixed nopch build
(cherry picked from commit 6eff69818b)

Fixed nopch build again
(cherry picked from commit 3039f4bf86)
2018-01-21 13:41:02 +01:00
ariel-
9f5d1e2b10 Core/Scripts: fix wrong uses of SetHitDamage hook.
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

Closes #9560
2018-01-20 21:09:22 -03:00
ariel-
fa3eb754cb Core/Unit: fixed Lava Burst crit when Flame Shock is present on target
Closes #21268
2018-01-20 00:15:48 -03:00
ariel-
ccf0807be0 Core/Unit: check remaining instead of full duration for Bounced by DR auras 2018-01-16 20:51:07 -03:00
ariel-
01537e1dfb Core/Unit: fix mess-up with CalcArmorReducedDamage parameter order 2018-01-14 17:19:26 -03:00
ariel-
46fcbb42d2 Core/Unit: fix typo 2018-01-14 09:30:42 -03:00
ariel-
f1986c6aaf Core/Entities: implement secondary damage for some weapons and removal of old voodoo
- Fixed correct Retaliation damage spell according to sniffs is 20240
- CalcArmorReducedDamage insisted on dealing a minimum of 1 damage even if damage was 0
- CalculateDamage was zero-phobic too: it defaulted to arbitrary max 5 damage

Closes #19081
2018-01-14 09:23:34 -03:00
ariel-
688e96fb4f Core/Unit: allow miss chance to exceed 60% cap with certain auras 2018-01-13 23:33:40 -03:00
ariel-
0e9b1635e0 Core/Unit: fix Sanctified Wrath (again)
- Actually only rank 1 was affected because of 50% reduction on rank 2
2018-01-13 21:59:20 -03:00
ariel-
22b24d8dae Core/Unit: fixed crash
Closes #21231
2018-01-13 21:36:06 -03:00
ariel-
d570e2af3e Core/Unit: simplified and arranged spell bonus calculation
- Remove duplicated SPELLMOD_BONUS_MULTIPLIER handling (both on done and taken)
- Handle properly bonus data, don't apply bonus by default, only player spells should take into account spell power
- Moved Earthliving Weapon coefficient to DB
- Refactored Avenging Wrath handling

Closes #13287
Closes #21230
2018-01-13 20:49:44 -03:00
ariel-
3b01cccd7e Core/Spell: SpellValueOverrides encapsulation
- No sense to let scripts use SpellValueOverrides, we already have modifiers in CastSpellExtraArgs struct
2018-01-13 20:49:43 -03:00
ariel-
cb9e72e521 Core/Auras: removed caster dependency from core
- Decoupled Unit logic: split of spell critical chance into done (caster bonuses) and taken (target bonuses), this allows to precalculate caster bonuses on aura apply and then check victim's auras on damage/healing calc
- Made static a bunch of methods (they no longer have this pointer because they are now called from periodic handlers which may or may not have an active caster in world)
- Simplified all AuraEffect bonuses into AuraEffect::_amount, no more duplicated code
- Critical chance and whether or not caster is player owned unit (for resilience calcs) is now saved one level upper, on Aura itself (it's impossible as of 3.3.5 to have different effects with different critical chances)
- Minor cleanup of SPELL_DAMAGE_CLASS_NONE and Arcane Potency (#18813) crit handling

Closes #19876
2018-01-13 06:45:21 -03:00
ariel-
f50a333418 Core/Misc: kill whitespace 2018-01-12 00:07:29 -03:00
Treeston
d9c772303c Core/Unit: Abide UNIT_FLAG2_DISABLE_TURN on creatures. Add that flag to Kologarn (from sniff). Hi sirikfoll. 2018-01-10 00:19:00 +01:00
xinef1
23823f5147 Core/Spells: Defined and implemented some new spell attributes (#18950) 2018-01-08 20:31:21 +01:00
Treeston
fdacf12739 Core/Combat: Some more sanity check asserts to try and track down #21187.
Also, some anti-annoyance treatment for dot tele.
2018-01-06 01:40:31 +01:00
Treeston
532ab1c7f8 Core: Combat/threat system rewrite (PR #19930)
- PvE combat is now always mutual. UNIT_FLAG_IN_COMBAT is backed by actual references to the units we're in combat with.
- PvP combat is now also tracked, and almost always mutual; spells like Vanish and Feign Death can break this rule. That means we can easily determine a list of players we're fighting.
- By extension, IsInCombatWith now has sensible behavior when invoked on nonplayers.
- Threat and combat systems are no longer the same.
  - They still have an enforced relationship (threat implies combat - clearing combat clears threat)...
  - ...but we can have combat without threat. A creature (with threat list) isn't considered to be engaged until it has an entry on its threat list...
  - ...which means we can now faithfully replicate retail engage behavior. Combat on projectile launch - engagement start on projectile impact. Yay for progress!
- AI method refactor, as already ported in 6113b9d - `JustEngagedWith`, `JustEnteredCombat` and `JustExitedCombat`.
- Vehicle threat is now properly pooled on the main vehicle body (fixes #16542).
- Various edge case bug fixes for threat redirects (Misdirection "cancelling" Vigilance and similar).
- Target re-selection is now significantly faster.
- Fixed a ton of other smaller edge case bugs, probably.

Closes #7951 and #19998.
2018-01-03 20:04:19 +01:00
ariel-
5e284d4b38 Core/Entities: fix crash
- m_currentSpells and spell would be different in case cancelation of a channeled spell would remove the aura, and aura scripted to cast another channeled spell on remove
- In the above situation, we would lose reference of currentSpell and remove reference from wrong one, this was fixed by clearing the pointer before spell cancelation.

Closes #20172
2018-01-01 17:18:00 -03:00
tkrokli
f6b6f57a6d Update copyright note for 2018
Best wishes for the new year.
2018-01-01 01:55:29 +01:00
Treeston
6113b9dec2 Core/AI: Some more refactoring prep for #19930. CreatureAI::EnterCombat is now called CreatureAI::JustEngagedWith. There's also two new methods on UnitAI, though they're never invoked right now. 2017-12-31 03:23:42 +01:00
Treeston
d507a7e338 [3.3.5] CastSpell unclusterfucking (that's a word now) (#21123)
Core/Spell: The giant CastSpell unclusterfucking (that's a word now) of this generation.

- CastSpell now always takes three arguments - target, spellId, and a struct containing extra arguments
- This struct (CastSpellExtraArgs, see SpellDefines.h) serves as a conglomerate of every previous combination of the 20 billion different CastSpell overloads, all merged into one
  - It has some great utility constructors - check them out! All of these can be used to implicitly construct the ExtraArgs object.
- A gajillion refactors to make everything behave the way it always has
2017-12-30 20:28:41 +01:00
Jeremy
e42903ec16 Core/Entities: Fix some weird movement due to los issues (#21125)
* Core/Entities: Fix some weird movement due to los issues
- Made LoS check use collisionHeight instead of midsection. Value was too low.
- Gnomes will now have a breath bar more quickly than for example a tauren.
- Changes have been made to checking for ground z as well, some tweeking might be needed but removed most of the scattered +2.0f/+0.5f/we
* Add 0.05f to isInAir check in Creature::UpdateMovementFlags
2017-12-29 22:32:07 +01:00
jackpoz
ad56299846 Core/Misc: Fix static analysis issues 2017-12-25 16:34:36 +01:00
jackpoz
12701cb0c6 Core/Misc: Replace time(NULL) with GameTime::GetGameTime() 2017-12-24 22:50:59 +01:00
ariel-
5e2c5a52cd Core/Spell: implement SPELL_FAILED_AURA_BOUNCED on DR spells
Closes #13695
2017-12-21 02:25:04 -03:00
Léo Gautheron
e96cf0b242 Core/Unit: make neutral guards attack players involved in PvP
Fix https://github.com/TrinityCore/TrinityCore/issues/17635
2017-12-17 15:29:30 +01:00
ariel-
484c681e43 Core/Entities: fixed rage gain from attacking script-invincible targets
Closes #3856
2017-12-16 21:04:20 -03:00
ariel-
3722a96f4f Core/Spells: allow auras to proc from partial blocks
Closes #21065
2017-12-16 06:04:14 -03:00
ariel-
5d91beb1db Core/Auras: periodics refactor part 1:
- Don't skip ticks if diff is greater than amplitude
- Fixed spells without ampltude in DBC
2017-12-15 00:25:58 -03:00
Golrag
95456ab5d8 Core/Entities: Some changes to LoS z checking & MotionMaster::MoveJumpTo (PR #20970)
- Use Midsection height for LoS checking.
- Changed MotionMaster::MoveJumpTo to use correct z. This change also makes sure the _owner will jump towards the given angle. Instead of jumping to a unintended angle if the first one is not in LoS.
2017-12-14 16:56:30 +01:00
Ovah
869affa893 Core/Creatures: Implemented extra flag to use offhand attacks (#21008)
* Fixed initial offhand attack timer so the main and offhand attacks will now act blizzlike instead of getting executed at the same time

Note: since some creature equipment items cannot be identified as weapon since they are only visual items there is no way to detect this automaticly
2017-12-07 17:41:11 +01:00
ccrs
e10d7dd45c Core/Misc: waypoint movement
- Creature: update current waypoint to store nodeId and pathId
- MotionMaster: change variable type on GetMotionSlotType and GetMotionSlot to keep consistency and prevent errors (ASSERT is now no longer needed)
- UnitAI: add new waypoint hooks WaypointPathStarted and WaypointPathEnded
- SAI: handle WAYPOINT related events if creature is no escorting
* SMART_EVENT_WAYPOINT_RESUMED still not implemented for no escorting

TODO: the new hooks can save, now duplicated, logic on EscortAI and SAI

closes #20777
updates #20310
updates 21bd52cb99
2017-11-06 22:19:23 +01:00
Treeston
1f57d1ac67 Core/Creature: Fix an oversight in Creature::SelectVictim that was causing creatures to evade when chased by another creature from outside their own aggro range. Closes #19998. 2017-08-22 13:08:08 +02:00
ccrs
7fff83d675 Core/Movement: waypoint movement (#20121)
Following the work done in #19361 this is the cleanup and improvement of the related logic of waypoint management.

Ref 28050f3 #18020
(taking the good parts and ignoring the incomplete work)
2017-08-12 01:40:25 +02:00
Keader
26b6422ded Revert "Core/Npc: Remove bytes1 once the npc start a combat"
This reverts commit 21b03e7d9b.
2017-08-07 21:55:27 -03:00
Treeston
2644fa703a Core/Unit: Don't apply liquid effects to game masters. 2017-08-03 19:38:15 +02:00
Killyana
21b03e7d9b Core/Npc: Remove bytes1 once the npc start a combat
Closes #16832
By Rushor
2017-07-22 09:09:16 +02:00
jackpoz
9cf4dd7345 Core/Misc: Fix static analysis issues 2017-07-16 18:20:29 +02:00
treeston
74af880217 Hi, I'm Treeston, and welcome to Combat PR Prep Refactors.
Today, we're moving UNIT_FLAG_IMMUNE_TO_PC and UNIT_FLAG_IMMUNE_TO_NPC to higher-level abstraction so combat manager can react to it.
New methods on Unit:
- void SetImmuneTo<All/PC/NPC>(apply, keepCombat = false);
- bool IsImmuneTo<All/PC/NPC>() const;
2017-07-09 02:07:29 +02:00
Treeston
e2a1ccd118 [3.3.5] Combat/Threat rewrite - prep & refactor (#19966)
* Combat/Threat rewrite (PR #19930) prep work. Mostly refactors, and a compatibility layer on ThreatManager/HostileReference that allows scripts to be changed already.
2017-07-01 20:18:02 +02:00