﻿// globals
NumOfSkills=20;
NumOfItems=20; // all item_types (see below) must have the same number of members (even if they are doubles)
NumOfNeutrum_items_1=9;
NumOfNeutrum_items_2=8;
NumOfNeutrum_items_3=5;
NumOfTypes=3;  // in the basic set :item_type_1==weapons, item_type_2==armor , item_type_3==items
NumOfMonsters=100;
NumOfNeutrum_monsters=6;
NumOfDudes=20; // the number of dudes in this expansion, also determines the number of unique phrases (1 per dude)
NumOfFirstDude=1; // the unique ID of the first dude in this set
NumOfPhrases=21;  // number of generic phrases

uniquephrases=new Array(NumOfDudes);
uniquephrases[0]="Jag kommer i fred... eller gör jag det?";
uniquephrases[1]="Ta mig till er ledare.";
uniquephrases[2]="Var är den där försvunna skatten?";
uniquephrases[3]="Ursäkta mig, men...duh...vad höll jag på att säga nu då?";
uniquephrases[4]="Arrrrgh! Vi tar inga fångar.";
uniquephrases[5]="Hallå, se på mig!";
uniquephrases[6]="Jag måste äta; måste sova; äta; sova, det är allt jag gör.";
uniquephrases[7]="Berätta inte för någon att jag pratade.";
uniquephrases[8]="Vänta bara tills jag kan andas eld.";
uniquephrases[9]="Varför måste jag alltid stanna kvar och vakta skatten?";
uniquephrases[10]="Hej då, tack för att du spelade.";
uniquephrases[11]="Hallå där, slösa nu inte bort dina önskningar!";
uniquephrases[12]="Ja ska sticka 'rom, å hugga 'rom, å slå 'rom, å...";
uniquephrases[13]="Hugga, hugga.";
uniquephrases[14]="Se hur mycket trevligare de är när de inte pratar.";
uniquephrases[15]="Måste slå på bröstet; måste äta; sova; slå på bröstet igen.";
uniquephrases[16]="Så, vad händer om jag spelar falskt?";
uniquephrases[17]="Jag är en osynlig ninja!  Vadå?  Du kan se mig?";
uniquephrases[18]="In med dem i finkan!  Allihop.";
uniquephrases[19]="Vad var det nu jag skulle göra?  Svabba däck eller gå på plankan?";

phrases=new Array(NumOfPhrases);
phrases[0]="Jag är verkligen överraskad.";
phrases[1]="Var ligger det här stället?";
phrases[2]="Vem är din favorit bland Snokande snubbar?  Du vet ju att det är jag...";
phrases[3]="Kom igen...gör något intressant.";
phrases[4]="Jag är inte rädd för något.";
phrases[5]="Jag önskar jag kunde ha fler än 7 färdigheter.";
phrases[6]="Jag önskar jag kunde ha fler än 7 föremål.";
phrases[7]="Vart skall vi nu?";
phrases[8]="Hmmm....jag har en idé...";
phrases[9]="...";
phrases[10]="Spring!";
phrases[11]="Hur e läget?";
phrases[12]="Vad är det som luktar?";
phrases[13]="Vem är det som bestämmer här?";
phrases[14]="Ta det bara lugnt.";
phrases[15]="Skola bandola.";
phrases[16]="Arbete knarrbete.";
phrases[17]="Vem sa det där?";
phrases[18]="Jag är en Snokande snok...jag menar snubbe.";
phrases[19]="Snubben...";
phrases[20]="Åhhh...";

monsters=new Array(NumOfMonsters);
monsters[0]="troll";
monsters[1]="spöke";
monsters[2]="myskmonster";
monsters[3]="magmamonster";
monsters[4]="ondskefullt knytt";
monsters[5]="skelett";
monsters[6]="jätteråtta";
monsters[7]="jättefladdermus";
monsters[8]="jättetusenfoting";
monsters[9]="kobold";
monsters[10]="orch";
monsters[11]="vätte";
monsters[12]="ondskefull gnom";
monsters[13]="bandit";
monsters[14]="zombie";
monsters[15]="giftsvamp";
monsters[16]="drake";
monsters[17]="jätteorm";
monsters[18]="jätteödla";
monsters[19]="skuggbest";
monsters[20]="djävul";
monsters[21]="demon";
monsters[22]="smådjävul";
monsters[23]="djävulshund";
monsters[24]="kaosbest";
monsters[25]="ondskefull dvärg";
monsters[26]="ondskefull alv";
monsters[27]="golem";
monsters[28]="elddrake";
monsters[29]="vattendrake";
monsters[30]="jorddrake";
monsters[31]="stendrake";
monsters[32]="blixtdrake";
monsters[33]="vinddrake";
monsters[34]="rese";
monsters[35]="skelettriddare";
monsters[36]="skelettmagiker";
monsters[37]="ondskefull magiker";
monsters[38]="ondskefull trollkonstnär";
monsters[39]="ondskefull krigare";
monsters[40]="ondskefull rackare";
monsters[41]="poltergeist";
monsters[42]="jättemask";
monsters[43]="stenjätte";
monsters[44]="lerjätte";
monsters[45]="grotesk";
monsters[46]="gast";
monsters[47]="groll";
monsters[48]="ondskefull druid";
monsters[49]="ondskefull jägare";
monsters[50]="vild hund";
monsters[51]="hydra";
monsters[52]="cyklop";
monsters[53]="ödleman";
monsters[54]="vargman";
monsters[55]="drakman";
monsters[56]="illvätte";
monsters[57]="myrman";
monsters[58]="medusa";
monsters[59]="klipporm";
monsters[60]="minotaur";
monsters[61]="mummie";
monsters[62]="eldvarelse";
monsters[63]="rökbest";
monsters[64]="jättespindel";
monsters[65]="klippspindel";
monsters[66]="ondskefull snokande snubbe";
monsters[67]="jättesalamander";
monsters[68]="jättegroda";
monsters[69]="ondskefull älva";
monsters[70]="ondskefull pyssling";
monsters[71]="jättebi";
monsters[72]="jättegeting";
monsters[73]="troglodyt";
monsters[74]="gryle";
monsters[75]="vampyr";
monsters[76]="vålnad";
monsters[77]="lindorm";
monsters[78]="vampyrmagiker";
monsters[79]="vampyrkrigare";
monsters[80]="ondskefull soldat";
monsters[81]="ondskefull riddare";
monsters[82]="ondskefull äventyrare";
monsters[83]="ondskefull dvärgmagiker";
monsters[84]="klippgeting";
monsters[85]="spökriddare";
monsters[86]="spöksoldat";
monsters[87]="fantom";
monsters[88]="gul fantom";
monsters[89]="lila fantom";
monsters[90]="grön fantom";
monsters[91]="skrikare";
monsters[92]="skrikardemon";
monsters[93]="klobest";
monsters[94]="svärdsbest";
monsters[95]="mumiesoldat";
monsters[96]="mumieprins";
monsters[97]="zombieherre";
monsters[98]="blå vålnad";
monsters[99]="jättetarantula";

