First, you need a Slowfall *curse* instead on a spell. Curses can be AddSpell/RemoveSpell'ed like regular spells but they directly *apply* to the object rather than get into the spell list. Then you get two invisible activators - one on the top of the shaft, one at the bottom. And one additional script is a global.
begin shaft_top_scriptif ( GetDistance Player <= 100 ) if ( Player->GetSpell "slowfall_curse" == 0 ) Player->AddSpell "slowfall_curse" StartScript shaft_failsafe_script endifendifend
begin shaft_bottom_scriptif ( GetDistance Player <= 100 ) if ( Player->GetSpell "slowfall_curse" == 1 ) Player->RemoveSpell "slowfall_curse" endifendifend
begin shaft_failsafe_script; this is in case that player is a smarta$$ and *does* leave the cell with the spell turned on (for example, through Recall or Divine Intervention)if ( GetPCCell "your cell" == 1 ) returnendifif ( Player->GetSpell "slowfall_curse" == 1 ) Player->RemoveSpell "slowfall_curse"endifStopScript shaft_failsafe_scriptend
The position (and the distance) for a top activator better be selected so that it would apply the spell only when the player already starts falling and can't leave the room through the top door.