$$ $$ A7 Fix D (#140) v2 — fills the two gaps v1 left: $$ (1) light COLORS (v1's dt did not expand RGBColor); expanded here as a $$ typed RGBColor dump + raw dd hex backup (reinterpret IEEE-754 if dt fails). $$ (2) the STATIC wall torches (the lights that actually BAKE the walls) — these $$ only re-register on a visible-cell-set change, so the player must MOVE $$ (walk IN and OUT of the meeting hall, circle past the torches) to trigger $$ Render::add_static_light. $$ $$ v1 already proved: intensity=100/falloff=6 light is DYNAMIC (add_dynamic_light, $$ d3dIdx=2) = the portal/effect on the hardware path, NOT a baked wall torch. $$ viewer light = intensity 2.25 / falloff 10 (dynamic, d3dIdx=1). $$ $$ add_static_light / add_dynamic_light(LIGHTINFO* info, cellID, Frame* offset): $$ LIGHTINFO* = poi(@esp+4). color@+0x50 (r/g/b floats), origin@+0x38, intensity@+0x5C, falloff@+0x60. $$ $$ Dynamic logging is limited to the first 8 hits (we already characterised them); $$ ALL static hits log. qd when 12 static torches captured OR 1500 total hits (safety). .logopen C:\Users\erikn\source\repos\acdream\.claude\worktrees\thirsty-goldberg-51bb9b\a7-fixd-lights-v2.log .sympath C:\Users\erikn\source\repos\acdream\refs .symopt+ 0x40 .reload /f acclient.exe r $t0 = 0 r $t2 = 0 r $t3 = 0 $$ STATIC wall torches (baked path) — MOVE to trigger. Color (typed + hex) + origin. bp acclient!Render::add_static_light "r $t0=@$t0+1; r $t2=@$t2+1; .printf /D \"[STATIC torch] hit#%d\\n\", @$t2; dt acclient!LIGHTINFO poi(@esp+4) type intensity falloff cone_angle; .echo color_typed:; dt acclient!RGBColor poi(@esp+4)+0x50; .echo color_hex(r,g,b):; dd poi(@esp+4)+0x50 L3; .echo origin_hex(x,y,z):; dd poi(@esp+4)+0x38 L3; .if (@$t2 >= 12) { qd } .elsif (@$t0 >= 1500) { qd } .else { gc }" $$ DYNAMIC lights (portal/viewer) — log first 8 with color, then silent gc. bp acclient!Render::add_dynamic_light "r $t0=@$t0+1; r $t3=@$t3+1; .if (@$t3 <= 8) { .printf /D \"[DYNAMIC light] hit#%d\\n\", @$t3; dt acclient!LIGHTINFO poi(@esp+4) type intensity falloff; .echo color_typed:; dt acclient!RGBColor poi(@esp+4)+0x50; .echo color_hex(r,g,b):; dd poi(@esp+4)+0x50 L3 }; .if (@$t0 >= 1500) { qd } .else { gc }" .printf "v2 armed: STATIC=wall torches (MOVE in/out of hall to trigger), DYNAMIC=portal/viewer; colors expanded. qd at 12 statics or 1500 total.\\n" g