//Note The if statements are to ensure they don't pick
//an invisible appearance.
void main()
{
    object oPC = GetPCSpeaker();
    object oPlayer = oPC;
    int nAppearanceType = GetAppearanceType(oPC) + 1;

   //DMs can choose any appearance!
   if(GetIsDM(oPC))
   {
    SendMessageToPC(oPC, "The previous Index Number = " + IntToString(GetAppearanceType(oPC)));
    SendMessageToPC(oPC, "The current Index Number = " + IntToString(nAppearanceType));

    SetCreatureAppearanceType(oPC, nAppearanceType);

   }

   else
   {

    if (nAppearanceType == 38)
    {
        nAppearanceType = 51;
    }

    else if (nAppearanceType == 61)
    {
        nAppearanceType = 62;
    }
    else if (nAppearanceType == 72)
    {
        nAppearanceType = 73;
    }

    else if (nAppearanceType == 78)
    {
        nAppearanceType = 82;
    }

    else if (nAppearanceType == 298)
    {
        nAppearanceType = 299;
    }
    else if (nAppearanceType == 307)
    {
        nAppearanceType = 352;
    }
    else if (nAppearanceType == 366)
    {
        nAppearanceType = 367;
    }
    else if (nAppearanceType == 371)
    {
        nAppearanceType = 374;
    }
    else if (nAppearanceType == 392)
    {
        nAppearanceType = 393;
    }
    else if (nAppearanceType == 404)
    {
        nAppearanceType = 406;
    }
    else if (nAppearanceType == 418)
    {
        nAppearanceType = 419;
    }
    else if (nAppearanceType == 420)
    {
        nAppearanceType = 423;
    }
    else if (nAppearanceType == 425)
    {
        nAppearanceType = 426;
    }
    else if (nAppearanceType == 451)
    {
        nAppearanceType = 459;
    }
    else if (nAppearanceType == 461)
    {
        nAppearanceType = 462;
    }
    else if (nAppearanceType == 463)
    {
        nAppearanceType = 464;
    }
    else if (nAppearanceType == 468)
    {
        nAppearanceType = 469;
    }
    else if (nAppearanceType == 473)
    {
        nAppearanceType = 474;
    }
    else if (nAppearanceType >= 481)
    {
        nAppearanceType = 1;  //Start Over!
    }

    SetCreatureAppearanceType(oPC, nAppearanceType);
  }

//Clear the reputation of the PC just in case changing appearace changes faction!
if(GetIsPC(oPlayer))
{

    AssignCommand(oPlayer, ClearAllActions());

    //Clear Reputation of PC
    if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPlayer) <= 10)
    {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPlayer) <= 10)
    {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPlayer) <= 10)
    {   SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer);
    }

 }

}