Dev:SDK/Slave Girl - Endings

From Slavemaker Wiki
Jump to: navigation, search
<<first <prev SDK/Slave Girl - Endings next> last>>

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

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

Drug Addict
Sex Maniac
Sex Addict
Normal +
Normal -

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

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



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



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

function ShowEndings(ending:Number)
        _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

function ShowEndings(ending:Number)
        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.");
                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.");
                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.");

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

function EndingStart(total:Number) : Boolean
        if (_root.NumFin == 20) return false;
        if (_root.VarSpecialRounded >= 80 && _root.VarConstitutionRounded >= 80 && _root.VarTemperamentRounded >= 70 && total >= 75)
                if (_root.IsDickgirl())  _root.SetEnding(30, "Dickgirl Winner");
                        else __root.SetEnding(30, "Winner");
                EndingWinner._visible = true;
        return false;

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

function EndingFinish(total:Number) : Boolean
        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)

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()


function ShowEndingDickgirl()
        EndingDickgirl._visible = true;

function ShowEndingDrugAddict()
        EndingDrugAddict._visible = true;


Other Functions

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()


_root.SetEnding(35, "Running away");


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

<<first <prev SDK/Slave Girl - Endings next> last>>