sub generateRawRandomFace
{
return &generateRandomFace("0000001c0000000000000",
"10940901f8ffffffffffff");
}
sub generateRandomFace
{
#0x00000000000c600301c2510211a5b292 -marnid
#0x00000000000c000001c0000000000000 - min face
#0x0000000000
#0x00000000000c600301c2510211a5b292
# 10940901f8ffffffffffff
my $lowerCode = $_[0];
my $upperCode = $_[1];
my $finalCode = "0x0000000000";
my $lowerHair = substr($lowerCode, 0, 2);
my $upperHair = substr($upperCode, 0, 2);
$lowerHair = hex($lowerHair)/4;
$upperHair = hex($upperHair)/4;
my $lowerCode = substr($lowerCode, 2);
my $upperCode = substr($upperCode, 2);
if($lowerHair>$upperHair)
{
my $swap = $upperHair;
$upperHair=$lowerHair;
$lowerHair=$swap;
}
my $range = $upperHair-$lowerHair;
my $randomValue = int(rand($range+1));
$randomValue = ($randomValue + $lowerHair)*4;
my $hairCode = sprintf("%x", $randomValue);
if(length($hairCode)<2)
{
$hairCode = "0".$hairCode;
}
$finalCode = $finalCode."$hairCode";
my $lowerSkin = substr($lowerCode, 0, 1);
my $upperSkin = substr($upperCode, 0, 1);
if($lowerSkin>$upperSkin)
{
my $swap = $upperSkin;
$upperSkin=$lowerSkin;
$lowerSkin=$swap;
}
$lowerCode = substr($lowerCode, 1);
$upperCode = substr($upperCode, 1);
$range = $upperSkin-$lowerSkin;
$randomValue = int(rand($range+1));
my $finalValue = $randomValue + $lowerSkin;
$finalCode = $finalCode."$finalValue";
$lowerBeard = substr($lowerCode, 0, 2);
$upperBeard = substr($upperCode, 0, 2);
#print "lowerBeard = $lowerBeard\n";
#print "upperBeard = $upperBeard\n";
$lowerBeard = hex($lowerBeard)/4;
$upperBeard = hex($upperBeard)/4;
if($lowerBeard>$upperBeard)
{
my $swap = $upperBeard;
$upperBeard=$lowerBeard;
$lowerBeard=$swap;
}
$lowerCode = substr($lowerCode, 2);
$upperCode = substr($upperCode, 2);
$range = $upperBeard-$lowerBeard;
$randomValue = int(rand($range+1));
$randomValue = ($randomValue + $lowerBeard)*4;
my $beardCode = sprintf("%x", $randomValue);
if(length($beardCode)<2)
{
$beardCode = "0".$beardCode;
}
$finalCode = $finalCode."$beardCode";
my $lowerHair = substr($lowerCode, 0, 1);
my $upperHair = substr($upperCode, 0, 1);
if($lowerHair>$upperHair)
{
my $swap = $upperHair;
$upperHair=$lowerHair;
$lowerHair=$swap;
}
$lowerCode = substr($lowerCode, 1);
$upperCode = substr($upperCode, 1);
$range = $upperHair-$lowerHair;
$randomValue = int(rand($range+1));
my $finalValue = $randomValue + $lowerHair;
$finalCode = $finalCode."$finalValue";
#remove that 01 thing
$lowerCode = substr($lowerCode, 2);
$upperCode = substr($upperCode, 2);
$finalCode = $finalCode."01";
my $lowerEyebrows = substr($lowerCode, 0, 2);
my $upperEyebrows = substr($upperCode, 0, 2);
$lowerEyebrows = hex($lowerEyebrows);
$upperEyebrows = hex($upperEyebrows);
$lowerEyebrows = $lowerEyebrows-192;
$upperEyebrows = $upperEyebrows-192;
$lowerEyebrows2 = $lowerEyebrows%8;
$upperEyebrows2 = $upperEyebrows%8;
if($lowerEyebrows2>$upperEyebrows2)
{
my $swap = $upperEyebrows2;
$upperEyebrows2=$lowerEyebrows2;
$lowerEyebrows2=$swap;
}
$lowerEyebrows = int($lowerEyebrows/8);
$upperEyebrows = int($upperEyebrows/8);
if($lowerEyebrows>$upperEyebrows)
{
my $swap = $upperEyebrows;
$upperEyebrows=$lowerEyebrows;
$lowerEyebrows=$swap;
}
$range = $upperEyebrows - $lowerEyebrows;
$randomValue = int(rand($range+1));
$finalValue = $lowerEyebrows+$randomValue;
$finalValue = $finalValue*8;
$finalValue = $finalValue+192;
$range = $upperEyebrows2 - $lowerEyebrows2;
$randomValue = int(rand($range+1));
$finalValue = $finalValue+$randomValue+$lowerEyebrows2;
$finalValue = sprintf("%x", $finalValue);
$finalCode = "$finalCode".$finalValue;
$lowerCode = substr($lowerCode, 2);
$upperCode = substr($upperCode, 2);
$finalValue = &chompFace(substr($lowerCode, 0, 3),
substr($upperCode, 0, 3));
$lowerCode = substr($lowerCode, 3);
$upperCode = substr($upperCode, 3);
$finalCode = "$finalCode".$finalValue;
$finalValue = &chompFace(substr($lowerCode, 0, 3),
substr($upperCode, 0, 3));
$lowerCode = substr($lowerCode, 3);
$upperCode = substr($upperCode, 3);
$finalCode = $finalCode."$finalValue";
$finalValue = &chompFace(substr($lowerCode, 0, 3),
substr($upperCode, 0, 3));
$lowerCode = substr($lowerCode, 3);
$upperCode = substr($upperCode, 3);
$finalCode = "$finalCode".$finalValue;
$finalValue = &chompFace(substr($lowerCode, 0, 3),
substr($upperCode, 0, 3));
$lowerCode = substr($lowerCode, 3);
$upperCode = substr($upperCode, 3);
$finalCode = "$finalCode".$finalValue;
if(length($finalCode)!=34)
{
$codeLength = length($finalCode);
die "Bad code length of $codeLength\n";
}
return $finalCode;
}
sub chompFace
{
my $lower = $_[0];
my $upper = $_[1];
my $lowerValue = hex($lower);
my $upperValue = hex($upper);
$lowerValue4 = $lowerValue%8;
$upperValue4 = $upperValue%8;
$lowerValue = int($lowerValue/8);
$upperValue = int($upperValue/8);
$lowerValue3 = $lowerValue%8;
$upperValue3 = $upperValue%8;
$lowerValue = int($lowerValue/8);
$upperValue = int($upperValue/8);
$lowerValue2 = $lowerValue%8;
$upperValue2 = $upperValue%8;
$lowerValue = int($lowerValue/8);
$upperValue = int($upperValue/8);
$lowerValue1 = $lowerValue%8;
$upperValue1 = $upperValue%8;
if($lowerValue1>$upperValue1)
{
my $swap = $lowerValue1;
$lowerValue1=$upperValue1;
$upperValue1=$swap;
}
if($lowerValue2>$upperValue2)
{
my $swap = $lowerValue2;
$lowerValue2=$upperValue2;
$upperValue2=$swap;
}
if($lowerValue3>$upperValue3)
{
my $swap = $lowerValue3;
$lowerValue3=$upperValue3;
$upperValue3=$swap;
}
if($lowerValue4>$upperValue4)
{
my $swap = $lowerValue4;
$lowerValue4=$upperValue4;
$upperValue4=$swap;
}
my $range1 = $upperValue1 - $lowerValue1;
my $range2 = $upperValue2 - $lowerValue2;
my $range3 = $upperValue3 - $lowerValue3;
my $range4 = $upperValue4 - $lowerValue4;
my $randomValue1 = int(rand($range1+1));
my $randomValue2 = int(rand($range2+1));
my $randomValue3 = int(rand($range3+1));
my $randomValue4 = int(rand($range4+1));
my $finalValue1 = $randomValue1 + $lowerValue1;
my $finalValue2 = $randomValue2 + $lowerValue2;
my $finalValue3 = $randomValue3 + $lowerValue3;
my $finalValue4 = $randomValue4 + $lowerValue4;
$finalValue1 = $finalValue1*8*8*8;
$finalValue2 = $finalValue2*8*8;
$finalValue3 = $finalValue3*8;
my $finalValue = $finalValue1+$finalValue2+$finalValue3+$finalValue4;
$finalValue = sprintf("%x", $finalValue);
if(length($finalValue)<3)
{
$finalValue = "0$finalValue";
}
if(length($finalValue)<3)
{
$finalValue = "0$finalValue";
}
if(length($finalValue)<3)
{
$finalValue = "0$finalValue";
}
return $finalValue;
}