Commit Graph

506 Commits

Author SHA1 Message Date
Giacomo Pozzoni 247564a7ab Core/Creature: Allow to disable HP regen in Raids even if the target is unreachable (#24646) 2020-05-21 14:48:09 +02:00
Shauren 50576fa1f5 Core/Auras: Prevent getting negative scale with auras
Closes #24040
2020-04-28 18:03:51 +02:00
Ovahlord 1610337e67 Core/Vehicles: update the power display of vehicles before being added to world to avoid building unnecessary update_object packets right after spawning them 2020-04-27 19:29:01 +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 635b8d52d5 Core/DBLayer: Prevent committing transactions started on a different database
(cherry picked from commit f6e2b8cdc1)

# Conflicts:
#	src/server/bnetserver/REST/LoginRESTService.cpp
#	src/server/database/Database/DatabaseWorkerPool.cpp
#	src/server/database/Database/DatabaseWorkerPool.h
#	src/server/database/Database/Implementation/HotfixDatabase.h
#	src/server/database/Database/MySQLConnection.h
#	src/server/database/Database/Transaction.cpp
#	src/server/database/Database/Transaction.h
#	src/server/game/Achievements/AchievementMgr.cpp
#	src/server/game/Achievements/AchievementMgr.h
#	src/server/game/AuctionHouse/AuctionHouseMgr.cpp
#	src/server/game/AuctionHouse/AuctionHouseMgr.h
#	src/server/game/BattlePets/BattlePetMgr.cpp
#	src/server/game/BattlePets/BattlePetMgr.h
#	src/server/game/BlackMarket/BlackMarketMgr.cpp
#	src/server/game/BlackMarket/BlackMarketMgr.h
#	src/server/game/Entities/Creature/Creature.cpp
#	src/server/game/Entities/Item/Item.cpp
#	src/server/game/Entities/Item/Item.h
#	src/server/game/Entities/Player/CollectionMgr.cpp
#	src/server/game/Entities/Player/CollectionMgr.h
#	src/server/game/Entities/Player/Player.cpp
#	src/server/game/Entities/Player/Player.h
#	src/server/game/Garrison/Garrison.cpp
#	src/server/game/Garrison/Garrison.h
#	src/server/game/Groups/Group.cpp
#	src/server/game/Guilds/Guild.cpp
#	src/server/game/Guilds/Guild.h
#	src/server/game/Guilds/GuildFinderMgr.cpp
#	src/server/game/Handlers/BlackMarketHandler.cpp
#	src/server/game/Handlers/CalendarHandler.cpp
#	src/server/game/Handlers/CharacterHandler.cpp
#	src/server/game/Handlers/MailHandler.cpp
#	src/server/game/Handlers/PetHandler.cpp
#	src/server/game/Handlers/PetitionsHandler.cpp
#	src/server/game/Mails/Mail.cpp
#	src/server/game/Pools/PoolMgr.cpp
#	src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp
#	src/server/game/Quests/QuestObjectiveCriteriaMgr.h
#	src/server/game/Scenarios/InstanceScenario.cpp
#	src/server/game/Server/WorldSession.cpp
#	src/server/game/Server/WorldSession.h
#	src/server/game/Spells/SpellHistory.cpp
#	src/server/game/Support/SupportMgr.cpp
#	src/server/game/Tools/PlayerDump.cpp
#	src/server/scripts/Commands/cs_misc.cpp
2020-03-31 13:42:01 +00: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
Sorikoff 5f20715e2f [WIP] Core/AI: Pets musn't attack civilian NPC in aggressive mode (#24121)
* Core/AI: Pets musn't attack civilian NPC in aggressive mode

* Move decision to ignore civilians to PetAI, keeping the check in GridNotifiers

Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
2020-02-16 16:00:54 +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
Treeston 9304e496cb Core/Misc: Some refactoring, #23603 prep: (#23676)
- Split SpawnMetadata off from SpawnData
- No longer allocate Creature/Gameobject objects in ObjectGridLoader just to check their typeid and delete them afterwards

Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
2020-02-08 20:22:37 +01:00
ForesterDev 573ddf4d22 Core/Items: implement some helper methods for easier readability (#24113) 2020-02-01 14:45:58 +01:00
Aokromes ed93932537 New year
Say bye bye to every year changing dates
2020-01-02 06:25:50 +01:00
Killyana a32aeceb0d Core/Creature: Clear creature focus after an evade 2020-01-01 17:19:37 +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
jackpoz 4074cb0f01 Core/Creature: Fix another pet assert
Fix an assert triggered when dismissing a Warlock pet while it's casting a spell
2019-09-01 19:05:29 +02:00
Treeston 9665bbf665 Entities/Creature: Fix a bug that caused map respawn timers to be scheduled for compatibility mode creatures. 2019-08-18 12:30:21 +02:00
Shauren 3a4216fd97 Core/Map: Kill zoneId from RespawnInfo, all it did was significantly slow down startup to make one gm command faster 2019-08-17 22:30:27 +02:00
Treeston 6590a0bfce Entities/Creature: Fix an edge case assertion failure with pets dying in specific situations while casting spells. 2019-08-12 19:43:38 +02:00
Treeston fcce90508d Core/Creature: Fix an issue that sometimes prevented spellcast focus targets from being reacquired. 2019-08-11 13:31:46 +02:00
ccrs 30f4aabf64 Core/Creature: 4a219ed codestyle followup, for real this time 2019-08-05 17:06:07 +02:00
Treeston dad1718f1b Revert "Core/Creature: 4a219ed codestyle followup"
This reverts commit 37b15e05bc.
2019-08-04 20:08:24 +02:00
ccrs 37b15e05bc Core/Creature: 4a219ed codestyle followup 2019-08-04 16:58:31 +02:00
Treeston a5e73e41c0 Core/Pooling: Quest pooling rewrite: (PR#23627)
- Split quest pooling from PoolMgr (into QuestPoolMgr)
- Proper saving/restoring on server restart
- No more hacking into sObjectMgr to insert/remove available quests
2019-08-04 12:22:57 +02:00
Giacomo Pozzoni 15e85f882f Core/Vehicle: Change vehicle accessories' phase according to the player on the vehicle (#23646)
* Core/Vehicle: Change vehicle accessories' phase according to the player on the vehicle

* Get the root vehicle to set the phase to all accessories.
Attempt to get the accessories to stay mounted on the vehicle.

* Fix the accessories to stay mounted on the vehicle
2019-08-04 11:33:29 +02:00
Treeston b159921099 no idea what happened there (4a219ed follow-up) 2019-08-04 11:12:56 +02:00
Treeston 4a219eda07 Core/Unit: Spell focusing now no longer nonsensical. HasSpellFocus always const. Error logs for various stuff. 2019-08-04 01:26:20 +02:00
ccrs 8e88f4501d Core/Creature: add a const spell-focus-check method and remove a nasty const_cast from IsMovementPreventedByCasting()
closes #23670
maybe #22857 ?
2019-08-03 18:12:53 +02:00
ccrs 3a4021be50 Core/Unit: rename more things
Workaround prework till actual facing system rework arrives
2019-08-03 18:04:00 +02:00
ccrs 85ad0befc5 Core/Unit: rename more methods
Workaround prework till actual facing system rework arrives
2019-08-03 17:53:22 +02:00
ccrs ec9f15a5ff Core/Unit: rename IsFocusing method
Workaround prework till actual facing system rework arrives
2019-08-03 17:45:06 +02:00
Treeston 1faa54fe8b Core/SmartAI: SmartAI creatures no longer process health-based hooks after death. 2019-08-02 21:27:23 +02:00
Treeston 3d4bebd8d9 Scripts/FollowerAI: Some cleanup:
- FollowerAI properly resumes follow after evading.
- Removed duplicated getters from CreatureAI (IsEscorted vs IsEscortNPC), they were used to do the same thing
- FollowerAI properly assists in combat.
- FollowerAI properly despawns if quest is abandoned.
- FollowerAI now supports dynamic respawning for escort NPCs.
2019-08-01 18:32:26 +02:00
Treeston 7fa990edc6 Scripts/ICC: Prevent Professor Putricide from displaying weird behavior during the Rotface/Festergut encounters as a result of his boss boundary 2019-07-31 16:02:29 +02:00
Treeston 9c603ea87f Core/Combat: Properly unset engagement flag on death. 2019-07-31 13:17:32 +02:00
Shauren 73c1d666fa Core/Entities: Fixed crash happening when deleting a creature/gameobject on respawn timer from db
Closes #23590
2019-07-26 19:55:02 +02:00
Wyrserth e2e37ec839 Core/Creature: fix mistake in Creature::GetAttackDistance().
Thanks Azelen for the heads-up!
2019-07-24 20:13:13 +02:00
Treeston 0e7c66cb4c Core/AI: Finally move the "is creature engaged" flag to be a property of the creature AI, where it honestly always belonged. Fixes #17981 and #23602 for real this time. 2019-07-21 01:50:52 +02:00
Wyrserth 5f5d2028df Core/Creature: don't set guardian stats in Creature::UpdateEntry(), because stat calculation from guardians is already done in Guardian::InitStatsForLevel.
Closes #281.

Signed-off-by: Wyrserth <wyrserth@protonmail.com>
2019-07-18 02:20:36 +02:00
Treeston d60082ae86 Core/Misc: Various dynspawn cleanup and refactors split off from pooling rewrite:
- Map::RemoveRespawnTime(SpawnObjectType, LowType, doRespawn) split into Map::Respawn and Map::RemoveRespawnTime, without the extra boolean
- Map::RemoveRespawnTime(RespawnInfo*) merged into Map::DeleteRespawnInfo(RespawnInfo*) and is now private
- Map::DeleteRespawnInfo(void) renamed to Map::UnloadAllRespawnInfos to properly describe what it does
- Map::ProcessRespawns now actually saves the delayed respawn time to DB if the respawn was delayed
- Map::AddRespawnInfo now takes const reference, and returns success as a boolean
- Map::AddRespawnInfo no longer offers an unused "replace" parameter
- Map::DeleteRespawnInfo no longer offers a variety of unused private overloads
- Map::SaveRespawnTime no longer offers a tantalizing writeDB parameter. Parameter is now called "startup" to properly describe what it does.
- Map::SaveRespawnInfoDB now takes RespawnInfo reference instead of all the various fields. Still public because compatibility mode. QQ.
- Map::GetWorldObjectBySpawnId sanitized
- Map::GetXRespawnTime methods sanitized to all go through Map::GetRespawnTime
2019-07-15 17:14:58 +02:00
Treeston 26440857c1 Core/Spawns: Exterminate CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY with extreme prejudice. (It didn't work anyway.) 2019-07-15 15:57:04 +02:00
Treeston 84b7b2e08e Entities/Unit: Nuke Map::ForceRespawn from orbit, with the following implications:
- .npc respawn no longer causes stupid things to happen (Fixes #23014)
- ::DeleteFromDB methods on Creature and GameObject rewritten to be as sensible as such a colossally stupid method can ever be. They're static now.
- .npc delete and .gobj delete ported to new argument handling, and rewritten as per above. They can no longer crash the server when used in instances, too. Yay for that.
- Adjusted various dusty cobwebbed hacks around the core (why does waypoint visualization use permanent spawns *shudder*) to still work too.
2019-07-08 11:56:41 +02:00
Treeston ded18a2690 Entities/Creature: Some asserts are now LOG_ERRORs that block spawning. Fix a group spawning bug exposed by the CoS merge. Improve some command output. 2019-07-07 19:18:32 +02:00
Ovahlord 980047763a Core/Creature: Reworked creature aggro radius calculation (#20615)
* Core/Creatures: rewrote creature aggro radius calculation
* Formulas are taken from WoW Wiki
2019-07-05 18:21:00 +02:00
ForesterDev c44fb37f74 Core/Unit: Implement more helper methods (#23555) 2019-07-05 14:07:35 +02:00
ccrs 401777d024 Core/Unit: rename several getters to follow codestyle
uint8 GetLevel()
        uint8 GetLevelForTarget(WorldObject const* /*target*/)
        void SetLevel(uint8 lvl)
        uint8 GetRace()
        uint32 GetRaceMask()
        uint8 GetClass()
        uint32 GetClassMask()
        uint8 GetGender()
2019-07-01 21:36:32 +02:00
Wyrserth 8967cc96df Core/SAI: do not pass old creatureData to UpdateEntry() and keep current health when changing a NPC's entry. (#23493) 2019-06-26 18:03:03 +02:00
Treeston 00728cef15 some more cleanup, a5f8c0d follow-up 2019-06-23 13:28:45 +02:00
Treeston a5f8c0d30c Core/Creature: Attach out-of-combat health regen to the Engaged system, not the Combat flag. Closes #21571. 2019-06-23 13:27:29 +02:00
Treeston dbe3bbefe7 Core/Entities: Kick engagement logic upstairs to Unit (from ThreatManager), since all Units with AI need it (not just those with threat list). Fixes #17981. 2019-06-23 00:32:13 +02:00
Wyrserth d50be8e020 Core/Loot: fix some other cases where a creature should not be able to set focus. (#23415) 2019-06-16 19:27:53 +02:00