Dev:SDK/Slave Girl - Endings
SlaveMaker 3 SDK
SlaveGirl Endings
- Checking for End Game
The way endings work is
a) At the start of each day the game checks if _root.Elapsed (total days in training) is greater than or equal to _root.TrainingTime (scheduled traning time) If so training is over and the end end game starts
b) In an event a developer can call the function TrainingComplete to stop training immediately (see below for details)
- General Process Once the Game Ends
a) The game checks the special cases
- Cowgirl
- Tentacle Slave
- Lesbian Slave
These happen and then you get the other endings. Some slave girls can bypass or alter these, based on story
b) The game checks any custom endings, like Minako's Cat Savior, Belldandy's Angel etc
c) If no custom ending applies it then checks the standard endings in this order
- Cowgirl
- Catgirl
- Ponygirl
- Courtesan
- Dickgirl
- S&M
- Drug Addict
- Rich
- Marriage
- Sex Maniac
- Sex Addict
- Rebel
- Maid
- Normal +
- Normal -
- Normal
- Prostitute
Again a slave girl can alter or bypass these as story dictates
Also note the ending dickgirl will be converted to a special case
Also some endings like Courtesan can have qualifiers like 'Dickgirl Courtesan'
d) Then applies the revised endings
- Love
- Bought Back
Again a slave girl can alter or bypass these as story dictates, for instance Belldandy does not get Bought Back for her Angel or Demon endings (she is gone and heaven or hell aren't open to negotiations). Similarly Rei never gets it, Daruna is too possessive.
e) Lastly the Slave Maker endings
- Demon Slave Maker
- Tentacle Impregnated
Slave girls can add additional ones like Rei's Demon Lover
________________________________________________________________
- Core Variables
There are a series of functions and variables to control the end of game
_root.NumFin - The game ending selected. Note these are in the order the game will check them in
- 20 - Tentacle Slave
- 24 - Heterosexual Slave
- 25 - Lesbian Slave
These will happen as well as the following endings
- 21 - Cowgirl
- 3 - Catgirl
- 18 - Ponygirl
- 26 - Courtesan
- 19 - Dickgirl
- 9 - S&M
- 12 - Drug Addict
- 8 - Rich
- 2 - Marriage
- 7 - Sex Maniac
- 6 - Sex Addict
- 13 - Rebel
- 10 - Maid
- 14 - Normal +
- 16 - Normal -
- 15 - Normal
- 17 - Prostitute
Values 30-69 are reserved for Slave Girl use
Values 70-99 are reserved for Assistant use
There are additional special values, see EndingFinish below.
_root.Score - the calculated score for the ending
_root.SlaveData - This is an instance of the Slave class that holds all data for the slave. Only valid in EndingStart/EndingFinish functions below. One member to consider
_root.SlaveData.CanAssist = true;
If you set this then the slave will ALWAYS be available as an assistant
________________________________________________________________
- SlaveGirl Override Functions
These functions can be overridden for a Slave Girl to control her endings
Mandatory
- NumCustomEndings
function NumCustomEndings() : Number
- Return the number of custom endings for this girl. For instance Riesz returns 3 for Tentacle Queen, Wolfgirl, Dickgirl Toy
If there are no custom endings return 0
Optional
- ShowEndings
function ShowEndings(ending:Number)
- ending - the custom ending, from 0 to the value returned by NumCustomEndings - 1
Shows a text description of a custom ending. Note use AddText, do not use SetText
eg from Kasumi, who has only 1 ending
{
_root.AddText("To get the ending 'Winner', train " + _root.SlaveName + " and finish with Combat Skill more than 80, Constitution more than 80, Temperament more than 70 and a score above 75.");
}
eg for Riesz
{
switch (ending) {
case 0:
_root.AddText("To get the ending 'Wolf Knight', have " + _root.SlaveName + " wear the 'Wolf Girl' dress and then visit the Knight and complete the tasks set.");
break;
case 1:
_root.AddText("To get the ending 'Dickgirl Toy', sell " + _root.SlaveName + " to the dickgirl buyer and have her do 20+ brothel and sleazy bar actions.");
break;
case 2:
_root.AddText("To get the ending 'Tentacle Queen', have " + _root.SlaveName + " voluntarily submit to tentacle beasts at least 5 times, and have her recruit 3 other girls for the creatures.");
break;
}
}
- EndingStart
function EndingStart(total:Number) : Boolean
- total - calculated score for your training
This function is used to specify a custom ending. Return true to disable the normal messages about a letter from her owner, else return false. Set _root.NumFin to a custom value (30-99) for the selected custom ending or call SetEnding(). You should also display the graphic for the ending
Normally if _root.NumFin == 20 then return false unless you wish to do special processing for Tentacle Slave
eg from Kasumi
{
if (_root.NumFin == 20) return false;
if (_root.VarSpecialRounded >= 80 && _root.VarConstitutionRounded >= 80 && _root.VarTemperamentRounded >= 70 && total >= 75)
{
_root.HideImages();
_root.HideEndings();
if (_root.IsDickgirl()) _root.SetEnding(30, "Dickgirl Winner");
else __root.SetEnding(30, "Winner");
_root.Backgrounds.ShowSky();
EndingWinner._visible = true;
}
return false;
}
- EndingFinish
function EndingFinish(total:Number) : Boolean
- total - calculated score
This function is used to display the text and graphics for the custom ending return true to handle the ending, false if you did not. NOTE you can handle the standard ending numbers if you want
eg from Kasumi
{
if (_root.NumFin == 30)
{
_root.SetText("\"I'm impressed by your job. This young girl is a supremely skilled fighter.\r\rOddly willful and obedient");
if (_root.DickgirlXF > 0) _root.AddText("\r\rI am little troubled by the fact she is a hermaphrodite, since she is so strong I sometime wonder if she may...but she is very self controlled.");
_root.AddText("\"\r\rSometime later you hear she won the martial tournament that enslaved her, with her owners permission.");
_root.NumFin = 1000;
return true;
}
return false;
}
Note you if you return true you must set _root.NumFin to another value, either another of your custom values (say 31 for a several stage ending). The following are then handled sequentially, but you can bypass them by setting _root.NumFin appropriately
- 1000 - assessment by Slave Maker Guild, report score, and get final payment
- 1001 - Bought Back Ending
- 1002 - Love Ending
- 9002 - skill increases - guild representative path
- 9003 - skill increases - no guild representative present (ie Shampoo, Naru)
- 9004 - handle Slave Maker special endings - guild representative path
- 9005 - handle Slave Maker special endings - no guild representative present (ie Shampoo, Naru)
- 9100 - hints and visit slave market - guild representative path
- 9101 - hints and visit slave market - no guild representative present (ie Shampoo, Naru)
- Note
to bypass completely the standard ening sequence do your processing in EndingStart and Ending Finish and then set _root.NumFin to 9003. This will handle skill increases and then you will visit the slave market. You will have to handle love/bought back endings yourself.
________________________________________________________________
- Common Endings
The following functions are overloaded to display the graphics for the standard endings. Do NOT show any text. All of these are mandatory.
Consider showing a background image too, or a solid colour using ShowOverlay
function ShowEndingCatgirl()
function ShowEndingCourtesan()
function ShowEndingCowgirl()
function ShowEndingBoughtBack()
function ShowEndingDickgirl()
function ShowEndingDrugAddict()
function ShowEndingLesbianSlave()
function ShowEndingMaid()
function ShowEndingMarriage()
function ShowEndingNormal()
function ShowEndingNormalMinus()
function ShowEndingNormalPlus()
function ShowEndingProstitute()
function ShowEndingRebel()
function ShowEndingRich()
function ShowEndingSexAddict()
function ShowEndingSexManiac()
function ShowEndingSM()
function ShowEndingTentacleSlave()
function EndingCatgirl()
eg
{
EndingDickgirl._visible = true;
_root.ShowOverlay(0);
}
function ShowEndingDrugAddict()
{
_root.Backgrounds.ShowSlums();
EndingDrugAddict._visible = true;
}
________________________________________________________________
- Other Functions
- SetEnding
function SetEnding(fin:Number, endstr:String)
- fin - Ending number, just sets _root.NumFin to this value
- endstr - the text name of the ending. Shown on the end screen
Generally call this in EndingStart()
eg
- TrainingComplete
End the game and start the end of training sequence. Say use this to early end the game in an event etc
- function TrainingComplete(fulltime:Boolean)
If fulltime is true then the game assumes the full training time has elapsed, otherwise calculated based on the current day