From Slavemaker Wiki
Jump to: navigation, search
<<first <prev SDK/Assistants next> last>>

This is work-in-progress code/text for the SDK. The version found on this page has not been officially released, use at your own risk. If you need a stable version, please download the official release.

There are two types of assistants available:

  1. a Slave Maker Assistant that is hired. These simplified slave girls are contained in a separate swf file eg Peorth in Assistant-Peorth.swf
  2. a Trained Slave, after having finished her training. eg Ranma

Slave Maker Assistants[edit]

An example assistant, Peorth, is included with the SDK. You can create your own assistant by:

1) Rename the Files[edit]

‘Assistant-Peorth.fla’ and ‘’ need to be renamed to match the name of your new assistant. The guide from now on will assume the new girl will be named Ifurita. So rename the files to ‘Assistant-Ifurita.fla’ and ‘’.

2) Open the fla file using Adobe Flash.[edit]

Please note this will not be a tutorial on how to program flash. On the top layer in the timeline (labelled ActionLayer) edit the actions of frame 1 and change the #include statement to match your new .as file. eg

#include "";

3) General Notes[edit]

The .fla file uses Actionscript 2 and is set to only publish visible layers. Any hidden layers are not saved into the swf file. Only the layers ‘ActionLayer’ and ‘Assistant’ should be visible when publishing.

By default the .fla file will publish only a .swf file into the folder your work files are located in. Go to the publish settings and rename the published .swf file to ‘Assistant-Ifurita.swf’. You can also specify a location to publish to.

The layers ‘Background Grid’ and ‘Background’ are provided for layout purposes only. They are a mock-up of the main screen of the game. They must be hidden when publishing.

4) Replace the Images[edit]

For a basic assistant, you will need to provide suitable images for:

  • Normal view - the basic display image. (small)
  • Wet - she falls in some water. (small)
  • Sad or Worried - for when the slave runs away. (large)

Optionally also provide:

  • Tentacle Sex - for when the assistant is tentacle raped. (both small and large)
  • Raped – for when the assistant is raped (small)
  • Anal Sex (large)
  • Spanking (large)

Small sized images should be square (recommended 400x400) and will display in the box on the bottom left. Large sized images are recommended to fit inside 800x600 and will display in the larger box on the top left.

To update the images in the .fla file:

a) Locate the image you want to update in the Library, right click on it and choose Properties, then Import. Select your new image to replace it.

b) Check the layout and placement of your image on the stage. It will be located in a frame of the MovieClip Assistant. If you plan to use the ShowMovie function in your ActionScript, then you must position the image at x=0, y=0. Otherwise just make sure the image is positioned correctly relevant to the ‘Background Grid’.

5) Edit the actionscript (.as) file[edit]

a) Update her details in InitialiseAsAssistant.

This function is mandatory and must be present

function InitialiseAsAssistant(firstuse:Boolean) : MovieClip
firstuse - id true this is a Slave Maker assistant and it is the first time they have been employed. false for second or later employments
returns - the movieclip to show on the assistant selection screen. You can position it using gotoAndStop or even play it if you like.

There are a variety of variables to set for her/his details. Repeated here from Dev:SDK/Core - Variables

your servant's name "Genma" "Mara & Nara"
Do not set this for a trained slave, it will default from when they were trained
root.ServantName1 (OPTIONAL)
For a servant that is a set of twins (say "Mara & Nara") this is the name of the first twin.
if not specified defaults to _root.SlaveName
root.ServantName2 (OPTIONAL)
as above, the name of the second twin
no default
a description of the assistant and a summary of any effects he/she gives
default "A Slave Maker available for hire."


_root.AssistantDescription = "A wild, erratic woman with arcane abilities and maybe demonic ties.\r\rNymphomania + 5, Fearful when crossed.";
cost in GP to hire as an assistant, defaults to 100
Pronoun used in conversation, default "I", for Shampoo it is "Shampoo" so she speaks in the third person. For twins use "we"
servants gender, default 2
  1. male
  2. female
  3. dickgirl
  4. male twins
  5. female twins
  6. dickgirl twins
can your assistant be tentacle fucked (default true)
can your assistant be raped, default true
misleading name, does the servant like the slave, default true (will rename in a later version)
Furries need to be enabled for the assistant. If they are not then the assistant is hidden (default false)
Tentacles need to be enabled for the assistant. If they are not then the assistant is hidden (default false)
The minimum reputation needed to hire the assistant (0 - 100, default 0)
First Use Slave Maker Assistants

When a Slave Maker assistant is first employed they are created as a standard slave girl, with all slave girls variables initialised. You can define variables and bitflags. There is a variation on accessing these variables. Instead of




