diff --git a/src/jsds.js b/src/jsds.js index 5d15749..58b3196 100644 --- a/src/jsds.js +++ b/src/jsds.js @@ -82,26 +82,40 @@ // Probe-Function: checks, whether a given "effort" is succesfull, according to the rules of DS // Not yet implemented: Tests for values larger than 20 var dice = function(probe) { - console.log(probe); - var diceval = Math.floor(Math.random() * (21 - 1)) + 1; - if ( diceval <= probe ) { - if (diceval == 1) { - alert ("Immersieg!"); - return probe; - } - else { - return diceval; - }; - } - else { - if (diceval === 20) { - alert ("Patzer!"); // We need alert here, because most "Patzer" - // affect gameplay (dropping equipement and so on) - }; + var diceval=new Array(); + var rolls=Math.floor(probe/20)+1; // Player may be allowed to roll the dice several times. + var tvalues=new Array(); + var result=0; + var tmpval; + for(var i=0; i<rolls; ++i) { + diceval.push(Math.floor(Math.random() * (21 - 1)) + 1); + tvalues.push(20); + }; + console.log(diceval); + tvalues[rolls-1]=probe%20; //the last value is the lowest + if (diceval[0]===20) { + alert ("Patzer!"); return 0; }; + diceval.sort(function(a,b){ + if(a===1) return -1; + if(b===1) return 1; + return b-a;} + ); + console.log(diceval); + for(var i=0; i<rolls-1; ++i) { //First, evaluate the testvalues "20", that is each except the last one + tmpval=diceval[i]; + result+= (tmpval == 1)?20:tmpval; //If result of dice is "1", return maximum. + }; + tmpval=diceval[rolls-1]; + testval=tvalues[rolls-1]; + if(tmpval <= testval){ + result+= (tmpval ==1)?tvalues[rolls-1]:tmpval; + } + return result; }; + // Own Classes for Creatures, derived from the Basic Object class from above // Creature is the base class for every "living" (or dead) "being"