Jump to content

SoD romance regions - what is going on?


jmerry

Recommended Posts

Not really about modding, but definitely a question. This is about something not working the way I would expect it to, and trying to figure out what's actually going on with it.

The romances in Siege of Dragonspear are mainly based on map regions. They have "trap" scripts that all follow the same format; on the first pass, set a variable. On the next pass, check that variable and have the NPC involved initiate conversation with the protagonist. Perfectly reasonable. What's the issue? Well, most of those regions don't have the "trap resets" flag checked. After the first pass, the region isn't trapped anymore. There shouldn't be a second pass at all. Yet there is. Try it yourself - one such region that lacks the reset flag is the first for Rasaad and Safana, just beyond the burned inn on the main road of the Coast Way Crossing. Edit its script bdrom02 to do something that will be obvious when executed repeatedly, load up a chapter 8 save, and head over to check it out. My test had that script run eight times in a matter of seconds, after which the quicksave showed the region no longer trapped. And yet, if I load that save and head over, the script runs half a dozen more times.

What's going on? Why does this region run its "trap" script even when it has already fired and is no longer "trapped"? (Not the only region this could apply to; it's just particularly easy to access.)

Link to comment

The "trapped" state is relevant for event-based triggers (triggers with id values < 0x4000, e.g. Entered()). The romance-related region scripts in SoD mostly contain blocks with IsOverMe() and other non-event-based triggers, however. That's why they can always trigger when characters are inside a region, regardless of their trapped state.

Link to comment

Region script are actually processed continuously, just like area script, etc. If you add a True() block inside the script, then it will fire repeatedly, regardless of whether a character is inside the region or not. It's only script blocks with event-based triggers which fire only if the "trapped" state is active.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...