Skip to content

NCR: wire up Sheriff Dumont's post-Jack-surrender scene - #395

Draft
dweltvauller wants to merge 1 commit into
BGforgeNet:24from
dweltvauller:fix/dumont-jack-surrender-scene
Draft

NCR: wire up Sheriff Dumont's post-Jack-surrender scene#395
dweltvauller wants to merge 1 commit into
BGforgeNet:24from
dweltvauller:fix/dumont-jack-surrender-scene

Conversation

@dweltvauller

Copy link
Copy Markdown

Problem

scsherif.ssl (Sheriff Dumont) consumes the i_do_jack_surr map variable, but nothing ever sets it to 1. It is exported in maps/ncr1.ssl (init 0), imported and checked in scsherif.ssl, and set back to 0 there — but scofjack.ssl (Officer Jack), whose Node016 handles talking Jack into surrendering, calls set_jack_state(JACK_SURRENDER) and never touches i_do_jack_surr (it doesn't even import it).

Because the flag is permanently 0, three pieces of scsherif.ssl are dead code:

  1. talk_p_proc's if (i_do_jack_surr) branch → call Node020 never fires.
  2. Node020"That's a damn fine piece of work you did with old Jack, stranger. As the sheriff, I'll take it from here." (msg 165) — and Node021, the reward-request follow-up (msg 168). Node021 is reachable only from Node020's option 167.
  3. Node001's else if (i_do_jack_surr) then Reply(106)"Well, spit it out." (msg 106) — reachable only via Node021 → Node001 while the flag is still set.

This is unfinished vanilla content: the one-time "nice work with Jack" scene whose trigger was never implemented.

Fix

Set i_do_jack_surr := 1 in scofjack.ssl Node016, right next to the JACK_SURRENDER state change, and add the corresponding import.

 procedure Node016 begin
    set_jack_state(JACK_SURRENDER);
+   i_do_jack_surr := 1;   // cue Sheriff Dumont's one-time "nice work with Jack" dialogue (scsherif Node020)
    inc_general_rep(REP_BONUS_NCR_JACK_TALK_OUT);

Now, after talking Jack down, the next conversation with Dumont plays Node020 → optional Node021 (reward) → optional return to the question hub (Node001, greeting msg 106). scsherif.ssl's talk_p_proc already clears i_do_jack_surr after the scene, so it shows once; ongoing acknowledgement of the surrender continues to run through jack_state (Node005 msg 123/124) as before. No change to scsherif.ssl is needed.

Notes / limitations

  • i_do_jack_surr is a transient ncr1 map export — it re-initialises to 0 on every map load. If the player makes Jack surrender, leaves NCR, and returns before speaking to Dumont, the one-time scene is missed. This matches the variable's original vanilla scope; persisting it would need an MVAR_/GVAR_ and a larger change. In the intended flow Jack warps to the NCR police station on the same map and the sheriff is a few tiles away, so the scene normally plays on the same visit.
  • Reply(106) ("Well, spit it out.") inside Node001 also requires LVAR_Herebefore != 0 (the player has spoken to Dumont at least once before). On a first-ever conversation that happens to be the post-surrender one, Node020 still plays; only the hub greeting reached via Node021 → Node001 falls back to msg 103/104. This is pre-existing Node001 logic, left untouched.

Testing

  • scofjack.ssl and scsherif.ssl compile cleanly with sslc (sfall 4.5) after the change (.int diff is a single added assignment).
  • Not yet playtested in-game — flagging for maintainer review of the design intent before this leaves draft.

scofjack.ssl declares the import for i_do_jack_surr's consumer but never
sets the flag: Node016 (talking Officer Jack into surrendering) calls
set_jack_state(JACK_SURRENDER) but leaves i_do_jack_surr at 0.

As a result three pieces of scsherif.ssl were unreachable:
 - talk_p_proc's `if (i_do_jack_surr)` branch, so Node020 was never called
 - Node020 ("damn fine piece of work you did with old Jack") and Node021
   (the reward request), Node021 being reachable only from Node020
 - Node001's `else if (i_do_jack_surr) then Reply(106)` ("Well, spit it
   out."), reachable only via Node021 -> Node001 with the flag still set

Set i_do_jack_surr := 1 in Node016 alongside the JACK_SURRENDER state so
the one-time "I'll take it from here" scene fires when the player next
talks to Dumont. talk_p_proc already clears the flag after the scene, so
it stays a single showing; ongoing acknowledgement of the surrender still
runs through jack_state as before.

i_do_jack_surr is a transient ncr1 map export (re-inits to 0 on map
reload), matching its original vanilla scope; the intended flow is the
immediate walk from the power plant to the sheriff on the same map.
@dweltvauller

Copy link
Copy Markdown
Author

I have not tested this. It was flagged by Claude as I was going through the Sheriff Dumont scripts. I need to check if it makes sense to have it or not.

@dweltvauller
dweltvauller changed the base branch from master to 24 September 4, 2026 02:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant