So, you want to see how it's done? Here is the complete source code for the War Machine. This version is functionally identical to the source used for the release version, but with extra comments so you can understand it :-)

Some source from the skin packs (not complete, because many of the skins use pretty much the same code) is available as part of the skinning instructions.

PS2WarMachine.u

PS2WarMachine/Classes/PS2WarMachine.uc

// =============================
// Main import script for the War Machine.
// This is a fairly generic AMS import script.
// =============================

class PS2WarMachine extends GenericRobot;

//  Unreal Tournament (for Playstation 2) War Machine model
//    Mesh copyright (C) 2000 Epic Games, taken from the 3D Studio Max
//  demonstration files found at
//  <http://udn.epicgames.com/contentcreation.php?articleID=25>
//    Converted to Unreal Tournament for PC by Simon 'Psychic_313' McVittie

//    Unrealscript code used in conversion copyright (C) 2001 Simon McVittie.
//  This software is provided 'as-is', without any express or implied
//  warranty.  In no event will the author be held liable for any damages
//  arising from the use of this software.

#exec MESH MODELIMPORT MESH=PS2WarMachine MODELFILE=Models/ut_ps2_male_warmachine.PSK LODSTYLE=10
// Import the War Machine mesh

#exec MESH ORIGIN MESH=PS2WarMachine X=0 Y=0 Z=135 YAW=192
#exec MESH WEAPONATTACH MESH=PS2WarMachine BONE="Bip01 R Hand"
#exec MESH WEAPONPOSITION MESH=PS2WarMachine YAW=0 PITCH=0 ROLL=128 X=1.0 Y=0.0 Z=0.0
#exec MESHMAP SCALE MESHMAP=PS2WarMachine X=0.3125 Y=0.3125 Z=0.3125
// Mesh import voodoo - adjust origin, scale correctly, rotate to
// make up for UT and 3D Studio Max labelling their axes differently, and
/ attach the weapon to the hand bone

#exec MESH DEFAULTANIM MESH=PS2WarMachine ANIM=EpicUTPS2MaleAnimation
// Attach the Epic Male animation from AMS

#exec TEXTURE IMPORT NAME=PS2WarMachineDoll FILE=Textures/PS2WarMachineDoll.pcx GROUP="Icons" LODSET=2 MIPS=OFF
#exec TEXTURE IMPORT NAME=PS2WarMachineShield FILE=Textures/PS2WarMachineShield.pcx GROUP="Icons" LODSET=2 MIPS=OFF
// Import a couple of greyscale HUD status-doll textures

defaultproperties
{
    // Set class properties correctly
    SelectionMesh="PS2WarMachine.PS2WarMachine"
    MenuName="War Machine"
    Mesh=SkeletalMesh'PS2WarMachine.PS2WarMachine'
    SkinInfo=Class'PS2WarMachine.PS2WarMachineSkinInfo'
    StatusDoll=Texture'PS2WarMachine.Icons.PS2WarMachineDoll'
    StatusBelt=Texture'PS2WarMachine.Icons.PS2WarMachineShield'
}

PS2WarMachine/Classes/PS2WarMachineSkinInfo.uc

// =============================
// SkinInfo script for the War Machine.
// This is not a normal AMS SkinInfo - I have hacked LoadSkin to reflect
// the War Machine's unusual skin loading (many of its textures are loaded
// straight from Soldier UTXs)
// =============================

class PS2WarMachineSkinInfo extends GenericSkinInfo;

var String ThisSkinName;
// The name this skin will be referred to with;
// in format "PS2WarMachineSkins_Whatever.Code"

var String SoldierSkinName;
// This skin's associated SoldierSkins_* skin;
// in format "SoldierSkins_Something.Code", or "" if this is an original
// War Machine skin


