TrinityCore / TrinityCore/TrinityCore
GameObjectDisplayCondition.db2 Support
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.8k
- Forks
- 6.4k
- Avg merge
- 3d 16m
- Merged PRs (30d)
- 6
Description
Description
Since TWW the Holidays GameObject in Dornogal have a dynamic DisplayId and a single spawn, nothing handle that.
This system also handle the end chests in Delves.
For the exemple i will use the GameObject 454734 named HDressing 2.0 - Standing, Banner01 - Trial of Style/Noblegarde/Children/Pilgrim/Midsummer/Brewfest - JZB
the name itself show one gameobject have multiple purpose
How it's working db2 wise:
Few field here can be named;
Field_10_2_7_54171_001: Containt the DisplayId of the gameobject (we can confirm it by sniffing each event on retail)
Field_10_2_7_54171_002: is a WorldStateExpressionId (credit to @meji46 and @Nyr97 ) (see under for values)
Field_10_2_7_54171_003: Unknow purpose, only a field have something else than 0 and it look like a dev test
Field_10_2_7_54171_004: Float value may related to a size override
Guesed values of the WorldSate:
How ?
Knowing the field Field_10_2_7_54171_001 is a DisplayId we can search it in GameObjectDisplayInfo.db2
https://wago.tools/db2/GameObjectDisplayInfo?build=11.0.2.56311&filter[ID]=91502&page=1
this DB2 link the DisplayId to a FileDataId
https://wago.tools/files?build=11.0.2.56311&search=5282591
world/expansion09/doodads/festival/10xp_childrensweek_bannerstanding01.m2
By doing that on all DisplayId matching the WorldStateExpressionId we can deduce the names based on the file naming
1368 = xmas ((GetWorldStateValue(841)) == (1))
2016 = easter ((GetWorldStateValue(1350)) == (1))
2174 = childrensweek ((GetWorldStateValue(1472)) == (1))
3555 = summerfest (GetWorldStateValue(2286))
4546 = beerfest ((GetWorldStateValue(3010)) > (0))
6572 = thanksgiving ((GetWorldStateValue(4009)) > (0)) | ((GetWorldStateValue(4014)) > (0))
7523 = valentinesday ((GetWorldStateValue(4488)) == (1))
22303 = masquerade ((GetWorldStateValue(13445)) == (1))
not holiday related
42057/42058
43337 = nerubian
43338 = kobyss
43339 = rootlands
43340 = arathor
43341 = kobold
43366 = nerubian
From Firestorm-servers team, with love
Expected behaviour
.
Steps to reproduce the problem
.
Branch
master
TC rev. hash/commit
Operating system
None
Custom changes
None
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the GameObjectDisplayCondition.db2 and GameObjectDisplayInfo.db2 data linked in the issue, including the listed WorldStateExpressionId values and display IDs. Trace how GameObjects currently select display data and world-state conditions; done should mean the holiday and Delves cases can use the appropriate dynamic display and single spawn. No source file, test, or concrete expected behavior is named.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend, game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100