The first spell fires what is essentially a Magelight spell. The object reference is the actual light being carried by the projectile, and so should continue existing wherever the light goes, even when the projectile "drops" it and disappears.
The second spell is supposed to move me to the location of that magelight. but it doesn't seem to be working at all.
Now I seem to have changed something that broke even compiling the things, and I can't figure out what I changed to change it back! Been staring at this dang code for two full days now.
The script on the light: (Note how the Set and Get functions are clearly defined here for the TeleportNodeObject type - but something's wrong, because the other scripts can't call them.)
Scriptname TeleportNodeObject extends ObjectReference {A node for the teleport spell}; Need a node object reference for this spellObjectReference Store_Node ; Reference this as TeleportNode with function calls on a TeleportNodeObject in other scripts.ObjectReference Property TeleportNode ObjectReference Function Get() Debug.MessageBox("Sending Teleport Node:" + Store_Node) return Store_Node endfunction Function Set(ObjectReference ThisObject) Store_Node = ThisObject Debug.MessageBox("Setting Teleport Node: " + Store_Node) endfunctionendpropertyThe script on the spell effect that fires the projectile carrying the light:Scriptname FindTeleportProjectile extends ActiveMagicEffect {Locates the projectile and stores a reference to it.}import gameimport utilityTeleportNodeObject ThisNodeEvent OnSpellCast(form IncomingSpell) Spell ThisSpell = IncomingSpell as spell if ThisSpell && ThisSpell == TeleportLaunch (ThisNode.TeleportNode.Get()).Delete() ; Make sure the old node goes poof. Utility.Wait(0.25) ; Make sure the projectile has been fired! ObjectReference ThisIsIt = FindClosestReferenceOfTypeFromRef(MagicLightTeleportSpell,Game.Getplayer(),1000) ThisNode.TeleportNode.Set(ThisIsIt) ; It sees the type "TeleportNodeObject" just fine, but can't see the Set function? Really? endifEndEventLight Property MagicLightTeleportSpell Auto ; Editor ID of the Light.Spell Property TeleportLaunch Auto ; Editor ID of Teleport spellThe script on the "Move me there" spell: This one, at least, is actually calling the functions. Or it was, until the above script started not propogating it's functions.
Scriptname PlayerTeleportScript extends ActiveMagicEffect {A script to teleport the player to a destination node.}TeleportNodeObject TheNodeObjectReference playerObjectReference TeleportHereEvent OnEffectStart(Actor Target, Actor Caster) ; No real target, and the caster is the player, since it's a player-only spell ;Debug.MessageBox("Magic effect was started on " + Target) player = (game.getPlayer() as ObjectReference) TeleportHere = TheNode.Get() if TheNode Utility.Wait(0.5) player.MoveTo(TeleportHere) Utility.Wait(0.5) TheNode.Delete() ; Make sure node goes poof. endifEndEvent For some reason, this programming language makes it very difficult to make a global reference variable, so I can't simply store the value and get it directly, oh no...Gotta play musical references and create dummy objects just so we can (supposedly) call the Set and Get functions...and even then, it doesn't work...

) and compile again. Keep in mind that when your rename anything, the first and the second time, you need to rename each place where that name appear.