static function Texture LoadSkin(String SkinName, optional bool bNoWarning)
{
    // This is a good example of overriding LoadSkin().
    // LoadSkin() is used to retrieve the Texture object corresponding
    // to SkinName. For most models, the appropriate Texture is
    // the one whose name is SkinName - for War Machine skins this won't
    // generally exist, but there is often a corresponding Male Soldier UTX
    // with an appropriate texture.

    // always load the requested texture if it exists; this lets
    // tweaked skins (Chamber, Prototype Mettallian, The Shadow) override the
    // Male Soldier textures with their own
    local Object tex;
    tex=DynamicLoadObject(SkinName,Class'Texture',true);
    if( tex != None && Texture(tex) != None)
        return Texture(tex);

    // otherwise, try loading the SoldierSkin if the following conditions
    // are met:
    //  1) it's one of "our" skins (i.e. hasn't already been substituted)
    //  2) it's not a talktexture
    //  3) we actually have a SoldierSkin to fall back to :-)
    else if( (Left(SkinName,Len(default.ThisSkinName)) ~= default.ThisSkinName)
             && !(Mid(SkinName,Len(default.ThisSkinName),1)~="C")
             && default.SoldierSkinName != "" )
    {
        return Super.LoadSkin(default.SoldierSkinName
                               $ Mid(SkinName,Len(default.ThisSkinName),255),
                              bNoWarning);
    }

    // else fall back to the superclass (which will probably fail, but it
    // gives us the right return value and error message)
    else
        return Super.LoadSkin(SkinName,bNoWarning);
}

defaultproperties
{
     // We have 4 skin regions in use; numbering starts at zero
     HighestSkinNumber=3

     // Skin region 3 is the face
     ChangesWithFace(0)=0
     ChangesWithFace(1)=0
     ChangesWithFace(2)=0
     ChangesWithFace(3)=1

     // We need to be backwards-compatible to the silly UT naming
     // where texture number (n) has a name with (n+1) in it. ::sigh::
     // Most AMS models don't use this, since zero-based numbering is
     // far more consistent.
     OldTextureNames=1

     // Skin regions 0 and 1 are usually the TCs (this can be overridden
     // by scripted skins, luckily)
     ChangesWithTeam(0)=1
     ChangesWithTeam(1)=1
     ChangesWithTeam(2)=0
     ChangesWithTeam(3)=0

     // Our fallback skin is actually ripped straight from
     // SoldierSkins.utx :-)
     DefaultFace="Matrix"
     DefaultSkinName="SoldierSkins.HKil"
     DefaultPackage="SoldierSkins."
     ThisSkinName="PS2WarMachineSkins.HKil"
}

PS2WarMachine/Classes/PS2WarMachineBot.uc

// =============================
// Bot for the War Machine.
// This is a fairly generic AMS bot script and doesn't really contain
// anything interesting.
// =============================

class PS2WarMachineBot extends GenericRobotBot;

defaultproperties
{
    MatchingPlayerClass=Class'PS2WarMachine.PS2WarMachine'

    SelectionMesh="PS2WarMachine.PS2WarMachine"
    MenuName="War Machine"
    Mesh=SkeletalMesh'PS2WarMachine.PS2WarMachine'

    // Use the player version's status doll
    StatusDoll=Texture'PS2WarMachine.Icons.PS2WarMachineDoll'
    StatusBelt=Texture'PS2WarMachine.Icons.PS2WarMachineShield'
}

PS2WarMachineSkins.u

PS2WarMachineSkins/Classes/PS2WarMachineSkins_HKil.uc

// =============================
// Even the default skin is scripted.
// This is the simplest possible War Machine skin - the only textures it
// uses are its talktextures, and it steals the rest from an external UTX
// file. Total size, 17 KB :-)
// =============================

class PS2WarMachineSkins_hkil extends PS2WarMachineSkinInfo;

#exec TEXTURE IMPORT NAME=hkilCTensor FILE=hkilCTensor.pcx LODSET=2 MIPS=OFF
#exec TEXTURE IMPORT NAME=hkilCMatrix FILE=hkilCMatrix.pcx LODSET=2 MIPS=OFF
#exec TEXTURE IMPORT NAME=hkilCVector FILE=hkilCVector.pcx LODSET=2 MIPS=OFF

defaultproperties
{
     ThisSkinName="PS2WarMachineSkins.HKil"
     SoldierSkinName="SoldierSkins.HKil"
}

Copyright and Permissions

Unrealscript code for conversions copyright © 2001 Simon McVittie. Permission is granted to redistribute this unmodified code on a non-profit basis, and to use derivative works in any game modifications distributed on a non-profit basis, provided you credit Simon 'Psychic_313' McVittie (and preferably refer to http://www.pseudorandom.co.uk/, although this is not required).

THIS MOD IS PROVIDED "AS-IS" WITH ABSOLUTELY NO WARRANTY, EXPRESS OR IMPLIED. THE AUTHOR ACCEPTS NO RESPONSIBILITY FOR DAMAGE, INCONVENIENCE OR OTHER PROBLEMS, WITHOUT LIMITATION, CAUSED BY THIS MOD, EVEN IF THEY HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH PROBLEMS.