Commit Graph

564 Commits

Author SHA1 Message Date
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
jackpoz
67f28adaf7 Core/Movement: Add safety check to avoid C++ undefined behaviour 2020-04-08 14:15:49 +02:00
Giacomo Pozzoni
468ecb7252 Core/Logs: Log full guid instead of just low guid 2020-04-05 19:10:57 +02:00
Eridium
0e2342c169 Core/Movement: Formation Rewrite (#24379)
* Core/Movement: Formation Rewrite

* Add a missing include

* fixed another warning

* meh

Co-authored-by: Ovahlord <Ovahlord@users.noreply.github.com>
Co-authored-by: Ovah <dreadkiller@gmx.de>
2020-04-04 15:08:42 +02:00
Shauren
fe1003bdbd Core/DBLayer: Prevent using prepared statements on wrong database
(cherry picked from commit e8e89f58fb)

# Conflicts:
#	src/server/bnetserver/REST/LoginRESTService.cpp
#	src/server/bnetserver/Server/Session.cpp
#	src/server/database/Database/DatabaseWorkerPool.cpp
#	src/server/database/Database/Implementation/HotfixDatabase.h
#	src/server/database/Database/MySQLConnection.cpp
#	src/server/database/Database/MySQLConnection.h
#	src/server/database/Database/PreparedStatement.cpp
#	src/server/database/Database/PreparedStatement.h
#	src/server/database/Database/QueryHolder.cpp
#	src/server/database/Database/SQLOperation.h
#	src/server/database/Database/Transaction.h
#	src/server/game/Accounts/BattlenetAccountMgr.cpp
#	src/server/game/Achievements/AchievementMgr.cpp
#	src/server/game/AuctionHouse/AuctionHouseMgr.cpp
#	src/server/game/AuctionHouseBot/AuctionHouseBot.cpp
#	src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
#	src/server/game/BattlePets/BattlePetMgr.cpp
#	src/server/game/Battlegrounds/ArenaTeam.cpp
#	src/server/game/BlackMarket/BlackMarketMgr.cpp
#	src/server/game/Chat/Channels/Channel.cpp
#	src/server/game/Entities/Corpse/Corpse.cpp
#	src/server/game/Entities/Creature/Creature.cpp
#	src/server/game/Entities/GameObject/GameObject.cpp
#	src/server/game/Entities/Item/Item.cpp
#	src/server/game/Entities/Pet/Pet.cpp
#	src/server/game/Entities/Player/CollectionMgr.cpp
#	src/server/game/Entities/Player/Player.cpp
#	src/server/game/Garrison/Garrison.cpp
#	src/server/game/Globals/ObjectMgr.cpp
#	src/server/game/Groups/Group.cpp
#	src/server/game/Guilds/Guild.cpp
#	src/server/game/Guilds/GuildFinderMgr.cpp
#	src/server/game/Guilds/GuildMgr.cpp
#	src/server/game/Handlers/AuctionHouseHandler.cpp
#	src/server/game/Handlers/CharacterHandler.cpp
#	src/server/game/Handlers/ItemHandler.cpp
#	src/server/game/Handlers/MailHandler.cpp
#	src/server/game/Handlers/MiscHandler.cpp
#	src/server/game/Handlers/PetitionsHandler.cpp
#	src/server/game/Handlers/SpellHandler.cpp
#	src/server/game/Handlers/TicketHandler.cpp
#	src/server/game/Loot/Loot.cpp
#	src/server/game/Mails/Mail.cpp
#	src/server/game/Maps/Map.cpp
#	src/server/game/Movement/Waypoints/WaypointManager.cpp
#	src/server/game/OutdoorPvP/OutdoorPvP.cpp
#	src/server/game/Pools/PoolMgr.cpp
#	src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp
#	src/server/game/Reputation/ReputationMgr.cpp
#	src/server/game/Scenarios/InstanceScenario.cpp
#	src/server/game/Server/WorldSession.cpp
#	src/server/game/Server/WorldSocket.cpp
#	src/server/game/Spells/SpellHistory.cpp
#	src/server/game/Support/SupportMgr.cpp
#	src/server/game/Tools/PlayerDump.cpp
#	src/server/game/World/World.cpp
#	src/server/scripts/Commands/cs_account.cpp
#	src/server/scripts/Commands/cs_ban.cpp
#	src/server/scripts/Commands/cs_battlenet_account.cpp
#	src/server/scripts/Commands/cs_group.cpp
#	src/server/scripts/Commands/cs_lfg.cpp
#	src/server/scripts/Commands/cs_list.cpp
#	src/server/scripts/Commands/cs_message.cpp
#	src/server/scripts/Commands/cs_misc.cpp
#	src/server/scripts/Commands/cs_npc.cpp
#	src/server/scripts/Commands/cs_tele.cpp
#	src/server/scripts/Commands/cs_wp.cpp
#	src/server/shared/DataStores/DB2DatabaseLoader.cpp
#	src/server/shared/Realm/RealmList.cpp
2020-03-31 13:42:01 +00:00
jackpoz
ec49576491 Core/Movement: Don't start a spline with just 1 point in FlightPathMovementGenerator
Don't start a spline with just 1 point in FlightPathMovementGenerator. This happens when teleporting to a BG while on a taxi after second last node but closer to last node.
In this case the Player will be teleported to the last node.
2020-03-21 17:42:24 +01:00
jackpoz
296f6aab40 Core/Movement: Improve log when starting a spline with invalid arguments
Improve log when starting a spline with invalid arguments, for example when starting a spline with just 1 point.
2020-03-21 17:39:15 +01:00
Giacomo Pozzoni
6fde051e4e Core/AI: Make critters flee as soon as engaged in combat and make them evade after they stop running in fear (#24320)
* Core/AI: Make critters flee as soon as engaged in combat and make them evade after they stop running in fear

* Warning and no-pch build fix
2020-03-17 19:58:07 +01:00
jackpoz
16ccc17621 Core/PathFinding: Fix mmaps raycast without hit
Update Z coordinate of end position when casting a mmap raycast that doesn't hit the target
2020-03-03 21:39:01 +01:00
Giacomo Pozzoni
c0676a48f7 Core/PathFinding: Add support to WorldObject pathfinding (#24207)
* Core/PathFinding: Add support to WorldObject pathfinding

* Handle Unit* specific code

* Fix some wrong const

* Fix no-pch build
2020-02-28 19:31:55 +01:00
Giacomo Pozzoni
6443e518cf Core/PathFinding: Return raycast hitpoint when specifying straightLine (#24206) 2020-02-28 19:29:58 +01:00
NoName
40542f01e3 Core/Movement: Implement MoveSplineFlag::Enter_Cycle (#24049)
by xvwyh
#22448
2020-02-28 19:03:52 +01:00
jackpoz
7a57029d8f Core/Movement: Add support to cyclic splines to GenericMovementGenerator
GenericMovementGenerator sets the _duration to the return value of spline.Launch(). For cyclic splines, this is the duration of 1 single cycle, while the spline itself never ends.
To support this edge case in GenericMovementGenerator we just never update the _duration timer for cyclic splines.
2020-02-23 22:07:40 +01:00
ratkosrb
6176ce92ea Core/Creature: Use proper name for wander distance. (#24133)
* Use proper name for wander distance.

* Rename db field.

* Fix query.

* Remove underscore from chat command.

* Rename the handler too.

* Update chat command description.

* Fix remaining issues.

* Rename 2020_99_99_99_world_335.sql to 2020_02_16_01_world.sql

Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
2020-02-16 13:36:56 +01:00
Giacomo Pozzoni
a9e534762f Core/Movement: Fix WaypointMovementGenerator ignoring EscortAI::SetEscortPaused() on Gossip Hello (#24005)
Fix WaypointMovementGenerator ignoring EscortAI::SetEscortPaused() when talking to a NPC, scheduling a 3 minutes pause on the WaypointMovementGenerator even if it was already disabled with no timer, waiting for the player to select a gossip entry to resume the movement.
2020-02-01 14:47:06 +01:00
Ovah
78c1216bcf Core/Movement: improved RandomMovementGenerator wait handling to get closer to retail behaivior (#24093)
* according to observations Blizzard is letting creatures do 2 up to 10 spline movements right after each other before waiting for a couple seconds
2020-01-22 22:19:42 +01:00
jackpoz
d293dd3782 Core/MMaps: Handle path on same position
Handle path on the same polygon between 2 very close positions as a normal path.
2020-01-20 22:48:25 +01:00
Giacomo Pozzoni
67d9d04d63 Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon (#24083)
* Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon

Second try of handling paths on same poly in a better way than just building a shortcut

* Fix movement generators using paths with start/end positions far from mmap polygons

* Include flag PATHFIND_FARFROMPOLY even with a normal path if start or end were far away from mmap poly
2020-01-20 08:15:31 +01:00
jackpoz
9f8477cd11 Core/PathGenerator: Temporarily revert 29bf280e34
Temporarily revert 29bf280e34 since our recast implementation always expects a path to have different polygons.
A proper fix will be implemented later on, splitting a path with 1 single polygons in smaller steps in a similar way of how FindSmoothPath() works
2020-01-18 20:24:26 +01:00
Giacomo Pozzoni
29bf280e34 Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon (#24036)
* Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon

Fix path generator returning shortcuts when start and end are on the same polygon by handling this case as if start and end were on 2 different polygons. This will ensure BuildPointPath() gets called which calls FindSmoothPath(), making sure each step is not longer than SMOOTH_PATH_STEP_SIZE (4 yards)

* Change ingame cast error message to SPELL_FAILED_NOPATH from SPELL_FAILED_OUT_OF_RANGE if the generated path is too long
2020-01-09 19:38:45 +01:00
Aokromes
ed93932537 New year
Say bye bye to every year changing dates
2020-01-02 06:25:50 +01:00
Killyana
9f057d7082 Core/Movement: Remove a wrong set SetWalk from HomeMovementGenerator 2020-01-01 19:42:10 +01:00
Giacomo Pozzoni
4ccf01de39 Fix fleeing speed to 66% run speed (#24025)
* Core/Movement: Fix fleeing speed to 66% run speed

Fix fleeing speed to 66% run speed until the creature starts returning home

* Fix build

* Don't check speed type

* Don't apply speed reduction twice

* Fix no-pch (1st try)

* Make sure every spell focus is interrupted when seeking assistance
2020-01-01 16:28:33 +01:00
Giacomo Pozzoni
88a14251e2 Core/MMaps: Fix charge underwater/falling (#24010)
* Core/MMaps: Fix charge underwater

Fix charge sometimes returning "no path available" when swimming/underwater.
Fix charge selecting a destination point 4 yards above swimming/underwater targets

* Allow falling units to charge targets that are below (lower Z coordinate)

* Disable "raycast" pathfinding as it's not blizzlike.

This might show some strange paths when charging with a target in front.
It also fixes some falling undermap issues.

This Reverts 272009ebee

* Remove Z offset when charging a target as it never made sense
2019-12-30 15:58:39 +01:00
Giacomo Pozzoni
e698c17a26 Core/Movement: Fix wrong orientation set when pausing movement (#23986)
* Core/Movement: Fix wrong orientation set when pausing movement

* Update MoveSpline.h

* Update Unit.cpp
2019-12-29 16:24:53 +01:00
jackpoz
862d47394b Core/Movement: Fix fleeing speed to 66% run speed
Fix AssistanceMovementGenerator using 100% MOVE_RUN speed instead of 66% . Please note that the fleeing mechanic still has some open issues that this single commit doesn't fix
2019-12-27 17:28:09 +01:00
Giacomo Pozzoni
8f94c9ef6b Core/Movement: Fix stunned falling units freezing the client (#24000) 2019-12-27 16:33:16 +01:00
Giacomo Pozzoni
13ad8b66d9 Core/Movement: Add more LOS checks (#23991)
Add more LOS checks to ensure Units don't cross trees/walls when fleeing/moving
2019-12-26 13:56:51 +01:00
ccrs
c9c6871659 Core/Movement: prevent any Initialize queue till AddToWorld is signaled 2019-10-23 03:28:57 +02:00
ccrs
bc9a9ad7e1 Core/Movement: d033032 followup
now THATS a typo... sorry folks
2019-10-23 03:26:49 +02:00
ccrs
5d056f37c7 Core/Movement: d033032 followup
ty jackpoz
2019-10-22 15:48:00 +02:00
ccrs
bc507209a7 Core/Movement: d033032 followup
ty jackpoz
2019-10-21 16:49:25 +02:00
ccrs
d033032d33 Core/Movement: delay movement update in MotionMaster until its owner signals AddToWorld
ref #23199
closes #23876
2019-10-21 13:55:23 +02:00
jackpoz
84937337da Revert "Core/Movement: Fix a crash on login"
This reverts commit 9941b4c2ed.
2019-10-20 12:25:14 +02:00
jackpoz
9941b4c2ed Core/Movement: Fix a crash on login
Fix a crash in MotionMaster happening when logging in with an aura of type SPELL_AURA_MOD_CONFUSE
2019-10-19 23:05:22 +02:00
Ovah
7fcb77ecd1 Core/Taxis: teleport players to the destination taxi node location instead of their current ground position (#23835)
* Core/Taxis: teleport players to the destination taxi node location instead of straight to their current ground position

* fixed a typo
2019-10-08 11:11:24 +02:00
Ovah
c1e3d79a4f Core/Movement: fixed taxi pathings getting finalized earlier than intended (#23830)
* Core/Movement: fixed taxi pathings getting finalized earlier than intended

Since we handle the intial starting point of a spline properly now the update logic was still expecting the old handling which resulted in incrementing the current node index earlier than intended

* apply a missing change
2019-09-28 09:24:41 +02:00
Ovah
cf3277c641 Core/Movement: provide an extra spline path vertex for taxi pathings … (#23817)
* Core/Movement: provide an extra spline path vertex for taxi pathings so the first path point wont get lost.

* Update FlightPathMovementGenerator.cpp
2019-09-22 17:12:59 +02:00
jackpoz
215a6cee24 Core/Movement: Fix LoS issue of NPCs chasing targets
Add Line of Sight checks to ChaseMovementGenerator::Update(), fixing to ChaseMovementGenerator not reaching a point with valid LoS to the target.

Fix re-implements 8927a04253 after 2a84562dc8 partially removed it.

Fix #23724
2019-09-13 21:06:28 +02:00
jackpoz
7c0b31b8b5 Core/MovementGenerator: 680e1cbd6c follow-up 2019-09-08 15:48:06 +02:00
jackpoz
680e1cbd6c Core/MovementGenerator: Fix crash in taxi paths
Fix a crash in taxi paths happening when joining a battleground/dungeon while on a taxi path after second last node but close to last node, then leaving/finishing the battleground.
2019-09-07 18:22:26 +02:00
jackpoz
c4cce31a13 Core/Misc: Fix linux build 2019-08-18 11:15:54 +02:00
jackpoz
5a98022649 Core/MMaps: Fix mobs evading when target is out of MMap meshes
Fix mobs evading when target is out of MMap meshes causes by an overzealous check added in c602220e02 when trying to fix an infinite loop in Recast.
If the target is outside of the MMap mesh (for example very close to a wall which is an un-walkable area with current TrinityCore settings and that might be changed in the future) Detour will not be able to find the height of the poly and getPolyHeight() will return DT_FAILURE | DT_INVALID_PARAM . Most of the time this is ok and can be ignored and it's still better than having the Unit evade.
Fix #23613
2019-08-18 11:08:06 +02:00
jackpoz
2bac44c7d0 Core/Spline: Fix crash
Fix crash when calling MoveSpline::ToString() on an empty spline
2019-07-21 16:21:43 +02:00
jackpoz
a9f1dc1da7 Core/Misc: Fix warnings 2019-07-18 21:16:28 +02:00