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);
    }

}