skills=new Array(NumOfSkills);
skills[0]="Intelligens";
skills[1]="Visdom";
skills[2]="Händighet";
skills[3]="Fysik";
skills[4]="Utstrålning";
skills[5]="Styrka";
skills[6]="Stridskonst";
skills[7]="Svärdslek";
skills[8]="Fingerfärdighet";
skills[9]="Smyga";
skills[10]="Gömma sig";
skills[11]="Akrobatik";
skills[12]="Spåra";
skills[13]="Brottargrepp";
skills[14]="Hög spark";
skills[15]="Hårt kast";
skills[16]="Knälås";
skills[17]="Strypgrepp";
skills[18]="Klättra";
skills[19]="Hoppa";

// item_type_1  == weapons in basic set
item_type_1=new Array(NumOfItems);
item_type_1[0]="Blåsrör";
item_type_1[1]="Armborst";
item_type_1[2]="Långsvärd";
item_type_1[3]="Kortsvärd";
item_type_1[4]="Stångvapen";
item_type_1[5]="Kroksvärd";
item_type_1[6]="Spjut";
item_type_1[7]="Kastspjut";
item_type_1[8]="Nät";
item_type_1[9]="Flaska med vigvatten";
item_type_1[10]="Flaska med syra";
item_type_1[11]="Katana";
item_type_1[12]="Långbåge";
item_type_1[13]="Piska";
item_type_1[14]="Stridsyxa";
item_type_1[15]="Dolk";
item_type_1[16]="Hillebard";
item_type_1[17]="Påk";
item_type_1[18]="Klubba";
item_type_1[19]="Stridsslaga";

// item_type_2 == armor in basic set
item_type_2=new Array (NumOfItems);
item_type_2[0]="Läderpansar";
item_type_2[1]="Lårskydd";
item_type_2[2]="Knäskydd";
item_type_2[3]="Benskydd";
item_type_2[4]="Armskydd";
item_type_2[5]="Armbågsskydd";
item_type_2[6]="Axelskydd";
item_type_2[7]="Ansiktsskydd";
item_type_2[8]="Lätt sköld";
item_type_2[9]="Tung sköld";
item_type_2[10]="Rustning";
item_type_2[11]="Handske";
item_type_2[12]="Ringbrynja";
item_type_2[13]="Hjälm";
item_type_2[14]="Bröstplåt";
item_type_2[15]="Brigandin";
item_type_2[16]="Särk";
item_type_2[17]="Stövel";
item_type_2[18]="Ryggplåt";
item_type_2[19]="Suspensoar";

// item_type_3 == items in basic set 
item_type_3=new Array(NumOfItems);
item_type_3[0]="Vaxljus";
item_type_3[1]="Tält";
item_type_3[2]="Rep";
item_type_3[3]="Pergament";
item_type_3[4]="Par vandrarkängor";
item_type_3[5]="Änterhake";
item_type_3[6]="Flaska";
item_type_3[7]="Spegel";
item_type_3[8]="Penningpung";
item_type_3[9]="Skyffel";
item_type_3[10]="Fackla";
item_type_3[11]="Lykta";
item_type_3[12]="Påle";
item_type_3[13]="Dyrk";
item_type_3[14]="Säck med proviant";
item_type_3[15]="Kedja";
item_type_3[16]="Flintsten";
item_type_3[17]="Krita";
item_type_3[18]="Filt";
item_type_3[19]="Kikare";

name="";
level=1;
exp=0;
att=14;
def=14;
hp=10;
hp_max=10;
gp=0;
busy=false;
game_state="normal";  // options: normal, train, practice, rest, explore, eat
dd_items=new Array(7);
dd_skills=new Array(7);
for (i=0; i < 7; i++) {
	dd_items[i]="-1,-1";  // "type, index"
	dd_skills[i]="-1";    // "index"
}

function load_dd() {

}

function unload_dd() {

}

