Commit Graph
435 Commits
Author SHA1 Message Date
Shauren 4d4c7e6893 Core/Quests: Quest flag fixups
* Update flag names
* Implemented QUEST_FLAGS_COMPLETION_NO_DEATH and QUEST_FLAGS_FAIL_ON_LOGOUT
* Started using QUEST_FLAGS_COMPLETION_EVENT and QUEST_FLAGS_COMPLETION_AREA_TRIGGER instead of a custom SpeclalFlag
* Renamed Quest::IsAutoComplete to Quest::IsTurnIn to better describe what it means (a quest that can be turned in without accepting it to quest log)
* Implemented QUEST_FLAGS_UPDATE_PHASESHIFT and removed forced phaseshift updates on every quest status change
* Implemented QUEST_FLAGS_LAUNCH_GOSSIP_ACCEPT - reopens gossip menu with questgiver
2023-06-10 20:31:33 +02:00
Shauren d791afae1d Core/Logging: Switch from fmt::sprintf to fmt::format (c++20 standard compatible api) 2023-01-08 21:16:53 +01:00
Shauren 1afec8be63 Core/Misc: Use boost/circular_buffer forward declaration headers in our headers 2023-01-06 16:55:25 +01:00
Shauren bde93b25d2 Core/Gossip: Integrate banker guid checks into shared gossip interaction data 2022-12-30 14:08:01 +01:00
Shauren 3ef5079fee Core/Loot: Move loot rolls from Group to Loot
* Partial port of cmangos/mangos-wotlk@ffdf9a05d6
2022-09-16 16:58:03 +02:00
jackpoz 3bedbf6596 Core/PacketIO: Continue processing packets even if player is not in world
(cherry picked from commit aee4f0350ea5610b663cb07fb097f2fad256809e)
2022-06-10 16:58:19 +02:00
Shauren a196f8fdec Core/PacketIO: Stop WorldSession packet processing loop immediately when AntiDOS kicks/bans the player
(cherry picked from commit 0d0cb23a634a37e2d679a5b8ec2e078d20def66a)
2022-06-10 16:51:03 +02:00
fluxurion 125ada42f6 Core/Transmog: Implemented Transmog Illusions + Spelleffect to unlock them 2022-06-09 21:27:02 +02:00
Shauren 0943610fde Core/PacketIO: Add flood exceptions to CMSG_MOVE_SET_FACING_HEARTBEAT and CMSG_MOVE_SET_PITCH 2022-06-08 21:41:42 +02:00
Jan Van Buggenhout dbf528be69 Core/Misc: Fix typo in SendAuthWaitQue method name (#25887)
(cherry picked from commit a832a1fe903779fa5a03202708997ced7d4c1acc)
2022-03-06 00:31:02 +01:00
Jan Van Buggenhout 9df5eb27e0 Core/Misc: Update WorldSocket::OnRead to WorldSocket::ReadDataHandler in comments and logging (#25885)
(cherry picked from commit ec689e790894cfcab5b44b3bd5a9cee036bc9daf)
2022-03-06 00:27:11 +01:00
Kargatum 373ed8f46b Core: whitespace cleanup, reduce double blank line to single (#25795)
* Core/Misc: fix double empty line

* worldserver.conf

(cherry picked from commit a32b6b8ac4c81128a56b282f20837fb085bdd9e7)
2022-03-05 20:07:57 +01:00
Shauren 357147834e Core/DBLayer: Fixed memory leaks with existing SQLQueryHolder uses and eliminated the possibilty of adding more in future (replaced manual memory management with smart pointers)
(cherry picked from commit 53482f729995889936ad8fba9fc5789d9cdba85a)
2022-02-28 22:41:36 +01:00
Shauren 1021fcee34 Core/PacketIO: Rename some new opcodes 2022-02-25 19:18:55 +01:00
Treeston 54fc62db52 Core/Misc: Convert leftover DatabaseTransactions-by-reference (pass them by value!)
(cherry picked from commit 6b8f3d0f94b7a611eba81b7a2ff476cf75d09f4a)
2022-02-05 19:56:31 +01:00
Treeston b6635be041 [3.3.5] Core/Guilds: Guild cleanup (PR #25422)
(cherry picked from commit cd28423a4e813baf6833f38c93613a7f82a721f8)
2022-02-05 19:20:18 +01:00
Shauren f7ed56f232 Core/Warden: Fix warden timeout ticking twice as fast as it should
(cherry picked from commit ec783fcbb59fcd6e657bc1a39c2b073fd7506ed4)
2022-02-04 00:27:12 +01:00
Treeston eaa3c7e5a0 Core/Warden: Add .debug warden force, allowing you to force specific warden checks to be sent
(cherry picked from commit f04f4e91ff3afbf89f30659b85e8593c3206138e)
2022-02-02 22:47:55 +01:00
Shauren 5a82a0381d Core/Objects: Properly choose between "Destroyed" or "OutOfRange" during visibility update 2022-01-29 16:01:57 +01:00
Treeston 319ddd9bcd Core/Warden: Warden refactors (PR #25235)
(cherry picked from commit 6116e5b38522ccfb00f6c941c75482e05b4c0799)
2022-01-26 19:42:11 +01:00
Shauren d5dcf02196 Core/DBLayer: Add nicer api for SQLQueryHolders
(cherry picked from commit 9b806c6b5d9e83f8614523317a44742954f97744)
2022-01-24 21:21:37 +01:00
Giacomo Pozzoni 8350985975 Core/Metric: Log detailed metrics about each opcode handler (#25153)
* Core/Metric: Log detailed metrics about each opcode handler

* Add new panel to Performance profiling dashboard and use fill(0) instead of fill(none)

* Add new settings Metric.Threshold.* to be able to specify the minimum threshold for the specified metrics

* Update dashboard

* Change thresholds to be required to send the metrics. A TC_METRIC_DETAILED_TIMER metric with an expected threshold not configured will be ignored

* Use typedef Milliseconds

* Refresh realms on load

(cherry picked from commit 8a2c79c850199a73fd431d04f83d6aa89733060d)
2022-01-24 13:02:38 +01:00
Treeston d11c3807b3 Core/Time: Rename GetGameTime{System, Steady}Point methods
The names are a bit unhandy. Rename them (shorter but still meaningful).

GetGameTimeSystemPoint() -> GetSystemTime()
GetGameTimeSteadyPoint() -> Now()

Also add 2 new typedefs:

typedef std::chrono::steady_clock::time_point TimePoint;
typedef std::chrono::system_clock::time_point SystemTimePoint;

Closes #25042

(cherry picked from commit 896b68d5c297b06587645caebc98b704978ecaa7)
2022-01-23 21:36:03 +01:00
Shauren c0296ac131 Core/PacketIO: Allow more CMSG_SET_ACTION_BAR_TOGGLES before triggering AntiDOS protection
Closes #27619
2022-01-16 19:45:16 +01:00
jackpoz 68d947d42f Core/Log: Log all character kicks to "network.kick" category
(cherry picked from commit 31018c36527755166d8a297ac9e6c98a66f014ae)
2022-01-01 12:56:24 +01:00
jackpoz dbb0f399fa Core/NetworkIO: Adjust more packet throttling values
Thanks @Nefertumm at https://github.com/azerothcore/azerothcore-wotlk/commit/f5e38a7f5797dc04b2fd5a6710aabd9780751339 for the heads-up

(cherry picked from commit 68fcd592f8c164d1720fda147d37960362194306)
2022-01-01 12:44:07 +01:00
Giacomo Pozzoni a9e325f6b7 Core/Logs: Log full guid instead of just low guid, part 2
(cherry picked from commit 3def52c1c459f566ab2b2d8cf017c70df4d7cf22)
2022-01-01 00:51:54 +01:00
Shauren 3ebfa8cc64 Core/PacketIO: Add a validating string helper class for use in packet classes
(cherry picked from commit f2f47f774f3d9c5da1a38b5f20cbfe59c2ff66af)
2021-12-23 23:55:58 +01:00
treeston ee5c0e5372 Core/Chat: Disallow hyperlinks from being inserted in various guild-related freetext fields (the client already blocks this)
(cherry picked from commit 01b2ac3ed425a3f94480c2b8a453c62ae30f6708)
2021-12-23 21:09:24 +01:00
Giacomo Pozzoni 562c567b1e Core/Calendar: Add some additional validation when creating events (#23797)
* Core/Calendar: Add some additional validation when creating events

Allow only 30 player events and 100 guild events to be created.
Don't allow to create guild events if player is not in guild.
Send some more error messages to the client (not blizzlike errors but better than nothing).

* Core/Calendar: Add some additional validation/checks

Add guild id check in GetPlayerEvents().
Change error message in HandleCalendarCopyEvent() to be the same as in HandleCalendarAddEvent() when creating an event in the past.

* Core/Calendar: Add some additional validation/checks

Reduce the number of CMSG_CALENDAR_ADD_EVENT packets a seconds allowed from 10 to 3.

* Core/Calendar: Add some additional validation/checks

Implement 5 seconds cooldown between the creation of calendar events

* Core/Calendar: Add some additional validation/checks

Don't allow to copy events of a different player/guild

* Core/Calendar: Implement automatic deletion of old events

Implement automatic deletion of events older than 1 month (30 days).
Fix debug assertion triggered when deleting a character with calendar events.
Avoid double std::set lookup when deleting events when deleting a character.

NB: The whole CalendarMgr/CalendarHandler code should be checked line by line for bugs/crashes/exploits.
(cherry picked from commit fb059722fdb18a94d47b3f44a5b2d7f183bf5a29)
2021-12-18 22:19:05 +01:00
Shauren e8b3dda4a0 Core/BattlePets: Wrap battle pet related code in a separate namespace 2021-12-17 14:23:43 +01:00
Aokromes 3ad5bc1e15 Core/Misc: More coding standards (#23519)
* Core/Misc: More coding standards

* revert part

* "void  " or more to "void "

* fix? reject

* remove more double whitespaces

* remove more double whitespaces

* more standards

* more coding standards

* More standards

* more coding

* more coding standards

* more coding standards

* And more standards

(cherry picked from commit 574a7c8d3d5f5a5660295deb70e905cf4dd756c4)
2021-12-14 23:04:29 +01:00
ccrs 4e6c59dca7 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()

(cherry picked from commit 5c09ff51f7015b775def8d5cc1f678eaef37200f)
2021-12-13 00:42:20 +01:00
Wyrserth cc141e9bad Core/Group: implement automatic party/raid leader change when the leader has been offline for two minutes (#23398)
* Core/Group: implement automatic party/raid leader change when the leader has been offline for two minutes.

* Add #23396 to make testing easier.

* Prioritize assistants in raids.

* Fix dumb mistake and apply suggested change, thanks VincentVanclef and jackpoz!

(cherry picked from commit e906a2fe7d71fc17de9f7ea4778970beb3f9265e)
2021-12-11 13:06:25 +01:00
Chaouki Dhib c19a4db1c1 Core/Movement: Add time synchronisation (#18189)
(cherry picked from commit 975f1e364a6a68be2beca261a64ea8aecc16f6f6)
2021-11-30 22:11:36 +01:00
MejiandShauren 93c668ac50 Core/BattlePets: Implemented BattlePetSpeciesFlags::NotAccountWide (#27303)
Co-authored-by: Shauren <[email protected]>
2021-11-25 20:55:12 +01:00
MejiandShauren 895367e69f Core/BattlePets: Journal lock improvements (#27178)
Co-authored-by: Shauren <[email protected]>
2021-11-19 15:37:21 +01:00
Treeston 5fe69351b0 Core/Chat: Some hyperlink follow-ups:
* Ignore messages containing invalid links again instead of trying to sanitize them. Closes #22451.
* No longer filter messages on the addon channel. Closes #22450.

(cherry picked from commit e858706270c3059acf6915e7cf655eed0f7e88bb)
2018-09-18 01:28:57 +02:00
Shauren 3917c2ad01 Core/Misc: Send saved client settings instantly after login, not only after entering world 2021-11-06 18:33:44 +01:00
ModoX 68c2fc8ff5 Core/Characters: Made homebind location a WorldLocation (this implicitly adds orientation) (#27055) 2021-10-16 01:17:47 +02:00
Treeston 3418a33a87 Misc: Pass std::chrono types by value everywhere.
(cherry picked from commit 2ef9d301f0869b443122e2ba543af054c5b0e53c)
2021-10-14 19:39:42 +02:00
Shauren d0be92ec0a Core/Achievements: Defined all modifier tree types and implemented many of them 2021-06-07 15:37:34 +02:00
Treeston 34c7810fe5 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.

(cherry picked from commit 532ab1c7f8653d1a2e48aa1f1f8a9ba1041d4bb7)
2021-05-16 21:56:01 +02:00
jackpoz e17e4e6f07 Core/Misc: Replace time(NULL) with GameTime::GetGameTime()
(cherry picked from commit 12701cb0c6c45eb105ad449eb9a56e76d84d691e)

 Conflicts:
	src/server/game/Achievements/AchievementMgr.cpp
	src/server/game/AuctionHouse/AuctionHouseMgr.cpp
	src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
	src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
	src/server/game/Battlefield/Battlefield.cpp
	src/server/game/Battlefield/Zones/BattlefieldWG.cpp
	src/server/game/Battlegrounds/BattlegroundMgr.cpp
	src/server/game/Calendar/CalendarMgr.h
	src/server/game/DungeonFinding/LFGQueue.cpp
	src/server/game/Entities/Corpse/Corpse.cpp
	src/server/game/Entities/Creature/Creature.cpp
	src/server/game/Entities/Item/Item.cpp
	src/server/game/Entities/Pet/Pet.cpp
	src/server/game/Entities/Player/Player.cpp
	src/server/game/Entities/Unit/Unit.cpp
	src/server/game/Globals/ObjectMgr.cpp
	src/server/game/Grids/ObjectGridLoader.cpp
	src/server/game/Guilds/Guild.cpp
	src/server/game/Handlers/AuctionHouseHandler.cpp
	src/server/game/Handlers/BattlefieldHandler.cpp
	src/server/game/Handlers/CalendarHandler.cpp
	src/server/game/Handlers/CharacterHandler.cpp
	src/server/game/Handlers/ChatHandler.cpp
	src/server/game/Handlers/LFGHandler.cpp
	src/server/game/Handlers/MailHandler.cpp
	src/server/game/Handlers/MiscHandler.cpp
	src/server/game/Handlers/MovementHandler.cpp
	src/server/game/Handlers/PetHandler.cpp
	src/server/game/Handlers/QueryHandler.cpp
	src/server/game/Handlers/TicketHandler.cpp
	src/server/game/Instances/InstanceSaveMgr.cpp
	src/server/game/Server/WorldSession.cpp
	src/server/game/Server/WorldSocket.cpp
	src/server/game/Spells/Auras/SpellAuras.cpp
	src/server/game/Tickets/TicketMgr.cpp
	src/server/game/Tickets/TicketMgr.h
	src/server/game/World/World.cpp
	src/server/scripts/Commands/cs_gobject.cpp
	src/server/scripts/Commands/cs_instance.cpp
	src/server/scripts/Commands/cs_list.cpp
	src/server/scripts/Northrend/zone_wintergrasp.cpp
	src/server/scripts/Spells/spell_item.cpp
2021-04-15 05:53:27 +02:00
Shauren d29dd1eeb5 Core/Misc: Change all unix time columns in character database to bigint (signed) 2021-04-05 23:47:05 +02:00
jackpoz f1388f37b6 Core/WorldSession: Fix idle WorldSessions getting kicked twice as fast as supposed
Fix SocketTimeOutTime and SocketTimeOutTimeActive settings being effectively halved by reducing the timeout time twice every update instead of just once, causing much faster kicks (i.e. after 30 seconds with 60 seconds set in the configs).

(cherry picked from commit 032194099e84bf0d47b121d82170c39fe73e0c87)
2021-02-25 18:50:55 +01:00
Matan Shukry 6dbaba7669 Core/Player: remaining XP logging overflow correction (#25934) 2021-01-26 16:48:28 +01:00
Matan Shukry bb24c6a11b Core/logs: added xp info on login & logout (#25867)
* Core/logs: added xp info on login & logout

* - Moved getters to header
- Changed %s to %u
2021-01-17 17:08:22 +01:00
Mikhail Redko 7625bd960e Core/WorldSession: Add RBAC permission for skipping idle connection check (#20595)
(cherry picked from commit 558382ed6d87942603fa309b16a30e64d07bb305)
2020-12-31 23:23:50 +01:00
Shauren b82a3a557a Core/DataStores: Updated db2 structures to 9.0.2
* Includes support for new character customization
2020-12-08 18:16:47 +01:00