Commit Graph

386 Commits

Author SHA1 Message Date
Hanabi
a6a2ca8ef7 feat(Core/GameObjects): Instance gameobject save data implementation (#11113)
* fix(Core): Save gameobject state on instances

Currently, azerothcore doesn't save gameobject states on instances.
Whenever there's a re-start or crash, the instance's gameobjects and
their states aren't saved, producing un-wanted behaviours and blocking instances at times.

Implemented CRUD for new table `instance_saved_data` that holds the states of gameobjects.

- When worldserver launches and gameobjects are loaded, this will check
  if this object's state exists on the DB and sets the previous state.
- On instance deletion (reset) these states are also removed based on
  the instance ID.
- Whenever a gameobject state changes inside a dungeon or raid, we save
  on the database the set state.

* Select query to synchronous and used FindMap()

* loading gameobject states on create

* reseting instance saved data

* missing reset methods and on create state

* database structure

* Update src/server/game/Entities/GameObject/GameObject.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* Update src/server/game/Entities/GameObject/GameObject.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* Update src/server/game/Entities/GameObject/GameObject.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* Update src/server/game/Entities/GameObject/GameObject.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* Update src/server/game/Entities/Player/PlayerMisc.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* Update src/server/game/Groups/Group.cpp

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* codestyle

* table changes

* table style

* codestyle

* table changes for columns

* data sanitization

* todo:

- Finish loading db data into the containers
- Using containers to find data
- How to get data from ObjectMGR inside Gameobject?

* loading on start up and db changes

* Removing unused data structure

* Uninitialised integer

* Whitespace

* clean-up and hooks to save states on memory

* Codestyle MySQL deprecated backticks

* i dont understand codefactor

* build

* Update data/sql/updates/pending_db_world/rev_1643395587559675400.sql

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* Update src/server/game/Globals/ObjectMgr.h

Co-authored-by: Kargatum <dowlandtop@yandex.com>

* review changes

* unecessary removal

* pushback instead of emplace

* wrong database update

* Update ObjectMgr.cpp

* missing check

* removing entry from the PR

* missing removals

* last delete

* build

* aha! Found the culprit for the sudden assert errors

* type safety, save only important gameobjects

* static cast to unsigned short

* Update data/sql/updates/pending_db_characters/rev_1643629468629316100.sql

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

* type changes

* queries fix

* fix build

* enabling which gameobjects to save on the database

* deadmines iron clad door

* Adjustment to gameobject onj create state and instances:

- Gnomeregan doors and Grubbis boss state
- Deadmines missing doors
- Stratholme gameobjects state saved

* forgot emi blastfuse change to despawn

* Leaving group logic

* codestyle

* fixing merge issues

* prevent bad behaviour

* brain meltdown

* Update data/sql/updates/pending_db_characters/rev_1643629468629316100.sql

* Update data/sql/updates/pending_db_world/rev_1649359139539727000.sql

Co-authored-by: Claudiodfc <54484196+claudiodfc@users.noreply.github.com>
Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
Co-authored-by: Kargatum <dowlandtop@yandex.com>
Co-authored-by: Skjalf <47818697+Nyeriah@users.noreply.github.com>
2022-05-24 10:33:45 -03:00
UltraNix
bcfaf2daad fix(Scripts/Spells): Replenishment should proc off from Vampiric Touc… (#11772)
* fix(Scripts/Spells): Replenishment should proc off from Vampiric Touch even if target died from Mind Blast.

Fixes #8502

* Update.
2022-05-23 05:45:01 -03:00
UltraNix
914ea4f9c3 fix(Core/Items): Properly transfer enchantment durations from old to … (#11828)
fix(Core/Items): Properly transfer enchantment durations from old to newly created/summoned items.

Fixes #11687
2022-05-23 04:27:53 -03:00
UltraNix
99f1cd84e2 fix(Core/Spells): Improvements to Far Sight spell: (#11683)
* fix(Core/Spells): Improvements to Far Sight spell:

Far Sight should not interrupt while casting another spell.
Corrected setting Far Sight object as an active object.
Fixed grid activation range for active dynamic objects.
When Far Sight is over, the camera be reset to player.
Enable swapping camera between Far Sight and Sentry Totem.
Fixes #6368

* Update.

* Update.
2022-05-23 04:26:51 -03:00
acidmanifesto
11f151a962 fix (core): Prevent Forced UpdateObjectVisibility Before in World (#11730)
fix (Core): Prevent Forced UpdateObjectVisibility Before in World

TC Cherry Pick: 38dc5667ba

Co-Authored-By: Shauren <shauren.trinity@gmail.com>
Co-Authored-By: Jurgis <326232+chemicstry@users.noreply.github.com>

Co-authored-by: Shauren <shauren.trinity@gmail.com>
Co-authored-by: Jurgis <326232+chemicstry@users.noreply.github.com>
2022-05-13 13:02:43 -04:00
UltraNix
35596b0b01 fix(Core/Battlegrounds): Remove all DoTs when exiting battleground. (#11517)
Fixes #11332
2022-04-27 15:12:33 +02:00
SilentCLD
ffa2f071bc fix(Core/Wintergrasp): Reimplement Wintergrasp quests and fix vendors (#11533) 2022-04-25 18:20:10 -03:00
UltraNix
898eabe6dd fix(Core): Restored code about shared visions removed in d504a62. (#11493)
Fixes #11368
2022-04-25 09:26:32 -03:00
Kitzunu
8d3c183345 fix(Core/Player): null crash in RemovePet() (#11464)
* closes https://github.com/azerothcore/azerothcore-wotlk/issues/11331
2022-04-23 11:33:44 -03:00
Kitzunu
1501445b0a chore(Core/Misc): nullptr cleanup (#11467) 2022-04-21 19:17:20 +02:00
UltraNix
5a9bf21cd8 fix(Core/Spells): Implemented spell priorities. (#11278)
* fix(Core/Spells): Implemented spell priorities.

Fixes #11261

* Update.

* Update.

* Update.
2022-04-16 15:28:24 +02:00
UltraNix
b7c8c09920 fix(Core/Quests): Fixed displaying correct quest marks for autocomplete/repeatable/daily completed quests. (#11349)
Fixes #11237
2022-04-15 11:47:13 -03:00
Bogir[rus]
d723352207 fix(Core/Player): corrected HasUnitFlag usage (#11321) 2022-04-11 06:11:37 -03:00
Kitzunu
b709a22ddc feat(Core/Players): PlayerFlag helpers (#11294)
* feat(Core/Players): PlayerFlag helpers

* Update Player.h

* fix build
2022-04-05 18:53:50 +02:00
Kitzunu
edb7cac19b feat(Core/Unit): NPCFlags helpers (#11286)
* cherry-pick commit (TrinityCore/TrinityCore@d611925)
Co-Authored-By: Shauren <shauren.trinity@gmail.com>
2022-04-05 13:52:42 +02:00
Kitzunu
535c7451a2 feat(Core/Unit): New helpers for DynamicFlags (#11230)
* feat(Core/Unit): New helpers for DynamicFlags

* cherry-pick commit (d611925dc7)

Co-Authored-By: Shauren <shauren.trinity@gmail.com>

* oopsie

Co-authored-by: Shauren <shauren.trinity@gmail.com>
2022-04-01 07:14:29 -03:00
UltraNix
14edda6c90 fix(Core/Players): Fixed setting player's zone id to unknown value. (#10996)
* fix(Core/Players): Fixed setting player's zone id to unknown value.

Fixed #10945

* Update.

* Update.
2022-04-01 06:59:12 -03:00
Kitzunu
856aed6fc6 feat(Core/Unit): New helpers for UnitFlag and UnitFlag2 (#11227) 2022-03-30 07:59:42 -03:00
Skjalf
fed66a3429 chore(Core/Player): clarify a gossip error about invalid OptionType (#11173) 2022-03-28 19:10:22 -03:00
UltraNix
9c0c925433 fix(Core/Combat): Improved extra attacks handling. Author: @trickerer (#11169)
Fixes #9423
Fixes #11138
2022-03-27 11:08:18 -04:00
IntelligentQuantum
a5cb274222 Core/Packet: MIRROR_TIMER (#10885) 2022-03-27 01:19:26 -03:00
ZhengPeiRu21
44b7a0666c feat(Scripting/Hooks): implement OnQuestComputeXP() hook (#10934) 2022-03-24 10:27:15 +01:00
IntelligentQuantum
6a6d0e5907 feat(Core/Packet): SMSG_DURABILITY_DAMAGE_DEATH (#10894) 2022-03-23 13:35:30 +01:00
IntelligentQuantum
86e438a1e7 Core/Packet: SMSG_LEVELUP_INFO (#10884) 2022-03-21 04:43:45 +07:00
UltraNix
e5f9c8c0af fix(Core/Mails): Do not load expired mails from database. (#10917) 2022-03-18 18:13:17 -03:00
UltraNix
76b72b3631 feat(Core/Chat): Fixed feature to prevent horde and alliance players to chat with each other via custom emotes. (#11000)
Fixes #10600
2022-03-17 20:11:08 +07:00
Kargatum
78bdc89881 feat(Core/Battleground): rework bg queue system (#10817) 2022-03-15 14:36:49 -03:00
IntelligentQuantum
7ad65752fa feat(Core/Maps): Improvements to Cinematic function (#10765) 2022-03-11 08:21:54 +01:00
IntelligentQuantum
8eeb6ef1b7 feat(Core/Packet): SMSG_CROSSED_INEBRIATION_THRESHOLD (#10893) 2022-03-06 15:49:55 -05:00
IntelligentQuantum
029b79ecce feat(Core/Players): do not update position data on character creation 2022-03-06 15:45:49 -05:00
UltraNix
617d85a498 fix(Core/Movement): Send proper movement animation visuals. (#10843)
Fixed #10812
Fixed #10814
2022-03-06 12:31:41 -05:00
Kitzunu
d927ce6fac feat(Core/Creature): Implement quest_greetings table (#10526)
* cherry-pick commit (6dda09818d)

Co-Authored-By: ForesterDev <11771800+ForesterDev@users.noreply.github.com>
Co-Authored-By: Giacomo Pozzoni <giacomopoz@gmail.com>
2022-03-06 18:19:08 +01:00
Kargatum
acd3ed8759 fix(Core/Player): fix pet not appearing after dismount for warlock (#10899) 2022-03-05 04:54:54 -03:00
UltraNix
73957b95f6 fix(Core/Mail): do not show expired mails in packets (#10560)
Fixed #5920
2022-03-01 13:57:37 +01:00
UltraNix
1366838a05 fix(DB/Creatures): Nat Pagle should display vendor icon if player completed Nat's Measuring Tap quest. (#10657)
Moved c++ script to DB. Original author: @offl
Fixes #10559
2022-02-17 01:13:39 +01:00
Kitzunu
3501ceb710 refactor(Core/DB/playercreateinfo_spell_custom): Load empty (#10595) 2022-02-14 20:21:56 +01:00
Kitzunu
455899dc75 fix(Core/Misc): Change const to be after type name (#10591) 2022-02-14 16:05:45 -03:00
UltraNix
89deb60d43 fix(Core/Spells): Flasks should not be overridden by elixirs. (#10301)
* fix(Core/Spells): Flasks should not be overridden by elixirs.
2022-02-12 15:51:27 +01:00
Kitzunu
ead906c58f refactor(Core/Packets): Rewrite MSG_RANDOM_ROLL to new packet class (#10590)
* refactor(Core/Packets): Rewrite MSG_RANDOM_ROLL

* cherry-pick commit (c0f516caee)

Co-Authored-By: ForesterDev <11771800+ForesterDev@users.noreply.github.com>
Co-Authored-By: DJScias <439655+DJScias@users.noreply.github.com>

* handle crash check in DoRandomRoll()

* Update MiscPackets.h

* Update Player.h

Co-authored-by: ForesterDev <11771800+ForesterDev@users.noreply.github.com>
Co-authored-by: DJScias <439655+DJScias@users.noreply.github.com>
2022-02-11 10:30:49 +01:00
Kitzunu
210029095a fix(Core/GameObjects): Do not allow players to interact with gobs that use "Point" icon (#9800)
- cherry-pick commit (c52c0f0b7d)

- This was confirmed in sniffs, see TrinityCore/TrinityCore@c52c0f0#commitcomment-34342342

Co-Authored-By: Wyrserth <43747507+Wyrserth@users.noreply.github.com>
2022-02-10 14:50:33 +01:00
acidmanifesto
c50f7feda0 feat (core): Add Teleport Helpers (#10611)
* feat (core): Add Teleport Helpers

* Lower case the things
2022-02-09 20:54:46 -05:00
Skjalf
fb890b3310 feat(Core/Player): Implement option to convert excess honor points int… (#10565) 2022-02-09 18:04:56 -03:00
Kargatum
11006041ac fix(Core/Build): macOS build (part 1) (#10549) 2022-02-08 11:21:17 +01:00
UltraNix
0b02ba87fc fix(Core/Reputations): Faction rep gained by killing mobs is now prop… (#9737)
* fix(Core/Reputations): Faction rep gained by killing mobs is now properly rounded up.

Do not increase reputation rank if exceeds max rank cap.
Fixes #8718
2022-02-05 07:37:00 -03:00
Kargatum
de13bf426e feat(Core/DBLayer): replace char const* to std::string_view (#10211)
* feat(Core/DBLayer): replace `char const*` to `std::string_view`

* CString

* 1

* chore(Core/Misc): code cleanup

* cl

* db fix

* fmt style sql

* to fmt

* py

* del old

* 1

* 2

* 3

* 1

* 1
2022-02-05 00:37:11 +01:00
Skjalf
c45c23ffe7 fix(Core/Player): Align SaveSeasonQuestStatus() with TrinityCore (#10503) 2022-02-02 21:14:02 -03:00
Kargatum
5969df4e30 refactor(Core/Logging): switch to fmt style for LOG_ (#10366)
* feat(Core/Common): add support fmt style for ASSERT and ABORT

* correct CheckCompactArrayMaskOverflow

* 1

* Update src/server/game/Spells/Spell.cpp

* rework logging

* add fmt replace logs

* logging

* FMT_LOG_

* settings

* fix startup

* 1

* 2

* 3

* 4

* 5

* fmt::print

* to fmt
2022-01-27 16:44:41 +01:00
Kargatum
8b7df23f06 feat(Core/Time): Implement saparated manager for game time (#8630) 2022-01-24 17:55:00 +07:00
IntelligentQuantum
75fc2d1b2d fix(Scripts/Commands): quest complate kill reward (#9926) 2022-01-24 09:22:40 +01:00
UltraNix
1cbf52fb3d fix(Core/Spells): Fixed Revive Pet. (#10324)
Fixed #10267
2022-01-23 21:19:52 -03:00