feat: add construction (player-owned houses) - #189
Draft
oldschoola wants to merge 2 commits into
Draft
Conversation
Adds the Construction skill and player-owned houses: - api/poh: house engine - dynamic-region builder, room/hotspot data (generated JSON manifests), lifecycle hooks, attributes and events. - content/skills/construction: build-mode room and furniture scripts, doors, stairs, portals (chamber and nexus), chapel altars/burners, costume room storage, menagerie, achievement gallery, dungeon, servants, estate agent and house options. - or-cache: Construction furniture dbtable packed alongside the other skill tables (dbtable.poh_furniture, 468 dbrows). - tools/poh-datagen: regenerates the api/poh room/hotspot JSON from the rev-240 cache after cache updates. - Chapel altars take over the POH gilded-altar registrations previously hardcoded in the prayer module's GildedAltarEvents; bone offerings now follow the wiki altar-tier + incense-burner multiplier table.
Players only tracked zones on their own level, so loc/obj changes on other levels never reached the client - it kept rendering the baked map state until the player happened to visit that level. Visible in houses: building a dungeon staircase replaces the dungeon room's baked straight-staircase hotspot ghost server-side, but an owner on the ground floor still saw the stale ghost's top poking through the floor (a full-height plane-0 model), self-healing only after climbing down and back up. computeVisibleNeighbouringZones now enumerates all four levels of each visible zone column - zone packets are level-addressed and the client renders every level, which is why the protocol carries a level field. Test expectations updated to the all-level contract (49x4 full-follows on a fresh build area). User-verified in game: the stale ghost no longer shows after a fresh build-mode entry.
Mark7625
marked this pull request as draft
August 27, 2026 12:48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the Construction skill and player-owned houses.
What's in here
api/poh: the house engine — dynamic-region builder that assembles the house from room templates, room/hotspot/window data as generated JSON manifests, lifecycle hooks, house attributes and events. Zone updates are synced across all four levels (second commit) so building on one level renders correctly from another — zone packets are level-addressed and the client renders every level.content/skills/construction: build mode (room building/removal with wiki-accurate upper-floor rules, linked staircase pairs, one door pair per doorway on the interior face), furniture building with authentic menu icons, doors and wall fillers outside building mode, stairs, portal chamber and portal nexus, chapel (altar tiers x incense burners XP table), costume room storage, menagerie, achievement gallery, dungeon (uniform under-fill keeps the ground floor flat), servants, estate agent and house options.or-cache: Construction furniture dbtable packed alongside the other skill tables (dbtable.poh_furniture, 468 dbrows), costume-room inventories, and the poh gamevals.tools/poh-datagen: regenerates theapi/pohroom/hotspot JSON from the rev-240 cache; run manually after cache updates.GildedAltarEvents(which now handles only the chaos altar); bone offerings follow the wiki altar-tier + burner multiplier table, capped at gilded + 2 burners = 3.5x.Not in this PR
integration-test-suiteconvention resolves:api:testing, which doesn't exist on main yet, so nothing on main compiles integration sources. Happy to follow up with the test once that's wired.Behaviour was verified in-game on our fork (rev 240), including the stale-ghost fix after a fresh build-mode entry. On this branch,
:or-cache,:api:poh,:api:game-process,:tools:poh-datagen,:content:skills:constructionand:content:skills:prayerall compile against main after:or-cache:buildCache.