Commit Graph
617 Commits
Author SHA1 Message Date
Ovahlord e07f4f9dc2 Core/Units: dbe3bbefe734f8824e8f07c302e256f0d446b974 followup 2020-07-22 18:06:24 +02:00
Treeston 7df7dcca7d Core/Threat: Threat system adjustments:
* Online states are now re-evaluated before victim update instead of continuously. Closes #22226. Tagging #21501.
* Victim update now happens every 1s as opposed to every server tick unless current target goes away.
* Suppressed threat is no longer re-established until the victim gains additional threat (by hitting the target, for instance).
* Assistance threat is now split between non-controlled units threatened by target, as opposed to all units threatened by target.

# Conflicts:
#	src/server/game/Combat/ThreatManager.cpp
2020-07-22 17:44:05 +02:00
Treeston b4d5f46ea4 1b7ec4b follow-up 2020-07-22 17:33:08 +02:00
Treeston 942c3a77da 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.
2020-07-22 16:49:37 +02:00
treeston a09db6b4ba 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;

# Conflicts:
#	src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
#	src/server/game/Entities/Unit/Unit.cpp
#	src/server/game/Spells/SpellEffects.cpp
#	src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp
#	src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
#	src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp
#	src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
#	src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
#	src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
#	src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
#	src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
#	src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
#	src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
#	src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
#	src/server/scripts/Kalimdor/zone_tanaris.cpp
#	src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
#	src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
#	src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
#	src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
2020-07-22 14:35:53 +02:00
Treeston ec04d3b2cd [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.
2020-07-22 13:43:23 +02:00
Ovahlord 9f116b86e9 Core/Movement: re-implement AbstractFollower as renamed version and index the pointers by following type (chase, follow, formation) for future access and improvements 2020-07-20 20:16:01 +02:00
Ovahlord d82c00c915 Core/Units: changed _formationFollowers from unit references to object guids to have a safer access to its stored units 2020-07-14 23:47:23 +02:00
Ovahlord f8091d6aac Core/Movement: made SetDisableGravity and SetHover virtual and handle anim tiers in their new override inside of the Creature class.
* no longer set anim tiers when the target is rooted
2020-07-13 14:07:59 +02:00
Ovahlord 9e2e37e074 Core/Spells: check for spell immunities only for effects that are affecting the checked target 2020-07-10 19:12:37 +02:00
Ovah b09d6e2330 Core/Movement: reimplement follow movement (#124) 2020-06-26 21:22:21 +02:00
Warpten 0af44ccc01 Core/Spells: implement DoT clipping
* Core/Spells: Implementation of DoT clipping.
* Core/Utilities: Backport "EnumFlags v3.0" from master.
* Core/Spells: Switch AURA_REMOVE_MODE to a flag set.
2020-06-04 18:16:03 +02:00
Warpten 5cb747620a Core/Movement: Fixed Animation Tier handling (#113) 2020-06-03 00:49:18 +02:00
Ovahlord 813b82efa3 Core/Units: CanFly and CanHover will now return positive results when the creature has the according movement flags dispite not having the template movement field set as enabled. This fixes several edge cases with manually enabled flight movement
* renamed IsLevitating to IsGravityDisabled for consistency
2020-05-16 19:21:27 +02:00
Ovahlord 298c2593df Core/Units: fixed a crash that happened when despawning a pet while having units with no ownerguid stored in m_controlled
* minor fixups for vehicle energy power regeneration
* do not set ownerguids for summon vehicles
2020-04-29 14:27:27 +02:00
Shauren 48695b7c9d Core/Auras: Prevent getting negative scale with auras
Closes #24040

# Conflicts:
#	src/server/game/Entities/Creature/Creature.cpp
#	src/server/game/Entities/Pet/Pet.cpp
2020-04-28 18:10:14 +02:00
Ovahlord 5cf7de6aa7 Core/Units: make health regeneration functions for players and creatures virtual 2020-04-27 14:39:07 +02:00
Ovahlord e7ba484fcf Core/Units: reworked creature power regeneration handling
* players and creatures now share the same power regeneration regeneration function
* UpdatePowerRegeneration is now virtual and handles creature and player specific formulas individually
* handle update field flag UF_FLAG_UNIT_ALL to handle UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER and UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER for creatures as well
2020-04-27 14:20:33 +02:00
Ovahlord cef6f94953 Core/Spells: implement SPELLVALUE_AURA_DURATION to allow casting spells with a duration value set 2020-04-23 19:22:31 +02:00
Ovahlord b653f2f819 Core/Units: ported power type updates from master branch 2020-04-22 03:13:02 +02:00
Ovahlord d30c811d9e Core/Creatures: reworked tempoary summon creation
* all stats and values will now be set before summons are getting added to map
* cleaned up summon spell effect handler to reduce duplicade code
* summoner guids will no longer be set for every minion and correctly handle assigning creator guids instead. These values will serve as fallback guid if there is no summoner guid
* friendly tempsummons will now inherit the guild data of their player and pass them on to further allied summons. This fixes guild specific visuals for creatures such as Guild Battle Standards and Guild Heralds.

Todo: check for regressions
2020-04-22 00:20:18 +02:00
Ovahlord c537a2658a Core/Units: reworked power regeneration for players
* use a reversed client function to get the power regeneration rate for all types of powers
* unified all player based regeneration updates into a single statsystem helper
* cleaned up unnecessary regeneration timers
* implement power regeneration for alternative powers
* corrected rage gain numbers based on simulationcraft formulas
2020-04-19 22:53:29 +02:00
NoName b2af17eb4a Core/Spell: Proper SPELL_EFFECT_PULL_TOWARDS_DEST implementation for players
* Core/Spell: SPELL_EFFECT_PULL_TOWARDS correction
2020-03-29 16:23:47 +02:00
Ovahlord cf430ce61a Core/Movement: merge 335 feedback changes for interrupt handing 2020-01-22 20:42:02 +01:00
Ovahlord 05fcab82d8 Core/Spells: corrected implementation of SPELL_AURA_BLOCK_SPELL_FAMILY and implement trigger cast flag to ignore blocked spells 2020-01-18 16:21:17 +01:00
Ovahlord 221ed21ed2 Core/Units: applied feedback from TC pull request for aura interrupt checkups 2020-01-18 16:13:29 +01:00
Ovahlord b210320df0 Core/Spells: unify successful spell cast and interrupt AI hooks into one helper with different cast results to reduce duplicate code
* fixed position update logic that was responsible for interrupting channeled spells because of a missing movement generator update call that was kicking in after the interrupt already happened
* improved Baron Ashburys timer layout
2020-01-16 05:01:39 +01:00
Ovahlord 7760d95962 Core/Creatures: backported trainer update and skill initialization 2020-01-12 23:53:35 +01:00
Aokromes d6d3f06f06 New year 2020-01-04 18:32:38 +01:00
funjoker 6c56916b29 Misc: Update copyright information
Happy new year
2020-01-01 18:47:28 +01:00
Ovahlord 0cdddca210 Core/Spells: corrected haste rune cooldown reduction behaivior
* the haste regeneration modifier will now act multiplicative on the base regeneration rate rather than modifying it directly
* renamed some functions for clarification
2019-12-10 15:23:43 +01:00
Ovahlord d38dfce011 Core/Pets: corrected formulars for minion and pet damage values for good this time
* data is based on dr. damage and simulationcraft
2019-12-10 00:12:26 +01:00
Ovahlord 818def83f4 Core/Spells: removed stack argument from Unit::SpellDamageBonusTaken 2019-12-03 15:53:12 +01:00
Ovahlord c949e12f80 Core/Spells: unclusterfuck weapon damage spell effect handler
* weapon effect values can now be manipulated via spell scripts
* moved Kill Shot attack power bonus to spell_bonus_data
* converted Warrior's Devastate effect handler hack to spell script
2019-11-08 03:38:11 +01:00
sun c98c92b902 Core/PacketIO: Restore SMSG_DESTROY_OBJECT removed in 92816c0f17
- this packet was removed in WoD not 4.3.4...
2019-10-07 14:53:36 -04:00
Ovahlord 148291729f Core/Spells: ported focusing rework and fixed an additional issue that was causing channeled spells getting interrupted when being cast within the focus delay release time 2019-08-10 23:43:15 +02:00
Ovahlord 9bf40cfee4 Core/Spells: expand the single target aura system to support a specific amount of targets
* limit Living Bomb targets to three per caster
2019-05-12 20:03:17 +02:00
Ovahlord eb15db4522 Core/Movement: first part of porting the new creature hover handling 2019-02-18 01:52:15 +01:00
Ovahlord 50a91bd590 Core/Movement: merged Collision height handling from 335 branch to reduce the probability that creatures are falling under the map 2019-02-17 23:40:24 +01:00
Ovahlord 7edabcbd88 Core/Movement: ported and merged Follow and Chase movement generator rewrite 2019-02-07 23:51:45 +01:00
Ovahlord 4ade341b63 Core/Units: updated Melee, Spell, Parry and Dodge chance calculations to a blizzlike behaivior 2018-10-07 14:38:36 +02:00
Ovahlord 3a1d24c7f5 Core/Movement: implement support for EnterCycle spline flag
* original autor: xvwyh
2018-09-17 21:50:43 +02:00
Ovahlord 3f53afd39e Core/Maps: fixed several issues with liquids by merging some 335 branch commits that are taking mopg flags into account 2018-08-07 12:35:02 +02:00
Ovahlord 78e0328356 Core/Movement: fixed waypoint movement commits up to 2ce9a0a094a3d86a86a9323693c93ed6a2bbcaaf 2018-08-02 16:20:02 +02:00
Ovahlord 075a79dac1 Core/Movement: first batch of followup commits 2018-08-02 16:03:19 +02:00
Ovahlord c808b981f7 Core/Movement: merged smooth waypoint movement. Followup commits will be merged soon (tm) 2018-08-02 15:38:35 +02:00
Ovahlord d59a20701e Core/Movement: merged more movement commits and fixed build by merging the changes done to movement generators by the header cleanup 2018-08-02 13:52:12 +02:00
Ovahlord 0f32e2d263 Core/Spells: merged a radius calculation from 3.3.5 that covers the attempted fix from last commit 2018-07-13 15:17:54 +02:00
Ovahlord 0d46b893fc Core/Objects:
*merged 3.3.5 renaming of GetObjectSize() to GetCombatReach()
*made GetBoundaryRadius virtual and use it to determine the actual spell radius distance with it instead of using CombatReach
2018-07-13 14:50:10 +02:00
Ovahlord 15bff13a52 Core/Units: added two now CastSpell functions to allow us to specify a orientation 2018-06-19 18:15:24 +02:00