// item_point is a string in the form of "item_type, item_index into the array"
function item_to_string(item_pointer) {
	var parts=item_pointer.split(",");
	var item_type=eval(parts[0]);
	var item_index=eval(parts[1]);
	var item_string="";  // the string name of the given item

	if (item_type == 1) 
		item_string=item_type_1[item_index];
	else if (item_type == 2)
		item_string=item_type_2[item_index];
	else if (item_type == 3)
		item_string=item_type_3[item_index];

	if (item_string == "-1,-1") item_string="";
	return item_string;	
}

// adds an item to the inventory and displays it and updates the status
function item_(item_type_gained, item_gained) {
	var found=false;  // look for a place to put the item
	var i=0;

	do {
		if ( (dd_items[i]=="-1,-1") || (i==7) ) found=true;
		else i++;
	} while (!found);

	dd_items[i]=item_type_gained + "," + item_gained;

	document.forms[0].field2.value=item_to_string(dd_items[0]);
	document.forms[0].field5.value=item_to_string(dd_items[1]);
	document.forms[0].field8.value=item_to_string(dd_items[2]);
	document.forms[0].field11.value=item_to_string(dd_items[3]);
	document.forms[0].field14.value=item_to_string(dd_items[4]);
	document.forms[0].field17.value=item_to_string(dd_items[5]);
	document.forms[0].field20.value=item_to_string(dd_items[6]);
	
	document.forms[0].field22.value=item_to_string(dd_items[0]);
	document.forms[0].field24.value=item_to_string(dd_items[1]);
	document.forms[0].field26.value=item_to_string(dd_items[2]);
	document.forms[0].field28.value=item_to_string(dd_items[3]);
	document.forms[0].field30.value=item_to_string(dd_items[4]);
	document.forms[0].field32.value=item_to_string(dd_items[5]);
	document.forms[0].field34.value=item_to_string(dd_items[6]);

} // end item_

function skill_(skill_gained) {
	var found=false;  // look for a place to put the item
	var i=0;

	do {
		if ( (dd_skills[i]=="-1") || (i==7) ) found=true;
		else i++;
	} while (!found);

	dd_skills[i]=skill_gained;

	if (dd_skills[0]!="-1") document.forms[0].field3.value=skills[dd_skills[0]];
	if (dd_skills[1]!="-1") document.forms[0].field6.value=skills[dd_skills[1]];
	if (dd_skills[2]!="-1") document.forms[0].field9.value=skills[dd_skills[2]];
	if (dd_skills[3]!="-1") document.forms[0].field12.value=skills[dd_skills[3]];
	if (dd_skills[4]!="-1") document.forms[0].field15.value=skills[dd_skills[4]];
	if (dd_skills[5]!="-1") document.forms[0].field18.value=skills[dd_skills[5]];
	if (dd_skills[6]!="-1") document.forms[0].field21.value=skills[dd_skills[6]];

	if (dd_skills[0]!="-1") document.forms[0].field23.value=skills[dd_skills[0]];
	if (dd_skills[1]!="-1") document.forms[0].field25.value=skills[dd_skills[1]];
	if (dd_skills[2]!="-1") document.forms[0].field27.value=skills[dd_skills[2]];
	if (dd_skills[3]!="-1") document.forms[0].field29.value=skills[dd_skills[3]];
	if (dd_skills[4]!="-1") document.forms[0].field31.value=skills[dd_skills[4]];
	if (dd_skills[5]!="-1") document.forms[0].field33.value=skills[dd_skills[5]];
	if (dd_skills[6]!="-1") document.forms[0].field35.value=skills[dd_skills[6]];

} // end skill_

function gp_(x) {
	gp=eval(eval(gp)+eval(x));
	document.forms[0].field19.value=gp;
}

function exp_(x) {
	var new_level=0;
	var message="";

	exp=eval(eval(exp)+eval(x));
	document.forms[0].field7.value=exp;

	if (exp > 1000) {
		new_level=Math.floor(exp/1000) + 3;
	} else if (exp >= 500) new_level=3;
	else if (exp >= 250) new_level=2;

	if (new_level > level) {
		level=new_level;
		hp_max+=Math.floor(Math.random()*10+1);
		att++;
		def++;
		document.forms[0].field4.value = level;
		document.forms[0].field10.value=att + " / +" + Math.floor(att/2);
		document.forms[0].field13.value=def + " / +" + Math.floor(def/2);

		message="Du gick upp en grad: Grad= "+level+",  Max livspoäng= " + hp_max+",  Attack= "+att+",  Försvar= "+def;
		alert(message);
	}
}

function hp_(x) {
	hp=eval(eval(hp)+eval(x));
	document.forms[0].field16.value=hp;
}

function article(ran_number, first_reale, proper_case) {
	if (proper_case)
		if (ran_number < first_reale)
			return "Ett";
		else
			return "En";
	else
		if (ran_number < first_reale)
			return "ett";
		else
			return "en";
}

