Commit Graph

693 Commits

Author SHA1 Message Date
ariel-
ee6d1d02c0 Core/Spell: kill old charge restoring system. Mods are fully handled by proc system now.
- Fixes an edge case of spell failing due to out of range and re-adding charges to an existing aura.
2016-12-30 15:59:59 -03:00
xinef1
464d3ad5d0 Core/Spell: Fixed bug where spell could fail to hit a target properly even if all conditions were met (#18596) 2016-12-30 13:41:47 -03:00
ariel-
27fb5fc16d Core/Spell: reverted stun aura handling
Partial revert of 50a3ce5703

Closes #18487
Closes #18490
Closes #18497
2016-12-28 23:38:03 -03:00
ariel-
a7e136f9e3 Core/Spell: fix for hitmask being ignored in finish phase procs 2016-12-15 11:24:48 -03:00
ariel-
3a52ad8d38 Core/Entities: Replace existing GetAuraEffectsByType + iteration uses with proper helper functions 2016-12-13 02:18:06 -03:00
ariel-
f0772eea98 Core/Spell: implemented dispel reflection
Closes #18323
2016-12-11 15:08:01 -03:00
ariel-
01d272d6cb Core/Spell: improved immunity logic for dispels
- Fixes dispel magic removing immunity spells (Divine Shield for example). Ref issue #18370
2016-12-11 15:08:00 -03:00
ariel-
77a08ad73c Core/Spell: Undefined SPELL_ATTR7_USABLE_IN_STUN_FEAR_CONFUSION attr for now
- Some function renames
- Used in some client checks but not 100% sure of its usage (eg in CGUnit_C::CheckAndReportSpellInhibitFlags but not in  Spell_C::IsUsableAction)

Closes #18366
2016-12-10 00:38:00 -03:00
ariel-
343419ab99 Core/Spells: fix a pretty edge case of creatures being put in combat by evaded spells
Closes #18369
2016-12-01 02:14:29 -03:00
ariel-
61a4e08e1e Revert "Core/Spell: add EquipedItemClass/EquippedItemSubClass check to passive spell casts"
This reverts commit f188ff1ce4.

Was breaking Titan's Grip.
Spells are loaded before items, and they CAST the spell on the player.
When items are then loaded, Player::ApplyItemDependentAuras only has AddAura on it. Titan's Grip is an effect, no auras involved.

In turn reverting this commit will now allow Two-handed weapon specialization and similar from spells load. Which is the lesser of two evils.
2016-11-20 03:34:20 -03:00
ariel-
f188ff1ce4 Core/Spell: add EquipedItemClass/EquippedItemSubClass check to passive spell casts
- Was adding auras on login that didn't satisfy requirements (like Two-Handed Weapon Specialization)
2016-11-20 02:39:14 -03:00
ariel-
5b56c94e6d Core/Spell: restore old proc system behaviour on auras self proc.
- Use Spell::m_triggeredByAuraSpell and compare against trigger aura, it requires scripts to set triggeredByAura parameter.
- Fixed existing scripts lacking it

DB/Spell: Anger Capacitor (Tiny Abomination in a Jar) proc

Closes #18269
2016-11-19 03:05:44 -03:00
ariel-
ca1c4525c7 Core/Unit: damage immune improvements (9f5df023b7 follow up)
- Handling checked in sniffs: Spell 63710 Void Barrier vs 49143 Frost Strike
  * Send spell miss immune only if spell consists of damage effects
- Checked with 348 Immolate:
  * No packets sent if damage immune, aura is applied normally

Also... who the fuck uses 0 to compare against pointers
2016-11-15 22:39:15 -03:00
ariel-
9f5df023b7 Core/Unit: don't use damage immunity to calculate hit result for the whole spell. Should be used only for damage 2016-11-14 20:40:17 -03:00
ariel-
425f6c3c34 Core/Spell: perform charmer check against player controlling unit. Fixes spellcasts while charmed 2016-11-14 15:22:41 -03:00
ariel-
1ad9c7d3fd Core/Spell: fix typo
Closes #18248
2016-11-14 13:59:32 -03:00
ariel-
5daabe303e Core/Spell: do not fail triggered Charge effects in case a root is present.
Fixes Master's call when pet is rooted
2016-11-14 02:12:35 -03:00
ariel-
fd3423245c Core/Spell: use SpellEntry to select implicit targets in case RadiusEntry wasn't set for the current effect.
Closes #15388
2016-11-14 02:06:33 -03:00
ariel-
cbb5c073ce Core/ScriptMgr: use vector instead of list to contain Spell and Aura scripts and hooks 2016-11-14 02:05:51 -03:00
ariel-
50a3ce5703 Core/Spell: revamp of immunities system
- Spell attributes research
- Container optimization
- Do not skip damage immunity checks on SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY present
- Added additonal arguments support to SendCastResult / CheckCast, spells can now send proper error messages
- Loads spell immune masks/states/effects at startup.
- This cached info is used whenever a spell cast requires immunities to be known beforehand (to see if an aura could be applied for example)

Closes #16658
Closes #16901
Closes #18114
2016-11-12 17:58:00 -03:00
ariel-
5cb8409f1e Core/Spell: move attribute helpers to spellInfo
- Renamed CheckEffectExecuteData to AssertEffectExecuteData and made const, better reflects its purpose
- Added missing attribute check to IsNextMeleeSwingSpell
- Reworked SPELL_ATTR4_CAST_ONLY_IN_OUTLAND attr check (researched behavior)
2016-11-12 17:12:42 -03:00
ariel-
b3a4815067 Core/Spells: workaround stealth interaction with Death and Decay and GameObject casts
Closes #10179
Closes #16154
2016-10-30 00:16:45 -03:00
ariel-
bea0c01964 Core/Spells: moved handling of SPELL_ATTR0_CU_DONT_BREAK_STEALTH inside proc system.
Fixes additional issues with spells that shouldn't be breaking stealth and had this attribute
2016-10-25 22:10:55 -03:00
ariel-
5c1dfce168 Core/Spell: do positivity spell checks only against actually hitted effects instead of the whole spell
Closes #18097
2016-10-18 21:00:17 -03:00
ariel-
2d0fb356de Core/Spell: clear auras of channeled spells if channeling is cancelled due to invalid targets (dead or w/e)
Closes #14859
Closes #15186
2016-10-17 04:33:36 -03:00
ariel-
9b0fa51022 Core/Globals: compute aura diminishing return info at startup and cache it
Core/Entities: Save diminish return on an array instead of a linked list
2016-10-17 01:52:40 -03:00
Shauren
1c7f099297 Core/Items: Defined all item flags
(cherry picked from commit ef29f32965)
2016-10-11 19:46:29 -03:00
ariel-
4cdbc1a09b Core/Spell: Fix 2 more off by one probability calc and duplicated logic in spell hit roll 2016-10-09 20:18:07 -03:00
ariel-
d078029124 Revert "Core/Unit: prevent m_extraAttacks underflow. Fixes a freeze with SPELL_EFFECT_ADD_EXTRA_ATTACKS"
This reverts commit f09e7cbbfe.
2016-10-07 12:50:08 -03:00
ariel-
f09e7cbbfe Core/Unit: prevent m_extraAttacks underflow. Fixes a freeze with SPELL_EFFECT_ADD_EXTRA_ATTACKS 2016-10-05 22:46:26 -03:00
ariel-
b5e8e0a5db Core/Auras: reset periodic aura timers by default. Except when aura comes from triggered spell
Closes #17961
2016-10-05 03:10:05 -03:00
ariel-
d9e4c8e04f Core/Spells: add Target Processing (SMSG_SPELLLOGEXECUTE) to LAUNCH_TARGET phase.
Move EffectInterruptCast to LAUNCH_TARGET Phase.

Closes #3718
Closes #6042
2016-10-04 23:35:50 -03:00
ariel-
e641d0c7d7 Core/Spells: Implementation of QAston proc system
- Move checks from Unit::IsTriggeredAtSpellProcEvent (old system) to Aura::IsProcTriggeredOnEvent (new system)
- Templatize SpellModOp param of Player::ApplySpellMod, also killed charge counter from SpellModifier and Player system for handling charges... no point in having 3 different systems doing the same thing
- Automatically add default entries to spellProcMap, based on spellinfo (else auras won't proc without an entry) Based on old Unit::ProcDamageAndSpellFor
- Old Unit::ProcDamageAndSpellFor renamed to Unit::ProcSkillsAndReactives and made private, will no longer handle auras.
- Start making use of HealInfo::AbsorbHeal in unit calculations, add effective healing info to HealInfo struct
- Changes in spell reflection system, emulates old behaviour, delaying aura drop
- Removed old charge count hacks in SpellMgr::LoadSpellInfoCorrections
- Removed bogus error log when procChance is 0: Some auras have initial 0 procChance but modified by SPELLMOD_CHANCE_OF_SUCCESS
- Fixed TriggerAurasProcOnEvent logic that tried to trigger twice from actor.
- Allow non damaging spells with DamageClass Melee or Ranged to proc character enchants. Ref issue #17034:

  * http://web.archive.org/web/20110309092008/http://elitistjerks.com/f47/t49865-paladin_retribution_pve/
  * When an auto-attack lands (does not dodge/parry/miss) that can proc a seal the of the following things happen independently of each other (see 2 roll system).

  * 1) A "hidden strike" which uses melee combat mechanics occurs. If it lands it refreshes/stacks SoV DoT. Only white swings can trigger a refresh or stack. (This hidden strike mechanic can also proc things like berserking..)
  * 2) A weapon damage based proc will occur if you used a special (CS/DS/judge) or if you have a 5 stack (from auto attacks). This attack can not be avoided.

  * Holy Vengeance is the "hidden strike" it has an apply aura effect and damage class melee.
