From 9b6bc6355c907df2351334b37d228edfd9dd23c0 Mon Sep 17 00:00:00 2001 From: type-two Date: Mon, 27 Jul 2026 13:29:55 +1000 Subject: [PATCH] Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Audit found the dunnies were the biggest room in the venue with ONE prop in it (and a minigame happening there). Nine new kinds placed across the five thinnest spaces. House-style note recorded: props are raked three-quarter top-down, not strict orthographic — a fridge from directly overhead is a grey box. Co-Authored-By: Claude Fable 5 --- public/props/barFridge.png | Bin 0 -> 1037 bytes public/props/cubicleDoor.png | Bin 0 -> 379 bytes public/props/cueRack.png | Bin 0 -> 438 bytes public/props/handDryer.png | Bin 0 -> 425 bytes public/props/iceWell.png | Bin 0 -> 699 bytes public/props/manifest.json | 9 +++++++++ public/props/mopBucket.png | Bin 0 -> 432 bytes public/props/patioHeater.png | Bin 0 -> 619 bytes public/props/truss.png | Bin 0 -> 643 bytes public/props/urinal.png | Bin 0 -> 1225 bytes src/scenes/floor/FloorView.ts | 1 + src/scenes/floor/venueMap.ts | 21 +++++++++++++++++++++ tools/props_import.py | 1 + 13 files changed, 32 insertions(+) create mode 100644 public/props/barFridge.png create mode 100644 public/props/cubicleDoor.png create mode 100644 public/props/cueRack.png create mode 100644 public/props/handDryer.png create mode 100644 public/props/iceWell.png create mode 100644 public/props/mopBucket.png create mode 100644 public/props/patioHeater.png create mode 100644 public/props/truss.png create mode 100644 public/props/urinal.png diff --git a/public/props/barFridge.png b/public/props/barFridge.png new file mode 100644 index 0000000000000000000000000000000000000000..89f10e20a1bceff1e783147afa293a775cb1d4fe GIT binary patch literal 1037 zcmV+o1oHcdP)j1sj07)W>PM?sKKP|&{$jDAG)!ygq9l}U7= zAj+~uq1fmurLGJrZJTaoIosxCY@T@E^(`;Cd8{A(@PV`UJKuM{^FHtOJCmRi@ySMI zsI@MSQ&RiBQH){~Qr6t{Lza~r-H3BE|CN`Vt=5R8Dbr7^mc<}sAPJb1-EYnx3=Dc+ z%=MLFv|1w))HJ=g$qWM}r|>1{h0R)x_fM}$G!{}^ADUmH<(-9PQ$sb+ebSF(Pmy#O z4QQG%8=B*#{PJ!`V-)`Y8Zoe)Ji;=tcpXa};#j(0R7m0qIzKX5t+x|?uT%0FGm(_D z5HVZ#^RqPWiw^Jis03s&nEdq{J{dE49J~Ff;;w%JL(ws%r>+XghABMn&oCkOiybX5 zE1;XcO7Q{k*4IEcp@7#@moJ6y(mD9bE+BrGtyx1qKR!3`jg&r-WkUTEc8&^m#axcgoCPpTGL{`bfSO_3kNyPW?%za*-pH0z=H|iO=3p0-h2)jw zizm?2Sj%D2&0VE*KE8$Y4aK}SZSyv?KX}MSB&r~w5d$hKt*ZrNbMtU@#~uy=#WmJt zXXS)3vlelc1d|fDN=Q;(^v;>bq~!_Yk$U;G3ibHy0V*p1%8J5#pfI0fDJ&5LDBej1 z6OgkI9RM$LqVT%1B-E%}dLyV2(M6W~ zoK5VtXrFBn3D~UF+{dYw-Idqb}cL}4ITvbE-N=%qO5Ruo{&g=3tU?Mfiz{;$n!J%LJ>l9$LwJN+UOAc&KUl!_Ki zNSTz)O351@*GCu?ZMgT7$2fUM0L{P&oBcJaiuQ&xIwm)t$6e_eOp07imQxN0Q2C7% z(w`>jBSjpkqP+?!AWDxQ+Aon8C+2V=|7nuW_n2Rab@#zTmgchlXMy=wUl35xty=jg z{tFBlGd11pZ~m0ZkrsnPP|*IvR2$R>qA3?^eb?1^Yao6CyT!Xg0zUsl00000NkvXX Hu0mjfsGabI literal 0 HcmV?d00001 diff --git a/public/props/cubicleDoor.png b/public/props/cubicleDoor.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c73d4c12471ad7af1821127a61247bd703985a GIT binary patch literal 379 zcmV->0fhdEP)}<5rT1k=CL(@32 zvy;o+?j?%D-TvKtKQru6qp{BTN080|GeBm?^2pkpxry#Zat#5dO9D>f4q6+V3zY}` zLCR#1LH1*NcMlIYSB1ds=m5k15Uu7a-bZ7#4V1i0<3IC8ofuK~5KGkxdS^YnjmDyE z2Z!L|{1Vk#)9IErg&8l8_g+6rIdL$qZ|{6Z8v945Gi;FqfN&gl)B4<)OukfTjspU) zwbS;IhA=})QdUYp_;YAEG8Oj#2*Yv?6P7FKI!SB^(~GAByiio?R^^r2vgaU}TY__^ zlaEilK0oN37S?uxt>_n6XyqqZ`vDdb5fRjEFc6zS z2&^F%t5;@bpIMW_1DAR1z2}}eJ40pDWPqT+_#58$elT zi41Z><*B_fpFGN>g?p_O(rDD`Bt{v<8C0eX8P{ifXjm3i3aLH<62+<;*R)>UKaemJWahzN+gKE76B2wPVdm!O5 z5U^Iv%c&TbGAS8?&@(Yy99IB_p+!y=gZ=H@N>!x0bgnZR?4P0a2=W!Q;2jKlFvBri g@Baw~J?l7r0R#YeP*G5UG5`Po07*qoM6N<$g6Q*J_CgWKRK5Wg+f$5fm-bYNc3Du=oC5;(MU8JiQ=L;-Dwo6lOqxpg)iWe z8=2XEvrK-;?r-+Jowu`ZX`!{uAjqe|Fmnco(w|wE6tm8Kq6k=nLZ;05-{w3nRh$Kf zRa-8SiHx!+R}u_3%a7O`B42T4(;&Q%oIM|vZ7fD_hpBrQ33%NZvRqcIw(_@=RSYM=90x@|1WLteWe9Z`p_u-z?RkAitNcY{Y z0^VMp(JZcDcD||mBs}Q>jB{kz+TPXq)!9*2+<&;k{_%M&FMA9T))u{9drm)o zeIrR1YR*hxtlTb%iSd$rva(89b1}b7pU$JBqv)`Mxd$N406gz1&v7}V+v^z5mscLs z>`a*i6{y~Nr}plYE7Wc-=o@l_uJ^^pd5S*_Fzwg_8@~qwfjz82 z&Ijk-RU+vmB^U^_kaVE**3a*BSiD5D^EI^t&mnFy)@ySjTi=%T+8kx;+mtn{KIZ`q zV9hY#p-`~(1YTVkouvD(4yg079~nkoKxhByJ-Yk%kGf`Jyre=ANkju#0B+UU)U(>0 zaL5IO0CUL3&Zf~Btv)mBvE@`(xCj_9*=h|VyAf}e)3d&S*9_+6+FSJwh5(G2!MpDS zH#OgXkuF335V9Laub+IN)lXjlN`-?3Kp2aik_1RHKw?CibK37q#{W!k+a{77*t_8G8R8hZdl+9Dl7 hR02Aep(GLb_YX4bCEw*>*s=fs002ovPDHLkV1j>=Lreew literal 0 HcmV?d00001 diff --git a/public/props/manifest.json b/public/props/manifest.json index 7fafc44..1f178a1 100644 --- a/public/props/manifest.json +++ b/public/props/manifest.json @@ -1,6 +1,7 @@ { "props": [ "arcade", + "barFridge", "barShelf", "boothLamp", "boothTable", @@ -8,14 +9,20 @@ "carpet", "cloak", "crate", + "cubicleDoor", + "cueRack", "deck", "discoball", "dishwasher", "glassRack", "glassStack", + "handDryer", "highTable", + "iceWell", "mixer", "monitor", + "mopBucket", + "patioHeater", "plant", "poolTable", "poster1", @@ -27,6 +34,8 @@ "street_backdrop", "taps", "till", + "truss", + "urinal", "wetFloor" ] } diff --git a/public/props/mopBucket.png b/public/props/mopBucket.png new file mode 100644 index 0000000000000000000000000000000000000000..e000b7159f42c6af65db975c2e07b2857aba18b4 GIT binary patch literal 432 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 literal 0 HcmV?d00001 diff --git a/src/scenes/floor/FloorView.ts b/src/scenes/floor/FloorView.ts index e125907..921ee62 100644 --- a/src/scenes/floor/FloorView.ts +++ b/src/scenes/floor/FloorView.ts @@ -643,6 +643,7 @@ const PROP_SIZES: Record = { cloak: [16, 48], stampPodium: [16, 16], arcade: [32, 32], highTable: [16, 16], plant: [16, 16], wetFloor: [16, 16], poolTable: [48, 32], dishwasher: [32, 16], + urinal: [48, 16], handDryer: [16, 16], cubicleDoor: [16, 16], mopBucket: [16, 16], cueRack: [16, 16], barFridge: [32, 32], iceWell: [32, 16], patioHeater: [16, 32], truss: [48, 16], }; function bakePropPlaceholder(scene: Phaser.Scene, kind: PropKind): string { diff --git a/src/scenes/floor/venueMap.ts b/src/scenes/floor/venueMap.ts index e4299d4..a2699e8 100644 --- a/src/scenes/floor/venueMap.ts +++ b/src/scenes/floor/venueMap.ts @@ -184,6 +184,8 @@ export type PropKind = | 'barShelf' | 'taps' | 'till' | 'glassStack' | 'glassRack' | 'boothTable' | 'highTable' | 'sinkRow' | 'buttBin' | 'crate' | 'plant' | 'wetFloor' | 'poolTable' | 'dishwasher' + | 'urinal' | 'handDryer' | 'cubicleDoor' | 'mopBucket' | 'cueRack' + | 'barFridge' | 'iceWell' | 'patioHeater' | 'truss' | 'poster1' | 'poster2' | 'poster3' | 'cloak' | 'stampPodium' | 'arcade'; export interface PropEmissive { @@ -268,6 +270,25 @@ export const PROPS: readonly PropDef[] = Object.freeze([ P('wet', 'wetFloor', 35, 8, 1, 1), // the pool corner — it is still an Australian venue underneath the techno P('pool', 'poolTable', 15, 10, 3, 2), + P('cues', 'cueRack', 19, 9, 1, 1), + + // The dunnies were the emptiest room in the venue: one sink row across + // 17x14 tiles, with a whole minigame happening in it (audit 2026-07-22). + P('urinals', 'urinal', 72, 5, 3, 1), + P('dryer', 'handDryer', 65, 5, 1, 1), + P('mopBucket', 'mopBucket', 75, 14, 1, 1), + P('cubDoorA', 'cubicleDoor', 62, 12, 1, 1), + P('cubDoorB', 'cubicleDoor', 68, 12, 1, 1), + + // The bar had four props along thirty-one tiles of counter. + P('fridgeA', 'barFridge', 27, 3, 2, 2, { colour: 0x60c0e0, radius: 16 }), + P('fridgeB', 'barFridge', 41, 3, 2, 2, { colour: 0x60c0e0, radius: 16 }), + P('iceWell', 'iceWell', 37, 4, 2, 1), + + // Yard + rig. + P('heater', 'patioHeater', 21, 39, 1, 2, { colour: 0xe07030, radius: 34, pulse: 'flicker' }), + P('trussN', 'truss', 34, 15, 3, 1), + P('trussS', 'truss', 34, 30, 3, 1), ]); const L = ( diff --git a/tools/props_import.py b/tools/props_import.py index e5dce4c..ddb7c2e 100644 --- a/tools/props_import.py +++ b/tools/props_import.py @@ -27,6 +27,7 @@ TARGETS = { "cloak": (16, 48), "stampPodium": (16, 16), "arcade": (32, 32), "highTable": (16, 16), "plant": (16, 16), "wetFloor": (16, 16), "poolTable": (48, 32), "dishwasher": (32, 16), + "urinal": (48, 16), "handDryer": (16, 16), "cubicleDoor": (16, 16), "mopBucket": (16, 16), "cueRack": (16, 16), "barFridge": (32, 32), "iceWell": (32, 16), "patioHeater": (16, 32), "truss": (48, 16), # the door-scene backdrop plate is special-cased: full size, no quantise "street:backdrop": (640, 176), # door-scene red carpet plate (front-on, not a floor prop)