function explore(count) {
	var action=Math.floor(Math.random()*100+1);
	var function_name="";
	var gp_gained=Math.floor(Math.random()*level*10 + 2);
	var item_type_gained=0;
	var item_gained=0;
	var ran_monster=Math.floor(Math.random()*NumOfMonsters);
	var ran_item=Math.floor(Math.random()*NumOfItems);
	var found=true;
	var hp_lost=0;
	var new_state=0;
	var ran_phrase=0;
	var phrase="";
	var dd_number = eval(document.forms[0].dd_number.value);
	var exp_gained=Math.floor(Math.random()*70+2);

	if (count == 0) {
		if (!busy) explore(1);
	} else {
		// don't allow anyone to explore if they are supposed to be doing something else
		if (game_state!="normal") {
			document.forms[0].status.value="Tyvärr, du behöver "+game_state+" först.";
			return;
		}
		if (game_state=="utforska") game_state="normal";

		// they really should name the poor dude
		if (document.forms[0].field1.value=="") {
			document.forms[0].status.value="Du måste ge mig ett namn innan vi vandrar ut i det okända.";
			return;
		}

		busy=true;
		count++;

		// do nothing for a wait of 10 * 200ms
		if (count < 10) {
			document.forms[0].status.value="Utforskar.";
			for (i=0; i < count; i++)
				document.forms[0].status.value+=".";
			
			function_name="explore("+count+");"
			window.setTimeout(function_name,200);

		// once the waiting is through, proceed to determine what happens
		} else {
			busy=false;
			count=0;
		
			if (action < 18) { // you find gold
				gp_(gp_gained);
				document.forms[0].status.value="Du hittar " + gp_gained + " guldpengar.";

			} else if (action < 37) {  // dungeon dude speaks
				// 38% of the time, the Dude says his unique phrase, the rest of the time it's a generic random phrase
				if (Math.floor(Math.random()*100) < 39) {
					document.forms[0].status.value=document.forms[0].field1.value+" säger, " + uniquephrases[dd_number-NumOfFirstDude];
						
				} else {

				  ran_phrase=Math.floor(Math.random()*(16+NumOfPhrases));
				  document.forms[0].status.value=document.forms[0].field1.value+" säger, ";

				  // either show a custom phrase or one of the 16 standard phrases
				  if (ran_phrase >= 16) {
					phrase=phrases[ran_phrase-16];
				  } else {
					
				  switch(ran_phrase) {
					case 0: 
						phrase=article(ran_item, NumOfNeutrum_items_3, true)+" "+item_type_3[ran_item]+" är en fräck grej att äga.";
						break;
					case 1: 
						phrase=article(ran_item, NumOfNeutrum_items_3, true)+" "+item_type_3[ran_item]+" är värdelöst att äga.";
						break;
					case 2: 
						phrase=skills[Math.floor(Math.random()*NumOfSkills)]+" är en fräck färdighet att kunna.";
						break;
					case 3: 
						phrase=skills[Math.floor(Math.random()*NumOfSkills)]+" är värdelöst att kunna.";
						break;
					case 4: 
						phrase="'"+document.forms[0].field1.value+"'"+" är ett mysigt namn att heta.";
						break;
					case 5: 
						phrase="'"+document.forms[0].field1.value+"'"+" är ett hemskt namn att heta.";
						break;
					case 6: 
						phrase="Kommer jag någonsin att nå upp till grad "+eval(level+Math.floor(Math.random()*10))+"?";
						break;
					case 7: 
						phrase="Vem är din absoluta favorit bland Snokande snubbar?  Du vet ju att det är jag...";
						break;
					case 8: 
						phrase="En gång besegrade jag "+article(ran_monster, NumOfNeutrum_monsters, false)+" "+monsters[ran_monster]+".";
						break;
					case 9: 
						phrase="Jag kan knappt tro att jag bara har "+exp+" erfarenhetspoäng";
						break;
					case 10: 
						phrase="Jag kan knappt tro att jag bara kommit upp till grad  "+level+".";
						break;
					case 11: 
						phrase="Jag kan knappt tro att jag bara har "+hp+" livspoäng.";
						break;
					case 12:
						phrase=article(ran_item, NumOfNeutrum_items_2, true)+" "+item_type_2[ran_item]+" är en fräck sak att äga.";
						break;
					case 13:
						phrase=article(ran_item, NumOfNeutrum_items_2, true)+" "+item_type_2[ran_item]+" är helt värdelöst att äga.";
						break;
					case 14:
						phrase=article(ran_item, NumOfNeutrum_items_1, true)+" "+item_type_1[ran_item]+" är ett fräckt föremål att äga.";
						break;
					case 15:
						phrase=article(ran_item, NumOfNeutrum_items_1, true)+" "+item_type_1[ran_item]+" är helt värdelöst att äga.";
						break;
				  } // end of switch ran_phrase
                          } // end of else not > 16
				} // end of else not < 39
				
				document.forms[0].status.value+=phrase;
				return;
			
			} else if (action < 41) {  // change state
				new_state=Math.floor(Math.random()*10);
				if (new_state<3) game_state="äta";
				else if (new_state==3) game_state="vila";
				else if (new_state<6) game_state="öva";
				else if (new_state<=9) game_state="träna";

				document.forms[0].status.value="Du är trött på att utforska.  Du behöver verkligen "+game_state+" istället.";			

			} else if (action < 44) { 
				if (dd_items[6]=="-1,-1") {	 // you find an item	
					document.forms[0].status.value="Du hittade ett föremål!";	

					do {
						found=true;
						item_type_gained=Math.floor(Math.random()*NumOfTypes+1);
						item_gained=Math.floor(Math.random()*NumOfItems);
						for (i=0; i < 7; i++) {
							if (dd_items[i] == (item_type_gained + "," + item_gained) ) found = false;
						}
					} while (!found);

					item_(item_type_gained, item_gained);
				} else { // inventory is full
					document.forms[0].status.value="Hum, hum....inget att se här.";
				}

			} else if (action < 63) { // you defeated a monster
					exp_gained=Math.floor(Math.random()*70+2);
					exp_(exp_gained);
					gp_(gp_gained);
					document.forms[0].status.value="Du besegrade "+article(ran_monster, NumOfNeutrum_monsters, false)+" "+monsters[ran_monster]+". +"+exp_gained+" ep och "+gp_gained+" gp.";
			
			} else if (action < 73) { // you were injured by a monster
					hp_lost=Math.floor(Math.random()*3*level+1);
					hp_(eval(0-hp_lost));
					if (hp <=0) {
						gp_lost=Math.floor(Math.random()*100*level+1);
						if (gp_lost > gp) gp_lost=gp;
						gp_lost=0-gp_lost;
						gp_(gp_lost);
						document.forms[0].status.value="Du blev skadad av "+article(ran_monster, NumOfNeutrum_monsters, false)+" "+monsters[ran_monster]+".  Du har svimmat.  Du blir bestulen på "+eval(0-gp_lost)+" gp!";
						game_state="vila";
					} else document.forms[0].status.value="Du blev skadad av "+article(ran_monster, NumOfNeutrum_monsters, false)+" "+monsters[ran_monster]+" och förlorade "+hp_lost+" livspoäng.";
			
			} else {
				document.forms[0].status.value="Hum, hum....inget att se här.";
			}

			exp_(1);

		} // end of else count is >= 10

	}  //end of else not count==0

}