- Fixed Blood Tap interaction with Death Runes (btw, don't know what was going on with those MiscValueB, spell 45529 doesn't have any MiscValueB in SPELL_EFFECT_ACTIVATE_RUNE)
- Ported some AuraEffect checks from old Unit.cpp function. added new AuraScript hook to check procs of an specific effect
- Allow only AuraEffects that passed the check to proc, this won't block whole aura from proccing (and lose charges) if at least one of the effects procs, though
- Changes in spell mod system (for SPELLMOD_CASTING_TIME). fixes #17558.
- Added an exception for SPELLMOD_CRITICAL_CHANCE too, fixes #15193
2016-10-04 20:21:55 -03:00
joschiwald
625ca6ec1c Core/Spells: fixed SPELL_ATTR5_USABLE_WHILE_STUNNED 2016-10-02 23:32:14 +02:00
ariel-
03e21d2fad Core/Spells: Implemented SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT.
Closes #1765
2016-10-02 00:24:47 -03:00
joschiwald
8024ae4d26 Core/Spells: use spellinfo helper methods
(cherry picked from commit 12a52595ed)
2016-10-02 00:25:21 +02:00
ariel-
08e0390d95 Core/Spell: do not cast interrupt effect if the spell did not hit 2016-09-12 12:41:02 -03:00
ariel-
746b838870 Core/Spells / Scripts: Fix Lock and Load. Closes #16731 2016-09-04 04:21:04 -03:00
ariel-
4829cca9fb Core/Spell: no need to bloat existing parameter lists. (f81754a306 follow up) 2016-09-02 03:59:14 -03:00
ariel-
f81754a306 Core/Spells: register SPELLMOD_CRITICAL_CHANCE in casting spell modifiers. 2016-09-01 01:34:17 -03:00
ariel-
3aa145cbe1 Core/Spells: Remove spellmods from SpellMod owner instead of caster (needed so pet casts properly remove aura charges) 2016-09-01 01:14:02 -03:00
ariel-
11f6801a5c Core/Spells: fix Bullheaded immunities
Closes #421
2016-08-31 23:12:57 -03:00
Shauren
39311e0ce8 Typo fix 2016-08-21 18:40:06 +02:00
mik1893
6d07fbf07c Core/Spells: Fixed spells like Shadowform, Tricks of the Trade, Misdirection getting stuck in unusable state clientside if they failed earlier because of GCD
Closes #657
Closes #12913
Closes #17376
2016-08-21 11:32:42 +02:00
Treeston
6f85422f0b Core/Spells: Fix orientation- and targeting-related issues if the creature isn't currently engaged in combat. (#17120)
Also disable spell focus system for vehicle control auras.

