Rebuild the Joke Shop as the Sunset Strip block
- Replace the alley with the 27 m Comedy Store-inspired hall, signature canopy, circular blade sign, red curtain bays, west entrance, low-rise neighbours, dry hillside and opposite frontage. - Add day/night/across-street concept frames and real-site mapping notes. - Expose the Joke Shop day stage in the realism captures and refresh the gallery shots. - Render multiline HUD/wand strings correctly and list carried items in the wand panel. - Add the Joke Shop layout/budget tests and update docs, roadmap and changelog.
This commit is contained in:
1 parent
74dc1fdc1d
commit
37f925c7ad
39 files changed
+1015
-96
No files matched your search
@@ -116,8 +116,17 @@ func _advance() -> void:
|
||||
gm.guard.rotation.y = 0.0
|
||||
gm.guard.head.rotation.x = deg_to_rad(4.0)
|
||||
_reset_hud()
|
||||
if state_frames == 26 and gm != null:
|
||||
# Light the facade on the final frames only: turning it on early
|
||||
# made nearby guests log "notices you watching" over the shot.
|
||||
gm.hud.clear_log()
|
||||
gm.call("_toggle_flashlight")
|
||||
if state_frames >= 30:
|
||||
if state_frames == 29 and gm != null:
|
||||
gm.hud.clear_log()
|
||||
gm.hud.set_target_label("")
|
||||
if state_frames >= 32:
|
||||
gm.hud.clear_log()
|
||||
gm.hud.set_target_label("")
|
||||
_shoot("06-night-flashlight.png")
|
||||
# Move to The Joke Shop for the wand/shift-review set, and keep
|
||||
# the late-night phase so the UI sits on the night scene.
|
||||
@@ -154,6 +163,12 @@ func _advance() -> void:
|
||||
else:
|
||||
gm.call("_cycle_nearby_target")
|
||||
_face_target()
|
||||
# Stage the documented false-alarm case (keys) so the capture
|
||||
# shows the interesting alert instead of a clear guest.
|
||||
var guest: Object = gm.call("_targeted_controller")
|
||||
if guest != null and guest.profile != null:
|
||||
var false_alarm: Array[String] = ["keys"]
|
||||
guest.profile.carried_items = false_alarm
|
||||
gm.call("_toggle_wand_screening")
|
||||
wand_attempts += 1
|
||||
elif state_frames > 600 and gm != null:
|
||||
@@ -172,6 +187,10 @@ func _advance() -> void:
|
||||
if gm != null:
|
||||
if gm.wand_open:
|
||||
gm.call("_toggle_wand_screening")
|
||||
# The fallback path can show the wand HUD without setting
|
||||
# `wand_open`; always hide it before the next screens.
|
||||
gm.hud.hide_wand()
|
||||
gm.wand_open = false
|
||||
# Real escalation path: formal warning arms the body camera
|
||||
# (a timeline row), then blocking raises the meter to L3.
|
||||
gm.call("_apply_interaction", 2, "formal warning")
|
||||
@@ -198,14 +217,33 @@ func _advance() -> void:
|
||||
_shoot("09-body-camera-timeline.png")
|
||||
if gm != null:
|
||||
gm.event_timeline.close()
|
||||
gm.guard.global_position = Vector3(0, 0.1, 6.2)
|
||||
gm.guard.rotation.y = 0.0
|
||||
# Precision walk at the Joke Shop entrance, not a blank wall:
|
||||
# face the red curtain door and keep the step line in frame.
|
||||
gm.guard.global_position = Vector3(-5.2, 0.1, 6.4)
|
||||
gm.guard.rotation.y = deg_to_rad(22.0)
|
||||
gm.guard.head.rotation.x = deg_to_rad(2.0)
|
||||
gm.hud.set_body_camera(false)
|
||||
gm.hud.set_escalation(0)
|
||||
gm.hud.clear_log()
|
||||
gm.hud.set_target_label("")
|
||||
Input.action_press("move_forward")
|
||||
Input.action_press("walk_slow")
|
||||
state = 11
|
||||
state_frames = 0
|
||||
11:
|
||||
if state_frames == 1 and gm != null:
|
||||
if gm.wand_open:
|
||||
gm.call("_toggle_wand_screening")
|
||||
gm.hud.hide_wand()
|
||||
gm.wand_open = false
|
||||
if gm.inspection_open:
|
||||
gm.call("_toggle_inspection")
|
||||
gm.hud.hide_inspection()
|
||||
gm.hud.clear_log()
|
||||
gm.hud.set_target_label("")
|
||||
if state_frames >= 50:
|
||||
gm.hud.clear_log()
|
||||
gm.hud.set_target_label("")
|
||||
_shoot("11-precision-walk.png")
|
||||
Input.action_release("move_forward")
|
||||
Input.action_release("walk_slow")
|
||||
@@ -216,9 +254,18 @@ func _advance() -> void:
|
||||
state_frames = 0
|
||||
12:
|
||||
if state_frames == 1 and gm != null:
|
||||
gm.guard.global_position = Vector3(-1.5, 0.1, 8.5)
|
||||
gm.guard.rotation.y = deg_to_rad(-5.0)
|
||||
gm.guard.head.rotation.x = deg_to_rad(2.0)
|
||||
# The wand fallback can leave the panel open; close every modal
|
||||
# before the venue beauty shot.
|
||||
if gm.wand_open:
|
||||
gm.call("_toggle_wand_screening")
|
||||
gm.hud.hide_wand()
|
||||
gm.wand_open = false
|
||||
if gm.inspection_open:
|
||||
gm.call("_toggle_inspection")
|
||||
gm.hud.hide_inspection()
|
||||
gm.guard.global_position = Vector3(-2.0, 0.1, 13.2)
|
||||
gm.guard.rotation.y = deg_to_rad(12.0)
|
||||
gm.guard.head.rotation.x = deg_to_rad(12.0)
|
||||
gm.hud.clear_log()
|
||||
gm.hud.set_escalation(0)
|
||||
gm.hud.set_body_camera(false)
|
||||
|
||||
Reference in new issue
Block a user