mirror of
https://github.com/Such-Software/wownerogue.git
synced 2026-10-19 15:18:33 +02:00
feat(monetization): lock the cosmetic ladder (loyalty model) + free Original pack
Nails down the premium unlock system per the design pass: - FREE `original` topdown pack (NEW): the game's bare tiles — floor/wall/door/ torch/features only, no furniture, so the free tavern reads plain (the intended "reason to unlock"). Registered in assetPacks (RK.THEMES.original) as the free default topdown pack; plain ASCII stays free (accessibility). - Loyalty ladder (lifetime credits PURCHASED, cumulative, NOT deducted → buying to play also unlocks cosmetics): Interior 1, skins 5, iso 10, +tilepack 20, +iso 40, 3D 50. Each row is data (tilepack OR skin) → operator appends more at any rung. DEFAULT_CATALOG (entitlements.js) + migration 028 + MONETIZATION.md ladder table. - Tests updated to the new thresholds (catalogEntitlements_ultra, directEntryCredit_ultra). Note: this reprices roguelike-interior from free → 1cr, so once deployed the free tavern becomes bare (by design). Deploy is bundled with the single-player render-kit migration so the free-tier change lands with its payoff. Suite 61/432 green.
This commit is contained in:
@@ -130,6 +130,25 @@
|
||||
};
|
||||
|
||||
RK.THEMES = {
|
||||
// FREE baseline pack — the game's original bare tiles. Only the essentials are mapped
|
||||
// (floor/wall/door/torch/features); furniture kinds (bar/keg/table/chair/…) are absent, so
|
||||
// they fall back to floor and the free tavern reads plain — the intended "reason to unlock".
|
||||
'original': {
|
||||
id: 'original',
|
||||
label: 'Original Tiles',
|
||||
tileset: { url: 'assets/kenney/roguelikeSheet.png', tile: 16, spacing: 1 },
|
||||
tiles: {
|
||||
floor: [5, 2], // wood floor
|
||||
floor2: [6, 2], // stone accent
|
||||
wall: [13, 12], // masonry
|
||||
door: [37, 9],
|
||||
entrance: [37, 9],
|
||||
exit: [37, 9],
|
||||
treasure: [42, 15],
|
||||
torch: [50, 10]
|
||||
// No furniture kinds → bar/keg/table/chair/shelf/barrel/crate/rug fall back to floor.
|
||||
}
|
||||
},
|
||||
'roguelike-interior': {
|
||||
id: 'roguelike-interior',
|
||||
label: 'Kenney Roguelike Interior',
|
||||
@@ -387,6 +406,7 @@
|
||||
// projection is entitlement-gated + user-selectable. Adding a pack later = registerPack(...) +
|
||||
// assets + a catalog row. Backward-compatible: one pack per projection resolves to these.
|
||||
if (RK.registerPack) {
|
||||
RK.registerPack({ id: 'original', label: 'Original Tiles', projection: 'topdown', kind: 'tiles', assets: RK.THEMES['original'] });
|
||||
RK.registerPack({ id: 'roguelike-interior', label: 'Roguelike Interior', projection: 'topdown', kind: 'tiles', assets: RK.THEMES['roguelike-interior'] });
|
||||
RK.registerPack({ id: 'roguelike-dungeon', label: 'Roguelike Dungeon', projection: 'topdown', kind: 'tiles', assets: RK.THEMES['roguelike-dungeon'] });
|
||||
RK.registerPack({ id: 'iso-dungeon', label: 'Isometric Dungeon', projection: 'iso', kind: 'tiles', assets: RK.isoAssets });
|
||||
|
||||
Reference in New Issue
Block a user