void main() { object oUser= GetItemActivator(); object oAct= GetItemActivated(); object oTarget= GetItemActivatedTarget(); location lTar= GetItemActivatedTargetLocation(); string sItem= GetTag(oAct); location lUser= GetLocation(oUser); //Somehow mesh this into your activate item system if(sItem == "keymaker") { //there must be a safe instance of the base item somewhere in the module //to copy from. if((GetObjectType(oTarget)!=OBJECT_TYPE_DOOR)&&(GetObjectType(oTarget)!=OBJECT_TYPE_PLACEABLE)) { FloatingTextStringOnCreature("The target is not an object with a lock", oUser, FALSE); return; } if((GetLockLockable(oTarget)==FALSE)) { FloatingTextStringOnCreature("The target cannot be locked", oUser, FALSE); return; } if((GetLockKeyTag(oTarget)=="")) { FloatingTextStringOnCreature("A key cannot be created for the target", oUser, FALSE); return; } string sTag= GetLockKeyTag(oTarget); object oSource= GetObjectByTag("MAGIC_KEY"); object oCreated= CopyObject(oSource, GetLocation(oUser), oUser, sTag); FloatingTextStringOnCreature("A key has been created", oUser, FALSE); } }