Du hast imho 2 Möglichkeiten:

Du kannst im einerseits bei allen Eingängen/Ausgängen eine entsprechende Eigenschaft hinzufügen/entfernen. Dann musst du aber verhindern, dass der Spieler die Zelle auf anderem Weg betritt/verlässt (z.B. per Teleportspruch). GSI bietet sich da sehr stark an.

Mein Ansatz sähe da so aus (Skript muss auf alle Ein- & Ausgänge):
Code:
scn EigenschaftScript

short GSISetting

Begin OnActivate
 if ( IsActionRef Player )
  if ( Player.GetInCell [ID deiner Zelle] )
   set GSITeleport to GSISetting
   Player.RemoveSpell [ID der Eigenschaft]
  else
   set GSISetting to GSITeleport
   set GSITeleport to 2
   Player.AddSpell [ID der Eigenschaft]
  endif
 endif
 Activate
End

Ansonsten kannst du noch per Questskript über Player.GetInCell, bzw. Player.GetInWorldSpace abfragen, ob er sich in der entsprechenden Zelle/Welt befindet und dann, falls er die Eigenschaft noch nicht/immer noch hat (überprüfen mit Player.IsSpellTarget ) per AddSpell/RemoveSpell hinzufügen/entfernen.

Code:
scn EigenschaftScript

Begin Gamemode
 if ( Player.GetInCell [ID deiner Zelle] )
  if ( Player.IsSpellTarget [ID der Eigenschaft] == 0 )
   Player.AddSpell [ID der Eigenschaft]
  endif
 else
  if ( Player.IsSpellTarget [ID der Eigenschaft] )
   Player.RemoveSpell [ID der Eigenschaft]
  endif
 endif
End