I'm having a little problem on creating a puppet, I've followed Stoffe's tutorial here (
http://www.lucasforums.com/showthread.php?t=151438) and I'm at the part with the second script 
 // -------------------------------------------------------
 // Support function: Assign a puppet to a party member
 // -------------------------------------------------------
 void ST_GivePuppet(int nNPC, int nPUP, string sTemplate) {
 string sTag = "";
 switch (nNPC) {
 case NPC_ATTON: sTag = "atton"; break;
 case NPC_BAO_DUR: sTag = "baodur"; break;
 case NPC_CANDEROUS: sTag = "mand"; break;
 case NPC_G0T0: sTag = "g0t0"; break;
 case NPC_HANDMAIDEN: sTag = "handmaiden"; break;
 case NPC_HK_47: sTag = "hk47"; break;
 case NPC_KREIA: sTag = "kreia"; break;
 case NPC_MIRA: sTag = "mira"; break;
 case NPC_T3_M4: sTag = "t3m4"; break;
 case NPC_VISAS: sTag = "visasmarr"; break;
 case NPC_HANHARR: sTag = "hanharr"; break;
 case NPC_DISCIPLE: sTag = "disciple"; break;
 } 
 object oOwner = GetObjectByTag(sTag);
 if (GetIsObjectValid(oOwner) && IsObjectPartyMember(oOwner)) {
 location lLoc = Location(GetPosition(oOwner) + AngleToVector(GetFacing(oOwner)) * 2.0, GetFacing(oOwner)-180.0);  
 AddAvailablePUPByTemplate(nPUP, sTemplate);
 AssignPUP(nPUP, nNPC);
 object oPUP = SpawnAvailablePUP(nPUP, lLoc);
 AddPartyPuppet(nPUP, oPUP); 
 SetNPCAIStyle(oPUP, NPC_AISTYLE_PARTY_SUPPORT);
 }
 }  
 // -------------------------------------------------------
 // Main function: Example, call above function to assign
 // a puppet in st_puppet1.utc to Kreia.
 // -------------------------------------------------------
 void main() {
 // Spawn the "st_puppet1" UTC as a puppet, assign it to Kreia
 ST_GivePuppet(NPC_KREIA, PUP_OTHER1, "st_puppet1");
 } 
 Now i may be missing something, maybe i misread it but I've gone over it 3 times and i don't know what to call this script and what field to place it on in the .UTC file. Can someone who has made a successful puppet shed some light on what to do here please. 
 Thanks.