function train(count) {
	var action=Math.floor(Math.random()*100+1);
	var function_name="";
	var skill_gained=0;
	var found=true;

	if (count == 0) {
		if (!busy) train(1);
	} else {
		if ( (game_state!="normal") && (game_state!="träna") ) {
			document.forms[0].status.value="Tyvärr, du behöver "+game_state+" först.";
			return;
		}

		if (game_state=="träna") game_state="normal";
		busy=true;
		count++;

		if (count < 10) {
			document.forms[0].status.value="Träning.";
			for (i=0; i < count; i++)
				document.forms[0].status.value+=".";
			
			function_name="train("+count+");"
			window.setTimeout(function_name,200);
		} else {
			busy=false;
			count=0;
		
			if (action < 8) {
				if (dd_skills[6]=="-1") {	 // you learned a new skill	
					document.forms[0].status.value="Du lärde dig en ny färdighet!";	

					do {
						found=true;
						skill_gained=Math.floor(Math.random()*NumOfSkills);
						for (i=0; i < 7; i++) {
							if (dd_skills[i ]== skill_gained) found=false;
						}
					} while (!found);

					skill_(skill_gained);
				} else { // skill list is full
					document.forms[0].status.value="Träningen fullbordad; du erhöll ett erfarenhetspoäng.";
				}
				
			} else {
				document.forms[0].status.value="Träningen fullbordad; du erhöll ett erfarenhetspoäng.";
			}

			exp_(1);

		} // end of else count is >= 10

	}  //end of else not count==0

}

function practice(count) {
	var action=Math.floor(Math.random()*100+1);
	var function_name="";
	var exp_gained=Math.floor(Math.random() * 20 + 2);

	if (count == 0) {
		if (!busy) practice(1);
	} else {
		if ( (game_state!="normal") && (game_state!="öva") ) {
			document.forms[0].status.value="Tyvärr, du behöver "+game_state+" först.";
			return;
		}

		if (game_state=="öva") game_state="normal";
		busy=true;
		count++;

		if (count < 20) {
			document.forms[0].status.value="Övar.";
			for (i=0; i < count; i++)
				document.forms[0].status.value+=".";
			
			function_name="practice("+count+");"
			window.setTimeout(function_name,200);
		} else {
			busy=false;
			count=0;

			exp_gained=Math.floor(Math.random() * 20 + 2);
			document.forms[0].status.value="Övning ger färdighet; du erhåller " + exp_gained + " erfarenhetspoäng.";
			exp_(exp_gained);

		} // end of else count is >= 10

	}  //end of else not count==0

}

function rest(count) {
	var action=Math.floor(Math.random()*100+1);
	var function_name="";
	var hp_gained=0;

	if (count == 0) {
		if (!busy) rest(1);
	} else {
		if ( (game_state!="normal") && (game_state!="vila") ) {
			document.forms[0].status.value="Tyvärr, du behöver "+game_state+" först.";
			return;
		}

		if (game_state=="vila") game_state="normal";
		busy=true;
		count++;

		if (count < 50) {
			document.forms[0].status.value="Vilar.";
			for (i=0; i < count; i++)
				document.forms[0].status.value+=".";
			
			function_name="rest("+count+");"
			window.setTimeout(function_name,550);
		} else {
			busy=false;
			count=0;

			hp_gained=hp_max-hp;
			hp_(hp_gained);
			document.forms[0].status.value="Alla förlorade livspoäng återfås.";
			
		} // end of else count is >= 10

	}  //end of else not count==0
}

function eat(count) {
	var action=Math.floor(Math.random()*100+1);
	var function_name="";
	var hp_gained=0;

	if (count == 0) {
		if (!busy) eat(1);
	} else {
		if ( (game_state!="normal") && (game_state!="äta") ) {
			document.forms[0].status.value="Tyvärr, du behöver "+game_state+" först.";
			return;
		}

		if (game_state=="äta") game_state="normal";
		busy=true;
		count++;

		if (count < 10) {
			document.forms[0].status.value="Äter.";
			for (i=0; i < count; i++)
				document.forms[0].status.value+=".";
			
			function_name="eat("+count+");"
			window.setTimeout(function_name,350);
		} else {
			busy=false;
			count=0;

			if (action < 50) {
				document.forms[0].status.value="Hmm... du var nog inte så hungrig ändå.";
			} else if (action < 72) {
				hp_gained=hp_max-hp;
				hp_(hp_gained);
				document.forms[0].status.value="Du känner dig uppfriskad; alla förlorade livspoäng återfås."; 
			} else {
				exp_(1);
				document.forms[0].status.value="Du känner dig uppfriskad; du erhåller ett erfarenhetspoäng."; 
			}
		} // end of else count is >= 10
	}  //end of else not count==0
}

