Commit Graph

608 Commits

Author SHA1 Message Date
Shauren
88a9a1a25d Core/Misc: Reduce differences between branches 2025-02-20 23:42:00 +01:00
Shauren
00875fe4a3 Core/Misc: Reduce code differences between branches 2025-02-02 21:12:24 +01:00
Shauren
b4d6ca277a Core/vmaps: Removed vmap lookup functions duplicating functionality of each other
(cherry picked from commit 45ee989c70)
2024-11-19 20:20:33 +01:00
Shauren
bdb5c72def Core/Spells: Prevent creatures from being able to cast all their spells while moving
Closes #26137

(cherry picked from commit f80f931e2b)
2024-05-18 12:08:38 +02:00
Shauren
dfbd80166e Core/Movement: Fixed spline packed deltas validation check
(cherry picked from commit ad6ef5237d)
2024-04-24 00:12:56 +02:00
Shauren
16f555f79e Core/MMAPs: Sprinkle master branch thread safety on mmap loading code 2024-02-13 23:49:51 +01:00
Shauren
8d43d2bafc Core/Movement: Fixed use after free in WaypointMovementGenerator
Closes #29274
2023-08-22 19:34:21 +02:00
Shauren
aaa6e73c8c Core/Logging: Switch from fmt::sprintf to fmt::format (c++20 standard compatible api)
(cherry picked from commit d791afae1d)
2023-08-15 20:10:04 +02:00
Shauren
825c697a76 Core/Misc: Removed structure bitfield definitions that don't do anything 2023-08-15 13:00:43 +02:00
Shauren
b7287e85e4 Core/Misc: Fixed deprecation warnings for c++20
(cherry picked from commit ba9bbbc9d0)
2023-08-12 14:24:24 +02:00
Shauren
aa96aa4783 Core/Misc: Cleanup Expression is converted to bool and can be replaced with 'boolean constant' 2023-05-07 18:52:34 +02:00
Ovah
4747515872 Core/Movement: Allow waypoints to use 0 as valid facing value (#26655) 2022-04-16 18:21:04 +02:00
Shauren
b9c986cadd Core/Movement: b1a94bf94c followup - MoveSplineInit is no longer movable or copyable 2022-04-05 10:18:26 +02:00
Shauren
b1a94bf94c Core/Movement: Delay creating MoveSplineInit objects used by GenericMovementGenerator to spline launch time
* This fixes inconsistent transport state detection for players exiting vehicles that are on transport (ICC gunship battle), fixes players being telerpoted to middle of nowhere on that fight
2022-04-03 22:36:49 +02:00
Shauren
d611925dc7 Core/Units: Reduce differences between branches part 1 - unit updatefield accessors 2022-03-29 11:30:49 +02:00
Shauren
62c2ceaff2 Core/Units: Rename AnimationTier to AnimTier for consistency with master branch 2022-03-24 20:38:55 +01:00
Shauren
7b9b785c51 Core/Misc: Add TempSummon timer to GetDebugInfo 2021-11-14 15:44:46 +01:00
offl
e4a82ee97a Core/Misc: Rename UNIT_FLAG_SWIMMING to UNIT_FLAG_CAN_SWIM
Ref #26912
2021-09-16 21:15:52 +03:00
offl
a50ce8755b Core/Misc: Rename UNIT_FLAG_TAXI_FLIGHT to UNIT_FLAG_ON_TAXI
Ref #26912
2021-09-16 04:43:06 +03:00
Chaouki Dhib
d337fb99ed Core/Movement: Implement proper player speed change (#26561) 2021-06-15 23:09:48 +02:00
Giacomo Pozzoni
9fe9dc087b Core/Movement: Add new flag MOVEMENTGENERATOR_FLAG_PERSIST_ON_DEATH (#26549)
* Core/Movement: Add new flag MOVEMENTGENERATOR_FLAG_PERSIST_ON_DEATH

Add new flag MOVEMENTGENERATOR_FLAG_PERSIST_ON_DEATH to keep movement generators even after death.

Fixes #23095
Could replace ff26027453

* Core/Movement: reorder new method MotionMaster::StopOnDeath

* Core/Movement: reorder new method MotionMaster::StopOnDeath

* Keep MoveJump movement generator after death

Co-authored-by: ccrs <ccrs@users.noreply.github.com>
2021-06-06 17:51:00 +02:00
ccrs
303e01c834 Core/Movement: remove redundant method MovementGenerator::NotifyAIOnFinalize and use existing Finalize - MovementInform implementation
6fde051e4e follow up
2021-06-03 15:01:47 +02:00
Giacomo Pozzoni
fc1a0d9368 Core/Unit: Fix movement hiccups in water (#24020)
* Core/Unit: Allow to define Units which can enter water but cannot swim

Allow to define Units which can enter water but cannot swim, i.e. crabs walking at the bottom of a sea.

* Add UNIT_FLAG_SWIMMING to creatures when entering combat

* Fix charmed creatures not entering water

* Always allow Creatures controlled by players to enter water

* Add swimming flag when possessing a unit and remove it properly at the end, even if the creature engaged combat before and after.
When adding/removing UNIT_FLAG_SWIMMING manually calling Creature::RefreshSwimmingFlag(true) might be required.
2021-01-10 10:18:51 +01:00
Ovah
31abdc6ecf Core/Movement: add optional velocity argument for MoveLand and MoveTakeoff (PR #25516) 2020-10-01 02:50:45 +02:00
xvwyh
2d6237f06a Core/PathFinding: Fix GetPathPolyByPosition() using only 2D distance instead of 3D
Signed-off-by: jackpoz <giacomopoz@gmail.com>
2020-09-19 21:35:40 +02:00
Treeston
bb3d3a82d7 Core/Movement: MoveSplineFlag::animId -> animTier, MoveSpline::GetAnimation() -> GetAnimationTier(), dad1876 follow-up 2020-09-08 17:32:35 +02:00
NoName
dad187615d Core/Movement: Corrected Animation Tier handling (PR #24875)
Co-authored-by: Warpten <vertozor@gmail.com>
Co-authored-by: Ovahlord <dreadkiller@gmx.de>
Co-authored-by: Carbenium <carbenium@outlook.com>
2020-09-08 17:12:52 +02:00
Keader
141d3d2718 Core/MotionMaster: Do not generate path to MoveLand 2020-09-07 13:22:14 -03:00
Treeston
c9356190b7 Core/Scripts: Remove now-unused WaypointPathStarted hook. WaypointStarted does everything it used to do, anyway. b3694bf follow-up. 2020-09-06 19:44:47 +02:00
Treeston
88d446dadf Scripts/Commands: Convert argument parsing of .npc commands
(And I snuck some chat command cleanup in there, more de-cluttering!)
2020-09-04 00:58:23 +02:00
jackpoz
1aceb41349 Core/Movement: Fix RandomMovementGenerator for swimming creatures
Fix RandomMovementGenerator for swimming creatures not moving at all due to PATHFIND_FARFROMPOLY being handled as wrong path.
Fixes #25236
2020-08-23 20:06:41 +02:00
jackpoz
8ad6bd8a9b Core/Metric: Require WITH_DETAILED_METRICS CMake flag for MMaps metric 2020-08-04 14:10:33 +02:00
Carbenium
228696bf80 Core/Common: Merge TimeTrackerSmall with TimeTracker 2020-08-01 12:43:55 +02:00
Giacomo Pozzoni
7cf122fc2a Core/Misc: Fix static analysis issues (#25178) 2020-07-31 22:53:13 +02:00
Peter Keresztes Schmidt
202fd41389 Core/Misc: Replace boost::optional with std::optional (#25047)
C++17 is already mandatory, so it's a safe thing to do
2020-07-15 10:22:29 +02:00
Peter Keresztes Schmidt
c92950b3e1 Core/DataStores: Update DBC field names to generated ones (#24999) 2020-07-12 15:36:55 +02:00
Shauren
0468c70dfe Core/Maps: Implemented getting area id from gameobject spawns
Yes, you can now spawn LK platform anywhere and it will treat you as inside Icecrown Citadel

(cherry picked from commit 42f9deb21e)
2020-06-27 20:23:30 +02:00
Giacomo Pozzoni
995a443da2 Handle different slopes in mmaps (#24765)
* Tools/MMAPs: Remove input argument --maxAngle

Remove input argument --maxAngle . This should be just hardcoded in MapBuilder::GetMapSpecificConfig() so all settings are easily found in the same place instead of being spread around.

* Tools/MMAPs: Add new area type NAV_AREA_GROUND_STEEP

Add new area type NAV_AREA_GROUND_STEEP for ground with slope in the range (55, 70] .
NAV_AREA_GROUND is used for ground with range [0, 55] .
NAV_AREA_GROUND_STEEP takes priority over NAV_AREA_GROUND.

* Tools/MMAPs: Fix NAV_GROUND_STEEP flag not being saved in the mmtile

* Core/PathFinding: Implement NAV_GROUND_STEEP flag

Implement NAV_GROUND_STEEP flag, used only by Creatures that are in combat or evading.

* Distinguish between RC_WALKABLE_AREA and NAV_AREA_GROUND.

* Allow mobs in combat to walk on steeps up to 80°

* Allow mobs in combat to walk on steeps up to 85°.
Disable rcFilterLedgeSpans() filter as it removed long steep spans.

* Increase cost of steep spans to try making creatures walk around obstacles instead of walking on them

* Revert last commit
2020-06-17 22:20:26 +02:00
Ovah
43ef610fe0 Core/Units: flight and hover checks will now consider movement template data as well as manually set flight states
- manually set flight states via auras and scripts will no longer be ignored
- restored movement template consideration when generating pathings
- renamed IsLevitating to IsGravityDisabled to reflect the referenced movement flag's name
2020-06-01 15:58:31 +02:00
Giacomo Pozzoni
8c09b6e58b Cherry-pick some cmake commits (#24720)
* Build system: Support  new in cmake 3.17 Ninja Multi-Config generator

(cherry picked from commit 369b618d4f)

* Build system: Fixed PCH with MSVC & Ninja generator

(cherry picked from commit d669f46b6d)

* Core: Fix clang 10 warnings

(cherry picked from commit 7272508cb4)

# Conflicts:
#	src/common/Utilities/Util.h
#	src/server/bnetserver/REST/LoginRESTService.cpp
#	src/server/game/Entities/Object/Position.h
#	src/server/game/Entities/Player/Player.cpp
#	src/server/game/Guilds/GuildFinderMgr.h
#	src/server/game/Movement/Spline/MoveSplineFlag.h
#	src/server/shared/Dynamic/LinkedList.h

* Build system: Set -Wno-deprecated-copy only for clang 10

(cherry picked from commit 7fdeb259ba)

* Core/Misc: GCC build and warning fixes

(cherry picked from commit 4d69cc1c56)

# Conflicts:
#	src/common/Utilities/Util.cpp
#	src/server/database/Database/MySQLConnection.cpp
#	src/server/game/Battlefield/Zones/BattlefieldTB.cpp
#	src/server/game/DataStores/M2Stores.cpp
#	src/server/game/DungeonFinding/LFGMgr.cpp
#	src/server/game/DungeonFinding/LFGPlayerData.cpp
#	src/server/game/Entities/GameObject/GameObject.cpp
#	src/server/game/Entities/Item/Item.cpp
#	src/server/game/Entities/Object/Updates/UpdateFields.h
#	src/server/game/Entities/Player/Player.cpp
#	src/server/game/Entities/Player/RestMgr.cpp
#	src/server/game/Entities/Unit/Unit.cpp
#	src/server/game/Handlers/PetHandler.cpp
#	src/server/game/Server/Packets/GuildPackets.h
#	src/server/game/Spells/Auras/SpellAuraEffects.cpp
#	src/server/game/Spells/Auras/SpellAuras.cpp
#	src/server/game/Spells/Spell.cpp
#	src/server/game/Spells/SpellInfo.cpp
#	src/server/game/Spells/SpellMgr.cpp
#	src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp
#	src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp
#	src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
#	src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
#	src/server/scripts/Northrend/zone_sholazar_basin.cpp
#	src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
#	src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp
#	src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
#	src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp
#	src/tools/vmap4_extractor/gameobject_extract.cpp
#	src/tools/vmap4_extractor/model.cpp
#	src/tools/vmap4_extractor/vec3d.h

* Build system: Print found git version when warning about it being too old

(cherry picked from commit 1ae72db201)

* Build system: Removed hard requirement on BOOST_ROOT being set as environment variable, it can now be also passed as command line argument to cmake and fix compile warning with boost 1.73

(cherry picked from commit 161944b764)

# Conflicts:
#	dep/boost/CMakeLists.txt

* Remove some code that was already removed from 335 and then cherry-picked into master

Co-authored-by: Shauren <shauren.trinity@gmail.com>
2020-05-31 14:17:26 +02:00
Ovahlord
fdcb7388a6 Core/Objects: fixed destination calculation for destination based spells casted by flying units
* Additionally he PathGenerator will now check for realtime movement flags instead of creature based template data only so scripted flying movement and players will now correctly get their path calculated
2020-05-16 17:40:08 +02:00
Giacomo Pozzoni
c0b75bf40d Core/MMAPs: Adjust walkable climb and fix a lot of mmap raycast issues (#24539)
* Core/MMAPs: Adjust walkable climb

Adjust walkable climb as recast using walkableClimb also to find the poly from a position, giving priority to polys that are below the position but closer than walkableClimb.

* Temporarily disable static collision (the whole check should be removed)

* Core/Spells: removed deprecated mmap path check for TARGET_DEST_CASTER_FRONT_LEAP

* Core/Objects: allow flying units to use the helper as well (flying units casting radius based spells)

* Code refactor

* Handle raycasts that end in a point with no height in the mmap mesh as PATHFIND_NOPATH

* Walk back a bit from raycast hitpoints as sometime the 2D result point is outside of the polygons due to floating point errors.

* Remove whitespace

* Revert 4a197ba22a as a raycast point path should have the Z retrieved with getPolyHeight(). Raycast will only return a 2-point path with Start and Hitpoint/End

* Cleanup PathGenerator raycast case

* Fix PathGenerator raycast broken if start and end are on same poly.
Fix PathGenerator raycast broken if no wall is hit.
Remove unused case of using raycast with an existing previous path (can be added back properly if needed).
Remove forcing poly length to 2 when we actually have already the right number.

* Use closestPointOnPolyBoundary on the second try of finding a point on poly for raycast.
Note that in this case the mesh height is not used which might cause issues. The poly boundary height will be used instead.

* Handle cases where getPolyHeight() fails because the point is on polygon border (and caused by floating point imprecision)

* Add far from poly flags

* Set PATHFIND_INCOMPLETE in raycast case if startFarFromPoly or endFarFromPoly

* Fix blink close to walls with no valid polygon behind the wall

* Require to re-extract mmaps

Co-authored-by: Ovah <dreadkiller@gmx.de>
2020-05-15 20:43:12 +02:00
ccrs
472e1fd8ae Core/Movement: 9080e78 followup
actually port back the previous implementation, now correctly
this implies that a unit that has a different victim than the one its chasing will stand still till either:
- a new movement replaces the current, for w/e reason
- the chase target is again the current victim

probably a pause implementation on the generator is a more elegant solution...

updates #24600
2020-05-11 19:38:36 +02:00
ccrs
ac12bd1391 Core/Movement: modify MovementInform trigger condition & checks in ChaseMovementGenerator 2020-05-03 17:20:37 +02:00
ccrs
71ed2e5d5e Core/Movement: de832b6 followup
lets keep that failsafe there, doesnt hurt
2020-05-03 17:03:12 +02:00
ccrs
de832b6980 Core/Movement: modify MovementInform trigger condition & checks in FollowMovementGenerator
ref #24552
2020-05-03 16:53:21 +02:00
ccrs
b8422e667b Core/Movement: 0e2342c followup 2020-05-02 22:52:01 +02:00
Ovah
6485422c61 Core/Objects: further improvements for MovePositionToFirstCollision (#24523)
* Core/Objects: further improvements for MovePositionToFirstCollision

* the PathGenerator will now normalize incomplete destinations as well
* normalize destination positions before launching detour raycasts to get better direction data
* exclude unwanted pathfinding results from further use to avoid unintended behaivior

* Core/PathFinding: Split PATHFIND_FARFROMPOLY into PATHFIND_FARFROMPOLY_START and PATHFIND_FARFROMPOLY_END for start and end position

Handle PATHFIND_FARFROMPOLY_END as valid in MovePositionToFirstCollision

Co-authored-by: jackpoz <giacomopoz@gmail.com>
2020-05-01 13:43:24 +02:00
jackpoz
dc7856644f Core/PathFinding: Fix buffer overflow 2020-04-29 22:01:23 +02:00
Ovah
cfd63c350f Core/Movement: various improvements for creature knockbacks
* creature knockbacks will no longer generate a full path but instead only use a destination point to reflect sniff data
* calculate the destination by using a mmap raycast instead of using a mmap path which had the chance of creating weird movements when GetNearPosition failed to get a proper collision point (knocking arround a tree for example or just somewhere it should not go at all)
2020-04-17 21:13:18 +02:00