Sie sind auf Seite 1von 6

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.

0 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script language="javascript">

//----------------------------------------------------------------------------
//CONSTANTS
var GemValues = new Array();
GemValues[0] = 10;
GemValues[1] = 50;
GemValues[2] = 100;
GemValues[3] = 500;
GemValues[4] = 1000;

//END CONSTANTS
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//GLOBAL VARIABLES
var debugMode = false;

//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//METHODS
function rollTheDie(intDieType) {
var dieTypePerc = 100/intDieType;
var thisRandNum = Math.random() * 100;
var thisRollNum = Math.ceil(thisRandNum/dieTypePerc);
return thisRollNum;
}

function rollIt(intRangeLow,intRangeHigh) {
var results = 0;
var dieType = intRangeHigh/intRangeLow;
for (var t=0; t<intRangeLow; t++) {
results += rollTheDie(dieType);
}
//document.write(intRangeLow + "-" + intRangeHigh + ": " + results +
"<br />");
return results;
}

function roundVal(numIn) {
var thisNum = numIn;
var factorVal = Math.pow(10,(thisNum+"").length - 2) * 5;
factorVal = (factorVal>500)?500:factorVal;
//debugMode = true;
thisNum = Math.round(thisNum/factorVal) * factorVal;
if (debugMode) {
document.write(numIn + ":" + factorVal + ":" + thisNum +
"<br><br>");
}
return thisNum;
}

function getGemsJewelry(intCount) {
var results = 0;
for (var r=0; r<intCount; r++) {
var gemOrJewel = rollIt(1,2);
if (gemOrJewel == 1) {
//IT'S A GEM, GET ITS VALUE
var gemRoll = rollIt(1,GemValues.length) - 1;
var gemValue = GemValues[gemRoll];
//document.write("G: " + gemValue + "<br />");
results += gemValue;
} else if (gemOrJewel == 2) {
//IT'S JEWELRY, GET ITS VALUE
var jewelValue = rollIt(3,18) * 100;
//document.write("J: " + jewelValue + "<br />");
results += jewelValue;
} else {
document.write("ERROR!<br />");
}
}
return results;
}

function getGemsAvg() {
var results = 0;
var sampleSize = 1000000;
for (var u=0; u<sampleSize; u++) {
var gemRoll = rollIt(1,GemValues.length) - 1;
var gemValue = GemValues[gemRoll];
results += gemValue;
}
results = results/sampleSize;
alert(results);
}

function getGPValueOLD(objTTSub) {
var thisObj = objTTSub;
var thisName = thisObj.name;
var results = 0;
var percRoll = rollIt(1,100);
if (percRoll <= thisObj.percentage) {
var dieLo = thisObj.dieLow;
var dieHi = thisObj.dieHigh;
var gpMult = thisObj.gpMultiplier;
var count = thisObj.count;
if (thisName != "gm") {
//COINS OR JEWELRY, GET RESULTS
results = rollIt(dieLo,dieHi) * count;
results = Math.round(results * gpMult);
} else {
//GEMS, GET RESULTS
var gemCount = rollIt(dieLo,dieHi);
var gemsValue = 0;
for (var u=0; u<gemCount; u++) {
var gemRoll = rollIt(1,GemValues.length) - 1;
gemsValue += GemValues[gemRoll];
}
results = gemsValue;
}
}
return results;
}

function getGPValue(objTTSub) {
var thisObj = objTTSub;
var results = 0;
var gpPrc = thisObj.percentage/100;
var dieType = thisObj.dieHigh/thisObj.dieLow;
var dieCount = thisObj.dieLow;
var avgRoll = dieCount * ((1 + dieType)/2);
var thisName = thisObj.name;
results = Math.round(gpPrc * ((avgRoll * thisObj.count) *
thisObj.gpMultiplier));
if (debugMode) {
document.write(thisName + ": " + results + " (Avg Roll=" +
avgRoll + ")<br />");
}
var resultsOld = 0;
var sampleSize = 100000;
for (var i=0; i<sampleSize; i++) {
resultsOld += getGPValueOLD(objTTSub);
}
resultsOld = Math.round(resultsOld/sampleSize);
if (debugMode) {
document.write(thisObj.name + ": " + resultsOld + "<br />");
}
var rtnResults = new Array(results,resultsOld);
return rtnResults;
}

//END METHODS
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//CLASSES

function TreasureType(strTypeLetter) {
this.letter = strTypeLetter;
this.cp = null;
this.sp = null;
this.ep = null;
this.gp = null;
this.pp = null;
this.gm = null;
this.jw = null;
}