function new_dude() {
	if (busy) return;

	answer=prompt("Klicka 'OK' för att RADERA ALLT.  Klicka 'Avbryt' för att ångra dig.","OK"); 
	if (answer) {
		name="";
		level=1;
		exp=0;
		att=14;
		def=14;
		hp=10;
		hp_max=10;
		gp=0;
		busy=false;
		game_state="normal";
		for (i=0; i < 7; i++) {
			dd_items[i]="-1,-1";
			dd_skills[i]="-1";
		}

		document.forms[0].status.value="Välkommen";
		document.forms[0].field1.value="";
		document.forms[0].field2.value="";
		document.forms[0].field3.value="";
		document.forms[0].field4.value="1";
		document.forms[0].field5.value="";
		document.forms[0].field6.value="";
		document.forms[0].field7.value="0";
		document.forms[0].field8.value="";
		document.forms[0].field9.value="";
		document.forms[0].field10.value="14 / +7";
		document.forms[0].field11.value="";
		document.forms[0].field12.value="";
		document.forms[0].field13.value="14 / +7";
		document.forms[0].field14.value="";
		document.forms[0].field15.value="";
		document.forms[0].field16.value="10";
		document.forms[0].field17.value="";
		document.forms[0].field18.value="";
		document.forms[0].field19.value="0";
		document.forms[0].field20.value="";
		document.forms[0].field21.value="";
		document.forms[0].field22.value="";
		document.forms[0].field23.value="";
		document.forms[0].field24.value="";
		document.forms[0].field25.value="";
		document.forms[0].field26.value="";
		document.forms[0].field27.value="";
		document.forms[0].field28.value="";
		document.forms[0].field29.value="";
		document.forms[0].field30.value="";
		document.forms[0].field31.value="";
		document.forms[0].field32.value="";
		document.forms[0].field33.value="";
		document.forms[0].field34.value="";
		document.forms[0].field35.value="";
	} 

}

function display() {
	var message="";
	DispWin=window.open('', 'NewWin', 'toolbar=no, resizeable=1, width=450, height=450, scrollbars=1');

	message+="<h2>Snokande snubbe nr"+document.forms[0].dd_number.value+"</h2>";
	message+="<table><tr><td>";
	message+="<b>Namn:</b> "+document.forms[0].field1.value+"<br />";
	message+="<b>Grad:</b> "+document.forms[0].field4.value+"<br />";
	message+="<b>EP:</b> "+document.forms[0].field7.value+"<br />";
	message+="<b>Attack:</b> "+document.forms[0].field10.value+"<br />";
	message+="<b>Försvar:</b> "+document.forms[0].field13.value+"<br />";
	message+="<b>lp:</b> "+document.forms[0].field16.value+"<br />";
	message+="<b>gp:</b> "+document.forms[0].field19.value+"<br />";
	message+="</td><td>";
 	message+="<img src="+document.images[0].src+" height='70' alt='' /><br /></td></tr></table>";

	message+="<table><tr><td>";
	message+="<p>";
	message+="<ul>";
	message+="<li><b>Föremål</b></li>";
	message+="<li>"+document.forms[0].field2.value+"</li>";
	message+="<li>"+document.forms[0].field5.value+"</li>";
	message+="<li>"+document.forms[0].field8.value+"</li>";
	message+="<li>"+document.forms[0].field11.value+"</li>";
	message+="<li>"+document.forms[0].field14.value+"</li>";
	message+="<li>"+document.forms[0].field17.value+"</li>";
	message+="<li>"+document.forms[0].field20.value+"</li>";
	message+="</ul></p></td><td>";

	message+="<p>";
	message+="<ul>";
	message+="<li><b>Färdigheter</b></li>";
	message+="<li>"+document.forms[0].field3.value+"</li>";
	message+="<li>"+document.forms[0].field6.value+"</li>";
	message+="<li>"+document.forms[0].field9.value+"</li>";
	message+="<li>"+document.forms[0].field12.value+"</li>";
	message+="<li>"+document.forms[0].field15.value+"</li>";
	message+="<li>"+document.forms[0].field18.value+"</li>";
	message+="<li>"+document.forms[0].field21.value+"</li>";
	message+="</ul></p></td></tr></table>";


	message+="<h5>Skriv ut denna sida genom att använda webbläsarens normala funktioner, till exempel CTRL+P.</br>";
	message+="Snokande snubbar/Dungeon Dudes &copy; 2003 Jeffrey A. Mills, DVM Dimensions Game Software<br/>";
	message+="Översättning av Mikael Börjesson</h5>";

	DispWin.document.write(message);

} // end display()