The standard bitflags are also available

if (_root.AssistantData.CheckBitFlag2(2)) {

Please note a number of training specific variables are not available. Some stat variaibles like VarIntelligenceRounded are not present, but most are present.

These variables persist across trained slaves and are saved.

function InitialiseAsAssistant(firsttime:Boolean) : MovieClip {
        _root.ServantName = "Peorth";
        _root.AssistantDescription = "A calm, seductive woman, expert in all arcane powers.\r\rShe can control arcane powers, Morality and Nymphomania increases faster.";
        _root.AssistantCost = 400;
        if (firsttime) {
                _root.AssistantData.VarIntelligence = 70;
                _root.AssistantData.VarNymphomania = 70;
                _root.AssistantData.CustomFlag = 1;
        return Assistant;
function InitialiseAsAssistant() : MovieClip {
        _root.ServantName = "Genma";
        _root.ServantGender = 1;
        _root.AssistantTentacleSex = false;
        _root.AssistantRape = false;
        _root.AssistantDescription = "A Slave Maker with odd techniques, often involving humiliation. He is a trained martial artist, but a bit cowardly.\rHe can be used to train any girl and increases her Maximum Obedience by 10%.";
        _root.AssistantCost = 200;
        return Assistant;

b) Update the show/hide image functions.

These functions are mandatory and must be present

function ShowAsAssistant(type:Number) : Boolean
type - the type of image to show
  1. normal view in small rectangle
  2. tentacle sex (small version shown when slave girl raped)
  3. raped
  4. ignore this (shown when assistant is absent)
  5. wet - she falls in some water
  6. large graphic shown when your slave runs away
return - true is the image is shown, false and a generic image will be shown
function HideAsAssistant()
Hide any and all graphics you show ever, in any function

The following functions are optional. They are also obsolete. The game also calls the Slave girl versions of the functions if they are not present (eg ShowSexActAnal). In said function you can restrict images using the Assisting boolean variable if you like

show her being tentacle assaulted
function ShowAsAssistantTentacleSex() : Boolean
return true if you show a graphic, return false for a generic graphic

You can display custom text for the event also here if you like. When this function is called the standard text is already shown. You can replace it and show your own using SetText and then AddText

show her being anal fucked
function ShowAsAssistantAnal() : Boolean
return true if you show a graphic
return false to show normal anal graphic for this girl
show her being anal fucked
function ShowAsAssistantSpanking() : Boolean
return true if you show a graphic
return false to show normal spank graphic for this girl

c) Effects on employment and during gameplay An assistant can alter the slaves stats both at start of training and can increase the effect of their training

When training starts
function EmployAsAssistant()

eg From Hild

function EmployAsAssistant() {
        _root.VarNymphomania += 5;

During Training there are several functions

function ApplyDifficultyAsAssistant(Charisma:Number, Sensibility:Number, Refinement:Number, Intelligence:Number, Morality:Number, Constitution:Number, Cooking:Number, Cleaning:Number, Conversation:Number, BlowJob:Number, Fuck:Number, Temperament:Number, Nymphomania:Number, Obedience:Number, Lust:Number, Fatigue:Number, Joy:Number, Special:Number)
Each time a stat increases this function is called first. The parameters are the amount of the stat(s) change. Note these variables are local to the function, so you can change them but when you return from this function any change is lost. Mainly they are here so you can vary the factor changes for stat increases and decreases (eg Fatigue changes)
Primarily here you change the various factors, see Dev:SDK/Core - Variables
  • BlowjobFactor
  • FuckFactor
  • NymphomaniaFactor
  • LibidoFactor
  • CharismaFactor
  • MoralityFactor
  • CookingFactor
  • CleaningFactor
  • ConversationFactor
  • FatigueFactor
  • SensibilityFactor
  • RefinementFactor
  • IntelligenceFactor
  • ConstitutionFactor
  • TemperamentFactor
  • ObedienceFactor
  • SpecialFactor
or the maximum value of stats
  • AssistantMaxCharisma
  • AssistantMaxRefinement
  • AssistantMaxIntelligence
  • AssistantMaxMorality
  • AssistantMaxConstitution
  • AssistantMaxCooking
  • AssistantMaxCleaning
  • AssistantMaxConversation
  • AssistantMaxFuck
  • AssistantMaxBlowJob
  • AssistantMaxTemperament
  • AssistantMaxNymphomania
  • AssistantMaxObedience
  • AssistantMaxLibido
  • AssistantMaxJoy
  • AssistantMaxSpecial

eg Urd is erudite and helps your slave talk better

function ApplyDifficultyAsAssistant(Charisma:Number, Sensibility:Number, Refinement:Number, Intelligence:Number, Morality:Number, Constitution:Number, Cooking:Number, Cleaning:Number, Conversation:number, BlowJob:Number, Fuck:Number, Temperament:Number, Nymphomania:Number, Obedience:Number, Lust:Number, Fatigue:Number, Joy:Number) {
        _root.ConversationFactor = _root.ConversationFactor * 1.2;    // 20% faster increase in conversation skills

Naru is a slut so increases max stat values

function ApplyDifficultyAsAssistant(Charisma:Number, Sensibility:Number, Refinement:Number, Intelligence:Number, Morality:Number, Constitution:Number, Cooking:Number, Cleaning:Number, Conversation:number, BlowJob:Number, Fuck:Number, Temperament:Number, Nymphomania:Number, Obedience:Number, Lust:Number, Fatigue:Number, Joy:Number) {
        _root.AssistantMaxFuck = 300;
        _root.AssistantMaxBlowJob = 300;
        _root.AssistantMaxNymphomania = 300;
        _root.AssistantMaxLibido = 300;
function UpdateDateAndItemsAsAssistant(NumDays:Number)
Called every time the date changes, NumDays is the number of days it change by. Apply any daily stat changes etc

eg Naru is a slut and arouses your slaves

function UpdateDateAndItemsAsAssistant(NumDays:Number)
        _root.VarLibido += 5;
function UpdateSlaveAsAssistant()
Called everytime a slave's variable and other things are changed. Mainly here limit you can limit the girls stats

eg Ayane is amoral and limits your slaves morality

function UpdateSlaveAsAssistant(NumDays:Number)
        if (_root.VarMorality > 50) _root.VarMorality = 50;

c) Start of Training Screens and Messages At the start of training your assistant can show a custom introduction screen and a custom message. These functions are optional

function IntroductionAsAssistant()
Show a single movieclip (could be animated though) that is shown after the standard introduction screen(s) for the slave girl. Works the same as the slave introduction screen/screen.
Ideally intended for introducing a custom story/ending between the slave and the assistant, like Shampoo's fondness for Ranma. Standarly just show an inage in the introduction area
function StartMessageAsAssistant(sgmessage:Boolean) : Boolean
sgmessage - true if the slave girl has shown a message first. Normally return false if it is true, but you can replace or add to it if desired
return true if you show a message

To replace the standard message "The training of this girl will last for 60 days, and then she will be delivered to her owner." If the slave girl overries her version StartMessage this function will not get called

eg from Hild

function StartMessageAsAssistant(sgmessage:Boolean) : Boolean
        if (sgmMessage) return false;
        _root.ServantSpeak("The training of this slut will last for " + _root.TrainingTime + " days, and then " + _root.SlaveHeShe + " will be delivered to " + _root.SlaveHisHer + " owner's cock.", true);
        return true;

6) Publish[edit]

Publish the swf file

7) Create/Add to Assistantsx.txt[edit]

There are a series of files Assistants.txt, Assistants1.txt to Assistants9.txt. These contain a list of the available Slave Maker Assistants, and is an & delimited list of the swf file names for the assistants eg Assistants.txt Assistant-Genma.swf&Assistant-Hild.swf&Assistant-Peorth.swf

Assistant.txt is intended for the core assistants. Assistants1-9.txt are meant for third party use.

Pick an unused one and add your swf file to it

8) Install[edit]

Copy the swf file and Assistantx.txt file into your installation folder and into Assistants subfolder

Trained Slave Assistants[edit]

These assitsants work the same as a Slave Makers assistant. In your slave girl code just add the images as in 4 above (or use existing images) and implement the functions in 5 above.

In InitialiseAsAssistant the firstuse parameter will always be false. You also should not set ServantName, ServantName1, ServantName2, ServantGender. These have been remember from when the slave girl was trained.

You also have access to a variable (type Number)


This is the last ending obtained when she was trained. See Dev:SDK/Slave - Endings for values, it is the same as NumFin but values of 20 or 25 will not be present.

Note EmployAsAssistant is still relevant and called for a trained slave.

Core Functions For Assistants[edit]

There are several functions for showing, changing assistants

function ShowAssistant(type:Number)
type - same as ShowAsAssistant above
Whill show the assistant image
Note generally call ShowSupervisor() to show the person accompanying your slave, but if you want to explicitly show your assistant then call thus
function ShowAssistant()
Hide all assistant images
function ShowAssistant(type:Number)
type - same as ShowAsAssistant above
function ChangeAssistant(assistant:String)
assistant - name of the new assistant "Ranma", "Genma"
Change the current assistant to the named assistant. If you specify an invalid one then Shampoo is loaded


function ChangeAssistantGender(gender:Number)
Change the current assistants gender to the specified value
function IsAssistant(name:String)
Is the named person your current assistant. Simplified telling where their name can change (ie Cumslut Kasumi or Kasumi)


if (_root.IsAssistant("Kasumi")) {
   // she is your assistant

Personalised Greetings[edit]

function StartDayAsAssistant() : Boolean
return true to disable the standard greeting
At the start of the day planning this allows the assistant to do something, or say a standard greeting.
function StartMorningAsAssistant() : Boolean
return true to disable the standard greeting
At the start of the morning this allows the assistant to do something, or say a standard greeting.

eg From Hild

        public function StartMorningAsAssistant(intro:Boolean) : Boolean
                _root.ServantSpeakStart("Good morning " + _root.SlaveMakerName + ". I have <i>aroused</i> " + _root.SlaveName + " and " + _root.SlaveHeSheIs + " ready to be played with.");
                return true;
function StartNightAsAssistant(intro:Boolean) : Boolean
return true to disable the standard greeting
At the start of the night planning this allows the assistant to do something, or say a standard greeting. Note called twice with intro true and then false. First to replace the standard into message, second to append any desired text.
Note always use ServantSpeakStart when intro = true

eg from Hild (note FlashDevelop code so the public qualifier)

        public function StartNightAsAssistant(intro:Boolean) : Boolean {
                if (intro) {
                        _root.ServantSpeakStart("Good evening " + _root.SlaveMakerName + "! It is now time for us to fuck " + _root.SlaveName + " hard and make " + _root.SlaveHimHer + " submit to our desires.");
                        return true;
                return false;
function StartEveningAsAssistant() : Boolean
return true to disable the standard greeting
At the end of day planning this allows the assistant to do something, or say a standard greeting.

eg From Hild

        public function StartEveningAsAssistant() : Boolean {
                _root.ServantSpeak(_root.SlaveMakerName + ", good evening. We have finished playing with " + _root.SlaveName + " for the daytime and it is now time for " + _root.SlaveHimHer + " to eat food. Later, eat other things...");
                return true;

Assistant Events[edit]

As of version 16 an assistant can trigger and modify events during game play.

1) Variables[edit]

These slave variables replicated for your assistant that do not require _root


Other local variables Assisting - true if being an assistant, intended to differentiate in image selection etc between being a slave or assistant

2) Functions[edit]

The following work the same as the equivallent slave girl fuction (generally without the AsAssistant at the end of the function name)

function EventsAsAssistant()
function DoEventNextAsAssistant() : Boolean
function AfterEventNextAsAssistant()
function PreEventAsAssistant() : Boolean
function AfterEventYesAsAssistant()
function AfterEventNoAsAssistant()
function AfterNewPlanningYesAsAssistant()
function AfterNewPlanningNoAsAssistant()
function StartDayAsAssistant()
function StartNightAsAssistant()
function NewPlanningActionAsAssistant()
function AfterNewPlanningActionAsAssistant()
function AfterPlanningActionAsAssistant()
function PurchaseItemAsAssistant(item:Number, hint:Boolean)
function PurchaseDrugAsAssistant(item:Number, hint:Boolean)
function DoTailorYesAsAssistant()

Note the parmeter present means the asssitant is supervising the walk, otherwise the Slave Maker is. normally return false if present is true. Having this parameters allows the assistant to still affect events, even 'stalk' the slave and slave maker. Note present == !_root.Supervise

function DoWalkDocksPortAsAssistant(NumEvent:Number, present:Boolean) : Boolean { if (!present) return false; .. handle events }

function AfterWalkAsAssistant()
function DoWalkDocksPortAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkDocksSlavePensAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkDocksSlavePensSecureAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkFarmAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkForestAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkLakeAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkPalaceAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkRuinsAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkSlumsAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkTownCenterAsAssistant(NumEvent:Number, present:Boolean) : Boolean
function DoWalkBeachAsAssistant(NumEvent:Number), present:Boolean : Boolean

Assistant Endings[edit]

An assistant can give an ending for your slaves, for instance Cumslut Kasumi can give the ending 'Cumslut' to a slave she assists with

The same functions as a slaves custom endings are used (except for a suffix AsAssistant)

Notes: _root.AssistantData.LastEnding - the last ending the trained slave got, for Kasumi this is 31 for cumslut Values of _root.NumFin >= 70 are reserved for these special endings


function EndingStartAsAssistant(total:Number) : Boolean
        if (_root.AssistantData.LastEnding != 31) return false;
        if (_root.NumFin == 20 || _root.NumFin == 25) return false;
        if (_root.AssistantData.CustomFlag1 == 1) {
                if (_root.IsDickgirl()) _root.SetEnding(71, "Dickgirl Cumslut");
                else _root.SetEnding(71, "Cumslut");
        return false;

function EndingFinishAsAssistant(total:Number) : Boolean
        if (_root.AssistantData.LastEnding != 31) return false;
        if (_root.NumFin == 71 && _root.AssistantData.CustomFlag1 == 1){
                _root.SetText("You come to visit " + SlaveName + "’s owner and when you enter through the door you find her kneeling, but with the robes askew, revealing her tits.\r\rShe is surrounded by men, many of whom have their cocks out. " + _root.SlaveIs + " already in the middle of giving one of them a blowjob, sucking him off eagerly, almost greedily. The man moans in pleasure and cums into her mouth. A moment later another cums and she eagerly licks up his cum as well. One after another the men cum into her mouth, leaving when done, eventually leaving you alone with " + SlaveName + ".\r\r");
                _root.SlaveSpeak("Thank you for coming to visit me, " + _root.SlaveMakerName + ". My master knows that I am a cumslut and a martial artist, and so allows me to work here as both instructor and whore.", true);
                _root.AddText("\r\rA moment later the owner comes through the door, carrying a small jar of white fluid, obviously more cum. Kasumi stares at it longingly, and quickly kneels on the floor. The owner greets you, then turns to " + SlaveName + ".\r\r");
                _root.PersonSpeak("Owner", "Alright cumslut, drink up.", true);
                _root.AddText("\r\rThe owner presents the jar and a thick straw. " + SlaveName + " takes the straw into her mouth and sips at the cum, looking thankfully at her owner as he addresses you.\r\r");
                _root.PersonSpeakStart("Owner", "I was a bit surprised by your job. This young girl is skilled, but her hunger for cum is so strong that I doubt she’ll ever amount to more than what she is now.", true);
                if (_root.IsDickgirl()) _root.PersonSpeakEnd(" She’ll drink anyone’s cum, even her own—show him, slut!");
                else _root.PersonSpeakEnd();
                if (_root.IsDickgirl()) _root.AddText(SlaveName + " obediently lifts her robes revealing her erect cock, and bends over to take its tip into her mouth. Moments later she is swallowing, a look of bliss on her face. ");
                _root.AddText("You watch " + SlaveName + " with interest as she licks a stray glob of semen from her lips. You think she’ll do just fine as a cumslut.");
        _root.NumFin = 1000;
                return true;
        return false;

// How many special endings this assistant gives
function NumCustomEndingsAsAssistant() : Number
        if (_root.AssistantData.LastEnding != 31) return 0;
        return 1;

// Show a description of the special ending
function ShowEndingsAsAssistant(ending:Number)
        _root.AddText("To get the ending 'Cumslut', train " + SlaveName + " and have " + _root.SlaveHimHer + " drink a lot of cum, then call " + _root.SlaveHimHer + " a cumslut when " + _root.SlaveHeShe + " confesses " + _root.SlaveHisHer + " taste for it.");

Assistant Skills[edit]

An assistant can give the benefit of skills to your slave maker. These can have a lesser effect or full effect

To set the skill for the assistant in InitialiseAsAssistant set the values in the AssistantData member variables

function InitialiseAsAssistant(firsttime:Boolean) : MovieClip {
        _root.ServantName = "Peorth";
        _root.AssistantDescription = "A calm, seductive woman, expert in all arcane powers.\r\rShe can control arcane powers, Morality and Nymphomania increases faster.";
        _root.AssistantCost = 400;
        if (firsttime) {
                _root.AssistantData.VarIntelligence = 70;
                _root.AssistantData.VarNymphomania = 70;
                _root.AssistantData.CustomFlag = 1;
                _root.AssistantData.sNoble = 1;
                _root.AssistantData.sSlaveTrainer = 3;
        return Assistant;

The following skills have the following effects, generally the higher of you or your assistant applies

  • sTrader - Full discount purchasing
  • sAlchemy - Full discount purchasing drugs
  • sNoble - Full Effect, but no initial bonus to refinement for your slave
  • sRefined - Full Effect
  • sSlaveTrainer - if their skill is greater than yours then you get an effective bonus + 1, max of their skill
  • sLesbianTrainer - full effect

No other skills for your assistant give any effect. I am open to requests

So far they do not help with slave skills like slDancing but they could if desired.

<<first <prev SDK/Assistants next> last>>