diff --git a/js/spniBehaviour.js b/js/spniBehaviour.js index b6de408bb16e9350cee1e9afe15827a04c24bcb2..b5f05f9c4495f4cc256ac0745f1fdc0bcae78fbf 100644 --- a/js/spniBehaviour.js +++ b/js/spniBehaviour.js @@ -225,7 +225,7 @@ function checkMarker(predicate, target) { * Updates the behaviour of the given player based on the * provided tag. ************************************************************/ -function updateBehaviour (player, tag, opp) { +Player.prototype.updateBehaviour = function(tag, opp) { /* determine if the AI is dialogue locked */ //Allow characters to speak. If we change forfeit ideas, we'll likely need to change this as well. //if (players[player].forfeit[1] == CANNOT_SPEAK) { @@ -233,16 +233,12 @@ function updateBehaviour (player, tag, opp) { //tag = players[player].forfeit[0]; //} - if (!players[player]) { - return; - } - /* get the AI stage */ - var stageNum = players[player].stage; + var stageNum = this.stage; /* try to find the stage */ var stage = null; - players[player].xml.find('behaviour').find('stage').each(function () { + this.xml.find('behaviour').find('stage').each(function () { if (Number($(this).attr('id')) == stageNum) { stage = $(this); } @@ -250,7 +246,7 @@ function updateBehaviour (player, tag, opp) { /* quick check to see if the stage exists */ if (!stage) { - console.log("Error: couldn't find stage for player "+player+" on stage number "+stageNum+" for tag "+tag); + console.log("Error: couldn't find stage for player "+this.slot+" on stage number "+stageNum+" for tag "+tag); return; } @@ -264,7 +260,7 @@ function updateBehaviour (player, tag, opp) { /* quick check to see if the tag exists */ if (states.length <= 0) { - console.log("Warning: couldn't find "+tag+" dialogue for player "+player+" at stage "+stageNum); + console.log("Warning: couldn't find "+tag+" dialogue for player "+this.slot+" at stage "+stageNum); return false; } else { @@ -378,7 +374,7 @@ function updateBehaviour (player, tag, opp) { } } else { // else look at your own losses - if (inInterval(players[player].consecutiveLosses, lossesInRow)) { + if (inInterval(this.consecutiveLosses, lossesInRow)) { totalPriority += 60; } else { @@ -409,7 +405,7 @@ function updateBehaviour (player, tag, opp) { // hasHand (priority = 20) if (typeof hasHand !== typeof undefined && hasHand !== false) { - if (handStrengthToString(players[player].hand.strength) === hasHand) { + if (handStrengthToString(this.hand.strength) === hasHand) { totalPriority += 20; // priority } else { @@ -509,8 +505,8 @@ function updateBehaviour (player, tag, opp) { // timeInStage (priority = 8) if (typeof timeInStage !== typeof undefined) { - if (inInterval(players[player].timeInStage == -1 ? 0 //allow post-strip time to count as 0 - : players[player].timeInStage, timeInStage)) { + if (inInterval(this.timeInStage == -1 ? 0 //allow post-strip time to count as 0 + : this.timeInStage, timeInStage)) { totalPriority += 8; } else { @@ -598,7 +594,7 @@ function updateBehaviour (player, tag, opp) { // markers (priority = 1) // marker checks have very low priority as they're mainly intended to be used with other target types if (saidMarker) { - if (checkMarker(saidMarker, players[player])) { + if (checkMarker(saidMarker, this)) { totalPriority += 1; } else { @@ -606,7 +602,7 @@ function updateBehaviour (player, tag, opp) { } } if (notSaidMarker) { - if (!players[player].markers[notSaidMarker]) { + if (!this.markers[notSaidMarker]) { totalPriority += 1; } else { @@ -635,8 +631,8 @@ function updateBehaviour (player, tag, opp) { } states = bestMatch.reduce(function(list, caseObject) { - return list.concat(parseDialogue(caseObject, players[player], opp)); - }, []); + return list.concat(parseDialogue(caseObject, this, opp)); + }.bind(this), []); if (states.length > 0) { var chosenState = states[getRandomNumber(0, states.length)]; @@ -646,30 +642,30 @@ function updateBehaviour (player, tag, opp) { if (match) { if (match[1] === '+') { // increment marker value - if(!players[player].markers[match[2]]) { - players[player].markers[match[2]] = 1; + if(!this.markers[match[2]]) { + this.markers[match[2]] = 1; } else { - players[player].markers[match[2]] += 1; + this.markers[match[2]] += 1; } } else if (match[1] === '-') { // decrement marker value - if(!players[player].markers[match[2]]) { - players[player].markers[match[2]] = 0; + if(!this.markers[match[2]]) { + this.markers[match[2]] = 0; } else { - players[player].markers[match[2]] -= 1; + this.markers[match[2]] -= 1; } } else { // set marker value - players[player].markers[match[3]] = parseInt(match[4], 10); + this.markers[match[3]] = parseInt(match[4], 10); } - } else if (!players[player].markers[chosenState.marker]) { - players[player].markers[chosenState.marker] = 1; + } else if (!this.markers[chosenState.marker]) { + this.markers[chosenState.marker] = 1; } } - players[player].allStates = states; - players[player].chosenState = chosenState; + this.allStates = states; + this.chosenState = chosenState; return true; } console.log("-------------------------------------"); @@ -681,15 +677,15 @@ function updateBehaviour (player, tag, opp) { * Updates the behaviour of all players except the given player * based on the provided tag. ************************************************************/ -function updateAllBehaviours (player, tag, opp) { +function updateAllBehaviours (player, tag) { for (var i = 1; i < players.length; i++) { if (players[i] && (player === null || i != player)) { if (typeof tag === 'object') { tag.some(function(t) { - return updateBehaviour(i, t, opp); + return players[i].updateBehaviour(t, players[player]); }); } else { - updateBehaviour(i, tag, opp); + players[i].updateBehaviour(tag, players[player]); } } } diff --git a/js/spniClothing.js b/js/spniClothing.js index bbca28c727eb232f74eeb212539d0eb1f8139eda..d0514451590b1b77f210298787b7a5489d05551a 100644 --- a/js/spniClothing.js +++ b/js/spniClothing.js @@ -239,27 +239,27 @@ function playerMustStrip (player) { trigger = [FEMALE_HUMAN_MUST_STRIP, FEMALE_MUST_STRIP]; } } - updateAllBehaviours(player, trigger, players[player]); + updateAllBehaviours(player, trigger); } else { if (players[player].gender == eGender.MALE) { - updateAllBehaviours(player, MALE_MUST_STRIP, players[player]); + updateAllBehaviours(player, MALE_MUST_STRIP); } else { - updateAllBehaviours(player, FEMALE_MUST_STRIP, players[player]); + updateAllBehaviours(player, FEMALE_MUST_STRIP); } var trigger = determineStrippingSituation(players[player]); - updateBehaviour(player, trigger); + players[player].updateBehaviour(trigger); } } else { /* the player has no clothes and will have to accept a forfeit */ if (players[player].gender == eGender.MALE) { - updateAllBehaviours(player, MALE_MUST_MASTURBATE, players[player]); + updateAllBehaviours(player, MALE_MUST_MASTURBATE); } else if (players[player].gender == eGender.FEMALE) { - updateAllBehaviours(player, FEMALE_MUST_MASTURBATE, players[player]); + updateAllBehaviours(player, FEMALE_MUST_MASTURBATE); } if (player != HUMAN_PLAYER) { var trigger = determineForfeitSituation(player); - updateBehaviour(player, trigger); + players[player].updateBehaviour(trigger); } } @@ -272,17 +272,17 @@ function playerMustStrip (player) { function prepareToStripPlayer (player) { if (player == HUMAN_PLAYER) { // Never happens (currently) if (players[HUMAN_PLAYER].gender == eGender.MALE) { - updateAllBehaviours(player, MALE_HUMAN_MUST_STRIP, players[player]); + updateAllBehaviours(player, MALE_HUMAN_MUST_STRIP); } else { - updateAllBehaviours(player, FEMALE_HUMAN_MUST_STRIP, players[player]); + updateAllBehaviours(player, FEMALE_HUMAN_MUST_STRIP); } } else { var toBeRemovedClothing = players[player].clothing[players[player].clothing.length - 1]; players[player].removedClothing = toBeRemovedClothing; var dialogueTrigger = getClothingTrigger(player, toBeRemovedClothing, false); - updateAllBehaviours(player, dialogueTrigger, players[player]); - updateBehaviour(player, PLAYER_STRIPPING, null); + updateAllBehaviours(player, dialogueTrigger); + players[player].updateBehaviour(PLAYER_STRIPPING); } } @@ -415,7 +415,7 @@ function closeStrippingModal () { } /* update behaviour */ - updateAllBehaviours(HUMAN_PLAYER, dialogueTrigger, players[HUMAN_PLAYER]); + updateAllBehaviours(HUMAN_PLAYER, dialogueTrigger); updateAllGameVisuals(); /* allow progression */ @@ -448,8 +448,8 @@ function stripAIPlayer (player) { players[player].updateLabel(); /* update behaviour */ - updateAllBehaviours(player, dialogueTrigger, players[player]); - updateBehaviour(player, PLAYER_STRIPPED); + updateAllBehaviours(player, dialogueTrigger); + players[player].updateBehaviour(PLAYER_STRIPPED); updateAllGameVisuals(); } diff --git a/js/spniForfeit.js b/js/spniForfeit.js index 03b5223ef0cfcbe047e507979b4a1f8d465055dc..29be54b5c49ecd2822de9f242f671cfbc9a41ab7 100644 --- a/js/spniForfeit.js +++ b/js/spniForfeit.js @@ -60,20 +60,20 @@ function startMasturbation (player) { /* update behaviour */ if (player == HUMAN_PLAYER) { if (players[HUMAN_PLAYER].gender == eGender.MALE) { - updateAllBehaviours(HUMAN_PLAYER, MALE_START_MASTURBATING, players[HUMAN_PLAYER]); + updateAllBehaviours(HUMAN_PLAYER, MALE_START_MASTURBATING); } else if (players[HUMAN_PLAYER].gender == eGender.FEMALE) { - updateAllBehaviours(HUMAN_PLAYER, FEMALE_START_MASTURBATING, players[HUMAN_PLAYER]); + updateAllBehaviours(HUMAN_PLAYER, FEMALE_START_MASTURBATING); } $gameClothingLabel.html("You're Masturbating..."); $gamePlayerCountdown.show(); setForfeitTimer(player); } else { if (players[player].gender == eGender.MALE) { - updateAllBehaviours(player, MALE_START_MASTURBATING, players[player]); + updateAllBehaviours(player, MALE_START_MASTURBATING); } else if (players[player].gender == eGender.FEMALE) { - updateAllBehaviours(player, FEMALE_START_MASTURBATING, players[player]); + updateAllBehaviours(player, FEMALE_START_MASTURBATING); } - updateBehaviour(player, PLAYER_START_MASTURBATING); + players[player].updateBehaviour(PLAYER_START_MASTURBATING); setForfeitTimer(player); } updateAllGameVisuals(); @@ -130,7 +130,7 @@ function tickForfeitTimers () { players[i].forfeit = [PLAYER_FINISHING_MASTURBATING, CAN_SPEAK]; /* show them cumming */ - updateBehaviour(i, PLAYER_FINISHING_MASTURBATING); + players[i].updateBehaviour(PLAYER_FINISHING_MASTURBATING); updateGameVisual(i); /* trigger the callback */ @@ -162,7 +162,7 @@ function tickForfeitTimers () { if (randomChance > timers[i]-1) { /* this player is now heavily masturbating */ players[i].forfeit = [PLAYER_HEAVY_MASTURBATING, CANNOT_SPEAK]; - updateBehaviour(i, PLAYER_HEAVY_MASTURBATING); + players[i].updateBehaviour(PLAYER_HEAVY_MASTURBATING); updateGameVisual(i); } } @@ -175,10 +175,10 @@ function tickForfeitTimers () { && ((gamePhase == eGamePhase.DEAL && players[HUMAN_PLAYER].out) || gamePhase == eGamePhase.EXCHANGE || gamePhase == eGamePhase.END_LOOP)) { var playerToShow = masturbatingPlayers[getRandomNumber(0, masturbatingPlayers.length)];//index of player chosen to show masturbating//players[] for (var i = 1; i < players.length; i++) { - updateBehaviour(i, - (i == playerToShow) ? players[i].forfeit[0] - : (players[playerToShow].gender == eGender.MALE ? MALE_MASTURBATING : FEMALE_MASTURBATING), - players[playerToShow]); + players[i].updateBehaviour( + (i == playerToShow) ? players[i].forfeit[0] + : (players[playerToShow].gender == eGender.MALE ? MALE_MASTURBATING : FEMALE_MASTURBATING), + players[playerToShow]); } updateAllGameVisuals(); } @@ -199,14 +199,14 @@ function finishMasturbation (player) { /* update other player dialogue */ if (players[player].gender == eGender.MALE) { - updateAllBehaviours(player, MALE_FINISHED_MASTURBATING, players[player]); + updateAllBehaviours(player, MALE_FINISHED_MASTURBATING); } else if (players[player].gender == eGender.FEMALE) { - updateAllBehaviours(player, FEMALE_FINISHED_MASTURBATING, players[player]); + updateAllBehaviours(player, FEMALE_FINISHED_MASTURBATING); } /* update their dialogue */ if (player != HUMAN_PLAYER) { - updateBehaviour(player, PLAYER_FINISHED_MASTURBATING); + players[player].updateBehaviour(PLAYER_FINISHED_MASTURBATING); } updateAllGameVisuals(); diff --git a/js/spniGame.js b/js/spniGame.js index 8eee6ab2952b68e4985cfe416f9090dd5a4e2893..9c358c6cd9a8eade5de0ebb85b25bfacb8de7e51 100644 --- a/js/spniGame.js +++ b/js/spniGame.js @@ -297,7 +297,7 @@ function makeAIDecision () { } /* update a few hardcoded visuals */ - updateBehaviour(currentTurn, SWAP_CARDS); + players[currentTurn].updateBehaviour(SWAP_CARDS); updateGameVisual(currentTurn); /* wait and implement AI action */ @@ -316,11 +316,11 @@ function implementAIAction () { /* update behaviour */ determineHand(players[currentTurn]); if (players[currentTurn].hand.strength == HIGH_CARD) { - updateBehaviour(currentTurn, BAD_HAND); + players[currentTurn].updateBehaviour(BAD_HAND); } else if (players[currentTurn].hand.strength == PAIR) { - updateBehaviour(currentTurn, OKAY_HAND); + players[currentTurn].updateBehaviour(OKAY_HAND); } else { - updateBehaviour(currentTurn, GOOD_HAND); + players[currentTurn].updateBehaviour(GOOD_HAND); } updateGameVisual(currentTurn); @@ -350,7 +350,7 @@ function advanceTurn () { /* check to see if they are still in the game */ if (players[currentTurn].out && currentTurn > 0) { /* update their speech and skip their turn */ - updateBehaviour(currentTurn, players[currentTurn].forfeit[0]); + players[currentTurn].updateBehaviour(players[currentTurn].forfeit[0]); updateGameVisual(currentTurn); timeoutID = window.setTimeout(advanceTurn, GAME_DELAY); @@ -712,7 +712,7 @@ function handleGameOver() { } for (var i = 1; i < players.length; i++){ var tag = (i == winner) ? GAME_OVER_VICTORY : GAME_OVER_DEFEAT; - updateBehaviour(i, tag, players[winner]); + players[i].updateBehaviour(tag, players[winner]); } updateAllGameVisuals();