Jump to content

The "battle for control" of arcane elemental summons is broken


jmerry

Recommended Posts

I had an idea on the script side, guarding the whole thing with a SetInterrupt(FALSE) and SetInterrupt(TRUE) pair. That should stop the block from being interrupted, right?

Nope. It didn't work. I could still issue commands to the elemental as normal, resetting its side of the struggle. Does that script action even do anything?

Link to comment
9 hours ago, jmerry said:

I had an idea on the script side, guarding the whole thing with a SetInterrupt(FALSE) and SetInterrupt(TRUE) pair. That should stop the block from being interrupted, right?

Nope. It didn't work. I could still issue commands to the elemental as normal, resetting its side of the struggle. Does that script action even do anything?

I believe that in a script...

RESPONSE#100

	SetInterrupt(FALSE)

	*other scripted actions*

	SetInterrupt(TRUE) 

...will allow separate & time consuming actions in the block to be executed consecutively without interruption by other prompts in the script.

As for the Wizard-summoned elementals, if I was doing it I'd apply a spell via opcode #146 to each such creature file which:

  1. Sets movement rate and APR to nil for 3 rounds, could also apply blindness if you think it's worthwhile.
  2. For PC summoned elementals only has a 15% chance at the end of the three rounds to firstly remove any enchantment school effects, secondly to set reaction, opcode #72, to ENEMY
Link to comment
3 hours ago, polytope said:

will allow separate & time consuming actions in the block to be executed consecutively without interruption by other prompts in the script.

What's that even supposed to mean? Of course a script isn't going to interrupt itself; once the game starts executing an action block, it keeps going until either the block is done or some outside influence interrupts it. The game doesn't run the script again unless the block is already interrupted. If that's how SetInterrupt works, it might as well be NoAction().

The obvious interpretation is that SetInterrupt(FALSE) is supposed to make it so the following script actions can't be interrupted. And that's what the IESDP says it does. But in my testing, with that in place, the wait did get interrupted. Something's wrong here.

Link to comment
11 hours ago, jmerry said:

What's that even supposed to mean? Of course a script isn't going to interrupt itself; once the game starts executing an action block, it keeps going until either the block is done or some outside influence interrupts it. The game doesn't run the script again unless the block is already interrupted. If that's how SetInterrupt works, it might as well be NoAction().

Have you actually tested this? RunAwayFrom(), MoveToObject() and probably other actions that eat up game time are often interruptible by other prioritized scripted actions.

It's not really relevant to the elementals anyway, and won't work if you can select them and give orders, which overrides script actions for friendly creatures.

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...