manually locking the user during script execution is not required because the user gets automatically locked (and unlocked while waiting for their input from dialogs)
ExtendSp::setSp method was being used, which sets the SP value, not adding to it
I think it's better to be specific about which job level the SP should be added to
SP from job advancements are handled by ScriptManagerImpl::setJob
Let me know if I forgot something.