var jerkRefreshCost = 0; var jerkActions = 3; var left_over_cards = 0; var refresh_pile = false; var muffins = 0; var muffinMultiplier = 1; var ringMultiplier = 1; var strengthMultiplier = 1; var allJerks = []; var extraActions = 0; var bossBattle = ""; var derekArray = allDereks; var curDerekShip; function drawJerksFromPile(amount) { playSound(soundEffect.jerkSquad); var j = state.jerkPile; //check if there will be enough available cards in the jerk pile var enough_cards = false; if (availableJerksInPile(j) >= amount) { console.log("enough jerks in pile"); enough_cards = true; } if (!enough_cards) { //TODO: Se om det her kan være rigtigt console.log("not enough cards"); var new_amount = availableJerksInPile(j); left_over_cards = amount - new_amount; amount = new_amount; } var i = 0; while (i < amount) { var magicNumber = Math.floor(Math.random() * state.jerkPile.length); if (!j[magicNumber].loaded && !j[magicNumber].exhausted && !j[magicNumber].removed) { console.log(j[magicNumber].navn); j[magicNumber].loaded = true; i++; } else { magicNumber = Math.floor(Math.random() * state.jerkPile.length); } } updateState("jerkPile", j); //TODO: if not enough cards, do a reload scene and keep track of left_over_cards to do another drawJerksFromPile() //Is this done? if (!enough_cards) { refresh_pile = true; } } function goRefreshJerks() { playSound(soundEffect.heal); // updateState('bCoco', state.bCoco - jerkRefreshCost); refresh_pile = false; var j = state.jerkPile; var amount_loaded = 0; for (var i = 0; i < j.length; i++) { if (!j[i].exhausted && !j[i].removed) { console.log("IT'S loaded"); j[i].loaded = true; amount_loaded++; } } console.log("amount loaded: " + amount_loaded); for (var i = 0; i < j.length; i++) { j[i].exhausted = false; } updateState('jerkPile', j); var left_to_load = state.bJerksPerTurn - amount_loaded; console.log("left to load: " + left_to_load); drawJerksFromPile(left_to_load); goChooseJerk(); } function beatenJerksInPile(pile) { var available_cards = 0; for (var i = 0; i < pile.length; i++) { if (pile[i].exhausted && !pile[i].removed) { available_cards++; } } return available_cards; } function availableJerksInPile(pile) { var available_cards = 0; for (var i = 0; i < pile.length; i++) { if (!pile[i].loaded && !pile[i].exhausted && !pile[i].removed) { available_cards++; } } return available_cards; } function loadedJerks(pile) { var loaded_jerks = 0; for (var i = 0; i < pile.length; i++) { if (pile[i].loaded) { loaded_jerks++; } } return loaded_jerks; } function unloadAllJerks() { var j = state.jerkPile; for (var i = 0; i < j.length; i++) { if (j[i].loaded) { j[i].loaded = false; //If you want jerks not to exhaust after having been loaded, disable this j[i].exhausted = true; } } updateState('jerkPile', j); } //Use this to set a jerks removed, exhausted and loaded function manipulateJerk(array,loaded,exhausted,removed) { var j = state.jerkPile; for (var a = 0; a < array.length; a++) { for (var i = 0; i < j.length; i++) { if (array[a] == j[i].ID) { if (loaded) { if (j[i].loaded) { j[i].loaded = false; } else { j[i].loaded = true; } } if (exhausted) { if (j[i].exhausted) { j[i].exhausted = false; } else { j[i].exhausted = true; } } if (removed) { if (j[i].removed) { j[i].removed = false; } else { j[i].removed = true; } } } } } updateState('jerkPile', j); } function goChooseJerk() { var beatupText = ""; if (calculateDefeatedJerks() > 0) { beatupText = "" + calculateDefeatedJerks() + " jerk(s) are totally beat up.
"; } var availableText = ""; if (availableJerksInPile(state.jerkPile) > 0) { availableText = "There are " + availableJerksInPile(state.jerkPile) + " healthy jerk(s) in your pile.
"; } var onStage = "" + loadedJerks(state.jerkPile) + " jerk(s) step up to fight!
"; changeScene( "" + derekArray[curDerekIndex].navn + " is pumped. He has " + curDerekulianHealth + "/" + derekulianHealth + " health.
He is super hungry and intends to eat " + curDerekHunger + " stardust from your core (" + state.bCoreStardust + "/" + state.bCoreCapacity + " stardust in core)
You have baked " + muffins + " muffins.
" + availableText + onStage + beatupText + "Which jerk do you want to pit against him?
You have " + jerkActions + " jerk actions left", derekArray[curDerekIndex].image, "goChooseJerk" ); createGoButton("End round",derekArray[curDerekIndex].image,goDerekEat); createGoButton("Run away","jerkSquad",goRunAwaySure); var j = state.jerkPile; for (var i = 0; i < j.length; i++) { if (j[i].loaded) { createTextButton( j[i].navn + " (" + j[i].actionCost + ")", j[i].image, describeJerk(j[i].attack,j[i].parameter), attackDerek, j[i].navn + j[i].ID + "but", j[i].buttonDescription, j[i].ID ); if (j[i].actionCost > jerkActions) { document.getElementById(j[i].navn + j[i].ID + "but").disabled = true; } } } if (loadedJerks(state.jerkPile) == 0) { changeScene("You have no jerks left!","doorOfRegret"); createGoButton("Yikes!","bullFart",goDerekEat); } if (refresh_pile) { jerkRefreshCost = Math.floor(state.bCoco * 0.20); changeScene( "Your whole jerk pile has been beaten up!
But these jerks never give up! In a flash they are ready to fight for you again!", "jerkSquad" ); createGoButton("Go go jerks!","jerkSquad",goRefreshJerks); } } function goDerekEat() { // playSound(soundEffect.thirsty); if (muffins > 0) { if (muffins >= curDerekHunger) { //Eats all the muffins, and not appetite for stardust changeScene( "" + derekArray[curDerekIndex].navn + " frothingly eats " + muffins + " muffins. He is super full so he leaves your stardust alone.. for now", "muffin" ); } else { //Eats all the muffins but has a remaining appetite for stardust var leftover_hunger = curDerekHunger - muffins; changeScene( "" + derekArray[curDerekIndex].navn + " frothingly eats " + muffins + " muffins. But he is still super hungry, so he also eats " + leftover_hunger + " stardust", "muffin" ); updateState('bCoreStardust', state.bCoreStardust - leftover_hunger); } } else { //Eats the stardust //"" + allDereks[curDerekIndex].navn + " frothingly eats " + derekArray[curDerekIndex].navn + " frothingly eats " + curDerekHunger + " stardust", "stardust" ); updateState('bCoreStardust', state.bCoreStardust - curDerekHunger); } createGoButton("OK!","talk",loadBurgulonDungeonLevel); if (state.bCoreStardust <= 0) { //Derek wins playMusic(); drainCore(); var j = state.jerkPile; for (var i = 0; i < j.length; i++) { j[i].loaded = false; j[i].exhausted = false; } updateState('jerkPile', j); if (bossBattle == "bent") { goBentWins(); } else if (bossBattle == "slopnax") { goSlopnaxWins(); } else if (bossBattle == "mayonada") { goMayonadaWins(); } else if (bossBattle == "derek") { goDerekWins(); } else if (bossBattle == "jack") { if (state.bDerekProgress == 2) { goJackExplodes(); } else { goJackWins(); } } else { changeScene( "" + derekArray[curDerekIndex].navn + " sucks the remaining stardust out of your core. He returns to his home planet Derekulus X, victorious!", "blackHole" ); createGoButton("Bummer","bullFart",goNewGalaxy); } } } function loadBurgulonDungeonLevel() { console.log("loadBurgulonDungeonLevel"); //curBurgulonLevel++; muffins = 0; curDerekBaseHunger += derekulianHealth / 40; calculateDerekHunger(); //curDerekHunger += Math.floor(curDerekHunger * 0.2); jerkActions = state.bJerkActions + extraActions; unloadAllJerks(); drawJerksFromPile(state.bJerksPerTurn); goChooseJerk(); } function calculateDerekHunger() { curDerekHunger = Math.floor(Math.random() * curDerekBaseHunger) + Math.floor(curDerekBaseHunger / 10); } //Do this before entering the dungeon function startDungeon() { console.log("startDungeon"); //curBurgulonLevel = 0; var j = state.jerkPile; for (var i = 0; i < j.length; i++) { // if (!j[i].removed) { // j[i].loaded = false; // j[i].exhausted = false; // } j[i].loaded = false; j[i].exhausted = false; } updateState('jerkPile', j); jerkActions = state.bJerkActions; muffinMultiplier = 1; ringMultiplier = 1; strengthMultiplier = 1; muffins = 0; extraActions = 0; drawJerksFromPile(state.bJerksPerTurn); goChooseJerk(); } function goDerekDead() { // if (bossBattle == "") { // changeScene(derekArray[curDerekIndex].navn + " has been defeated! Your jerks swarm over to loot all his precious space rings","thirsty"); // createGoButton("Go get 'em!","spaceRing",goLootRings); // } else if (bossBattle == "bent") { // goDefeatBent(); // } else if (bossBattle == "slopnax") { // goDefeatSlopnax(); // } else if (bossBattle == "mayonada") { // goDefeatMayonada(); // } else if (bossBattle == "derek") { // goDefeatOgDerek(); // } changeScene( derekArray[curDerekIndex].navn + " has been defeated! Your jerks swarm over to loot all his precious space rings", "jerkSquadCelebrating" ); createGoButton("Go get 'em!","spaceRing",goLootRings); } function goLootRings() { var lootedRings = Math.round(derekulianHealth * ringMultiplier); updateState('bSpaceRings', state.bSpaceRings + lootedRings); changeScene( "You collect " + lootedRings + " space rings from the defeated enemy", "spaceRing" ); if (state.bDoubleRings) { createGoButton("Check socks","bullSocks",goCheckSocks,lootedRings); } createGoButton("Oh yeah!","talk",goLootRes,lootedRings); } function goCheckSocks(lootedRings) { var sockRings = 5 + Math.ceil(Math.random() * lootedRings); updateState('bSpaceRings', state.bSpaceRings + sockRings); changeScene( "You shake the stinking socks, and " + sockRings + " space rings fall out of the socks", "bullSocks" ); setTimeout(function(){ changeScene( "You shake the stinking socks, and " + sockRings + " space rings fall out of the socks", "spaceRing" ); createGoButton("Score!","spaceRing",goLootRes,lootedRings); },1000); } function goLootRes(rings) { var resTypes = [ "Wood", "Gold", "Coco", "Stardust" ]; var resImages = [ "wood", "gold", "coco", "stardust" ]; var resAmounts = [ 30, 10, 30, 3 ]; var chosenRes = Math.floor(Math.random() * 4); var amount = resAmounts[chosenRes] * rings; if (chosenRes == 0) { updateState('bWood', state.bWood + amount); } else if (chosenRes == 1) { updateState('bGold', state.bGold + amount); } else if (chosenRes == 2) { updateState('bCoco', state.bCoco + amount); } else if (chosenRes == 3) { updateState('bStardust', state.bStardust + amount); } changeScene( "You also find " + amount + " " + resTypes[chosenRes] + " in his wallet", resImages[chosenRes] ); createGoButton("Sweet",resImages[chosenRes],goLootLollies,rings); } function goLootLollies(rings) { playMusic(); var lolliAmount = Math.round(rings/15); updateState('bLollipops', state.bLollipops + lolliAmount); changeScene( "Look! Your jerks give you " + lolliAmount + " lollipops, for being so nice to them.
Do they really like getting beaten up like this all the time?", "Lollipop" ); if (bossBattle == "" || bossBattle == 1 || bossBattle == 2 || bossBattle == 3 || bossBattle == 0) { // if (state.bDoubleRings) { // createGoButton("Check socks","bullSocks",goCheckSocks,rings); // } createGoButton("Alright!","talk",finishDerek); //createGoButton("Oh yeah!","talk",goLootRes,lootedRings); } else if (bossBattle == "bent") { createGoButton("Alright!","talk",goDefeatBent); //goDefeatBent(); } else if (bossBattle == "slopnax") { createGoButton("Alright!","talk",goDefeatSlopnax); //goDefeatSlopnax(); } else if (bossBattle == "mayonada") { createGoButton("Alright!","talk",goDefeatMayonada); //goDefeatMayonada(); } else if (bossBattle == "derek") { createGoButton("Alright!","talk",goDefeatOgDerek); //goDefeatOgDerek(); } else if (bossBattle == "randomDerek") { if (derekulianHealth == 1000000 && !state.bMillionDerekCubeFound) { createGoButton("Alright!","talk",goFindMillionDerekCube); } else { createGoButton("Alright!","talk",goDerekSummoningDevice); } } else if (bossBattle == "jack") { createGoButton("Alright!!","talk",goDefeatJack); } //createGoButton("Alright!","talk",finishDerek); } function calculateDefeatedJerks() { //return (state.jerkPile.length - availableJerksInPile(state.jerkPile)) - ; var beaten = 0; var j = state.jerkPile; for (var i = 0; i < j.length; i++) { if (!j[i].removed && !j[i].loaded && j[i].exhausted) { beaten++; } } return beaten; } function goRunAwaySure() { changeScene( "Are you sure you want to run away from this epic battle?", "burgulon" ); createGoButton("No","no",goChooseJerk); createGoButton("Yes","yes",goRunAway); } function goRunAway() { playMusic(); changeScene( "You take all your jerks and get out of there!
Better not risk losing more stardust", "jerkSquad" ); createGoButton("Phew","talk",goNewGalaxy); }