function TreasureTypeSub(strName, intPercentage, intDieLow, intDieHigh,


intCount, decGPMultiplier) {
this.name = strName;
this.percentage = intPercentage;
this.dieLow = intDieLow;
this.dieHigh = intDieHigh;
this.count = intCount;
this.gpMultiplier = decGPMultiplier;
this.averageValue = 0;
}

//END CLASSES
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//LOGIC

//ARRAY OF TREASURE TYPES


var treasureTypes = new Array();

treasureTypes[0] = new TreasureType("A");


treasureTypes[0].cp = new TreasureTypeSub("cp",25,1,6,1000,.01);
treasureTypes[0].sp = new TreasureTypeSub("sp",30,1,6,1000,.1);
treasureTypes[0].ep = new TreasureTypeSub("ep",20,1,4,1000,.5);
treasureTypes[0].gp = new TreasureTypeSub("gp",35,2,12,1000,1);
treasureTypes[0].pp = new TreasureTypeSub("pp",25,1,2,1000,5);
treasureTypes[0].gm = new TreasureTypeSub("gm",50,6,36,332,1);
treasureTypes[0].jw = new TreasureTypeSub("jw",50,6,36,1050,1);
//COMPLETE

treasureTypes[1] = new TreasureType("B");


treasureTypes[1].cp = new TreasureTypeSub("cp",50,1,8,1000,.01);
treasureTypes[1].sp = new TreasureTypeSub("sp",25,1,6,1000,.1);
treasureTypes[1].ep = new TreasureTypeSub("ep",25,1,4,1000,.5);
treasureTypes[1].gp = new TreasureTypeSub("gp",25,1,3,1000,1);
treasureTypes[1].pp = new TreasureTypeSub("pp",0,1,2,0,5);
treasureTypes[1].gm = new TreasureTypeSub("gm",25,1,6,332,1);
treasureTypes[1].jw = new TreasureTypeSub("jw",25,1,6,1050,1);
//COMPLETE

treasureTypes[2] = new TreasureType("C");


treasureTypes[2].cp = new TreasureTypeSub("cp",20,1,12,1000,.01);
treasureTypes[2].sp = new TreasureTypeSub("sp",30,1,4,1000,.1);
treasureTypes[2].ep = new TreasureTypeSub("ep",10,1,4,1000,.5);
treasureTypes[2].gp = new TreasureTypeSub("gp",0,2,12,0,1);
treasureTypes[2].pp = new TreasureTypeSub("pp",0,1,2,0,5);
treasureTypes[2].gm = new TreasureTypeSub("gm",25,1,4,332,1);
treasureTypes[2].jw = new TreasureTypeSub("jw",25,1,4,1050,1);
//COMPLETE

treasureTypes[3] = new TreasureType("D");


treasureTypes[3].cp = new TreasureTypeSub("cp",10,1,8,1000,.01);
treasureTypes[3].sp = new TreasureTypeSub("sp",15,1,12,1000,.1);
treasureTypes[3].ep = new TreasureTypeSub("ep",0,1,4,1000,.5);
treasureTypes[3].gp = new TreasureTypeSub("gp",60,1,6,1000,1);
treasureTypes[3].pp = new TreasureTypeSub("pp",0,1,2,0,5);
treasureTypes[3].gm = new TreasureTypeSub("gm",30,1,8,332,1);
treasureTypes[3].jw = new TreasureTypeSub("jw",30,1,8,1050,1);
//COMPLETE

treasureTypes[4] = new TreasureType("E");


treasureTypes[4].cp = new TreasureTypeSub("cp",5,1,10,1000,.01);
treasureTypes[4].sp = new TreasureTypeSub("sp",30,1,12,1000,.1);
treasureTypes[4].ep = new TreasureTypeSub("ep",25,1,4,1000,.5);
treasureTypes[4].gp = new TreasureTypeSub("gp",25,1,8,1000,1);
treasureTypes[4].pp = new TreasureTypeSub("pp",0,1,2,0,5);
treasureTypes[4].gm = new TreasureTypeSub("gm",10,1,10,332,1);
treasureTypes[4].jw = new TreasureTypeSub("jw",10,1,10,1050,1);
//COMPLETE

treasureTypes[5] = new TreasureType("F");


treasureTypes[5].cp = new TreasureTypeSub("cp",0,1,8,1000,.01);
treasureTypes[5].sp = new TreasureTypeSub("sp",10,2,20,1000,.1);
treasureTypes[5].ep = new TreasureTypeSub("ep",20,1,8,1000,.5);
treasureTypes[5].gp = new TreasureTypeSub("gp",45,1,12,1000,1);
treasureTypes[5].pp = new TreasureTypeSub("pp",30,1,3,1000,5);
treasureTypes[5].gm = new TreasureTypeSub("gm",20,2,24,332,1);
treasureTypes[5].jw = new TreasureTypeSub("jw",10,1,12,1050,1);
//COMPLETE

