void fnTeleport(object oDest) { // attached teleport for PC int nN=GetLocalInt(OBJECT_SELF,"nFORMIAN_EXIT"); effect eVFX=EffectVisualEffect(VFX_IMP_GOOD_HELP); if (nN==1) { // has been here before if(GetArea(oDest)==GetArea(OBJECT_SELF)) { // have arrived DeleteLocalInt(OBJECT_SELF,"nFORMIAN_EXIT"); } // have arrived else { // need to move there AssignCommand(OBJECT_SELF,JumpToObject(oDest)); ApplyEffectToObject(DURATION_TYPE_INSTANT,eVFX,OBJECT_SELF,1.0); DelayCommand(1.0,fnTeleport(oDest)); } // need to move there } // has been here before else { // SetLocalInt(OBJECT_SELF,"nFORMIAN_EXIT",1); ApplyEffectToObject(DURATION_TYPE_INSTANT,eVFX,OBJECT_SELF,1.0); DelayCommand(3.0,fnTeleport(oDest)); } // } // fnTeleport() void main() { object oDest=GetWaypointByTag("FORMIAN_EXIT"); AssignCommand(GetPCSpeaker(),fnTeleport(oDest)); }