function load() {
	var dd_code=document.forms[0].load_save.value;
	var dd_code_parts=dd_code.split(",");
	var key=dd_code_parts[0];

	if ( eval( eval(dd_code_parts[50])  - eval(key) ) != eval(document.forms[0].dd_number.value) ) {
		alert("Hoppsan, den sparakoden är för Snokande snubbe nr "+eval( eval(dd_code_parts[50])  - eval(key) )+".  Jag försöker konvertera dina data så bra som möjligt." );
	}
		
	level=eval(eval(dd_code_parts[1])-eval(key));
	exp=eval(eval(dd_code_parts[3])-eval(key));
	hp=eval(eval(dd_code_parts[5])-eval(key));
	att=eval(eval(dd_code_parts[7])-eval(key));
	def=eval(eval(dd_code_parts[9])-eval(key));
	hp_max=eval(eval(dd_code_parts[11])-eval(key));
	gp=eval(eval(dd_code_parts[13])-eval(key));
	
	for (i=0; i < 7; i++) {
		dd_items[i]=dd_code_parts[15+i*5]+","+dd_code_parts[16+i*5];
		dd_skills[i]=eval(eval(dd_code_parts[18+i*5])-eval(key));
	}

	name=dd_code_parts[51];

	document.forms[0].status.value="Välkommen tillbaka "+name+".";
	document.forms[0].field1.value=name;
	document.forms[0].field4.value=level;
	document.forms[0].field7.value=exp;
	document.forms[0].field10.value=att + " / +" + Math.floor(att/2);
	document.forms[0].field13.value=def + " / +" + Math.floor(def/2);
	document.forms[0].field16.value=hp;
	document.forms[0].field19.value=gp;
	document.forms[0].field2.value=item_to_string(dd_items[0]);
	document.forms[0].field5.value=item_to_string(dd_items[1]);
	document.forms[0].field8.value=item_to_string(dd_items[2]);
	document.forms[0].field11.value=item_to_string(dd_items[3]);
	document.forms[0].field14.value=item_to_string(dd_items[4]);
	document.forms[0].field17.value=item_to_string(dd_items[5]);
	document.forms[0].field20.value=item_to_string(dd_items[6]);
	document.forms[0].field22.value=item_to_string(dd_items[0]);
	document.forms[0].field24.value=item_to_string(dd_items[1]);
	document.forms[0].field26.value=item_to_string(dd_items[2]);
	document.forms[0].field28.value=item_to_string(dd_items[3]);
	document.forms[0].field30.value=item_to_string(dd_items[4]);
	document.forms[0].field32.value=item_to_string(dd_items[5]);
	document.forms[0].field34.value=item_to_string(dd_items[6]);

	if (dd_skills[0]!="-1") document.forms[0].field3.value=skills[dd_skills[0]];
	else document.forms[0].field3.value="";
	if (dd_skills[1]!="-1") document.forms[0].field6.value=skills[dd_skills[1]];
	else document.forms[0].field6.value="";	
	if (dd_skills[2]!="-1") document.forms[0].field9.value=skills[dd_skills[2]];
	else document.forms[0].field9.value="";	
	if (dd_skills[3]!="-1") document.forms[0].field12.value=skills[dd_skills[3]];
	else document.forms[0].field12.value="";
	if (dd_skills[4]!="-1") document.forms[0].field15.value=skills[dd_skills[4]];
	else document.forms[0].field15.value="";
	if (dd_skills[5]!="-1") document.forms[0].field18.value=skills[dd_skills[5]];
	else document.forms[0].field18.value="";
	if (dd_skills[6]!="-1") document.forms[0].field21.value=skills[dd_skills[6]];
	else document.forms[0].field21.value="";
	if (dd_skills[0]!="-1") document.forms[0].field23.value=skills[dd_skills[0]];
	else document.forms[0].field23.value="";
	if (dd_skills[1]!="-1") document.forms[0].field25.value=skills[dd_skills[1]];
	else document.forms[0].field25.value="";	
	if (dd_skills[2]!="-1") document.forms[0].field27.value=skills[dd_skills[2]];
	else document.forms[0].field27.value="";	
	if (dd_skills[3]!="-1") document.forms[0].field29.value=skills[dd_skills[3]];
	else document.forms[0].field29.value="";
	if (dd_skills[4]!="-1") document.forms[0].field31.value=skills[dd_skills[4]];
	else document.forms[0].field31.value="";
	if (dd_skills[5]!="-1") document.forms[0].field33.value=skills[dd_skills[5]];
	else document.forms[0].field33.value="";
	if (dd_skills[6]!="-1") document.forms[0].field35.value=skills[dd_skills[6]];
	else document.forms[0].field35.value="";

}  // end load()

function save() {
	var dd_code="";
	var key=Math.floor(Math.random()*NumOfDudes+NumOfFirstDude); 
	name=document.forms[0].field1.value;
	
	dd_code+=key+",";
	dd_code+=eval(eval(level) + key) +",";
	dd_code+=Math.floor(Math.random()*10)+",";
	dd_code+=eval(eval(exp) + key)+",";
	dd_code+=Math.floor(Math.random()*10)+",";
	dd_code+=eval(eval(hp) + key)+",";	
	dd_code+=Math.floor(Math.random()*10)+",";
	dd_code+=eval(eval(att) + key) +",";
	dd_code+=Math.floor(Math.random()*10)+",";
	dd_code+=eval(eval(def) + key) +",";
	dd_code+=Math.floor(Math.random()*10)+",";
	dd_code+=eval(eval(hp_max) + key) +",";
	dd_code+=Math.floor(Math.random()*10)+",";
	dd_code+=eval(eval(gp) + key) +",";
	dd_code+=Math.floor(Math.random()*10)+",";
	
	for (i=0; i < 7; i++) {
		dd_code+=dd_items[i]+",";
		dd_code+=Math.floor(Math.random()*10)+",";
		dd_code+=eval(eval(dd_skills[i]) + key) +",";
		dd_code+=Math.floor(Math.random()*10)+",";
	}

	dd_code+=eval(eval(document.forms[0].dd_number.value) + key) + ",";
	dd_code+=name;
	document.forms[0].load_save.value=dd_code;
} // end save()

