I did some more fixing on my old LEGO Customizable Minifigure, to where it can change faces, decals, and hats.
//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
datablock TSShapeConstructor(MiniFigCDts)
{
baseShape = "./minifig.dts";
sequence0 = "./minifig_root.dsq root";
sequence1 = "./minifig_run.dsq run";
sequence2 = "./minifig_back.dsq back";
sequence3 = "./minifig_side.dsq side";
sequence4 = "./minifig_look.dsq look";
sequence5 = "./minifig_crouch.dsq crouch";
sequence6 = "./minifig_fall.dsq fall";
sequence7 = "./minifig_root.dsq land";
sequence8 = "./minifig_standjump.dsq jump";
sequence9 = "./minifig_crouchRun.dsq crouchRun";
sequence10 = "./minifig_crouchBack.dsq crouchBack";
sequence11 = "./minifig_crouchSide.dsq crouchSide";
sequence12 = "./minifig_root.dsq walk";
sequence13 = "./minifig_root.dsq death5";
sequence14 = "./minifig_root.dsq death6";
sequence15 = "./minifig_root.dsq death7";
sequence16 = "./minifig_root.dsq death8";
sequence17 = "./minifig_root.dsq death9";
sequence18 = "./minifig_spearready.dsq spearready";
sequence19 = "./minifig_spearThrow.dsq spearThrow";
sequence20 = "./minifig_talk.dsq talk";
sequence21 = "./minifig_headup.dsq headUp";
sequence22 = "./minifig_talk.dsq talk";
sequence23 = "./minifig_headside.dsq headside";
sequence24 = "./minifig_standjump.dsq standjump";
sequence25 = "./minifig_headup.dsq headUp";
sequence26 = "./minifig_armAttack.dsq armAttack";
sequence27 = "./minifig_armReadyLeft.dsq armReadyLeft";
sequence28 = "./minifig_armReadyRight.dsq armReadyRight";
sequence29 = "./minifig_armReadyBoth.dsq armReadyBoth";
sequence30 = "./minifig_fall.dsq sit";
};
datablock DebrisData( MiniFigCDebris )
{
explodeOnMaxBounce = false;
elasticity = 0.15;
friction = 0.5;
lifetime = 4.0;
lifetimeVariance = 0.0;
minSpinSpeed = 40;
maxSpinSpeed = 600;
numBounces = 5;
bounceVariance = 0;
staticOnMaxBounce = true;
gravModifier = 1.0;
useRadiusMass = true;
baseRadius = 1;
velocity = 20.0;
velocityVariance = 12.0;
};
datablock PlayerData(MiniFigCArmor : PlayerStandardArmor)
{
shapeFile = "./minifig.dts";
cameraMaxDist = 6;
// Damage location details
boxNormalHeadPercentage = 0.83;
boxNormalTorsoPercentage = 0.49;
boxHeadLeftPercentage = 0;
boxHeadRightPercentage = 1;
boxHeadBackPercentage = 0;
boxHeadFrontPercentage = 1;
uiname = "CMinifig";
};
function MiniFigCArmor::onAdd(%this,%obj)
{
// Vehicle timeout
%obj.mountVehicle = false;
// Default dynamic armor stats
%obj.setRepairRate(0);
}
//called when the driver of a player-vehicle is unmounted
function MinifigCArmor::onDriverLeave(%obj, %player)
{
//do nothing
}
package MinifigCColors
{
function GameConnection::applyBodyColors(%client)
{
Parent::applyBodyColors(%client);
if(%client.player.dataBlock $= "MiniFigCArmor")
{
%client.player.setNodeColor("RightArmk",%client.rArmColor);
%client.player.setNodeColor("LeftArmk",%client.lArmColor);
%client.player.setNodeColor("Headk",%client.headcolor);
%client.player.setNodeColor("LeftLegk",%client.lLegColor);
%client.player.setNodeColor("RightLegk",%client.rLegColor);
%client.player.setNodeColor("Torsok",%client.chestColor);
%client.player.setNodeColor("RightHandk",%client.rHandColor);
%client.player.setNodeColor("LeftHandk",%client.lHandColor);
%client.player.setNodeColor("hip",%client.hipColor);
}
}
};
activatePackage(MinifigCColors);
package Player_CustomMFG
{
function gameConnection::applyBodyParts(%client)
{
if(isObject(%client.player))
{
if(%client.player.getDatablock().getID() == MiniFigCArmor.getID())
{
%client.player.hideNode("ALL");
if(getWord($accentsAllowed[$hat[%client.hat]], %client.accent) !$= "" && getWord($accentsAllowed[$hat[%client.hat]], %client.accent) !$= "none")
%client.player.unHideNode(getWord($accentsAllowed[$hat[%client.hat]], %client.accent));
if($hat[%client.hat] !$= "none")
%client.player.unHideNode($hat[%client.hat]);
%client.player.unHideNode("headSkin");
%client.player.unHideNode($chest[0]);
if($pack[%client.pack] !$= "none")
%client.player.unHideNode($pack[%client.pack]);
%client.player.unHideNode($LArm[0]);
%client.player.unHideNode($RArm[0]);
%client.player.unHideNode($LHand[0]);
%client.player.unHideNode($RHand[0]);
%client.player.unHideNode($hip[0]);
%client.player.unHideNode($LLeg[0]);
%client.player.unHideNode($RLeg[0]);
%client.player.setDecalName(%client.decalName);
%client.player.setFaceName(%client.faceName);
return;
}
}
Parent::applyBodyParts(%client);
(Some snippets of the code are borrowed, like the avatar customization.)