Closes #16572
Closes #17016
2016-08-21 11:07:38 +02:00
Treeston
8deda7ed7f Entities/Unit: Cleanup refactor. Changes: (#17819)
+ Unit::m_movedPlayer -> Unit::m_playerMovingMe
+ Player::m_mover -> Player::m_unitMovedByMe
+ Unit::GetMover() -> Unit::GetUnitBeingMoved()
+ Unit::GetPlayerMover() -> Unit::GetPlayerBeingMoved()
+ NEW: Unit::GetClientControllingPlayer()
2016-08-20 12:43:04 +02:00
Chaouki Dhib
333a3e05f6 Core/Spells: Fixed extended spell range while moving Closes #17818 (#17824)
Cherry pick of 10e0f4ff8f
Closes https://github.com/TrinityCore/TrinityCore/issues/17818
2016-08-20 00:25:30 +01:00
Chaouki Dhib
d7600f1126 Core/Units: Fixed melee range check (#17693)
* Split Spell::CheckRange() into 2 methods since that method had more than one responsibility.
* Moved melee range logic into its own function
* Moved melee range logic method GetMeleeRange from Spell to Unit class. Unit::IsWithinMeleeRange() and Spell::GetMinMaxRange() both use that method.
2016-08-15 18:17:07 +02:00
treeston
837caa0534 Merge remote-tracking branch 'Treeston/3.3.5-spellcastresult' into 3.3.5 (PR #17112) 2016-08-03 10:52:11 +02:00
treeston
03bef35500 Core/Spell: Quick readability change. Functionality not altered. 2016-07-20 15:23:14 +02:00