* 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>
This fixes Script names not being loaded with npcs and gameobjects when manually added with the .npc\gameobject add cmd that would lead the user to restart the server to load up the npc\gameobject with the script that was manually added
* Remove unnecessary slang
Removes ZOMG! that is used in the src in logging and notes. Completely Unnecessary. Contributes to nothing useful. Inflates source. Not needed at all in any shape or form. Not Developer Lingo either.
* Further Clean Up
Removed Profanity
* sensible grammar correction
* More ZOMG! removal
- Get zone/area IDs from vmap data in the liquid update
- Add new method Map::getFullVMapDataForPosition to get area info and liquid info in a single vmap lookup
- Adjust GetZoneId/GetAreaId on WorldObject to always return these cached fields.
- Clean up liquid state handling on Unit and Player
- Implemented getting area id from gameobject spawns.
- Removed old core related to getting movement flags dependent on environment.
- Movement flags are now processed more precisely and dynamically.
Original source: TrinityCore.
- Closes#5086
- Updates #2208.
- Players that did not participate in killing dungeon boss are not eligible to get loot.
- Players that are too far away from the looted object are not eligible to get loot.
- Players that released spirit and were outside the dungeon when the loot has been released are eligible to get loot.
- Players that have pending bind are not eligible to get loot.
- Properly get loot recipient for some chests in dungeons.
- All above fixes should work in any loot mode (group loot, master loot, etc.)
- Closes#2104.
* fix(Core): fix chests not despawning when opened in group
* fix(Core): fix crashes in pr #5371
* Replaced nullptr checks
* Used if with initializer instead of separate scope