Files
Epicnabbo-Catalogus-Updated…/readme.md
T
Remco Epicnabbo dd08b42ed8 Add citation markers and streamline readme
Annotate catalog reference with [cite: 1] markers across table docs and lists, and condense several sections for clarity. Removed the BETA notice and large compatibility tables, simplified the compatibility matrix and data flow notes, updated the Reference Data blurb to reference the SQL Version 2 dataset, and cleaned up the See Also entries. Overall cleanup/refactor of readme.md for brevity and source attribution.
2026-06-14 19:16:56 +02:00

117 lines
6.7 KiB
Markdown

Additional tables for special catalog features[cite: 1]:
- `catalog_pages_bc` / `catalog_items_bc` — Builders Club catalog[cite: 1]
- `catalog_items_limited` — tracks limited-edition (RARE) item sales[cite: 1]
- `catalog_club_offers` — HC/VIP/BC subscription offers[cite: 1]
- `catalog_clothing` — wearable clothing items[cite: 1]
- `catalog_featured_pages` — front page featured slots[cite: 1]
- `catalog_target_offers` — targeted promotional offers[cite: 1]
## Table Schemas
### `items_base`
Defines the base properties of every furniture item. Referenced by `catalog_items.item_ids`, `items.id`, and many other tables via foreign key[cite: 1].
| Column | Type | Description |
|--------|------|-------------|
| `id` | `int(10) unsigned` | Primary key, matches sprite ID in FurnitureData[cite: 1] |
| `sprite_id` | `int(11)` | Sprite identifier (usually same as `id`)[cite: 1] |
| `public_name` | `varchar(56)` | Display name shown in the client[cite: 1] |
| `item_name` | `varchar(70)` | Internal classname (matches FurnitureData classname)[cite: 1] |
| `type` | `varchar(3)` | `s` = floor item, `i` = wall item, `r` = robot/bot, `e` = effect[cite: 1] |
| `width` | `int(11)` | Tile width[cite: 1] |
| `length` | `int(11)` | Tile length[cite: 1] |
| `stack_height` | `double(4,2)` | Stack height (0.00 = flat, 1.00 = normal stack)[cite: 1] |
| `allow_stack` | `tinyint(1)` | Can other items be stacked on top[cite: 1] |
| `allow_sit` | `tinyint(1)` | Can avatars sit on this[cite: 1] |
| `allow_lay` | `tinyint(1)` | Can avatars lay on this[cite: 1] |
| `allow_walk` | `tinyint(1)` | Can avatars walk through this[cite: 1] |
| `allow_gift` | `tinyint(1)` | Can this be wrapped as a gift[cite: 1] |
| `allow_trade` | `tinyint(1)` | Can players trade this[cite: 1] |
| `allow_recycle` | `tinyint(1)` | Can this be recycled[cite: 1] |
| `allow_marketplace_sell` | `tinyint(1)` | Can this be sold on the marketplace[cite: 1] |
| `allow_inventory_stack` | `tinyint(1)` | Does this stack in inventory[cite: 1] |
| `interaction_type` | `varchar(500)` | Behavior type (e.g. `default`, `gate`, `teleport`, `wired_trigger`, `dimmer`, `postit`, `bed`, `chair`, `football_counter`, etc.)[cite: 1] |
| `interaction_modes_count` | `int(11)` | Number of interaction states (e.g. 2 for toggleable items)[cite: 1] |
| `vending_ids` | `varchar(255)` | Vending machine reward item IDs[cite: 1] |
| `multiheight` | `varchar(50)` | Multi-height stack data[cite: 1] |
| `customparams` | `varchar(256)` | Custom parameters (e.g. clothing set IDs)[cite: 1] |
| `effect_id_male` | `int(11)` | Male avatar effect ID[cite: 1] |
| `effect_id_female` | `int(11)` | Female avatar effect ID[cite: 1] |
| `clothing_on_walk` | `varchar(255)` | Clothing effect applied on walk[cite: 1] |
### `catalog_pages`
Defines the hierarchical catalog tree structure visible in the Nitro client[cite: 1].
| Column | Type | Description |
|--------|------|-------------|
| `id` | `int(11)` | Primary key[cite: 1] |
| `parent_id` | `int(11)` | Parent page ID (`-1` = root page)[cite: 1] |
| `caption_save` | `varchar(25)` | Internal caption key[cite: 1] |
| `caption` | `varchar(128)` | Display caption[cite: 1] |
| `page_layout` | `enum` | Layout type (see source for full enum list)[cite: 1] |
| `icon_color` | `int(11)` | Catalog icon color (1-255)[cite: 1] |
| `icon_image` | `int(11)` | Catalog icon image ID[cite: 1] |
| `min_rank` | `int(11)` | Minimum rank to view[cite: 1] |
| `order_num` | `int(11)` | Sort order[cite: 1] |
| `visible` | `enum('0','1')` | Is the page visible[cite: 1] |
| `enabled` | `enum('0','1')` | Is the page enabled[cite: 1] |
| `club_only` | `enum('0','1')` | HC/VIP only[cite: 1] |
| `vip_only` | `enum('1','0')` | VIP only[cite: 1] |
| `page_headline` | `varchar(1024)` | Headline image/text key[cite: 1] |
| `page_teaser` | `varchar(64)` | Teaser image key[cite: 1] |
| `page_special` | `varchar(2048)` | Special layout data[cite: 1] |
| `page_text1` | `text` | Primary page text[cite: 1] |
| `page_text2` | `text` | Secondary page text[cite: 1] |
| `page_text_details` | `text` | Detail text[cite: 1] |
| `page_text_teaser` | `text` | Teaser text[cite: 1] |
| `room_id` | `int(11)` | Room ID (for room bundle pages)[cite: 1] |
| `includes` | `varchar(128)` | Semicolon separated page IDs to include[cite: 1] |
| `catalog_mode` | `enum('NORMAL','BUILDER','BOTH')` | Catalog mode[cite: 1] |
### `catalog_items`
Links items_base entries to catalog_pages with pricing and availability[cite: 1].
| Column | Type | Description |
|--------|------|-------------|
| `id` | `int(11)` | Primary key[cite: 1] |
| `item_ids` | `varchar(666)` | Comma-separated items_base IDs[cite: 1] |
| `page_id` | `int(11)` | FK → catalog_pages.id[cite: 1] |
| `offer_id` | `int(11)` | Offer ID (`-1` = default)[cite: 1] |
| `song_id` | `int(10) unsigned` | Trax song ID[cite: 1] |
| `order_number` | `int(11)` | Sort order within the page[cite: 1] |
| `catalog_name` | `varchar(100)` | Catalog name / offer identifier[cite: 1] |
| `cost_credits` | `int(11)` | Credit cost[cite: 1] |
| `cost_points` | `int(11)` | Points/currency cost[cite: 1] |
| `points_type` | `int(11)` | 0 = duckets, 5 = diamonds, etc.[cite: 1] |
| `amount` | `int(11)` | Amount received per purchase[cite: 1] |
| `limited_sells` | `int(11)` | Auto-tracked sales count[cite: 1] |
| `limited_stack` | `int(11)` | Total limited quantity (0 = unlimited)[cite: 1] |
| `extradata` | `varchar(500)` | Extra data[cite: 1] |
| `badge` | `varchar(500)` | Badge code (AtomCMS extension)[cite: 1] |
| `have_offer` | `enum('0','1')` | Is the offer active[cite: 1] |
| `club_only` | `enum('0','1')` | HC/VIP only[cite: 1] |
| `rate` | `varchar(255)` | Rate info (AtomCMS extension)[cite: 1] |
## Compatibility Matrix
### Emulator (Arcturus Morningstar Extended)
* `items_base`, `catalog_pages`, `catalog_items`: ✅ Full native. The emulator reads these directly via DAO[cite: 1].
### Nitro-V3 (React Client)
* Full native via emulator[cite: 1]. The client consumes data via `CatalogModeComposer` and `CatalogOfferComposer` protocol messages[cite: 1]. No direct DB access required[cite: 1].
### Nitro_Render_V3 (Renderer)
* `items_base` is compatible via client[cite: 1]. Renderer consumes FurnitureData.json[cite: 1].
## Reference Data
The `FullDatabase.sql` shipped with the emulator contains the **SQL Version 2 New** dataset[cite: 1]. It is in the final stages of completion; the structural integrity is verified and stable, with only minor aesthetic asset polish remaining[cite: 1].
## See Also
- `/var/www/emulator/Default Database/FullDatabase.sql` — Reference Database[cite: 1]
- `/var/www/atomcms/database/schema/mysql-schema.sql` — AtomCMS Schema[cite: 1]
- `/var/www/Nitro-V3/src/hooks/furni-editor/useFurniEditor.ts` — Client Furni Editor[cite: 1]