Bug #374

/speed_toggle command broken

Added by ninjar ninjar about 2 years ago. Updated about 1 year ago.

In Progress
Modules Affected:
Systems Affected:
Command Prompt
Steps to Reproduce:

/speed_toggle with a character whose first three levels are not of monk to turn speed off, and then reactivate.


When attempting to use the /speed_toggle command and toggle my speed back on, my bic was marked Invalid. I receive a message saying that the feat applied at level 3 was invalid.

After a chat with POD, it was suggested that it was applied at character level 3 instead of Monk level 3, which makes a lot of sense as he is dual class. Marked this as a blocker since it completely removes playability without deLevel & reLevel by DM or a rollback.

Imported from Mantis Bug ID 346.


#1 Updated by tizmo CCC almost 2 years ago

There is a fix in the works for the Monk speed toggle issue. Seka is on it.

#2 Updated by Seka CCC about 1 year ago

The /speed_toggle command works by removing (and adding back) the feat FEAT_MONK_ENDURANCE. The issue has to do with the NWNX function that removes the feat, because it doesn't completely remove every trace of it (it leaves the feat entry in the LvlStatList of the .bic). Then, when the feat gets added back in at next toggle, the character now has two entries in the LvlStatList, and because of that, Avlis's external ELC checker (Autobic) marks the character as invalid.

The long and torturous history of an attempt at a fix:

It's my understanding that Autobic is a Java program - has anyone ever seen its code? Replacing this with a scripted solution for ELC is one option for fixing this bug; another is using the NWNX SetKnownFeatByLevel function to temporarily write a substitute feat to the character's bic (no telling how Autobic will react to that, though, and I have no way of testing it). Adding an exception in Autobic is yet another option, but my Java's a little rusty. :(

Note: I have tried alternate fixes like adjusting the monk's speed using standard EffectMovementSpeedDecrease() functions but that way has a whole 'nother set of complications. (Immunities, and how it plays with other effects like haste, slow, etc.)

Also available in: Atom PDF