treasureTypes[6] = new TreasureType("G");


treasureTypes[6].cp = new TreasureTypeSub("cp",0,1,8,1000,.01);
treasureTypes[6].sp = new TreasureTypeSub("sp",0,1,12,1000,.1);
treasureTypes[6].ep = new TreasureTypeSub("ep",0,1,4,1000,.5);
treasureTypes[6].gp = new TreasureTypeSub("gp",50,10,40,1000,1);
treasureTypes[6].pp = new TreasureTypeSub("pp",50,1,6,1000,5);
treasureTypes[6].gm = new TreasureTypeSub("gm",25,3,18,332,1);
treasureTypes[6].jw = new TreasureTypeSub("jw",25,1,10,1050,1);
//COMPLETE

treasureTypes[7] = new TreasureType("H");


treasureTypes[7].cp = new TreasureTypeSub("cp",25,3,24,1000,.01);
treasureTypes[7].sp = new TreasureTypeSub("sp",50,1,100,1000,.1);
treasureTypes[7].ep = new TreasureTypeSub("ep",50,10,40,1000,.5);
treasureTypes[7].gp = new TreasureTypeSub("gp",50,10,60,1000,1);
treasureTypes[7].pp = new TreasureTypeSub("pp",25,5,20,1000,5);
treasureTypes[7].gm = new TreasureTypeSub("gm",50,1,100,332,1);
treasureTypes[7].jw = new TreasureTypeSub("jw",50,10,40,1050,1);
//COMPLETE

//TESTING
//alert(treasureTypes[2].pp.dieHigh);

function getTTValues(intTTIndex) {
thisResult = 0;
var xpResults = 0;
var xpResultsOld = 0;
var xpResultsCP = getGPValue(treasureTypes[intTTIndex].cp);
var xpResultsSP = getGPValue(treasureTypes[intTTIndex].sp);
var xpResultsEP = getGPValue(treasureTypes[intTTIndex].ep);
var xpResultsGP = getGPValue(treasureTypes[intTTIndex].gp);
var xpResultsPP = getGPValue(treasureTypes[intTTIndex].pp);
var xpResultsGM = getGPValue(treasureTypes[intTTIndex].gm);
var xpResultsJW = getGPValue(treasureTypes[intTTIndex].jw);
xpResults += xpResultsCP[0];
xpResults += xpResultsSP[0];
xpResults += xpResultsEP[0];
xpResults += xpResultsGP[0];
xpResults += xpResultsPP[0];
xpResults += xpResultsGM[0];
xpResults += xpResultsJW[0];
//document.write(xpResults + "<br>");
xpResultsOld += xpResultsCP[1];
xpResultsOld += xpResultsSP[1];
xpResultsOld += xpResultsEP[1];
xpResultsOld += xpResultsGP[1];
xpResultsOld += xpResultsPP[1];
xpResultsOld += xpResultsGM[1];
xpResultsOld += xpResultsJW[1];
//document.write(xpResultsOld + "<br>");
return roundVal(xpResults) + " / " + roundVal(xpResultsOld);
return xpResults + " (" + roundVal(xpResults) + ")/" + xpResultsOld + "
(" + roundVal(xpResultsOld) + ")";
}

//END LOGIC
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//OUTPUT
function getOutput() {
//getTTValues(0);
//debugMode = true;
for (var w=0; w<treasureTypes.length; w++) {
var thisResult = getTTValues(w);
if (!debugMode) {
var labelObj = document.getElementById("resBodyLeft");
var valueObj = document.getElementById("resBodyRight");
labelObj.innerHTML += "Type " + treasureTypes[w].letter +
"<br><br>";
valueObj.innerHTML += thisResult + "<br><br>";
} else {
document.write("Type " + treasureTypes[w].letter + ": " +
thisResult + "<br><br>");
}
}
//document.write(averageValue);
}

//END OUPUT
//----------------------------------------------------------------------------

</script>
</head>

<body onLoad="getOutput();">

<div id="resHead" style="font-weight: bold; line-height: 30px; width:600px; border-


bottom: 1px solid black;">
<div id="resHeadLeft" style="float: left; width: 200px; text-align:
center;">Treasure Type</div>
<div id="resHeadRight" style="text-align: left; width: 300px;">Average GP
Value (Calculated/Rolled)</div>
</div>

<div id="resBody">
<div id="resBodyLeft" style="float: left; width: 200px; padding-left:
20px;"></div>
<div id="resBodyRight" style="padding-left: 20px; width: 300px;"></div>
</div>

</body>
</html>

Das könnte Ihnen auch gefallen