- Jul 17, 2019
-
-
ReformCopyright authored
-
PivotalCog authored
This reverts commit dcbf6a0e, reversing changes made to 7df99af3.
-
- Jul 12, 2019
-
-
ReformCopyright authored
Note that the `HUMAN_PLAYER` (0) slot of `players` is only ever assigned to once.
-
- May 30, 2019
-
-
ReformCopyright authored
`~player.place~`: Current placement (1-5) based on layers remaining. If two players are tied, the lower number is returned, as per usual. When a player is out, their place is locked, so the first player to masturbate in a five player game stays at place 5 and don't become tied for fourth when the next player is eliminated. `~player.revplace~`: Current placement in reverse order, mainly so that you can check who is last or second last regardless of the number of participants. Also the lower number in case of a tie. The first player out will have this locked at 1 and so on. `~player.lead~`: Difference between `player`'s number of remaining layers and that of the best of the rest, so you can gloat when you're in a really big lead. If `player` is not in the lead, this will be negative, reflecting the number of layers behind the leader. `~player.trail~`: Difference between the lowest number of layers remaining among the other *remaining* players and `player`'s number of layers. Negative if not actually in last place (among the remaining players). `~player.diff(other)~` Difference between the number of layers of `player` and `other`, default being `self`. As an example, you can pinpoint the current leader (if any) by using `<condition var="leader"/><test expr="~leader.lead~" op=">" value="0"/>` This commit moves the code that looks up the player a variable refers to into a separate function.
-
- Mar 31, 2019
-
-
FarawayVision authored
-
- Mar 20, 2019
-
-
FarawayVision authored
Equivalents have been added for: - Chest / Crotch reveals - Forfeit triggers
-
- Feb 10, 2019
-
-
FarawayVision authored
-
- Jan 29, 2019
-
-
FarawayVision authored
-
- Jan 28, 2019
-
-
ReformCopyright authored
* Moves timers to the player objects. The initial timer value is now called "stamina" internally. * Activates the commented-out CANNOT_SPEAK mechanic; a character in heavy masturbation will not talk to others, only say heavy_masturbating lines. * If one or more characters are in heavy masturbation, the others (unless also heavily masturbating) will comment on one of them. * Optional male_heavy_masturbating and female_heavy_masturbating situations are added. If not used, the normal lines will play. * Fixes the problem that the moment a character goes into heavy masturbation, they immediately got a behaviour update, which was overwritten if the next phase was not Deal or Exchange. Since their heavy_masturbation lines will not always take priority, that update is no longer necessary (if it ever was).
-
- Jan 14, 2019
-
-
ReformCopyright authored
-
- Jan 13, 2019
-
-
ReformCopyright authored
As a special exception, reset a player's timeInStage *after* playing the finished_masturbating lines, so that it can be used by others to comment on how long they went on for. Reset it to 0 instead of -1 because orgasm may happen in the middle of a round (the time in the finished stage isn't that important anyway). Also increment timeInStage once for every 4 "Wait" phases (when the button just says "Wait", without dots).
-
- Dec 09, 2018
-
-
FarawayVision authored
-
FarawayVision authored
-
- Nov 30, 2018
-
-
FarawayVision authored
-
- Oct 18, 2018
-
-
FarawayVision authored
-
- Oct 14, 2018
-
-
ReformCopyright authored
-
PivotalCog authored
This reverts commit 73aa2ead58fafe60057c9e570239c5c256797391.
-
- Oct 13, 2018
-
-
Nmasp authored
Make updateBehaviour() an Opponent method and put Opponent object in players[] before calling loadBehaviour() See merge request spnati/spnati.gitlab.io!1061 (cherry picked from commit 3799d5c4b4e680644c4bbae86b16506b1d26d6b3) 470259ff Make updateBehaviour() a Player method. 4a7b7dea Improve loading by placing the selected Opponent object in the players[] array… b83e4a46 updateBehaviour() should be an Opponent method (it doesn't make sense for the human player). bdfb9b9f No need to load behaviour.xml at all if already loaded. eb2c2c06 Adjust whitespace. 0d255f16 Merge remote-tracking branch 'origin/master' into new-player-loading ff184503 Move methods that only are relevant to AI players to the Opponent subclass. 53b3bf7c Use .forEach() to loop over players[], skipping empty slots. 92d986f9 Make copies if the same opponent appears multiple times at the same preset table. b555e3fa Merge remote-tracking branch 'origin/master' into new-player-loading
-
Patrickisdom authored
This reverts merge request !1061
-
Make updateBehaviour() an Opponent method and put Opponent object in players[] before calling loadBehaviour()
-
- Oct 06, 2018
-
-
ReformCopyright authored
It works now that players[0].updateBehaviour is an empty function. Also simplify handleGameOver() by finding the winner while checking if anyone is still masturbating.
-
- Oct 04, 2018
-
-
ReformCopyright authored
Also drops the last argument of updateAllBehaviours(), because it's *always* the player in the slot specified by the first argument.
-
- Aug 27, 2018
-
-
ReformCopyright authored
* Extra call to allowProgression() after the call to finishMasturbation(), which itself calls allowProgression(), caused the Ending popup to pop up automatically. * Make sure that the main button is re-enabled after closing the ending popup without selecting an epilogue or restarting.
-
- Aug 01, 2018
-
-
ReformCopyright authored
-
- Jun 15, 2018
-
-
Mike authored
-
- Jun 13, 2018
-
-
ReformCopyright authored
-
Mike authored
-
ReformCopyright authored
-
- Jun 12, 2018
- Jun 11, 2018
-
-
ReformCopyright authored
-
- Jun 06, 2018
-
-
ReformCopyright authored
Move all extraction of variable substitution data to parseDialogue() instead of having to pass players[HUMAN_PLAYER].label etc. to every call to updateBehaviour(). The article of clothing to be removed or last removed is stored in player.removedClothing. This is how v12 was going to do it.
-
ReformCopyright authored
To avoid too much repetition, don't comment on masturbating player during deal phase if it can be done during exchange phase, and don't have all players talk every time.
-
ReformCopyright authored
Talk about/to a masturbating player whenever possible, with double chance of addressing the human player.
-
Abort animations and timers when resetting the game. Clear the card displays when starting a new game, because the card animation callback aren't called until after restartGame() finishes.
-
Restructure tickForfeitTimers() to first check for a player about to cum, then decrement all other timers. More common code is kept together that way and it eliminates an inconsistency/bug when one player goes into heavy masturbation at the same time as another cums.
-
Instead of randomly refreshing masturbation comments during the wait phases, do it every 4 phases. Make sure that the main button starts on "Wait".
-
-