function deletestuff() {
	temp_items=new Array(7);
	temp_skills=new Array(7);
	for (i=0; i < 7; i++) {
		temp_items[i]=dd_items[i];
		temp_skills[i]=dd_skills[i];
	}

	// delete everything then add it back if it wasn't deleted
	for (i=0; i < 7; i++) {
		dd_items[i]="-1,-1";  // "type, index"
		dd_skills[i]="-1";    // "index"
	}

	// items
	item_parts=temp_items[0].split(",");
	if ((document.forms[0].check22.checked==false) && (temp_items[0] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 
	item_parts=temp_items[1].split(",");
	if ((document.forms[0].check24.checked==false)  && (temp_items[1] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 
	item_parts=temp_items[2].split(",");
	if ((document.forms[0].check26.checked==false)  && (temp_items[2] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 
	item_parts=temp_items[3].split(",");
	if ((document.forms[0].check28.checked==false)  && (temp_items[3] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 
	item_parts=temp_items[4].split(",");
	if ((document.forms[0].check30.checked==false)  && (temp_items[4] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 
	item_parts=temp_items[5].split(",");
	if ((document.forms[0].check32.checked==false)  && (temp_items[5] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 
	item_parts=temp_items[6].split(",");
	if ((document.forms[0].check34.checked==false)  && (temp_items[6] != "-1,-1") ) {
		item_(item_parts[0],item_parts[1]);
	} 

	// skills
	if ((document.forms[0].check23.checked==false)  && (temp_skills[0] != "-1") ) {
		skill_(temp_skills[0]);
	} 
	if ((document.forms[0].check25.checked==false)  && (temp_items[1] != "-1") ) {
		skill_(temp_skills[1]);
	} 
	if ((document.forms[0].check27.checked==false)  && (temp_items[2] != "-1") ) {
		skill_(temp_skills[2]);
	} 
	if ((document.forms[0].check29.checked==false)  && (temp_items[3] != "-1") ) {
		skill_(temp_skills[3]);
	} 
	if ((document.forms[0].check31.checked==false)  && (temp_items[4] != "-1") ) {
		skill_(temp_skills[4]);
	} 
	if ((document.forms[0].check33.checked==false)  && (temp_items[5] != "-1") ) {
		skill_(temp_skills[5]);
	} 
	if ((document.forms[0].check35.checked==false)  && (temp_items[6] != "-1") ) {
		skill_(temp_skills[6]);
	} 

	document.forms[0].field2.value=item_to_string(dd_items[0]);
	document.forms[0].field5.value=item_to_string(dd_items[1]);
	document.forms[0].field8.value=item_to_string(dd_items[2]);
	document.forms[0].field11.value=item_to_string(dd_items[3]);
	document.forms[0].field14.value=item_to_string(dd_items[4]);
	document.forms[0].field17.value=item_to_string(dd_items[5]);
	document.forms[0].field20.value=item_to_string(dd_items[6]);
	document.forms[0].field22.value=item_to_string(dd_items[0]);
	document.forms[0].field24.value=item_to_string(dd_items[1]);
	document.forms[0].field26.value=item_to_string(dd_items[2]);
	document.forms[0].field28.value=item_to_string(dd_items[3]);
	document.forms[0].field30.value=item_to_string(dd_items[4]);
	document.forms[0].field32.value=item_to_string(dd_items[5]);
	document.forms[0].field34.value=item_to_string(dd_items[6]);

	if (dd_skills[0]!="-1") document.forms[0].field3.value=skills[dd_skills[0]];
	else document.forms[0].field3.value="";
	if (dd_skills[1]!="-1") document.forms[0].field6.value=skills[dd_skills[1]];
	else document.forms[0].field6.value="";	
	if (dd_skills[2]!="-1") document.forms[0].field9.value=skills[dd_skills[2]];
	else document.forms[0].field9.value="";	
	if (dd_skills[3]!="-1") document.forms[0].field12.value=skills[dd_skills[3]];
	else document.forms[0].field12.value="";
	if (dd_skills[4]!="-1") document.forms[0].field15.value=skills[dd_skills[4]];
	else document.forms[0].field15.value="";
	if (dd_skills[5]!="-1") document.forms[0].field18.value=skills[dd_skills[5]];
	else document.forms[0].field18.value="";
	if (dd_skills[6]!="-1") document.forms[0].field21.value=skills[dd_skills[6]];
	else document.forms[0].field21.value="";
	if (dd_skills[0]!="-1") document.forms[0].field23.value=skills[dd_skills[0]];
	else document.forms[0].field23.value="";
	if (dd_skills[1]!="-1") document.forms[0].field25.value=skills[dd_skills[1]];
	else document.forms[0].field25.value="";	
	if (dd_skills[2]!="-1") document.forms[0].field27.value=skills[dd_skills[2]];
	else document.forms[0].field27.value="";	
	if (dd_skills[3]!="-1") document.forms[0].field29.value=skills[dd_skills[3]];
	else document.forms[0].field29.value="";
	if (dd_skills[4]!="-1") document.forms[0].field31.value=skills[dd_skills[4]];
	else document.forms[0].field31.value="";
	if (dd_skills[5]!="-1") document.forms[0].field33.value=skills[dd_skills[5]];
	else document.forms[0].field33.value="";
	if (dd_skills[6]!="-1") document.forms[0].field35.value=skills[dd_skills[6]];
	else document.forms[0].field35.value="";

} // end deletestuff()

function about() {
	alert("Snokande snubbar/Dungeons Dudes...'Mer än bara ännu ett virtuellt husdjur' (c)2003 Jeffrey A. Mills, DVM Dimensions Game Software  Översättning av Mikael Börjesson");
} // end about()
