STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228064
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/29077147?noj=FRM29077147-27DC" width="1" height="1"></div>

Slave Maker Revised.swf

This is the info page for
Flash #220962

(Click the ID number above for more basic data on this flash file.)


ActionScript [AS1/AS2]
Combined Code
movieClip 3 Button - Grey (Dark) { } movieClip 5 { } movieClip 8 { } movieClip 12 { } movieClip 15 { } movieClip 18 bmc { frame 1 { stop(); } frame 1 { myColor = new Color(colorChip1); myColor.setRGB(rgb); myColor2 = new Color(colorChip2); myColor2.setRGB(rgb); } frame 2 { myColor = new Color(colorChip1); myColor.setRGB(rgb); } frame 3 { myColor = new Color(colorChip1); myColor.setRGB(rgb); } } frame 1 { function IsDickgirl() { if (SlaveGirl.IsDickgirl() == true) { return true; } return DickgirlChanged || DickgirlXF > 0; } function DoDickgirlChange(chance) { if (IsDickgirl()) { DefaultGeneric(chance); return DickgirlChanged; } if (DickgirlChangable) { DickgirlChanged = true; DefaultGeneric(chance); } return DickgirlChanged; } function DoDickgirlChangeGeneric(chance) { if (DoDickgirlChange(chance)) { if (UseGeneric) { return true; } } return false; } function DefaultDickgirl(chance) { if (DickgirlXF > 0) { return DefaultGeneric(chance); } return false; } function DefaultLesbian(chance) { if (Lesbian) { if (chance != undefined) { return DefaultGeneric(chance); } UseGeneric = true; return true; } return false; } function DefaultGeneric(chance) { if (UseGeneric || chance == undefined || int(Math.random() * 100) < chance) { UseGeneric = true; return true; } return false; } function ShowAssistant(type) { if (type == undefined) { type = 1; } if (type == 4) { ShowMovie(OnTopOverlay, false, 0); } else { if (SlaveGirl.ShowAssistant(type) != true) { CurrentAssistant.ShowAsAssistant(type); } } } function HideAssistant() { AssistantBackground._visible = false; CurrentAssistant.HideAsAssistant(); SlaveGirl.HideAssistant(); } function Money(diff, quiet, nodebt) { if (quiet != true && SoundsOn) { Sounds.SoundCoins.gotoAndPlay(2); } if (diff > 0 && SMDebt > 0) { if (int(diff * 0.9) >= SMDebt) { diff -= SMDebt; SMDebt = 0; } else { SMDebt -= int(diff * 0.9); diff = int(diff * 0.1); } SlaveMakerStatisticsGroup.DebtText.text = SMDebt; } VarGold += int(diff); if (VarGold < 0) { if (nodebt != true) { SMDebt += Math.abs(VarGold); } VarGold = 0; SlaveMakerStatisticsGroup.DebtText.text = SMDebt; } BackgroundGrid.GoldText.text = VarGold; } function StartMoaning(num) { if (SoundsOn) { Sounds.StartMoaning(num); } } function StartFucking(num) { if (SoundsOn) { Sounds.StartFucking(num); } } function Beep() { if (SoundsOn) { Sounds.SoundBeep.gotoAndPlay(2); } } function Bloop() { if (SoundsOn) { Sounds.SoundBloop.gotoAndPlay(2); } } function PositionMovie(target_mc, xpos, ypos, rot, wid, hei) { if (target_mc._visible) { if (rot == undefined) { rot = 0; } target_mc._rotation = 0; if (hei != undefined) { target_mc._yscale = 100; target_mc._yscale = 100 * (hei / Math.abs(target_mc._height)); } if (wid != undefined) { target_mc._xscale = 100; target_mc._xscale = 100 * (wid / Math.abs(target_mc._width)); } if (rot != 0) { target_mc._rotation = rot; } if (xpos != undefined) { if (target_mc._xscale < 0 || rot > 89 && rot < 180 || rot > -180 && rot < 0) { target_mc._x = xpos + target_mc._width / 2; } else { target_mc._x = xpos - target_mc._width / 2; } } if (ypos != undefined) { if (target_mc._yscale < 0 || rot > 180 || rot < -180) { target_mc._y = ypos + target_mc._height / 2; } else { target_mc._y = ypos - target_mc._height / 2; } } } } function PositionMovieSimple(target_mc, xpos, ypos, rot, wid, hei) { if (target_mc._visible) { if (rot == undefined) { rot = 0; } target_mc._rotation = 0; if (hei != undefined) { target_mc._yscale = 100; target_mc._height = hei; } if (wid != undefined) { target_mc._xscale = 100; target_mc._width = wid; } if (xpos != undefined) { target_mc._x = xpos; } if (ypos != undefined) { target_mc._y = ypos; } if (rot != 0) { target_mc._rotation = rot; } } } function HideAllPeople() { HideAssistant(); OnTopOverlayWhite._visible = false; OnTopOverlay._visible = false; SMAppearance._visible = false; PeopleTailor._visible = false; PeopleMerchant._visible = false; PeopleNun._visible = false; PeopleBarOwner._visible = false; PeopleSleazyBarOwner._visible = false; PeoplePimp._visible = false; PeopleCook._visible = false; PeopleDancer._visible = false; PeopleOddTeacher._visible = false; PeopleRefinementTeacher._visible = false; PeopleXXXOwner._visible = false; PeopleFortuneTeller._visible = false; PeopleProstitute._visible = false; PeopleHighClassProstitute._visible = false; PeopleBarMaid._visible = false; PeopleMaid._visible = false; PeopleKnight._visible = false; PeopleCount._visible = false; PeopleLord.gotoAndStop(1); PeopleLord._visible = false; PeopleLesbian._visible = false; PeopleDemon._visible = false; PeopleAngel._visible = false; PeoplePonyMistress._visible = false; PeopleSailor._visible = false; PeopleDickgirl._visible = false; PeopleFarmer._visible = false; PeopleJester._visible = false; PeopleIdol._visible = false; PeopleGirl._visible = false; PeopleBountyHunter._visible = false; PeopleMedium._visible = false; PeopleLadyFarun._visible = false; PeopleThug._visible = false; PeopleSalonOwner._visible = false; PeopleDaruna._visible = false; PeopleSlut._visible = false; } function HidePeople() { HideAllPeople(); ShowAssistant(); } function HideBackgrounds() { ClipNight._visible = false; ClipDay._visible = false; ClipTemple._visible = false; ClipBar._visible = false; ClipKitchen._visible = false; ClipRestaurant._visible = false; ClipPalace._visible = false; ClipSchool._visible = false; ClipForest._visible = false; ClipFarm._visible = false; ClipTownCenter._visible = false; ClipLake._visible = false; ClipDocks._visible = false; ClipSky._visible = false; SetMovieColour(ClipSky, 0, 0, 0); ClipSky.gotoAndStop(1); ClipBath._visible = false; ClipSlums._visible = false; if (House == 5) { ClipRoom.gotoAndStop(2); } else { ClipRoom.gotoAndStop(1); } ClipRoom._visible = false; ClipBeach._visible = false; SetMovieColour(ClipBeach, 0, 0, 0); PlaceTentacles.gotoAndStop(1); PlaceTentacles._visible = false; PlaceDungeon._visible = false; PlaceCave._visible = false; PlaceHouse._visible = false; Backgrounds.HideBackgrounds(); } function HidePlaces() { HideBackgrounds(); } function HideImages() { Quitter._x = 626; NextEvent._x = 626; WalkZoom._x = 7; WalkZoom._y = 5; WalkZoom._width = 448; WalkZoom._height = 336; WalkZoom._visible = false; Gods._visible = false; ClipTrial._visible = false; ClipSexDream._visible = false; ClipRescue._visible = false; EventParties._visible = false; ClipOldLover._visible = false; ClipBuyer._visible = false; ClipTravellingMerchant._visible = false; SlaveMakerTraining._visible = false; ClipRopes._visible = false; EventPonygirlMeeting._visible = false; ClipFairyMeeting._visible = false; ClipFortuneTelling._visible = false; EventChoice1._visible = false; EventChoice2._visible = false; EventChoice3._visible = false; EventChoiceLabel1.text = ''; EventChoiceLabel2.text = ''; EventChoiceLabel3.text = ''; EventChoiceLabel1._visible = false; EventChoiceLabel2._visible = false; EventChoiceLabel3._visible = false; SlaveGirl.HideImages(); Generic.HideImages(); Tentacles.HideImages(); HouseEvents.HideImages(); DressOverlay._visible = false; ClipRumours._visible = false; ClipKamasutra._visible = false; WalkCowgirl._visible = false; WalkCatgirlMeeting._visible = false; EventLesbianTraining._visible = false; CombatCreatures._visible = false; CombatSMAttack._visible = false; WalkSlavePens._visible = false; WalkRuinedTemple._visible = false; WalkSlums._visible = false; WalkTownCenter._visible = false; EventAngelicVision._visible = false; EventAstridFuck._visible = false; Bars._x = 7; Bars._visible = false; clearInterval(intervalId); clearInterval(intervalId2); clearInterval(intervalId3); clearInterval(intervalId4); if (oldxscale != 0) { fuckit_mc._xscale = oldxscale; fuckit_mc._yscale = oldxscale; oldxscale = 0; } Divider._visible = false; OnTopOverlay._alpha = 100; OnTopOverlayWhite._alpha = 100; OnTopOverlay._visible = false; OnTopOverlayWhite._visible = false; HideQuestions(); if (SoundsOn) { Sounds.StopSounds(); } } function HideSlaveActions() { Generic.HideSlaveActions(); Divider._visible = false; SlaveGirl.HideSlaveActions(); colorTrans.rgb = 16777215; trans.colorTransform = colorTrans; if (!(SlaveGirl.IsDickgirl() || DickgirlXF > 0)) { Icons.DickgirlXFIcon._visible = false; } } function ShowOverlay(colour) { colorTrans.rgb = colour; trans.colorTransform = colorTrans; DressOverlay._visible = true; HideBackgrounds(); } function ShowDividerPercentage(xperc) { Divider._x = -9 + 4.48 * xperc; Divider._visible = true; } function ShowDividerX(xpos) { Divider._x = xpos - 9; Divider._visible = true; } function ShowMovie(movie, main, align, gframe) { lastmc = movie; if (gframe != undefined) { if (gframe > 0) { movie.gotoAndStop(gframe); } else { movie.gotoAndPlay(gframe * -1); } } var v6 = 7; var v5 = main ? 5 : 341; var v2 = main ? 448 : 153; var v3 = main ? 336 : 154; movie._xscale = 100; movie._yscale = 100; var v13 = movie._width; var v4 = movie._width / movie._height; var v8 = v2 / v3; var v12 = align >= 0; align = Math.abs(align); var v10 = align > 99; if (v10) { align -= 100; } if (align == 9) { align = v4 > 1 ? 8 : 1; } switch (align) { case 0: case 10: movie._width = v2; movie._height = v3; movie._x = v6; movie._y = v5; break; case 1: movie._width = v2 * (v4 / v8); movie._height = v3; movie._x = v6 + v2 / 2 - movie._width / 2; movie._y = v5; break; case 2: movie._width = v2 * (v4 / v8); movie._height = v3; movie._x = v6; movie._y = v5; break; case 3: movie._width = v2 * (v4 / v8); movie._height = v3; movie._x = v6 + v2 - movie._width; movie._y = v5; break; case 4: movie._width = v2; movie._height = v3 / (v4 / v8); movie._x = v6; movie._y = v5 + v3 - movie._height; break; case 5: movie._width = 336 * v4; movie._height = 336; movie._x = v6; movie._y = v5; break; case 6: movie._width = 336 * v4; movie._height = 336; movie._x = v6 + v2 / 2 - movie._width / 2; movie._y = v5; break; case 7: movie._width = v2; movie._height = v3 / (v4 / v8); movie._x = v6; movie._y = v5; break; case 8: movie._width = v2; movie._height = v3 / (v4 / v8); movie._x = v6; movie._y = v5 + (v3 - movie._height) / 2; } if (v10) { movie._xscale = -100 * (movie._width / v13); movie._x += movie._width; } if (v12) { if (main == false) { HideAssistant(); SMAppearance._visible = false; } movie._visible = true; SetMovieColour(movie, 0, 0, 0); } } function SetMovieColour(target_mc, red, green, blue, alphao, redmul, greenmul, bluemul, alphamul) { if (redmul == undefined) { redmul = 1; } if (greenmul == undefined) { greenmul = 1; } if (bluemul == undefined) { bluemul = 1; } if (alphamul == undefined) { alphamul = 1; } if (alphao == undefined) { alphao = 0; } var v2 = new flash.geom.Transform(target_mc); var v1 = v2.colorTransform; v1.redMultiplier = redmul; v1.greenMultiplier = greenmul; v1.blueMultiplier = bluemul; v1.alphaMultiplier = alphamul; v1.redOffset = red; v1.greenOffset = green; v1.blueOffset = blue; v1.alphaOffset = alphao; v2.colorTransform = v1; false; } function SetLastMovieColour(red, green, blue, alphao, redmul, greenmul, bluemul, alphamul) { SetMovieColour(lastmc, red, green, blue, alphao, redmul, greenmul, bluemul, alphamul); } function FuckIt(target_mc, origx, lockx, left, duration) { clearInterval(intervalId); var v5 = target_mc._x; target_mc._xscale += 5 * incdir; if (target_mc._xscale > 150) { target_mc._xscale = 150; } else { if (target_mc._xscale < 50) { target_mc._xscale = 50; } } target_mc._x = v5; if (!lockx) { target_mc._x += int(Math.random() * 15) - 7; if (target_mc._x < origx - 50) { target_mc._x = origx - 50; } else { if (target_mc._x > origx + 10) { target_mc._x = origx + 10; } } } else { if (left == false) { target_mc._x = 455 - target_mc._width; } } target_mc._yscale = target_mc._xscale; count += incdir; if (count == 6) { incdir = -1; } else { if (count == 0) { incdir = 1; } } intervalId = setInterval(this, 'FuckIt', duration, target_mc, origx, lockx, left, duration); duration -= 2; if (duration < 50) { duration = 70; } updateAfterEvent(); } function StartFuckIt(target_mc, lockx, left) { clearInterval(intervalId); fuckit_mc = target_mc; oldxscale = target_mc._xscale; target_mc._visible = true; count = 0; incdir = 1; intervalId = setInterval(this, 'FuckIt', 200, target_mc, target_mc._x, lockx, left, 200); } function ShakeIt(interv, target_mc, origx, comment, pos, count, dur) { if (count != undefined) { clearInterval(intervalId4); if (count > 0) { count -= 1; if (count > 0) { intervalId4 = setInterval(this, 'ShakeIt', dur, interv, target_mc, target_mc._x, comment, pos, count, 1200); } } } if (pos != undefined) { target_mc.gotoAndStop(pos); } if (interv == 1) { clearInterval(intervalId); } else { clearInterval(intervalId2); } var v8 = target_mc._x; if (target_mc._x > origx) { target_mc._x = origx - 30; } else { target_mc._x += 30; } if (target_mc._x != origx) { if (interv == 1) { intervalId = setInterval(this, 'ShakeIt', 60, interv, target_mc, origx, comment); } else { intervalId2 = setInterval(this, 'ShakeIt', 60, interv, target_mc, origx, comment); } } else { if (comment != '') { AddText(comment); } } updateAfterEvent(); } function StartShakeIt(target_mc, inittime, comment) { clearInterval(intervalId); intervalId = setInterval(this, 'ShakeIt', inittime, 1, target_mc, target_mc._x, comment); } function ChangeImage(target_mc, newpos, say, hide_mc, show_mc) { clearInterval(intervalId); target_mc.gotoAndStop(newpos); target_mc._visible = true; if (say != undefined) { AddText(say); } if (hide_mc != undefined) { hide_mc._visible = false; } if (show_mc != undefined) { show_mc._visible = true; } updateAfterEvent(); } function ChangeImage2(target_mc, newpos, say, hide_mc, show_mc) { clearInterval(intervalId2); if (newpos != undefined) { target_mc.gotoAndStop(newpos); } target_mc._visible = true; if (say != undefined) { AddText(say); } if (hide_mc != undefined) { hide_mc._visible = false; } if (show_mc != undefined) { show_mc._visible = true; } updateAfterEvent(); } function StartChangeImage(duration, target_mc, newpos, say, hide_mc, show_mc) { clearInterval(intervalId); intervalId = setInterval(this, 'ChangeImage', duration, target_mc, newpos, say, hide_mc, show_mc); } function FadeImage(target_mc, say) { target_mc._alpha -= 5; if (target_mc._alpha <= 0) { target_mc._visible = false; clearInterval(intervalId); if (say != '' && say != undefined) { AddText(say); } } updateAfterEvent(); } function StartFadeImage(duration, target_mc, say) { clearInterval(intervalId); intervalId = setInterval(this, 'FadeImage', duration, target_mc, say); } function ZoomImage(target_mc, endscale, xpos, ypos, hideimage) { var v3 = target_mc._x + 224; var v2 = target_mc._y + 168; target_mc._xscale += (endscale - target_mc._xscale) / stepsg; target_mc._yscale = target_mc._xscale; v3 = 231 - ((xpos - 7) / 448) * target_mc._width; v2 = 173 - ((ypos - 5) / 336) * target_mc._height; if (v3 + target_mc._width < 455) { v3 = 455 - target_mc._width; } if (v3 > 7) { v3 = 7; } if (v2 + target_mc._height < 341) { v2 = 341 - target_mc._height; } if (v2 > 5) { v2 = 5; } target_mc._x = v3; target_mc._y = v2; --stepsg; if (stepsg < 1) { if (hideimage != false) { target_mc._visible = false; OnTopOverlayWhite._visible = false; } clearInterval(intervalId2); } updateAfterEvent(); } function StartZoomImage(target_mc, duration, steps, endscale, xpos, ypos, hideimage) { clearInterval(intervalId2); stepsg = steps; target_mc._visible = true; intervalId2 = setInterval(this, 'ZoomImage', duration, target_mc, target_mc._xscale * (endscale / 100), xpos, ypos, hideimage); } function AlternateImage(target_mc, newpos, oldpos) { if (target_mc._currentframe == newpos) { target_mc.gotoAndStop(oldpos); } else { target_mc.gotoAndStop(newpos); } updateAfterEvent(); } function StartAlternateImage(duration, target_mc, newpos, oldpos) { clearInterval(intervalId); intervalId = setInterval(this, 'AlternateImage', duration, target_mc, newpos, oldpos); } function SetButtonState(target_mc, tick, available, actlabel, action, func, cost, rofunc, shortcut) { if (actlabel != undefined) { target_mc.ActLabel.htmlText = actlabel; if (target_mc.ActLabel.bottomScroll > 1) { target_mc.ActLabel._y = 0; } else { target_mc.ActLabel._y = 7; } } if (action != undefined) { target_mc.curract = action; if (ColoursOn) { if (Gender == 1) { SetMovieColour(target_mc, 0, 0, 30, 0, 1, 1, 1, 1); } else { if (Gender == 2) { SetMovieColour(target_mc, 15, 0, 30, 0, 1, 1, 1, 1); } else { SetMovieColour(target_mc, 0, 20, 0, 0, 1, 1, 1, 1); } } } } if (cost != undefined) { target_mc.cost = cost; } if (available != undefined) { target_mc.NotAvailable._visible = !available; } if (tick != undefined) { target_mc.Tick._visible = tick; } if (target_mc.ActButton.onPress == undefined) { if (func == undefined) { target_mc.ActButton.onPress = PressSexActButton; } else { target_mc.ActButton.onPress = func; } } if (target_mc.ActButton.onRollOut == undefined) { target_mc.ActButton.onRollOut = HideHints; } if (target_mc.ActButton.onRollOver == undefined) { if (rofunc != undefined) { target_mc.ActButton.onRollOver = rofunc; } } if (shortcut != undefined) { target_mc.ShortcutLabel.htmlText = '<font color=\'#0000FF\'>' + shortcut + '<font color=\'#000000\'>'; } } function SetButtonColour(target_mc, red, green, blue, alphao, redmul, greenmul, bluemul, alphamul) { SetMovieColour(target_mc.ActButton, red, green, blue, alphao, redmul, greenmul, bluemul, alphamul); } function SetActButtonState(target_mc, tick, available, actlabel, action, func, cost, rofunc, shortcut) { SetButtonState(target_mc, tick, available, actlabel, action, func, cost, rofunc, shortcut); } function CheckBitFlag1(flag) { if (flag > 31) { return (BitFlag1High & 1 << flag - 32) != 0; } else { return (BitFlag1Low & 1 << flag) != 0; } } function SetBitFlag1(flag) { if (flag > 31) { BitFlag1High |= 1 << flag - 32; } else { BitFlag1Low |= 1 << flag; } } function ClearBitFlag1(flag) { if (flag > 31) { BitFlag1High &= ~(1 << flag - 32); } else { BitFlag1Low &= ~(1 << flag); } } function CheckAndSetBitFlag1(flag) { if (CheckBitFlag1(flag)) { return false; } SetBitFlag1(flag); return true; } function CheckBitFlag2(flag) { if (flag > 31) { return (BitFlag2High & 1 << flag - 32) != 0; } else { return (BitFlag2Low & 1 << flag) != 0; } } function SetBitFlag2(flag) { if (flag > 31) { BitFlag2High |= 1 << flag - 32; } else { BitFlag2Low |= 1 << flag; } } function ClearBitFlag2(flag) { if (flag > 31) { BitFlag2High &= ~(1 << flag - 32); } else { BitFlag2Low &= ~(1 << flag); } } function CheckAndSetBitFlag2(flag) { if (CheckBitFlag2(flag)) { return false; } SetBitFlag2(flag); return true; } function NewDay() { Behaving -= 1; if (Behaving < 0) { Behaving = 0; } WinContest = 0; HideBackgrounds(); NextGeneral._visible = false; Icons.DickgirlXFIcon._visible = false; if (DoneNaked == 0 && DressWorn < 0) { WearDress(DressToWear); HideStatChangeIcons(); } UpdateDateAndItems(1); if (House != 7 && (Talent == 4 && TentacleHaunt != -1)) { HideAssistant(); ShowSlaveMaker(false); Tentacles.EventMorningTentacleVision._visible = true; if (SoundsOn) { Sounds.SoundBreathing.gotoAndPlay(2); } AddText('You are dreaming, a deep but troubled sleep. You are moving quickly and low to the ground. You are following ' + SlaveName + ' who is walking in '); switch (TentacleHaunt) { case 1: AddText('a green place'); break; case 4: AddText('a place of narrow streets'); break; case 6.1: AddText('a place of wood and water'); break; case 8: AddText('the temple'); } AddText('.\r\rYou see a thing full of lust and desire to breed moving to take her soft body. You know a darker presence is near, ready serve you. He can slay the thing, or save her for himself!'); AskHerQuestions(5020, 5021, 5022, 0, 'Destroy it!', 'Destroy it and take her', 'Have him do nothing', '', 'What will happen?'); } else { if (House != 7 && Talent == 10) { ShowSlaveMaker(false); Backgrounds.ShowBedRoom(); var v1 = SlaveGirl.ShowMorningMouthfull(); if (v1 == undefined) { v1 = Generic.ShowMorningMouthfull(); } if (SoundsOn) { Sounds.SoundWhispers.gotoAndPlay(2); } SetText('You are drawn into ' + SlaveName + '\'s bedroom and look on her sleeping body. Your cock stirs and becomes painfully erect. You hear odd whispering and your thoughts become dazed.\r\rYou take out your cock and masturbate, quickly cumming, making sure all of it floods into her mouth. '); if (v1) { AddText('She seems to wake but is dazed and swallows and lies back and falls asleep again.'); } else { AddText('She stirs but does not awaken and seems to swallow.'); } AddText('\r\rThe whispers seem to tell you your cum will help her in some way to better serve you.'); if (GameDate - LastAny > 1) { LastAny = GameDate; AskHerQuestions(5010, 5011, 5012, 5013, 'Once, she will obey sexually', 'Her arousal will grow', 'Once, she will obey non-sexually', 'She will meekly obey', 'The whispers seem to say...'); } else { AskHerQuestions(5014, 5011, 5015, 5013, 'Her desire will grow', 'Her arousal will grow', 'She will have visions of sex', 'She will meekly obey', 'The whispers seem to say...'); } ++Corruption; } else { NumEvent = 251; DoEventNext(); } } } function PressDayActButton() { DoActions(this._parent.curract, this._parent.NotAvailable._visible); } function DoActions(type, available) { if (available == undefined) { available = !(GetActButton(type)).NotAvailable._visible; } ResetQuestions(); HideYesNoButtons(); YesNoFlag = 1; if (VarGold < GetActCost(type)) { ServantSpeak('You don\'t have enough money.'); Bloop(); return undefined; } Beep(); ActionChoice = type; if (SlaveGirl.DoActions(type, available) == true) { return undefined; } switch (type) { case 1: UpdateFactors(); var v2 = (House == 5) ? 4 : 3; v2 *= CookingFactor; if (MaxCooking < 100 && VarCooking + v2 > MaxCooking) { if (VarGold >= 25) { ServantSpeak('She is very skilled in cooking, so just having her cook us meals will not train her any further. ' + ServantPronoun + ' can hire a tutor to teach her for 25GP.'); AskHerQuestions(500, 501, 504, 0, 'Hire Tutor', 'Have her cook just the way she knows', 'Forget it for now', '', 'What will you do?'); break; } else { ServantSpeak('She is a very skilled cook. Just having her cook us meals will not train her anymore. ' + ServantPronoun + ' can hire a tutor to teach her but we do not have the required 25GP.\r\rShe will then cook our meals just the way she knows.'); } } else { ServantSpeak('She will cook our meals and try different cooking techniques.'); } AddText('\r\rDo you want her to do that?'); break; case 2: UpdateFactors(); var v3 = (House == 5) ? 4 : 3; v3 *= CleaningFactor; if (MaxCleaning < 100 && VarCleaning + v3 > MaxCleaning) { if (VarGold >= 25) { ServantSpeak('She is very skilled at cleaning and management. Just having her clean the house will not train her anymore. ' + ServnantPronoun + ' can hire a tutor to teach her for 25GP.'); AskHerQuestions(500, 501, 504, 0, 'Hire Tutor', 'Have her clean just the way she knows', 'Forget it for now', '', 'What will you do?'); break; } else { ServantSpeak('She is very skilled at cleaning and management. Just having her clean the house will not train her anymore. ' + ServnantPronoun + ' can hire a tutor to teach her but we do not have the required 25GP.\r\rShe will clean the house just the way she knows.'); } } else { ServantSpeak('She will clean the house.'); } AddText('\r\rDo you want her to do that?'); break; case 3: if (DonePonygirl == 1) { ServantSpeak('You will take her for a ride.'); } else { if (Supervise) { ServantSpeak('You will take her for a walk outside.'); } else { ServantSpeak(ServantPronoun + ' will take her for a walk outside.'); } } AddText('\r\rDo you want to do that?'); break; case 4: ServantSpeak('You will talk with her.'); AddText('\r\rDo you want to do that?'); break; case 5: if (DonePonygirl == 1) { ServantSpeak('You will bathe, brush ' + SlaveName + '\'s hair and do her make-up. An essential, bonding experience with your Ponygirl.'); } else { ServantSpeak(SlaveName + ' will work to be more beautiful.'); } AddText('\r\rDo you want her to do that?'); break; case 6: ServantSpeak('She will learn the sciences and become smarter.\rThis lesson costs ' + GetActCost(type) + 'GP.'); AddText('\r\rDo you want her to study that?'); break; case 7: if (SMFaith == 2) { ServantSpeak('Theology will teach her the joyous ways of the old, true, gods. You will take her at a holy place and teach her what you know of their ways.\rThis lesson costs ' + GetActCost(type) + 'GP for special oils and a small sacrifice.'); AddText('\r\rDo you want to teach her that?'); } else { ServantSpeak('Theology will teach her the righteous path and to be moral.\rThis lesson costs ' + GetActCost(type) + 'GP.'); AddText('\r\rDo you want her to study that?'); } break; case 8: ServantSpeak('This lesson will teach her how to behave at the Royal Court.\rThis lesson costs ' + GetActCost(type) + 'GP.'); AddText('\r\rDo you want her to study that?'); break; case 9: if (DonePonygirl == 1) { ServantSpeak('You will hire a tutor to train her stance and learn to use the high-stepping gait of a Ponygirl.\rThis lesson costs ' + GetActCost(type) + 'GP.'); } else { ServantSpeak('Dancing will improve her fitness and charm.\rThis lesson costs 50GP.'); } AddText('\r\rDo you want her to study that?'); break; case 10: ServantSpeak('These lessons will give her more sexual knowledge and experience.\rThis lesson costs ' + GetActCost(type) + 'GP.'); AddText('\r\rDo you want her to study that?'); break; case 11: if (DressWorn < 0) { ServantSpeak('She is naked today so she can\'t expose herself any further.'); Bloop(); return undefined; } if (Supervise) { ServantSpeak('You will take her out in the public and she will expose her body to people.'); } else { ServantSpeak(ServantPronoun + ' will take her out in the public and she will expose her body to people.'); } AddText('\r\rDo you want her to do that?'); break; case 12: if (CheckBitFlag1(33)) { if (Naked) { ServantSpeak('She would work in the restaurant as a chef, but since she is naked for the day, she will work as a waitress instead.'); } else { ServantSpeak('She will work in the restaurant as a chef, reasonable pay and has some prestige.'); } } else { ServantSpeak('She will go work in the restaurant as a waitress. Not well paid but helps to get to know people.'); } AddText('\r\rDo you want her to work there?'); break; case 13: if (SMFaith == 2) { PersonSpeak('Nun', 'One of your students cannot assist here. Repent and follow the ways of the true gods!'); Bloop(); return undefined; } else { if (Naked) { PersonSpeak('Nun', 'She must be clothed to work here.'); return undefined; } else { ServantSpeak('She will assist the nuns at the temple.'); AddText('\r\rDo you want her to work there?'); } } break; case 14: ServantSpeak('She will go and work in a bar, mainly preparing drinks and counter lunches.'); AddText('\r\rDo you want her to work there?'); break; case 15: ServantSpeak('This bar is different, because the girls wear skimpy costumes or just underwear. Sometimes, they do more than just serve drinks to please their customers...'); AddText('\r\rDo you want her to work there?'); break; case 16: ServantSpeak('A very well paid job but the brothel is not a very moral place. She will service her customers however they like...\r\rClothing is, of course, optional, but some sexy lingerie or other accessories can arouse her customers and she will get larger, ummm, tips.'); AddText('\r\rDo you want her to work there?'); break; case 17: ServantSpeak('A little break will make her less tired.'); AddText('\r\rDo you want her to do that?'); break; case 18: ServantSpeak('She will ' + SlaveShopDescription + '.'); AddText('\r\rDo you want her to do that?'); break; case 19: if (TotalBooks + TotalPoetry + TotalScripture + TotalKamasutra + TotalScrolls == 0) { ServantSpeak('She does not have any books to read.'); Bloop(); return undefined; } else { if (PlanningDay.ReadButton.NotAvailable._visible) { ServantSpeak('She has read all of the books you have bought her.'); Bloop(); return undefined; } else { ServantSpeakStart('She will read '); ActionChoice = 19; if (TotalScrolls > TotalScrollsRead) { AddQuestion(502, 'A Scroll'); } if (TotalScripture > TotalScriptureRead) { AddQuestion(503, 'A book of Scripture'); } if (TotalKamasutra > TotalKamasutraRead) { AddQuestion(504, 'A book of the Kamasutra'); } if (TotalBooks * 2 > TotalBooksRead) { AddQuestion(500, 'A Science Book'); } if (TotalPoetry * 2 > TotalPoetryRead) { AddQuestion(501, 'A Poetry Book'); } if (EvChoice2 == 0) { PersonSpeakEnd((AskQuestions.Question1Text.text.substr(3)).toLowerCase()); ActionChoice = 19 + (EvChoice1 - 499) / 10; } else { PersonSpeakEnd('either of the following,'); ShowQuestions('Which book will she read?'); } } } } if (AskQuestions._visible == false) { ShowYesNoButtons(); } SlaveGirl.AfterDoActions(ActionChoice, available); } function GetActButton(type) { switch (type) { return null; case 1: return PlanningDay.CookingButton; case 2: return PlanningDay.CleaningButton; case 3: return PlanningDay.WalkButton; case 4: return PlanningDay.DiscussButton; case 5: return PlanningDay.MakeupButton; case 6: return PlanningDay.SciencesButton; case 7: return PlanningDay.TheologyButton; case 8: return PlanningDay.RefinementButton; case 9: return PlanningDay.DanceButton; case 10: return PlanningDay.XXXButton; case 11: return PlanningDay.ExposeButton; case 12: return PlanningDay.RestaurantButton; case 13: return PlanningDay.AcolyteButton; case 14: return PlanningDay.BarButton; case 15: return PlanningDay.SleazyBarButton; case 16: return PlanningDay.BrothelButton; case 17: return PlanningDay.BreakButton; case 18: return PlanningDay.SlaveShop; case 19: return PlanningDay.ReadButton; } return null; } function SetDayActButtonState(type, tick, available, actlabel, cost) { var v1 = GetActButton(type); SetButtonState(v1, tick, available, actlabel, type, PressDayActButton, cost); } function GetActCost(type) { return (GetActButton(type)).cost; } function SetActCost(type, acost) { (GetActButton(type)).cost = acost; } function PlanningDayCode(Action) { LastActionDoneDay = Action; DickgirlChangable = SlaveGirl.IsDickgirl() || int(Math.random() * 100) < DickgirlRate; DickgirlChanged = false; UseGeneric = int(Math.random() * 5) == 1; NextGeneral._visible = true; StandardDGText = true; AppendActText = true; SetText(''); Beep(); if (Supervise) { ShowSlaveMaker(); } Action = int(Action); if (Action == 1) { FunctionChoreCooking(); } else { if (Action == 2) { FunctionChoreCleaning(); } else { if (Action == 3) { FunctionChoreWalk(); } else { if (Action == 4) { FunctionChoreDiscuss(); } else { if (Action == 5) { FunctionChoreMakeUp(); } else { if (Action == 6) { FunctionSchoolSciences(); } else { if (Action == 7) { FunctionSchoolTheology(); } else { if (Action == 8) { FunctionSchoolTeaCeremony(); } else { if (Action == 9) { FunctionSchoolDance(); } else { if (Action == 10) { FunctionSchoolXXX(); } else { if (Action == 11) { FunctionChoreExpose(); } else { if (Action == 12) { FunctionJobRestaurant(); } else { if (Action == 13) { FunctionJobAcolyte(); } else { if (Action == 14) { FunctionJobBar(); } else { if (Action == 15) { FunctionJobSleazyBar(); } else { if (Action == 16) { FunctionJobBrothel(); } else { if (Action == 17) { FunctionBreak(); } else { if (Action == 18) { SlaveGirl.RunShop(); } else { if (Action == 19) { ChoreReadBook(); } } } } } } } } } } } } } } } } } } } SlaveGirl.AfterDayAction(LastActionDoneDay); } function FunctionChoreCleaning() { SlaveGirl.ShowChoreCleaning(); if (UseGeneric) { Generic.ShowChoreCleaning(); } ++TotalCleaning; if (LastActionDoneDay == 2.1) { var v1 = (House == 5) ? 4 : 3; v1 *= CleaningFactor; MaxCleaning = VarCleaning + v1; HideAssistant(); ShowMovie(PeopleMaid, false, 1, 1); PersonSpeak('Tutor', 'You are excellent at housework. Looks like there are a few pointers I can give you.', true); AddText('\r\rThe tutor teaches ' + SlaveName + ' some time saving techniques and recommends some cleaning products.'); if (Naked) { BlankLine(); if (ApronWorn == 1) { PersonSpeak('Tutor', 'I see you are wearing ONLY an apron!', true); } else { PersonSpeak('Tutor', 'You really should wear an apron, naked housework is a little <i>dirty</i>.', true); } } } else { if (AppendActText) { if (Supervise) { AddText('You watch as she cleans the house well and sweeps the yard.'); if (Aroused) { temp = int(Math.random() * 4); if (temp == 1) { AddText('\r\rOnce she dusted a table using her breasts...'); } if (temp == 2) { AddText('\r\rWhen she thought you were not watching, she rubbed her pussy against the corner of a cupboard while dusting.'); } } } else { ServantSpeakStart('She cleaned the house well and even swept the yard.'); if (Aroused) { temp = int(Math.random() * 4); if (temp == 1) { AddText('\r\rShe did dust a table using her breasts though.'); } if (temp == 2) { AddText('\r\rShe did rub her pussy against the corner of a cupboard while dusting.'); } } } if (Naked) { BlankLine(); if (ApronWorn == 1) { AddText('As you see she is wearing ONLY an apron!'); } else { AddText('She really should wear an apron, naked housework is a little <i>strange</i>.'); } } if (!Supervise) { PersonSpeakEnd(); } } } if (House == 5) { Points(-1, 0, 0, -1, 0, 0, 0, 4, 0, 0, 0, 0, -1, 0, 0, 0, 2, 0, 0, 0); } else { Points(-1, 0, 0, -1, 0, 0, 0, 3, 0, 0, 0, 0, -1, 0, 0, 0, 3, 0, 0, 0); } if (PlugInserted == 1) { temp = int(Math.random() * 2); if (temp == 1) { AddText('\r\rShe found cleaning difficult due to the ' + PlugType + ' limiting her actions.'); if (TotalAnal < 10) { AddText(' She once complained about the ' + PlugType + ', saying how distracting it is.'); } else { AddText(' She comments how the ' + PlugType + ' helped her by making the cleaning less dull.'); } } } FirstTimeTodayCleaning = false; } function FunctionChoreCooking() { ClipKitchen._visible = true; SlaveGirl.ShowChoreCooking(); if (UseGeneric) { Generic.ShowChoreCooking(); } ++TotalCooking; if (LastActionDoneDay == 1.1) { var v1 = (House == 5) ? 4 : 3; v1 *= CookingFactor; MaxCooking = VarCooking + v1; HideAssistant(); ShowMovie(PeopleMaid, false, 1, 1); PersonSpeak('Tutor', 'You are a fine cook. Looks like there are a few pointers I can give you.'); AddText('\r\rThe tutor teaches ' + SlaveName + ' some new recipes and techniques.'); if (Naked) { AddText('\r\r'); if (ApronWorn == 1) { PersonSpeak('Tutor', 'I see you are wearing ONLY an apron!', true); } else { PersonSpeak('Tutor', 'You really should wear an apron, naked cooking is not really recommended', true); } } } else { if (AppendActText) { if (Supervise) { SetText('She cooks meals for you and ' + ServantName + '.'); } else { ServantSpeak('She cooks meals for us.'); } } if (Naked) { AddText('\r\r'); if (ApronWorn == 1) { ServantSpeak('As you see she is wearing ONLY an apron!', true); } else { ServantSpeak(SlaveName + ', you really should wear an apron, naked cooking is not really a good idea!', true); } } } if (House == 5) { Points(0, 0, -1, 0, 0, 0, 4, 0, 0, 0, 0, 0, -1, 0, 0, 0, 2, 0, 0, 0); } else { Points(0, 0, -1, 0, 0, 0, 3, 0, 0, 0, 0, 0, -1, 0, 0, 0, 3, 0, 0, 0); } if (SoundsOn) { Sounds.SoundFrying.gotoAndPlay(2); } FirstTimeTodayCooking = false; } function FunctionChoreDiscuss() { ShowSlaveMaker(false); SlaveGirl.ShowChoreDiscuss(); ++TotalDiscuss; if (House == 5) { Points(0, 0, 1.5, 1.5, 0, -1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { Points(0, 0, 1, 1, 0, -1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (IshinaiEffecting == 1) { ServantSpeak(SlaveName + ' can\'t talk because of the drug.'); } else { if (DoreiEffecting == 1) { ServantSpeak('The drug keeps her from coherent thought, so you can\'t talk with her.'); } else { if (FirstTimeTodayDiscuss) { AddText('Will you...\r\rTalk to her generally, or\rCongratulate her work as a slave, or\rScold her failures.'); NextGeneral._visible = false; DiscussOrdinary._visible = true; DiscussCongratulate._visible = true; DiscussScold._visible = true; } else { DoLaterDiscussion(); } SMPoints(0, 0, 0, 0, 2, 0, 0); } } } function FunctionChoreExpose() { if (TestObedience(DifficultyExhib, 100)) { SlaveGirl.ShowChoreExpose(); if (UseGeneric) { Generic.ShowChoreExpose(); } ++TotalExhib; Points(1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 3, 0, 0, 0, 0, 0); if (TotalExhib == 1) { DifficultyExhib -= 5; } if (AppendActText) { if (Supervise) { SetText('You walk to a public park and she exposes her breasts and pussy to people.'); } else { ServantSpeakStart('She happily exposes herself.'); } } if (StandardDGText) { if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { AddText(' Her cock was amazingly erect the whole time!'); } if (DickgirlChanged) { AddText(' She does not notice that she has a cock again and shows her erect cock regularly, unconsciously stroking it sometimes.'); } } if (AppendActText && PlugInserted == 1) { AddText(' The ' + PlugType + ' was rather obvious to anyone she showed her ass to!'); } if (!Supervise) { PersonSpeakEnd(); } FirstTimeTodayExpose = false; } else { Refused(0, '', 'She refused to expose herself.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, -1, 0, 0); } } function FunctionChoreMakeUp() { if (VanityCaseOK == 0) { if (DonePonygirl == 1) { ServantSpeak('You have not bought her a vanity case and so you cannot groom her.'); } else { ServantSpeak('You haven\'t bought her a vanity case and so she cannot practice her make-up.'); } Bloop(); } else { var v1 = SlaveGirl.ShowChoreMakeUp(); ++TotalMakeUp; if (DonePonygirl == 1) { if (AppendActText) { AddText('You loosen her bindings and remove her gag. You brush her hair and help with her makeup.'); } if (v1 == 0) { if (AppendActText && Aroused && int(Math.random() * 4) == 1) { AddText(' She kept rubbing up against you, she claiming it was accidental.'); } if (House == 5) { Points(2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0); } else { Points(3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0); } } else { if (House == 5) { Points(3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0.5, 0); } else { Points(2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0.5, 0); } } } else { if (AppendActText) { if (Supervise) { SetText('You help her practice her makeup.'); } else { ServantSpeakStart(ServantPronoun + ' helped her practice her makeup.'); } } if (v1 == 0) { if (AppendActText && Aroused && int(Math.random() * 4) == 1) { if (Supervise) { AddText(' She kept rubbing up against you, sensuously.'); } else { AddText(' She kept rubbing up against me, she claimed it was accidental.'); } } if (House == 5) { Points(2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { Points(3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } } else { if (House == 5) { Points(3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } else { Points(2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } } } if (!Supervise) { PersonSpeakEnd(); } FirstTimeTodayMakeup = false; } } function FunctionChoreWalk() { SlaveGirl.ShowChoreWalk(); if (DonePonygirl == 1 || UseGeneric) { Generic.ShowChoreWalk(); } ++TotalWalk; if (DickgirlChanged) { if (StandardDGText) { if (DonePonygirl == 1) { ShowSlaveMaker(false); AddText('In the middle of the way through the ride she got very aroused and tore her clothing off. A cock had grown from her groin, initially flaccid. As she looked at me it quickly grew erect. She apologised and we quickly came back. In her room she quickly masturbated to a huge orgasm, spewing cum everywhere.'); } else { ServantSpeakStart('In the middle of the way in the walk she got very aroused and tore her clothing off. A cock had grown from her groin, initially flaccid. As she looked at me it quickly grew erect. She apologised and we quickly came back. In her room she quickly masturbated to a huge orgasm, spewing cum everywhere.', true); if (!SlaveGirl.IsDickgirl()) { AddText(' The cock quickly vanished.'); } PersonSpeakEnd(); } } Points(0, 1, 0, 0, 0, 1, 0, 0, -2, 0, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0); } else { if (AppendActText) { if (DonePonygirl == 1) { if (SoundsOn) { Sounds.SoundClipClop.gotoAndPlay(2); } ShowSlaveMaker(false); if (PonyCartOK) { AddText('You harness ' + SlaveName + ' to her cart and have her pull you around the city.'); } else { AddText('You \'mount\' yourself on ' + SlaveName + ' and have her carry you around on her back, spanking her occasionally to encourage her.'); } if (PonyBootsOK) { AddText(' Her feet make a delightful clip, clop noise as her boots hit the ground.'); } } else { if (Supervise) { SetText('You take her for a pleasant stroll.'); } else { ServantSpeakStart('She had a pleasant stroll.'); } if (Aroused && int(Math.random() * 2) == 1) { AddText(' She did look lustfully at some handsome men '); if (Lesbian) { AddText('and pretty women '); } AddText('though.'); } if (!Supervise) { PersonSpeakEnd(); } } } if (DonePonygirl == 0 && PlugInserted == 1 && int(Math.random() * 2) == 1) { AddText('\r\rDue to her anal plug she did not travel as far as usual.'); } Points(0, 1, 0, 0, 0, 1, 0, 0, -2, 0, 0, 0, -1, 0, 0, 0, 2, 1, 0, 0); } FirstTimeTodayWalk = false; } function ChoreReadBook() { if (SlaveGirl.ShowChoreReadABook() != true) { Generic.ShowChoreReadABook(); } if (Day && LastActionDoneDay == 19.1 || !Day && SexAction == 22.1) { UpdateFactors(); if (MaxIntelligence < 100 && VarIntelligence + (int(6 * dmod) / 2) * IntelligenceFactor > MaxIntelligence) { MaxIntelligence = VarIntelligence + 3 * IntelligenceFactor; } if (AppendActText) { AddText(SlaveName + ' lies down and reads from the science book. '); if (Supervise) { AddText('You quiz her on her understanding.'); } else { AddText('She is quizzed on her understanding by ' + ServantName); } } Points(0, 0, 0, int(6 * dmod) / 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0); } else { if (Day && LastActionDoneDay == 19.2 || !Day && SexAction == 22.2) { if (AppendActText) { AddText(SlaveName + ' lies down and reads from the book of romantic poetry. '); if (Supervise) { AddText('Afterwards you talk to her about the feelings and images raised by the poems.'); } else { AddText('She talks about her feelings with ' + ServantName); } } Points(0, int(6 * dmod) / 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0); } else { if (Day && LastActionDoneDay == 19.4 || !Day && SexAction == 22.4) { if (SMFaith == 2) { Points(0, 0, 0, 20, -5, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0); if (AppendActText) { AddText(SlaveName + ' studies the text and learns more of the new Gods. It casts some doubts in her heart of the old gods.'); } } else { Points(0, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0); if (AppendActText) { AddText(SlaveName + ' studies the text and learns more of the Gods.'); } } } else { if (Day && LastActionDoneDay == 19.5 || !Day && SexAction == 22.5) { if (AppendActText) { if (MaxFuck < 100) { AddText(SlaveName + ' learns a lot of new arousing concepts from the book of the Kamasutra.'); } else { AddText(SlaveName + ' enjoys reading the book of the Kamasutra.'); } } if (MaxFuck < 100) { MaxFuck += 10; } if (Lesbian) { if (AppendActText) { AddText(' Lesbian acts are only discussed in a limited way though.'); } NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 10, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 10, 0, 0, 0, 0, 0); } } } } } } function EarnMoney(income) { var v1; if (Talent == 1) { v1 = int(income * 0.95); } else { v1 = int(income); } v1 -= Difficulty; if (v1 > 175) { v1 = 175; } Money(v1); return v1; } function FunctionJobRestaurant() { ClipRestaurant._visible = true; var v1 = SlaveGirl.ShowJobRestaurant(); if (UseGeneric) { Generic.ShowJobRestaurant(); } ++TotalRestaurant; if (!CheckBitFlag1(33) && VarCookingRounded > 50) { SetBitFlag1(33); SetBitFlag1(31); AddText('The restaurant owner speaks for a while to ' + SlaveName + ' about menus and is surprised at her detailed knowledge of cooking. He tells her\r\r'); PersonSpeak('Restaurant Owner', SlaveName + ', I have an opening for an assistant chef. This is a better paying job with some prestige and you\'ll become well known. This is one-time offer as I have to hire someone immediately', true); AddText('\r\rWill she change jobs and work as a chef'); DoYesNoEvent(31); return undefined; } if (!Naked && CheckBitFlag1(32)) { v1 = EarnMoney((3 * int(VarCookingRounded / 4) + int(VarIntelligenceRounded / 4)) * v1); if (MaidUniformOK == 1 || IsDressMaid()) { v1 += 5; } Points(0, 0, 0.5, 0, 0, 0, 4, 0.5, 0, 0, 0, 0, 0, 0, 0, 0.5, 2, 0, 0, 0); AddText(SlaveName + ' works on culinary delights and occasionally speaks to the upper-class patrons of the private dining area about specialty foods.\r\r'); PersonSpeakStart('Chef', 'Good work, you are a fine assistant chef : ' + v1 + 'GP', true); } else { if (!CheckBitFlag1(31)) { SetBitFlag1(31); PersonSpeak('Restaurant Owner', SlaveName + ', welcome to my restaurant. You will be working for me as a waitress, taking orders and serving food.\r\rPlease be pleasant and chat with the customers. You will get more tips and maybe other rewards.', true); BlankLine(); AddText(SlaveName + ' works her first shift in the restaurant.\r\r'); } v1 = EarnMoney((3 * int(VarConversationRounded / 5) + int(VarCharismaRounded / 5)) * v1); if (MaidUniformOK == 1 || IsDressMaid()) { v1 += 5; } Points(0, 0, -1, 0, 0, 1, 1, 0.5, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0); if (AppendActText) { AddText('At the end of her shift, the restaurant owner talks to ' + SlaveName + ',\r\r'); PersonSpeakStart('Restaurant Owner', 'Good job as a waitress, here is your pay and tips : ' + v1 + 'GP', true); if (Aroused) { temp = int(Math.random() * 4); if (temp == 1) { AddText('\r\rYour dress is a little too short, I think all the customers saw your panties today.'); } if (temp == 2) { AddText('\r\rOnce or twice I saw you sit on the lap of a customer to take their order. I am sure the customer was happy but in future please do not do this.'); } if (PlugInserted == 1 && int(Math.random() * 4) == 1) { AddText('\r\rYour work was a little slow today, you moved awkwardly, if there is anything limiting your movement please do not wear it in future.'); } } PersonSpeakEnd(); } } ShowMovie(PeopleCook, false, 1); SlaveGirl.AfterJobRestaurant(v1); FirstTimeTodayRestaurant = false; } function FunctionJobBar() { ClipBar._visible = true; var v1 = EarnMoney((5 * int(VarConversationRounded / 5) + int(VarIntelligenceRounded / 5)) * SlaveGirl.ShowJobBar()); ++TotalBar; if (AppendActText && Aroused && !DickgirlChanged) { temp = int(Math.random() * 4); if (temp == 1) { SlaveSpeak('How may ' + SlavePronoun + ' service you...', true); BlankLine(); } else { if (temp == 2) { SlaveSpeak('Anybody want to drink shots cupped in my cleavage...', true); BlankLine(); } } } Points(0, 0, -1, -1, 0, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0, 0); if (AppendActText) { AddText('At the end of her shift, the barman talks to ' + SlaveName + ',\r\r'); PersonSpeak('Barman', 'Good work, the customers like you. Here is your pay and tips : ' + v1 + 'GP', true); } ShowMovie(PeopleBarOwner, false, 1); SlaveGirl.AfterJobBar(v1); FirstTimeTodayBar = false; } function FunctionJobAcolyte() { ClipTemple._visible = true; var v2 = PlugInserted == 1 && int(Math.random() * 4) == 1; var v1 = EarnMoney((5 * int(VarMoralityRounded / 5) + int(VarIntelligenceRounded / 5)) * SlaveGirl.ShowJobAcolyte(v2)); ++TotalAcolyte; temp = int(Math.random() * 2) + 2; ShowMovie(PeopleNun, false, (temp == 2) ? 0 : 6, temp); Points(0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, 2, 0, 0, 0); if (AppendActText) { switch (int(Math.random() * 3)) { case 0: SetText(SlaveName + ' helps to clean the temple.'); break; case 1: SetText(SlaveName + ' works selling talismans and blessed oils to the worshippers visiting the temple.'); break; case 2: SetText(SlaveName + ' assists a nun in her duties, carrying and holding sacred objects.'); } AddText('\r\rLater, at the end of her duties, a senior nun talks to ' + SlaveName + ',\r\r'); PersonSpeakStart('Nun', 'You were a big help.', true); } AddText(' Here is your reward : ' + v1 + 'GP'); if (PlugInserted == 1 && int(Math.random() * 4) == 1) { PersonSpeakEnd(); AddText('\r\rThe nun looks knowingly at ' + SlaveName + '\'s ass and says that there are some thing\'s that are not appropriate to wear in a temple.'); } else { if (Aroused) { temp = int(Math.random() * 4); if (temp == 1) { PersonSpeakEnd('\r\rWhen cleaning the statues please do not spend so long on the groins and breasts of the Gods. It was distracting for some of the worshippers.'); } else { if (temp == 2 && RulesTouchHerself == 1) { PersonSpeakEnd('\r\rIn a break I saw you masturbating while staring at the statue of the Goddess of Love. This is not a seemly thing to do in public, although the Goddess does approve of masturbation...'); } else { PersonSpeakEnd(); } } } else { PersonSpeakEnd(); } } if (!CheckBitFlag1(41) && TentaclesOn == 1 && (MoonPhaseDate == 16 || Elapsed > 8 && int(Math.random() * 5) == 0)) { SetBitFlag1(41); Tentacles.AcolyteTentacleRaid(); } else { SlaveGirl.AfterJobAcolyte(v1); } FirstTimeTodayAcolyte = false; } function FunctionJobSleazyBar() { ClipBar._visible = true; var v1 = DickgirlOn == 1 && int(Math.random() * 3) == 0; ShowMovie(PeopleSleazyBarOwner, false, 1, v1 ? 2 : 1); if (TestObedience(DifficultySleazyBar, 102)) { if (BunnySuitOK == 0 && LingerieOK == 0 && !IsDressSleazyBar() && !IsDressLingerie() && !SlaveGirl.IsCatgirl()) { PersonSpeak('Sleazy Bar Owner', 'She is not dressed appropriately for my bar. Girls should be wearing erotic lingerie, a bunny suit or something suitably kinky. Cat Slaves are always welcome!\r\rShe can still work here but she will have to strip. I will give her a bonus to do a strip-tease but then she will have to stay naked for her entire shift.\r\rShe will be quite popular, and receive more requests for \'private\' performances.'); if (!TestObedience(DifficultyExhib, 122)) { AddText('\r\r' + SlaveName + ' blushes and refuses to do that.'); LastActionDoneDay = 15.2; } else { if (SlaveGirl.AskSleazyBarStripTease() != true) { DoYesNoEvent(32); } } return undefined; } WorkInSleazyBar(false); } else { Refused(0, '', 'She refused to work at the sleazy bar.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, -2, -10, 0); } } function WorkInSleazyBar(strip) { if (strip) { LastActionDoneDay = 15.1; AddText('At the start of her shift, the bar owner introduces her, and she does a slow, sexy strip-tease, removing piece after piece of her clothing, until she is completely naked.'); if (VarConstitution > 80 && VarCharisma > 80) { AddText('\r\rThere is loud, enthusiastic applause after, with many suggestive calls.'); } else { if (VarConstitution > 50 || VarCharisma > 50) { AddText('\r\rThe customers clap and whistle after, with a few suggestive calls.'); } else { AddText('\r\rThere is a smattering of applause after her performance.'); } } AddText(' The rest of her time in the bar she is completely naked.\r\r'); NextGeneral._visible = true; NextEvent._visible = false; } var v1 = SlaveGirl.ShowJobSleazyBar(strip); if (DemonicBraOK == 1) { v1 *= 1.1; } if (IsDressSleazyBar()) { v1 *= 1.1; } if (Lesbian) { v1 *= 0.75; } if (BunnySuitOK == 1) { v1 *= 1.15; } else { if (LingerieOK == 1 || IsDressLingerie()) { v1 *= 1.05; } } var v2 = 9 * int((VarCharismaRounded + VarConversationRounded) / 10) + int(VarBlowJobRounded / 10) + int(VarIntelligenceRounded / 5); if (OldLover == 1) { v2 += 20; } if (strip) { v2 += 10; } v2 = EarnMoney(v2 * v1); if (strip) { ++TotalStripTease; } ++TotalSleazyBar; if (TotalSleazyBar == 1) { DifficultySleazyBar -= 5; DifficultyExhib -= 2; } PersonSpeakEnd(' Here is your pay and tips : ' + v2 + 'GP'); if (VarBarmaid == 0) { HideAllPeople(); HideImages(); PeopleSleazyBarOwner._visible = false; ShowMovie(PeopleBarMaid, false, 1, int(Math.random() * 2) + 1); AddText('\r\r' + SlaveName + ' meets another girl entertaining at the bar, and they have a brief conversation. The girl suggests ' + SlaveName + ' <b>visit</b> her at her one of the places she works sometime. She names a number of the places she works at.'); VarBarmaid = 0.01; } Points(2, -2, 0, -2, -2, 1, 0, 0, 2, 0, 0, 1, 2, 1, 1, 0, 6, 0, 0, 0); if (v1 == 1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0); } temp = 3; if (SlaveGirl.AfterJobSleazyBar(v2) != true) { if (FirstTimeTodaySleazyBar) { if (OldLover == 1) { AddText('\r\rHer older lover cheers her on, and then pays for a private \'performance\''); temp = -1; } else { if (temp != -1) { if (SlaveGirl.IsCatgirl() || Naked || strip) { temp = 1; } else { if (VarNymphomaniaRounded > 79 || Slutiness > 5) { temp = 0; } } } } if (temp == -1 || int(Math.random() * temp) == 0) { NumEvent = 33; if (temp == 0 || temp == -1) { if (temp == 0) { AddText('\r\r' + SlaveName + ' offers a \'private\' performance to customer, an intimate performance...'); } NextEvent._visible = true; NextGeneral._visible = false; } else { AddText('\r\rA customer requests a \'private\' performance. ' + SlaveName + ' is sure this is an intimate performance...\r\rDoes she \'perform\'?\r'); DoYesNoEventXY(33); } } } } FirstTimeTodaySleazyBar = false; } function JobSleazyBarService() { HideSlaveActions(); HideImages(); HideBackgrounds(); ClipBar._visible = true; if (OldLover == 1) { PeopleSleazyBarOwner._visible = false; ShowMovie(ClipOldLover, false, 2); } var v1 = Lesbian; if (SlaveGirl.ShowJobSleazyBarService() != true) { Lesbian = false; SlaveGirl.ShowSexActBlowjob(); SetText(''); } ++TotalSleazyBarService; Lesbian = v1; if (AppendActText) { if (OldLover == 1) { AddText(SlaveName + ' gives her older lover'); } else { AddText(SlaveName + ' gives the customer'); } AddText(' a talented \'performance\' and receives a tip for her efforts.'); } Money(VarBlowJobRounded / 3); if (Lesbian) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0); } NextEvent._visible = false; NextGeneral._visible = true; } function FunctionJobBrothel() { Backgrounds.ShowBedRoom(16); if (TestObedience(DifficultyBrothel, 103)) { UseGeneric = false; var v1 = SlaveGirl.ShowJobBrothel(); if (UseGeneric) { Generic.ShowJobBrothel(); } var v2 = -2; if (VarNymphomaniaRounded > 94) { v2 = 1; } if (v1 > 1) { v2 = 1; } if (PlugInserted == 1) { v1 = 1.05 * v1; } if (LingerieOK == 1 || IsDressLingerie()) { v1 = 1.05 * v1; } if (Lesbian) { v1 *= 0.75; } var v3 = EarnMoney((10 * int((VarCharismaRounded + VarConstitutionRounded) / 10) + int(VarBlowJobRounded / 30) + int(VarFuckRounded / 5) + int(VarIntelligenceRounded / 5)) * v1); ++TotalBrothel; if (TotalBrothel == 1) { DifficultyBrothel -= 5; } if (AppendActText) { if (LingerieOK == 1 || IsDressLingerie()) { AddText('While waiting for her customers she relaxes sexily in her lingerie.\r\r'); } AddText('At the end of her shift, the head of the brothel talks to ' + SlaveName + ',\r\r'); if (v2 < 0) { PersonSpeakStart('Pimp', 'I\'m glad to see the girls like you here. I hope to see you again soon.', true); } else { PersonSpeakStart('Pimp', 'You are a slut, please \'come\' back soon.', true); } AddText(' Here is your pay : ' + v3 + 'GP'); if (PlugInserted == 1) { AddText('\r\rAs you have just seen, your ' + PlugType + ' excited your customers so I have added a bonus to your pay.'); } PersonSpeakEnd(); } Points(0, v2, -2, -1, -3, 2, 0, 0, 0, 0, 1, 2, 3, 2, 0, 0, 8, v2, v2, 0); HideAssistant(); ShowMovie(PeoplePimp, false, 1); SlaveGirl.AfterJobBrothel(v3); FirstTimeTodayBrothel = false; } else { Refused(0, '', 'She refused to work at the brothel.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -10, 0, 0, 0, -3, -20, 0); } } function FunctionSchoolSciences() { ClipSchool._visible = true; SlaveGirl.ShowSchoolSciences(); ++TotalSciences; if (AppendActText) { PersonSpeakStart('Teacher', 'You studied well, I hope you will not forget what you learned.'); if (Aroused) { temp = int(Math.random() * 4); if (temp == 1) { AddText(' In one of your answers you wrote sex not six, please try to concentrate.'); } if (temp == 2 && RulesTouchHerself == 1) { AddText(' I am fairly sure I saw you masturbating in class. If that is what you want to study, please visit the XXX school.'); } } if (PlugInserted == 1) { temp = int(Math.random() * 2); if (temp == 1) { AddText('\r\rYou also squirmed a lot in your seat, was there a problem?'); PersonSpeakEnd(); if (TotalAnal < 20 && Slutiness < 6) { AddText('\r\r' + SlaveName + ' is embarrassed and briefly mentions the ' + PlugType + ' she is required to wear. The teacher smiles and changes topic.'); } else { AddText('\r\r' + SlaveName + ' describes how she was moving to adjust her ' + PlugType + ' to enhance her pleasure. The teacher smiles and changes topic.'); } } else { PersonSpeakEnd(); } } else { PersonSpeakEnd(); } ShowMovie(PeopleRefinementTeacher, false, 1); } UpdateFactors(); var v1 = (House == 6) ? 12 : 10; v1 *= IntelligenceFactor; if (MaxIntelligence < 100 && VarIntelligence + v1 > MaxIntelligence) { MaxIntelligence = VarIntelligence + v1; } if (House == 6) { Points(0, -1, 0, 6, 0, -1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 1, 0, 0, 0); } else { Points(0, -1, 0, 5, 0, -1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 1, 0, 0, 0); } if (FirstTimeTodaySciences && (VarSchoolGirl == 0 || int(Math.random() * 3) < 2)) { MeetSchoolGirl(); } SlaveGirl.AfterSchoolSciences(); FirstTimeTodaySciences = false; } function FunctionSchoolTheology() { ClipTemple._visible = true; SlaveGirl.ShowSchoolTheology(); if (SMFaith == 2) { Backgrounds.ShowRuinedTemple(1); if (TotalSMPray <= TotalTheology) { SetText('You talk with ' + SlaveName + ' for a time, but realise you have little more you can teach her. You might need to seek more spiritual guidance from a priestess of the old gods.'); return undefined; } } ++TotalTheology; UpdateFactors(); var v1 = (House == 6) ? 6 : 5; if (SMFaith == 2) { v1 += 1; } v1 *= MoralityFactor; if (MaxMorality < 100 && VarMorality + v1 > MaxMorality) { MaxMorality = VarMorality + v1; } if (SMFaith == 2) { if (AppendActText) { SetText('You spend time showing her rituals and talking of the joy and passion of the old gods. You talk of the freedom of their worship and strongly emphasize the passionate forms of worship.'); if (TotalTheology == 1) { AddText('\r\rUnfortunately the old gods do not approve of slavery, as a limit of your freedom. You try to talk about the freedoms permitted loyal slaves and of the ample passion they experience.'); } } if (House == 6) { Points(0, 0, 0, 3, v1, -1, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 1, 0, 0, 0); } else { Points(0, 0, 0, 2, 5, -1, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 1, 0, 0, 0); } } else { if (House == 6) { Points(0, 0, 0, 3, v1, -1, 0, 0, 0, 0, 0, 0, -5, -1, -5, 0, 1, 0, 0, 0); } else { Points(0, 0, 0, 2, v1, -1, 0, 0, 0, 0, 0, 0, -5, -1, -5, 0, 1, 0, 0, 0); } if (AppendActText) { PersonSpeakStart('Nun', 'Don\'t forget the Gods always watch us.'); } if (Aroused) { temp = int(Math.random() * 4); if (temp == 1) { AddText('\rPlease do not ask so many questions about sins involving sex, it distracts the other students.'); } if (temp == 2 && RulesTouchHerself == 1) { AddText('\rIn a break I saw you rubbing your pussy. You must try to control your passions and follow the teachings of the Gods.'); } } if (PlugInserted == 1) { temp = int(Math.random() * 2); if (temp == 1) { AddText('\r\rYou also moved a lot while in meditation, was there a problem?'); PersonSpeakEnd(); if (TotalAnal < 20 && Slutiness < 6) { AddText('\r\r' + SlaveName + ' is acutely embarrassed and leaves.'); } else { AddText('\r\r' + SlaveName + ' describes how she was moving to try and fuck herself on the ' + PlugType + ' she is wearing. The nun is scandalised and tells her to leave and not return with such a thing again.'); } } else { PersonSpeakEnd(); } } else { PersonSpeakEnd(); } ShowMovie(PeopleNun, false, 6, 3); if (Supervise && TheologyTraining < 10 && FirstTimeTodayTheology) { AddText('\r\rAfter the lesson you talk to the nun about the gods. '); LearnNewGods(); } } SlaveGirl.AfterSchoolTheology(); FirstTimeTodayTheology = false; } function FunctionSchoolTeaCeremony() { ClipSchool._visible = true; if (AppendActText) { PersonSpeak('Teacher', SlaveName + ', you are acting proper. You behave better and better.'); } Points(0, 2, 3, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0); if (IsDressCourtly()) { Points(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } ShowMovie(PeopleRefinementTeacher, false, 1); SlaveGirl.ShowSchoolRefinement(); ++TotalRefinement; SlaveGirl.AfterSchoolTeaCeremony(); FirstTimeTodayRefinement = false; } function FunctionSchoolDance() { ClipSchool._visible = true; var v1 = false; if (DonePonygirl == 1) { UseGeneric = true; } if (Aroused && int(Math.random() * 4) == 1) { v1 = true; } SlaveGirl.ShowSchoolDance(v1); if (UseGeneric) { Generic.ShowSchoolDance(v1); } ++TotalDance; if (DonePonygirl == 1) { if (AppendActText) { AddText('You hire an expert to train her stance and posture, so she prances like a pony, swishes her tail and swings her breasts.\r\r'); PersonSpeakStart('Dancer', 'Very good, you\'re a fine pony.'); } Points(3, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0); ShowMovie(PeopleDancer, false, 1); } else { Points(3, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0); if (IsDressDancing()) { Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } ShowMovie(PeopleDancer, false, 1); if (AppendActText) { PersonSpeakStart('Dancer', 'Very good ' + SlaveName + ', you\'re dancing better and better.', true); if (PlugInserted == 1 && int(Math.random() * 2) == 1) { AddText('\rYou also moved stiffly at times when you needed maximum flexibility, any idea why?'); PersonSpeakEnd(); if (TotalAnal < 20 && Slutiness < 6) { AddText('\r\r' + SlaveName + ' is embarrassed and mentions her ' + PlugType + '. The dancer says this should only be done by advanced students and pats her bottom.'); } else { AddText('\r\r' + SlaveName + ' says her ' + PlugType + ' was distracting her with pleasure. The dancer smiles and gives her some pointers on moving well with a plug or vibrator inserted. ' + SlaveName + ' is rather aroused by this talk.'); Points(0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0); } } else { if (Naked) { AddText(' You should wear clothing for my lessons!'); } else { if (v1) { if (Slutiness > 5) { AddText(' Please make sure you wear panties for your lessons!'); } else { AddText(' You showed a lot of cleavage and flashed your underwear rather deliberately. Try to refrain from doing so because I am not teaching strip dancing.'); } } } PersonSpeakEnd(); } } } SlaveGirl.AfterSchoolDance(); FirstTimeTodayDance = false; } function FunctionSchoolXXX() { ClipSchool._visible = true; if (TestObedience(DifficultyXXX, 101)) { var v4 = SlaveGirl.ShowSchoolXXX(DickgirlXF == 0 && DickgirlOn > 0 && int(Math.random() * 6) == 1); ++TotalXXX; if (TotalXXX == 1) { DifficultyXXX -= 5; } var v3 = false; if (MaxFuck < 100 || MaxBlowJob < 100) { v3 = true; } UpdateFactors(); var v2 = 5 * FuckFactor; if (MaxFuck < 100 && VarFuck + v2 > MaxFuck) { MaxFuck = VarFuck + v2; } var v1 = 5 * BlowjobFactor; if (MaxBlowJob < 100 && VarBlowJob + v1 > MaxBlowJob) { MaxBlowJob = VarBlowJob + v1; } if (v4 == true) { NoTalentPoints(0, 0, -2, 0, -2, 1, 0, 0, 0, 4, 5, -4, 4, 0, -2, 0, 6, 0, 0, 0); } else { if (AppendActText) { PersonSpeak('Teacher', 'You\'ve a natural talent for sex, I hope to see you \'come\' again.', true); } NoTalentPoints(0, 0, -2, 0, -2, 1, 0, 0, 0, 3, 4, -3, 4, 0, 1, 0, 4, 0, 0, 0); } if (v3 == true) { AddText('\r\r' + SlaveName + ' learns some new sexual techniques she had not thought of before.'); } if (PlugInserted == 1) { temp = int(Math.random() * 2); if (temp == 1) { AddText('\r\rThe teacher compliments her on the ' + PlugType + ' and incorporates it into the lessons.'); TotalAnal += 1; } } ShowMovie(PeopleXXXOwner, false, 1); SlaveGirl.AfterSchoolXXX(); FirstTimeTodayXXX = false; } else { Refused(0, '', 'She refuses to go to this school.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, -1, 0, 0); } } function FunctionBreak() { if (Supervise) { SetText('You relax with her for a while. The break from her training makes her feel better.'); } else { ServantSpeak('This rest makes her feel better.'); } SlaveGirl.ShowBreak(); ++TotalBreak; var v1 = (House == 7) ? -13 : -10; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v1, 1, 0, 0); if (AppendActText) { if (DemonicBraWorn == 1 || DemonicPendantWorn == 1) { AddText('\r\r...Her dreams are filled with demonic visions of couple after couple fucking.'); ClipSexDream._visible = true; ClipSexDream.gotoAndStop(int(Math.random() * 3) + 1); } if (VibratorPantiesWorn == 1 && House != 7) { if (ClipSexDream._visible == false) { AddText('\r'); ClipSexDream.gotoAndStop(int(Math.random() * 3) + 1); ClipSexDream._visible = true; } AddText('\r...The Vibrator Panties keep her aroused and she keeps thinking about sex.'); } if (VarLibidoRounded > 30) { if (ClipSexDream._visible == false) { AddText('\r'); ClipSexDream.gotoAndStop(int(Math.random() * 3) + 1); ClipSexDream._visible = true; } AddText('\r...She is so generally aroused she has dreams full of sex.'); } } FirstTimeTodayBreak = false; } function SeePregnant() { if (TentaclePregnancy > 0 && TentaclePregnancy < 20 && !CheckBitFlag1(13)) { SetBitFlag1(13); AddText('\r\rYou notice that ' + SlaveName + ' appears to be gaining weight. You tell ' + ServantName + ' to be careful about her diet.'); } } function DoOrdinaryDiscussion() { Beep(); NextGeneral._visible = true; DiscussOrdinary._visible = false; DiscussCongratulate._visible = false; DiscussScold._visible = false; if (SlaveGirl.DoOrdinaryDiscussion() != true) { ++VarLovePoints; SlaveSpeakStart(''); if (VarLovePoints > 50) { AddText('Darling, '); } if (VarObedienceRounded > 70) { if (DrugAddicted == 1) { AddText('Please, ' + SlavePronoun + ' need drugs...'); } else { if (VarLibidoRounded > 90) { AddText(SlavePronoun + ' beg you, fuck me...'); } else { if (VarJoyRounded > 70) { AddText('In fact, ' + SlavePronoun + ' am happy that ' + SlavePronoun + ' became a slave.'); } else { if (VarJoyRounded > 50) { AddText(SlavePronoun + ' wouldn\'t have thought that being a slave would be good.'); } else { if (VarJoyRounded > 15) { AddText('Please, give me your orders.'); } else { AddText(SlavePronoun + ' feel better when ' + SlavePronoun + ' talk with you.'); } } } } } } else { if (VarObedienceRounded > 50) { if (DrugAddicted == 1) { AddText('Please, ' + SlavePronoun + ' need my drugs...'); } else { if (VarLibidoRounded > 80) { AddText('Please, fuck me...'); } else { if (VarJoyRounded > 70) { AddText(SlavePronoun + ' wanted to thank you for training me.'); } else { if (VarJoyRounded > 50) { AddText('At the moment, ' + SlavePronoun + ' feel like enjoying this life.'); } else { if (VarJoyRounded > 15) { AddText('A slave life is not that bad after all.'); } else { AddText(SlavePronoun + ' feel a bit sad.'); } } } } } } else { if (VarObedienceRounded > 15) { if (DrugAddicted == 1) { AddText(SlavePronoun + ' need my drug... Quick...'); } else { if (VarLibidoRounded > 80) { AddText(SlavePronoun + ' can\'t take it anymore! ' + SlavePronoun + ' want to fuck!'); } else { if (VarJoyRounded > 70) { AddText(SlavePronoun + ' am wondering, maybe being a slave is not that bad if the slave agrees.'); } else { if (VarJoyRounded > 50) { AddText(SlavePronoun + ' don\'t feel too bad here but ' + SlavePronoun + ' miss my family.'); } else { if (VarJoyRounded > 15) { AddText('You really like to train slaves?'); } else { if (Loyalty > 0) { AddText('You don\'t want to make me slave, ' + SlavePronoun + ' hope.'); } else { AddText(SlaveName + ' will do her best.'); } } } } } } } else { if (DrugAddicted == 1) { AddText('You bastard, give me my drugs!'); } else { if (VarLibidoRounded > 80) { if (Loyalty > 0) { AddText('Okay, you win, ' + SlavePronoun + ' will do what you want but please fuck me!!'); } else { AddText('Please, ' + SlaveName + ' will do what you want but please fuck me!'); } } else { if (VarJoyRounded > 70) { AddText('In fact, it\'s fun being here. You\'re not really authoritarian but you\'re fun.'); } else { if (VarJoyRounded > 50) { AddText(SlavePronoun + ' would have thought someone more authoritarian would train slaves.'); } else { if (VarJoyRounded > 15) { if (Loyalty > 0) { AddText('You still think ' + SlavePronoun + ' will obey you?'); } else { AddText(SlaveName + ' wonders if she really should have sold herself.'); } } else { if (Loyalty > 0) { AddText('You monster! You\'ll never make me a slave!'); } else { AddText('Sometimes, ' + SlavePronoun + ' think you don\'t like me.'); } } } } } } } } } SlaveSpeakEnd(); } SeePregnant(); FirstTimeTodayDiscuss = false; } function DoCongratulate() { Beep(); NextGeneral._visible = true; DiscussOrdinary._visible = false; DiscussCongratulate._visible = false; DiscussScold._visible = false; if (SlaveGirl.DoCongratulate() == true) { return undefined; } if (WinContest != 0) { SetText('You discuss her competition this morning.\r\r"'); if (WinContest == 1) { AddText('Congratulations on your victory in the contest. You showed your excellence as a slave."\r\r'); } else { AddText('Congratulations on your ranking in the contest, we just need to try harder so you can win next time."\r\r'); } VarJoy += 1; AddText('You then discuss her sexual training\r\r"'); } else { SetText('You discuss her training, and especially her sexual training\r\r"'); } var v1 = ''; var v2 = int(LastActionDone); if (v2 == 2) { DifficultyTouch -= 2; v1 = 'be touched'; } else { if (v2 == 3) { DifficultyLick -= 2; v1 = 'be licked'; } else { if (v2 == 4) { DifficultyFuck -= 2; if (Lesbian) { v1 = 'let me fuck you with a strap-on'; } else { v1 = 'be fucked'; } } else { if (v2 == 5) { DifficultyBlowjob -= 2; if (Lesbian) { v1 = 'lick me'; } else { v1 = 'give a blowjob'; } } else { if (v2 == 6) { DifficultyTitsFuck -= 2; if (Lesbian) { v1 = 'masturbate me'; } else { v1 = 'give a tits fuck'; } } else { if (v2 == 7) { DifficultyAnal -= 2; if (Lesbian) { v1 = 'let me fuck your ass with a strap-on'; } else { v1 = 'be ass fucked'; } } else { if (v2 == 8) { DifficultyMasturbate -= 2; v1 = 'masturbate in front of me'; } else { if (v2 == 9) { DifficultyDildo -= 2; v1 = 'use a dildo in front of me'; } else { if (v2 == 10) { DifficultyPlug -= 2; v1 = 'to wear an anal plug'; } else { if (v2 == 11) { DifficultyLesbian -= 2; if (Lesbian) { v1 = 'do a tribadism act with me'; } else { v1 = 'to lesbian sex'; } } else { if (v2 == 12) { DifficultyBondage -= 2; v1 = 'let me tie you up'; } else { if (v2 == 13) { DifficultyNaked -= 2; v1 = 'be naked for the day'; } else { if (v2 == 15) { DifficultyGangBang -= 2; v1 = 'be gang-banged'; } else { if (v2 == 16) { DifficultyLendHer -= 2; v1 = 'be loaned to another master or mistress'; } else { if (v2 == 17) { DifficultyPonygirl -= 2; v1 = 'become a ponygirl'; } else { if (v2 == 18) { DifficultySpank -= 2; if (Talent == 5) { if (WeaponType == 3) { v1 = 'be whipped'; } else { v1 = 'be hurt'; } } else { v1 = 'be spanked'; } } else { if (v2 == 19) { v1 = 'be in a threesome'; DifficultyThreesome -= 2; } else { if (v2 == 20) { v1 = 'do a 69'; DifficultyBlowjob -= 2; } else { if (v2 == 21) { v1 = 'be in group sex'; DifficultyGangBang -= 2; } else { if (v2 == 23) { v1 = 'be kissed'; } else { if (v2 == 24) { v1 = 'do a striptease'; DifficultyExhib -= 1; } else { if (v2 == 25) { v1 = 'be bathed in cum'; DifficultyGangBang -= 1; } } } } } } } } } } } } } } } } } } } } } } if (v1 != '') { AddText('Last night you agreed to ' + v1 + ', you are getting better and better, so thank you."'); } else { if (LastActionRefused != 0) { AddText('You are doing very well as a slave, but you must try to agree to do what I ask of you. I am proud to train you."'); } else { AddText('You are doing very well as a slave, I am proud to train you."'); } } SeePregnant(); FirstTimeTodayDiscuss = false; } function DoScold() { Beep(); NextGeneral._visible = true; DoneScold = true; DiscussOrdinary._visible = false; DiscussCongratulate._visible = false; DiscussScold._visible = false; if (SlaveGirl.DoScold() == true) { return undefined; } var v1 = ''; var v2 = int(LastActionRefused); if (v2 == 2) { DifficultyTouch -= 2; v1 = 'to be touched'; } else { if (v2 == 3) { DifficultyLick -= 2; if (Lesbian) { v1 = 'let me lick you'; } else { v1 = 'to be licked'; } } else { if (v2 == 4) { DifficultyFuck -= 2; if (Lesbian) { v1 = 'let me fuck you with a strap-on'; } else { v1 = 'to be fucked'; } } else { if (v2 == 5) { DifficultyBlowjob -= 2; if (Lesbian) { v1 = 'lick me'; } else { v1 = 'give a blowjob'; } } else { if (v2 == 6) { DifficultyTitsFuck -= 2; if (Lesbian) { v1 = 'masturbate me'; } else { v1 = 'to do a tits fuck'; } } else { if (v2 == 7) { DifficultyAnal -= 2; if (Lesbian) { v1 = 'let me fuck your ass with a strap-on'; } else { v1 = 'to be ass fucked'; } } else { if (v2 == 8) { DifficultyMasturbate -= 2; v1 = 'masturbate in front of me'; } else { if (v2 == 9) { DifficultyDildo -= 2; v1 = 'use a dildo in front of me'; } else { if (v2 == 10) { DifficultyPlug -= 2; v1 = 'wear an anal plug'; } else { if (v2 == 11) { DifficultyLesbian -= 2; if (Lesbian) { v1 = 'do a tribadism act with me'; } else { v1 = 'lesbian sex'; } } else { if (v2 == 12) { DifficultyBondage -= 2; v1 = 'be tied up'; } else { if (v2 == 13) { DifficultyNaked -= 2; v1 = 'be naked for the day'; } else { if (v2 == 15) { DifficultyGangBang -= 2; v1 = 'be gang-banged'; } else { if (v2 == 16) { DifficultyLendHer -= 2; v1 = 'be loaned to another Master or Mistress'; } else { if (v2 == 17) { DifficultyPonygirl -= 2; v1 = 'become a ponygirl'; } else { if (v2 == 18) { DifficultySpank -= 2; if (Talent == 5) { if (WeaponType == 3) { v1 = 'be whipped'; } else { v1 = 'be hurt'; } } else { v1 = 'be spanked'; } } else { if (v2 == 19) { v1 = 'be in a threesome'; DifficultyThreesome -= 2; } else { if (v2 == 20) { v1 = 'do a 69'; DifficultyBlowjob -= 2; } else { if (v2 == 21) { v1 = 'be in group sex'; DifficultyGangBang -= 2; } else { if (v2 == 23) { v1 = 'be kissed'; } else { if (v2 == 24) { v1 = 'do a striptease'; DifficultyExhib -= 1; } else { if (v2 == 25) { v1 = 'be bathed in cum'; DifficultyGangBang -= 1; } } } } } } } } } } } } } } } } } } } } } } if (GameDate > TrainingStart && v1 != '') { SetText('You discuss her failures of the previous night.\r\r"'); } else { SetText('You seriously discuss her training.\r\r"'); } if (v1 != '') { AddText('You refused to ' + v1 + ', that was very naughty. You have to learn to enjoy it."\r\r'); } else { AddText(SlaveName + ', you need to try harder and obey me and ' + ServantName + '"\r\r'); } VarJoy -= 1; if (OldLover == 1 || EventBoyfriend == 1) { VarMorality += 1; ServantSpeak('She promised she won\'t see her lover again. ' + ServantPronoun + ' hope she will do it.', true); } SeePregnant(); FirstTimeTodayDiscuss = false; } function DoLaterDiscussion() { if (Slavegirl.DoLaterDiscussion() == true) { return undefined; } AddText('You talk with ' + SlaveName + ' about light, inconsequential things. She generally enjoys this break from the rigours of her training\'s.'); VarJoy += 0.5; } function UpdateSupervision() { if (SuperviseYourself == 1) { PlanningDay.SupervisionText.htmlText = '<b>Personal Supervision</b>'; } else { PlanningDay.SupervisionText.htmlText = '<b>Assistant Supervision</b>'; } Supervise = SuperviseYourself == 1; } function SetCustomJobDetails(slabel, desc) { PlanningDay.SlaveShopLabel.htmlText = slabel; SlaveShopDescription = desc; } function ShowCustomJob() { ShowSlaveShop = 1; } function HideCustomJob() { ShowSlaveShop = 0; } function InitialiseNight() { Action1 = 0; Action2 = 0; Action3 = 0; Action4 = 0; Action5 = 0; Action6 = 0; SetText(''); Day = false; DonePlug = 0; DoneNaked = 0; SetButtonState(PlanningNightOther.NakedButton, false); TotalAction = 0; TotalActionMax = 3; if (VarConstitutionRounded > 30) { ++TotalActionMax; } if (VarConstitutionRounded > 60) { ++TotalActionMax; } if (VarConstitutionRounded > 90) { ++TotalActionMax; } if (PlugInserted == 1 && PonyTailWorn == 0) { PlugInserted = 0; } SetButtonState(PlanningNightSex.PlugButton, PlugInserted == 1, PlugOK == 1 || PonyTailOK == 1); NextEvent._visible = false; HideStatChangeIcons(); UpdateSlave(); HideImages(); HideBackgrounds(); DiscussOrdinary._visible = false; DiscussCongratulate._visible = false; DiscussScold._visible = false; HidePeople(); HideSlaveActions(); HideRobes(); NextGeneral._visible = false; PlanningNight.BtnActionsLeft._visible = false; PlanningNight.BtnActionsRight._visible = true; PlanningNight.ActionsLabel.text = 'Other Actions'; Backgrounds.ShowNight(); PlanningNightSex.BondageButton._visible = BDSMOn; PlanningNightOther.PonygirlButton._visible = PonygirlAware > 0; SetButtonState(PlanningNightOther.MasterButton, DoneMaster == 1); SetButtonState(PlanningNightOther.PonygirlButton, DonePonygirl == 1, DoneMaster == 1); } function SetNightActions(enum1, enum2, enum3, enum4, enum5, enum6) { InitialiseNight(); if (enum1 != undefined && enum1 != 0) { AddDayNightAction(enum1); } if (enum2 != undefined) { AddDayNightAction(enum2); } if (enum3 != undefined) { AddDayNightAction(enum3); } if (enum4 != undefined) { AddDayNightAction(enum4); } if (enum5 != undefined) { AddDayNightAction(enum5); } if (enum6 != undefined && TotalActionMax > 5) { AddDayNightAction(enum6); } StartNight(); } function AddDayNightAction(actnum) { if (actnum == 0) { return undefined; } var v2 = actnum < 0; actnum = Math.abs(actnum); ++TotalAction; if (Day && !SlaveDay) { SMAction1 = actnum; return undefined; } if (actnum == 13 && !Day) { SetButtonState(PlanningNightOther.NakedButton, true); DoneNaked = 1; NakedChoice = 0; } if (actnum == 10 && !Day) { SetButtonState(PlanningNightSex.PlugButton, true); DonePlug = 1; } if (actnum == 14 && !Day) { SetButtonState(PlanningNightOther.MasterButton, true); } if (actnum == 17 && !Day) { SetButtonState(PlanningNightOther.PonygirlButton, true); } if (TotalAction == 1) { Action1 = actnum; } else { if (TotalAction == 2) { Action2 = actnum; } else { if (TotalAction == 3) { Action3 = actnum; } else { if (TotalAction == 4 && TotalActionMax > 3) { Action4 = actnum; } else { if (TotalAction == 5 && TotalActionMax > 4) { Action5 = actnum; } else { Action6 = actnum; } } } } } if (!v2) { if (Day && SlaveDay && (actnum == 1.1 || actnum == 1.2)) { Money(-25); } if (Day && SlaveDay) { if (GetActCost(actnum) > 0) { Money(GetActCost(actnum) * -1); } } else { if (GetSexActCost(actnum) > 0) { Money(GetSexActCost(actnum) * -1); } } if (actnum == 19.1 && Day || actnum == 22.1 && !Day) { ++TotalBooksRead; } if (actnum == 19.2 && Day || actnum == 22.2 && !Day) { ++TotalPoetryRead; } if (actnum == 19.3 && Day || actnum == 22.3 && !Day) { ++TotalScrollsRead; } if (actnum == 19.4 && Day || actnum == 22.4 && !Day) { ++TotalScriptureRead; } if (actnum == 19.5 && Day || actnum == 22.5 && !Day) { ++TotalKamasutraRead; } UpdateSlave(); } } function ClearAction(act, type) { if (type != undefined) { switch (act) { case 1: if (Action1 != type) { return undefined; } break; case 2: if (Action2 != type) { return undefined; } break; case 3: if (Action3 != type) { return undefined; } break; case 4: if (Action4 != type) { return undefined; } break; case 5: if (Action5 != type) { return undefined; } break; case 6: if (Action6 != type) { return undefined; } } } if (act == 1) { Action1 = Action2; } if (act <= 2) { Action2 = Action3; } if (act <= 3) { Action3 = Action4; } if (act <= 4) { Action4 = Action5; } if (act <= 5) { Action5 = Action6; } Action6 = 0; } function StartNight() { if (DonePonygirl == 1) { AddDayNightAction(12); } if (Talent == 8) { if (int(Math.random() * 2) == 1) { AddDayNightAction(5); } else { AddDayNightAction(4); } } if (Talent == 10) { AddDayNightAction(7); } if (TotalActionMax == TotalAction) { ActionChoice = 0; DoGeneralYes(); return undefined; } PlanningNight._visible = true; PlanningNightSex._visible = true; FirstTimeTodayBreak = false; ServantSpeakStart('Good evening ' + Master + '! It is now time for us to train her sexuality and submission.\r\rYou can have her do ' + (TotalActionMax - TotalAction)); if (TotalAction != 0) { AddText(' more'); } if (TotalActionMax - TotalAction > 1) { AddText(' trainings'); } else { AddText(' training'); } if (DonePonygirl == 1) { AddText(', she is a Ponygirl so bondage is selected for the first action'); } PersonSpeakEnd('.'); if (Talent == 8) { AddText('\r\rYou desire to cum in her pussy or mouth, so you will do either of such to her.'); } else { if (Talent == 10) { AddText('\r\rYour cock feels a strong desire to fuck her ass and realise you cannot control it. You will ass fuck her tonight once.'); } } SlaveGirl.StartNight(); } function Refused(Action, slave, servant, Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special) { HideBackgrounds(); if (Action != 0) { LastActionRefused = Action; } if (SlaveGirl.ShowRefusedAction(Action, slave, servant, Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special) != true) { if (Talent == 2) { Points(Charisma * 1.5, Sensibility * 1.5, Refinement * 1.5, Intelligence * 1.5, Morality * 1.5, Constitution * 1.5, Cooking * 1.5, Cleaning * 1.5, Conversation * 1.5, BlowJob * 1.5, Fuck * 1.5, Temperament * 1.5, Nymphomania * 1.5, Obedience * 1.5, Libido * 1.5, Reputation * 1.5, Fatigue * 1.5, Joy * 1.5, Love * 2, Special * 1.5); } else { Points(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special); } if (slave != '') { SlaveSpeak(slave, true); if (servant != '') { AddText('\r\r'); } } if (servant != '') { ServantSpeak(servant, true); } } Bloop(); } function SexActionsButton() { if (PlanningNightOther._visible) { PlanningNightSex._visible = true; PlanningNightOther._visible = false; PlanningNight.BtnActionsLeft._visible = false; PlanningNight.BtnActionsRight._visible = true; PlanningNight.ActionsLabel.text = 'Other Actions'; } else { PlanningNightOther._visible = true; PlanningNightSex._visible = false; PlanningNight.BtnActionsLeft._visible = true; PlanningNight.BtnActionsRight._visible = false; PlanningNight.ActionsLabel.text = 'Sex Actions'; } } function PressSexActButton() { DoSexActions(this._parent.curract, !this._parent.NotAvailable._visible); } function SexPoints(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special) { if (SexAction != 1) { LastActionDone = SexAction; } tempstr = ''; if (SexAction == 2) { tempstr = 'be touched'; } else { if (SexAction == 3) { tempstr = 'be licked'; } else { if (SexAction == 4) { if (Lesbian) { tempstr = 'be strap-on fucked'; } else { tempstr = 'be fucked'; } } else { if (SexAction == 5) { if (Lesbian) { tempstr = 'lick me'; } else { tempstr = 'give a blowjob'; } } else { if (SexAction == 6) { if (Lesbian) { tempstr = 'masturbate me'; } else { tempstr = 'give a tit fuck'; } } else { if (SexAction == 7) { if (Lesbian) { tempstr = 'be strap-on fucked in the ass'; } else { tempstr = 'be fucked in the ass'; } } else { if (SexAction == 8) { tempstr = 'masturbate'; } else { if (SexAction == 9) { tempstr = 'use a dildo'; } else { if (SexAction == 10) { tempstr = 'wear an ' + PlugType; } else { if (SexAction == 11) { if (Lesbian) { tempstr = 'do a tribadism act with another woman'; } else { tempstr = 'have sex with another woman'; } } else { if (SexAction == 12) { tempstr = 'be tied up'; } else { if (SexAction == 13) { tempstr = 'be naked for the day'; } else { if (SexAction == 15) { DifficultyGangBang -= 2; tempstr = 'be gang-banged'; } else { if (SexAction == 16) { tempstr = 'be loaned to another ' + Master; } else { if (SexAction == 18) { if (Talent == 5) { if (WeaponType == 3) { tempstr = 'be whipped'; } else { tempstr = 'be hurt'; } } else { tempstr = 'be spanked'; } } else { if (SexAction == 19) { tempstr = 'be in a threesome'; } else { if (SexAction == 20) { tempstr = 'do a 69'; } else { if (SexAction == 21) { tempstr = 'be in an orgy'; } else { if (SexAction == 23) { tempstr = 'be kissed'; } else { if (SexAction == 24) { tempstr = 'do a striptease'; } else { if (SexAction == 25) { tempstr = 'be bathed in cum'; } } } } } } } } } } } } } } } } } } } } } Points(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special); if (ZodaiEffecting > 0) { Points(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special); } if (IshinaiEffecting == 1) { AddTextToStart('Controlled by the drug, she submits to ' + tempstr + '.\r\r'); return false; return true; } if (DoreiEffecting == 1) { AddTextToStart('The drug makes her enthusiastically agree to ' + tempstr + '.\r\r'); return false; } return true; } function DoSexActions(type, available) { if (available == undefined) { available = !(GetSexActButton(type)).NotAvailable._visible; } HideYesNoButtons(); ResetQuestions(); if (VarGold < GetSexActCost(type)) { ServantSpeak('You don\'t have enough money.'); Bloop(); return undefined; } YesNoFlag = 1; Beep(); ActionChoice = type; if (SlaveGirl.DoSexActions(type, available) == true) { return undefined; } switch (type) { case 1: ServantSpeak('You will do nothing and leave her alone, for a while or for the rest of the night'); AskHerQuestions(500, 505, 999, 0, 'A little while', 'The rest of the night', 'Forget it', '', 'How long will you leave her alone?'); break; case 2: if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { } else { ServantSpeakStart(ServantPronoun + ' can have a female slave caress her and stroke her cock, or do you want to do it yourself.'); if (TotalLesbian == 0) { PersonSpeakEnd(' She isn\'t accustomed to lesbian acts yet so may resist the intimate touch of another woman. It will help her to getting used to such touches though.'); } else { PersonSpeakEnd(); } AskHerQuestions(500, 501, 504, 0, 'You will do it yourself', 'A female slave', 'Forget it', '', 'Who will touch ' + SlaveName + '?'); if (Gender != 1 && Talent != 9) { ServantSpeakStart(ServantPronoun + ' will have a female slave caress her and stroke her cock.'); if (TotalLesbian == 0) { PersonSpeakEnd(' She isn\'t accustomed to lesbian acts yet so she may resist the intimate touch of another woman. It will help her getting used to such touches though.'); } else { PersonSpeakEnd(); } AddText('\r\rDo you want this done?'); } else { if (Talent == 5) { ServantSpeakStart('You will pinch her nipples, touch her and lightly slap her to increase her sensitivity.'); if (TotalLesbian == 0) { PersonSpeakEnd(' She isn\'t accustomed to lesbian acts yet so she may resist the intimate touch of another woman. It will help her getting used to such touches though.'); } else { PersonSpeakEnd(); } AddText('\r\rYou want to do this of course, but will you now?'); ActionChoice = 2.1; } else { if (Gender != 1 && !Lesbian) { ServantSpeakStart('You will touch her and increase her sensitivity, or you can have a male slave do it.'); if (TotalLesbian == 0) { PersonSpeakEnd(' She isn\'t accustomed to lesbian acts yet so she may resist the intimate touch of another woman. It will help her getting used to such touches though.'); } else { PersonSpeakEnd(); } AskHerQuestions(500, 502, 504, 0, 'You will do it yourself', 'A male slave', 'Forget it', '', 'Who will touch ' + SlaveName + '?'); } else { ServantSpeak('You will touch her and make her more sensitive.'); AddText('\r\rDo you want to do this?'); break; case 3: if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { } else { ServantSpeak('Her cock changes this act, so ' + ServantPronoun + ' should have a female slave give her a blowjob, or do you want to do it personally.'); AskHerQuestions(500, 501, 504, 0, 'You will do it yourself', 'A female slave', 'Forget it', '', 'Who will give ' + SlaveName + ' a blowjob?'); if (Gender != 1 && Talent != 9) { ServantSpeak('Her cock changes this act, so ' + ServantPronoun + ' will have another slave give her a blowjob.'); AddText('\r\rDo you want this done?'); ActionChoice = 3.2; } else { if (Gender != 1 && !Lesbian) { ServantSpeak('You will order a male slave to do cunnilingus to her.'); AddText('\r\rDo you want to proceed?'); ActionChoice = 3.4; } else { ServantSpeak('You will do cunnilingus to her.'); AddText('\r\rDo you want to do this?'); } break; case 4: if (Gender == 2) { if (Lesbian) { ActionChoice = 4.1; ServantSpeak('You will fuck her with a strap-on.'); } else { ActionChoice = 4.2; ServantSpeak('You will have a male slave fuck her.'); } AddText('\r\rDo you want this done?'); } else { if (LoveAccepted == 1 || LoveAccepted == 10) { ServantSpeak('You will make love to her.'); } else { ServantSpeak('You will fuck her pussy.'); } AddText('\r\rDo you want to do this?'); } break; case 5: if (Lesbian) { ServantSpeak('She will lick your pussy and bring you to orgasm.'); } else { if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { SetText(SlaveName + ' looks excited.\r\r'); ServantSpeak('No, you will give a blowjob, not receive one.', true); } else { if (Talent == 8 && TotalBlowjob > 0) { SetText('She appears quite eager when you mention a blowjob.\r\r'); } else { SetText(''); } ServantSpeak('To do a blowjob will belittle her a bit but it will excite her.', true); } } AddText('\r\rDo you want her to do this?'); break; case 6: if (Gender != 2) { ServantSpeak('She will stimulate you with her tits and make you cum.'); } else { if (Lesbian) { ServantSpeak('She will caress your breasts and rub your pussy, taking you to orgasm.'); } else { ServantSpeak('She will stimulate a male slave with her tits and male him cum.'); } } AddText('\r\rDo you want her to do this?'); break; case 7: if (Gender == 2) { if (Lesbian) { ServantSpeak('You will fuck her in the ass with a strap-on.'); } else { ServantSpeak('You will have a male slave fuck her in the ass.'); } AddText('\r\rDo you want to proceed?'); } else { ServantSpeak('You will fuck her in the ass.'); AddText('\r\rDo you want to do this?'); } break; case 8: if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { ServantSpeak('You\'ll give her the order to masturbate in front of you. Her cock is very sensitive and ' + ServantPronoun + ' don\'t think we can stop her from cumming.'); } else { ServantSpeak('You\'ll give her the order to masturbate in front of you but not to orgasm.'); } AddText('\r\rDo you want her to do this?'); break; case 9: if (ImprovedDildoOK == 0 && DildoOK == 0 && PonyTailOK == 0) { ServantSpeak('You haven\'t bought her a dildo to use!'); Bloop(); return undefined; } ServantSpeak('You will tell her to use a dildo in front of you but not to orgasm.'); AddText('\r\rDo you want her to do this?'); break; case 10: if (PlugOK == 0) { ServantSpeak('You haven\'t bought her an anal plug use!'); Bloop(); return undefined; } if (PonyTailWorn == 1) { if (Catgirl) { ServantSpeak('She is already wearing a cat tail in her ass! It will not fit.'); } else { ServantSpeak('She is already wearing a ponygirl tail in her ass! It will not fit.'); } Bloop(); return undefined; } else { if (DonePlug != 0) { ServantSpeak('You cannot ask her twice to wear a plug tomorrow.'); Bloop(); return undefined; } } ServantSpeak('She will have a plug in her ass tomorrow.'); AddText('\r\rDo you want her to?'); break; case 11: if (Talent == 9) { AddText('Women are for serving hermaphrodites and their cocks. We will not do this sort of training.'); Bloop(); return undefined; } else { if (Gender == 2) { if (Lesbian) { ServantSpeak('You will orgasm by rubbing your pussies and clits together.'); } else { ServantSpeak('You will make love with her.'); } AddText('\r\rDo you want to do this?'); } else { ServantSpeak('She will make love with another female slave.'); AddText('\r\rDo you want her to do this?'); } } break; case 12: if (RopesOK == 0 && SilkenRopesOK == 0) { ServantSpeak('You haven\'t bought any bondage gear!'); Bloop(); return undefined; } ServantSpeak('Tying her up can excite her.'); AddText('\r\rDo you want to do this?'); break; case 13: if (DoneNaked != 0) { ServantSpeak('You cannot ask her twice to be naked tomorrow.'); Bloop(); return undefined; } ServantSpeak('Tomorrow, she will be naked all day, even when going out.'); AddText('\r\rDo you want her to do this?'); break; case 14: if (DoneMaster == 0) { if (IshinaiEffecting == 1 || DoreiEffecting == 1) { ServantSpeak('This action has no effect since she is on drugs.'); Bloop(); return undefined; } ServantSpeak('You will ask her to call you \'' + Master + '\'\r(This action can be done only once)'); AddText('\r\rDo you want her to do this?'); } else { ServantSpeak('She has already acknowledged you as her ' + Master + '.'); Bloop(); return undefined; } break; case 15: if (Lesbian) { ServantSpeak('She will be taken by many women at the same time, using strap-ons, tongues, however they like.'); } else { if (Talent == 9) { ServantSpeak('She will be taken by many hermaphrodites at the same time, servicing their cocks as she should.'); } else { ServantSpeak('She will be taken by many men at the same time.'); } } AddText('\r\rDo you want to do this?'); break; case 16: if (Lesbian || Talent == 9) { ServantSpeak('You will give her to a Mistress she doesn\'t know who can do anything she wants to her.'); } else { ServantSpeak('You will give her to someone she doesn\'t know, who has the right to do anything he wants to her.'); } AddText('\r\rDo you want to do this?'); break; case 17: if (DoneMaster == 0) { ServantSpeak('Being a ponygirl requires her to be completely submissive to you. She must have already called you ' + Master + ' first.'); Bloop(); return undefined; } if (IshinaiEffecting == 1 || DoreiEffecting == 1) { ServantSpeak('This action has no effect since she is on drugs.'); Bloop(); return undefined; } if (DonePonygirl == 1) { ServantSpeak('She already is your pony-slave.'); Bloop(); return undefined; } ServantSpeak('You will have her become a Ponygirl\r(This action needs certain items and can be cancelled)'); AddText('\r\rDo you want her to do this?'); break; case 18: if (Talent == 5) { if (WeaponType == 3) { ServantSpeak('You will whip her, making sure to lecture her about her failings. If done sparingly it can arouse her and she may correct her ways.'); AddText('\r\r' + ServantPronoun + ' know you want to do this, but will you?'); } else { ServantSpeak('You will inflict pain to her, making sure to lecture her about her failings. If done sparingly she may correct her ways.'); AddText('\r\r' + ServantPronoun + ' know you want to do this, but will you?'); } } else { ServantSpeak('You will spank her to discipline and arouse her. It is best done if she has been naughty. She will object if you do this too much.'); AddText('\r\rDo you want her to do this?'); } break; case 19: if (Gender == 2) { if (Lesbian) { ServantSpeak('You will have sex with ' + SlaveName + ' and another female slave.'); } else { ServantSpeak('You will have sex with ' + SlaveName + ' and another male slave.'); } } else { ServantSpeak('You will have sex with ' + SlaveName + ' and another female slave.'); } AddText('\r\rDo you want to do this?'); break; case 20: if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { } else { ServantSpeakStart(ServantPronoun + ' can have a female slave give her a blowjob while she licks the slave, or do you want to do it yourself.'); if (TotalLesbian == 0) { PersonSpeakEnd(' She isn\'t accustomed to lesbian acts yet so she may resist the intimate touch of another woman. It will help her getting used to such touches though.'); } else { PersonSpeakEnd(); } AskHerQuestions(500, 501, 504, 0, 'You will do it yourself', 'A female slave', 'Forget it', '', 'Who will 69 with ' + SlaveName + '?'); if (Gender != 1) { ServantSpeak('As ' + SlaveName + ' has a cock you will have a female slave give her a blowjob while she licks the slave.'); AddText('\r\rDo you want her to do this?'); } else { if (Gender == 2) { if (Lesbian) { ServantSpeak('You will have ' + SlaveName + ' do cunnilingus to you while you lick her.'); } else { ServantSpeak('You will have ' + SlaveName + ' give a blowjob to a male slave while he licks her.'); } AddText('\r\rDo you want this done?'); } else { ServantSpeak('You will have ' + SlaveName + ' give you a blowjob while you lick her.'); AddText('\r\rDo you want to do this?'); } break; case 21: ServantSpeak('A group people, yourself and ' + SlaveName + ' have sex mixing partners as desired.'); AddText('\r\rDo you want to do this?'); break; case 22: if (TotalBooks + TotalPoetry + TotalScripture + TotalKamasutra + TotalScrolls == 0) { ServantSpeak('She does not have any books to read.'); Bloop(); return undefined; } else { if (PlanningNightOther.ReadButton.NotAvailable._visible) { ServantSpeak('She has read all of the books you have bought her.'); Bloop(); return undefined; } else { ActionChoice = 22; ServantSpeakStart('She will read '); if (TotalScrolls > TotalScrollsRead) { AddQuestion(502, 'A Scroll'); } if (TotalScripture > TotalScriptureRead) { AddQuestion(503, 'A book of Scripture'); } if (TotalKamasutra > TotalKamasutraRead) { AddQuestion(504, 'A book of the Kamasutra'); } if (TotalBooks * 2 > TotalBooksRead) { AddQuestion(500, 'A Science Book'); } if (TotalPoetry * 2 > TotalPoetryRead) { AddQuestion(501, 'A Poetry Book'); } if (EvChoice2 == 0) { PersonSpeakEnd((AskQuestions.Question1Text.text.substr(3)).toLowerCase()); ActionChoice = 22 + (EvChoice1 - 499) / 10; } else { PersonSpeakEnd('either of the following,'); ShowQuestions('Which book will she read?'); } } } break; case 23: ServantSpeakStart('She must be able to passionately kiss anyone her owner asks her to. Will she kiss you'); if (!Lesbian) { if (Gender == 2) { PersonSpeakEnd(' or a male slave?'); } else { if (Gender == 1) { PersonSpeakEnd(' or a female slave?'); } else { PersonSpeakEnd('?'); AddText('\r\rYou do not want her to kiss anyone else.'); } } } else { PersonSpeakEnd('?'); } AddText('\r\rDo you want to do this?'); if (!Lesbian && Gender != 3) { AskHerQuestions(500, 501, 504, 0, 'You will kiss her', (Gender == 2) ? 'A male slave' : 'a female slave', 'Forget it', '', 'Who will kiss her?'); } break; case 24: ServantSpeak('As a slave she will be called upon to entertain and arouse others. ' + SlaveName + ' will perform a seductive striptease for you.'); AddText('\r\rDo you want her to do this?'); break; case 25: if (Lesbian) { ServantSpeak('This is not a type of training for lesbians.'); Bloop(); return undefined; } else { if (Gender != 2) { if (Gender == 3) { ServantSpeak('A group of men and hermaphrodites, including yourself will cum all over ' + SlaveName + ', a belittling and submissive act for her.'); } else { ServantSpeak('A group of men, including yourself will cum all over ' + SlaveName + ', a belittling and submissive act for her.'); } } else { ServantSpeak('A group of men will cum all over ' + SlaveName + ', a belittling and submissive act for her.'); } AddText('\r\rDo you want to do this?'); } } } } } } } } } } if (AskQuestions._visible == false) { ShowYesNoButtons(); } SlaveGirl.AfterDoSexActions(ActionChoice, available); } function GetSexActButton(type) { switch (type) { return null; case 1: return PlanningNightOther.NothingButton; case 2: return PlanningNightSex.TouchButton; case 3: return PlanningNightSex.LickButton; case 4: return PlanningNightSex.FuckButton; case 5: return PlanningNightSex.BlowjobButton; case 6: return PlanningNightSex.TitsFuckButton; case 7: return PlanningNightSex.AssFuckButton; case 8: return PlanningNightSex.MasturbateButton; case 9: return PlanningNightSex.DildoButton; case 10: return PlanningNightSex.PlugButton; case 11: return PlanningNightSex.LesbianButton; case 12: return PlanningNightSex.BondageButton; case 13: return PlanningNightOther.NakedButton; case 14: return PlanningNightOther.MasterButton; case 15: return PlanningNightSex.GangBangButton; case 16: return PlanningNightOther.LendButton; case 17: return PlanningNightOther.PonygirlButton; case 18: return PlanningNightOther.SpankButton; case 19: return PlanningNightSex.ThreesomeButton; case 20: return PlanningNightSex.S69Button; case 21: return PlanningNightSex.OrgyButton; case 22: return PlanningNightOther.ReadButton; case 23: return PlanningNightOther.KissButton; case 24: return PlanningNightOther.StripButton; case 25: return PlanningNightSex.CumBathButton; } return null; } function SetSexActButtonState(type, tick, available, actlabel, cost) { var v1 = GetSexActButton(type); SetButtonState(v1, tick, available, actlabel, type, PressSexActButton, cost); } function GetSexActCost(type) { return (GetSexActButton(type)).cost; } function SetSexActCost(type, acost) { (GetSexActButton(type)).cost = acost; } function PlanningNightCode(Action) { SexAction = Action; Action = int(Action); ClipRoom._visible = true; DickgirlChangable = SlaveGirl.IsDickgirl() || int(Math.random() * 100) < DickgirlRate; DickgirlChanged = false; UseGeneric = int(Math.random() * 5) == 1; AppendActText = true; ByYou = true; SexPosition = 0; SetText(''); StandardDGText = true; NextGeneral._visible = true; Beep(); if (SlaveGirl.PlanningNightCode(Action) != true) { if (Action == 1) { FunctionSexActNothing(); } else { if (Action == 2) { FunctionTouch(); } else { if (Action == 3) { FunctionLick(); } else { if (Action == 4) { FunctionFuck(); } else { if (Action == 5) { FunctionBlowjob(); } else { if (Action == 6) { FunctionTitFuck(); } else { if (Action == 7) { FunctionAnal(); } else { if (Action == 8) { FunctionMasturbate(); } else { if (Action == 9) { FunctionDildo(); } else { if (Action == 10) { FunctionPlug(); } else { if (Action == 11) { FunctionLesbian(); } else { if (Action == 12) { FunctionBondage(); } else { if (Action == 13) { FunctionNaked(); } else { if (Action == 14) { FunctionMaster(); } else { if (Action == 15) { FunctionGangBang(); } else { if (Action == 16) { FunctionLendHer(); } else { if (Action == 17) { FunctionPonygirl(); } else { if (Action == 18) { FunctionSpank(); } else { if (Action == 19) { FunctionThreesome(); } else { if (Action == 20) { Function69(); } else { if (Action == 21) { FunctionGroup(); } else { if (Action == 22) { ChoreReadBook(); } else { if (Action == 23) { FunctionKiss(); } else { if (Action == 24) { FunctionStripTease(); } else { if (Action == 25) { FunctionCumBath(); } } } } } } } } } } } } } } } } } } } } } } } } } } SlaveGirl.AfterSexAction(SexAction); } function FunctionSexActNothing() { if (Aroused) { SlaveGirl.ShowSexActNothing(); } else { SlaveGirl.ShowBreak(); } ++TotalNothing; if (AppendActText) { if (IshinaiEffecting == 1) { AddText('Because of the drug, you don\'t know how she feels.'); } else { if (DoreiEffecting == 1) { AddText('The drug makes her enjoy the break.'); } else { if (VarLibidoRounded < 30) { AddText('This break makes her feel better.'); } else { if (VarLibidoRounded < 50) { AddText('She seems to want to fuck more and more.'); } else { if (VarLibidoRounded < 80) { AddText('This break seems like a torture to her.'); } else { AddText('She came to beg you to fuck her.'); } } } } } } if (DickgirlChanged) { if (StandardDGText) { AddTextToStart('When you look in you see she has changed again and is playing with her cock...\r\r'); } if (RulesTouchHerself == 0) { BadGirl = 1; } } if (VarLibidoRounded < 30) { if (DemonicBraWorn == 1 || DemonicPendantWorn == 1) { AddText('\r\rHer dreams are filled with demonic visions of couples after couples fucking each other.'); ClipSexDream.gotoAndStop(int(Math.random() * 3) + 1); ClipSexDream._visible = true; } if (VibratorPantiesWorn == 1 && House != 7) { if (ClipSexDream._visible == false) { AddText('\r'); ClipSexDream.gotoAndStop(int(Math.random() * 3) + 1); ClipSexDream._visible = true; } AddText('\rThe Vibrator Panties keep her aroused and she keeps thinking about sex.'); } } var v3 = Math.ceil(SexAction * 10) - 10; var v2 = (House == 7) ? -5 : -3; var v1 = 0; while (v1 < v3) { if (VarLibidoRounded > 29) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, int(VarLibidoRounded / 5), 0, v2, 0, 0, 0); if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, int(VarLibidoRounded / 5), 0, v2, 0, 0, 0); } } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v2, 0, 0, 0); } ++v1; } } function Function69() { if (TestObedience(DifficultyBlowjob + 3, SexAction)) { SlaveGirl.ShowSexAct69(); if (UseGeneric) { Generic.ShowSexAct69(); } ++Total69; if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 3, 0, 0, 0, 0, 0)) { if (AppendActText) { if (IsDickgirl()) { if (SexAction == 20.1) { if (Gender == 3) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy giving you a blowjob while you gives her a blowjob, focusing too much on her own pleasure. She does eventually cum but fails to make you cum.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and loves the blowjob you give, but still remembers to suck your cock. She easily cums with a cry and then concentrates on sucking your cock until you cum.'); } else { if (VarObedienceRounded < 70) { AddText('She loves your lips and tongue on her cock and sucks your cock enthusiastically. She cums powerfully, twisting her hips and cock, making sure she cums into your mouth! Her cock stays somewhat hard as she licks and sucks you. Gasping as you approach orgasm you tell her to take all your cum in her mouth. You cry and cum into her mouth and she awkwardly swallows all your cum.\r\rWhen you stop cumming her hard cock is insistently prodding at your mouth, ready for another bout.'); } else { AddText('You both expertly bring each other to a strong, simultaneous orgasm, your cum flooding into each others mouths.\r\rHer cock stays hard and she continues sucking your cock and begs you to suck her cock again. You decide to indulge her and lick and suck her cock more. Quicker than last time she cums with a muffled cry. You try to pull her cock out of your mouth and to one side but she pushes a little and her cum pumps glob after glob of thick cum directly into your mouth.\r\rYou barely hold the large amount of her cum in your mouth as you cum, pumping your cum into her mouth.\r\rYou sit and move around and quickly kiss her, planning to drop her cum in her own mouth, but her mouth is full! Your cum and hers mingle and flood over your faces and breasts. You both swallow cum, uncertain whose it is....'); } } } } else { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy licking your pussy, but does enjoy your blowjob. She seems to focus on her own feelings, barely licking you, eventually cumming. She stops licking you and lies back, you were nowhere near orgasm.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and loves the blowjob you give, but still remembers to lick you with skill. She easily cums with a cry and then concentrates on licking you to orgasm.'); } else { if (VarObedienceRounded < 70) { AddText('She loves your lips and tongue on her cock and licks you enthusiastically. She cums powerfully, twisting her hips and cock, making sure she cums into your mouth! Her cock stays somewhat hard as she licks and sucks you to orgasm.\r\rWhen you stop cumming her hard cock is insistently prodding at your mouth, ready for another bout.'); } else { AddText('You both expertly bring each other to a strong, simultaneous orgasm, her cum flooding into your mouth.\r\rHer cock stays hard and she continues licking you and begs you to suck her cock again. You decide to indulge her and lick and suck her cock more. Quicker than last time she cums with a muffled cry. You try to pull her cock out of your mouth and to one side but she pushes a little and her cum pumps glob after glob of thick cum directly into your mouth.\r\rYou barely hold the large amount of her cum in your mouth and move around and quickly kiss her, letting all the cum flow into her mouth. She awkwardly swallows and you feel her hardening cock pressing against your pussy. You pull free wiping her cum from your face, leaving this training for now.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy licking the girl while she gives her a blowjob, focusing too much on her own pleasure. She does eventually cum but fails to bring the girl to orgasm.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and likes the blowjob very much. She cums with a cry and licks and sucks the girl to orgasm.'); } else { if (VarObedienceRounded < 70) { AddText('She loves the girl giving her blowjob and skillfully licks the girl. She cums powerfully, gouts of cum filling and then overflowing the girls mouth, who gags a little as she appears to orgasm as well.\r\rAfter cleaning herself the girl insists on doing it again, licking her lips as she asks.'); } else { AddText('They both expertly bring each other to a strong, simultaneous orgasm, her cum flooding in huge globs into the girls mouth. The girl does her best to swallow what she can, but some overflows and covers her face.\r\rYou order ' + SlaveName + ' to lick the slave\'s face clean...'); } } } } } else { if (Gender == 2) { if (Lesbian) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy licking your pussy while being licked by you.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and likes you licking her very much.'); } else { if (VarObedienceRounded < 70) { AddText('Looks like she loves to lick you pussy and delights in being licked.'); } else { AddText('Looking at her face, she can\'t stop licking you and loves being licked. She tried to ensure you both reach orgasm at once.'); } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy sucking the man\'s cock and being licked.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and likes the male slave licking her very much.'); } else { if (VarObedienceRounded < 70) { AddText('Looks like she loves to suck the slave\'s cock and delights in him licking her.'); } else { AddText('Looking at her face, she can\'t stop sucking the slave\'s cock and loves him licking her.'); } } } } } else { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy sucking you and being licked.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and likes you licking her very much.'); } else { if (VarObedienceRounded < 70) { AddText('Looks like she loves to suck you and delights in you licking her.'); } else { AddText('Looking at her face, she can\'t stop sucking you and loves your licking her.'); } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } } } } if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 2) == 1) { AddText('\r\rActually, while her clit is licked you see it grow large and very erect almost like a small cock. She screams in pleasure and starts cumming, and does not stop for as long as her clit is sucked and licked.'); } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('You see she has transformed and has a cock. You get a female slave to do the 69 with her and giving her a blowjob.\r\r'); } else { if (Talent == 8) { DickgirlRate += 1; AddText('\r\rShe savours your cum, licking her lips.'); } } } else { Refused(20, 'No way', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0); } } function FunctionAnal() { if (TestObedience(DifficultyAnal, SexAction)) { ++NumAnalSinceFucked; SlaveGirl.ShowSexActAnal(); if (UseGeneric) { Generic.ShowSexActAnal(); } ++TotalAnal; if (TotalAnal == 1) { DifficultyAnal -= 5; } StartFucking(1); if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 2, 0, 0, 0)) { if (AppendActText) { if (Gender == 2) { if (Lesbian) { if (TotalAnal < 5) { AddText('It\'s still kind of hard for you to insert the strap-on into her ass.'); } else { if (TotalAnal < 10) { AddText('It becomes easier and easier as she learns to relax. She is starting to like it.'); } else { if (TotalAnal < 20) { AddText('You take her easily, she almost came with you.'); } else { AddText('Judging by her screams, she enjoys it and cums as you do.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0); } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (TotalAnal < 5) { AddText('It\'s still kind of hard for the slave to enter her ass.'); } else { if (TotalAnal < 10) { AddText('It becomes easier and easier as she learns to relax. She is starting to like it.'); } else { if (TotalAnal < 20) { AddText('The slave takes her easily, she almost came.'); } else { AddText('Judging by her screams, she enjoys it and cums as well as the slave.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0); } } } ByYou = false; } } else { if (TotalAnal < 5) { AddText('It\'s still kind of hard to go into her.'); } else { if (TotalAnal < 10) { AddText('It becomes easier and easier as she learns to relax. She is starting to like it.'); } else { if (TotalAnal < 20) { AddText('You take her easily, she almost came.'); } else { AddText('Judging by her screams, she enjoys it and cums with you.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0); } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 3) < 2) { if (ByYou) { AddText('\r\rWhile fucking her ass you see ' + SlaveName + '\'s clit grow large and very erect almost like a small cock. She screams how it is throbbing and cums intensely.'); } else { AddText('\r\rWhile the slave fucks her ass you see ' + SlaveName + '\'s clit grow large and very erect almost like a small cock. She screams how it is throbbing and cums intensely.'); } } else { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { if (ByYou) { AddTextToStart('As you penetrate her ass, she cries out and you see she has suddenly grown a large cock. You continue...\r\r'); } else { AddTextToStart('As the slave penetrates her ass, she cries out and you see she has suddenly grown a large cock. You tell the slave to continue...\r\r'); } } } } } else { Refused(17, 'That\'s dirty, ' + SlavePronoun + ' won\'t do it!', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -3, -2, 0, 0, -1, -3, 0); } } function FunctionBlowjob() { if (TestObedience(DifficultyBlowjob, SexAction)) { SlaveGirl.ShowSexActBlowjob(); if (UseGeneric) { Generic.ShowSexActBlowjob(); } ++TotalBlowjob; NumBlowjobSinceFucked += 1; if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0)) { if (Gender == 2) { if (Lesbian) { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy licking you and fails to make you orgasm.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more and makes you orgasm.'); } else { if (VarObedienceRounded < 70) { AddText('Looks like she loves to lick you and brings you to two gasping orgasms.'); } else { AddText('She seems happy to lick you to orgasm after orgasm for as long as you want.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy sucking the man.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more.'); } else { if (VarObedienceRounded < 70) { AddText('Looks like she loves to suck the man\'s cock.'); } else { AddText('Looking at her face, she can\'t stop sucking the man\'s cock.'); } } } } ByYou = false; } } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to enjoy sucking you.'); } else { if (VarObedienceRounded < 30) { AddText('She enjoys this more and more.'); } else { if (VarObedienceRounded < 70) { AddText('Looks like she loves to suck you.'); } else { AddText('Looking at her face, she can\'t stop sucking you.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 3) < 2) { DickgirlChanged = true; Icons.DickgirlXFIcon._visible = true; if (Lesbian) { AddText('\r\rAfter you orgasm, ' + ServantName + ' tells you how ' + SlaveName + ' grew a large cock while licking you. She stroked it urgently and came with you. The cock immediately shrank and disappeared.'); } else { if (ByYou) { AddText('\r\rAfter you cum, ' + ServantName + ' tells you how ' + SlaveName + ' grew a large cock while sucking you. She stroked it urgently and came with you. The cock immediately shrank and disappeared.'); } else { AddText('\r\rAfter the slave cums, ' + ServantName + ' tells you how ' + SlaveName + ' grew a large cock while sucking the slave. She stroked it urgently and came with the slave. The cock immediately shrank and disappeared.'); } } if (RulesTouchHerself == 0) { AddText(' ' + ServantName + ' scolds her for masturbating without permission.'); BadGirl = 1; } } else { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { if (Lesbian) { AddTextToStart('She starts licking your pussy. You see that she has a large throbbing cock. You have her continue...\r\r'); } else { if (ByYou) { AddTextToStart('She starts licking your cock. You see that she has a large throbbing cock. You have her continue...\r\r'); } else { AddTextToStart('She starts licking the slaves cock. You see that she has a large throbbing cock. You have her continue...\r\r'); } } } } } if (TotalBlowjob == 1) { DifficultyBlowjob -= 5; } if (Talent == 8 && ByYou) { DickgirlRate += 1; AddText('\r\rShe savours your cum, licking her lips.'); } } else { Refused(5, '', 'She refused of course.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, -1, -2, 0); } } function FunctionBondage() { if (House == 1) { Backgrounds.ShowDungeon(); } if (TestObedience(DifficultyBondage, SexAction)) { SlaveGirl.ShowSexActBondage(); if (UseGeneric) { Generic.ShowSexActBondage(); } ++TotalBondage; var v2 = -2; var v1 = 0; if (SMFaith == 2) { v2 = -3; v1 = -0.5; } var v3; if (House == 1) { v3 = SexPoints(0, 2 + SilkenRopesOK, 0, 0, v2, 0, 0, 0, 0, 0, 0, -2, 2, 5, 4, 0, 2, v1, v1, 0); } else { v3 = SexPoints(0, 1 + SilkenRopesOK, 0, 0, v2, 0, 0, 0, 0, 0, 0, -2, 2, 4, 3, 0, 2, v1, v1, 0); } if (v3) { if (AppendActText) { if (TotalBondage < 5) { AddText('The pain and shame of bondage do not make her feel good.'); } else { if (TotalBondage < 10) { AddText('She seems to enjoy more and more being tied and she suggests differing ways to tie her. She also asks to be licked or fucked while tied.'); } else { if (TotalBondage < 20) { AddText('Being at your feet seems to be the place she wants to be.'); } else { if (Gender == 2) { AddText('She begs you to tie her tighter, and suggests that you spank her, then fuck her with a strap-on, all while frog-tied.'); } else { AddText('She begs you to tie her tighter, and suggests that you spank her, then fuck her, all while frog-tied.'); } } } } } if (SilkenRopesOK == 1) { AddText('\r\rShe does comment that the ropes feel good on her skin.'); } } if (TotalBondage == 1) { DifficultyBondage -= 5; } if (DonePonygirl == 1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0); } if (StandardDGText && DickgirlChanged && !Slavegirl.IsDickgirl()) { AddTextToStart('As you start to bind her, her clit suddenly grows into a large cock. You consider how to vary your bindings...\r\r'); } } else { Refused(12, '', 'She defiantly refuses to be tied up.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -5, -2, 0, 0, -1, -10, 0); } } function FunctionCumBath() { if (TestObedience(DifficultyGangBang - 5, SexAction)) { if (SlaveGirl.ShowSexActCumBath() != true) { UseGeneric = true; } if (UseGeneric) { Generic.ShowSexActCumBath(); } ++TotalCumBath; if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 2, 2, 2, 0, 0, 0, 0, 0)) { if (AppendActText) { if (Gender == 2) { if (Slutiness > 5 || VarLibidoRounded > 70 || VarNymphomaniaRounded > 70) { AddText('As the slave\'s cum rains down on her she happily rubs it into her skin, scooping some up and swallowing it. Sometimes she opens her mouth to catch some directly from the source.'); if (IsDickgirl()) { AddText(' Her cock is very erect the whole time. Towards the end she gathers up some of the cum and rubs it over her cock, faster and faster until she cums carefully spraying over her own breasts.'); } } else { if (VarLibidoRounded > 50 || VarNymphomaniaRounded > 50) { AddText('As the slave\'s cum rains down on her she smiles a little and, once she opens her mouth to catch a spurt of cum.'); if (IsDickgirl()) { AddText(' Her cock is very erect the whole time. Every so often she strokes her cock but not to orgasm, just to make herself more aroused.'); } } else { AddText(SlaveName + ' winces, closing her eyes and just waits for it to end.'); if (IsDickgirl()) { AddText(' Her cock was limp and she never touched it.'); } } } } else { if (Slutiness > 5 || VarLibidoRounded > 70 || VarNymphomaniaRounded > 70) { AddText('As your cum and the others rains down on her she happily rubs it into her skin, scooping some up and swallowing it. Sometimes she opens her mouth to catch some directly from the source, preferably from you.'); if (IsDickgirl()) { AddText(' Her cock is very erect the whole time. Towards the end she gathers up some of the cum and rubs it over her cock, faster and faster until she cums carefully spraying over her own breasts.'); } } else { if (VarLibidoRounded > 50 || VarNymphomaniaRounded > 50) { AddText('As your cum rains and the others rains down on her she smiles a little and, once she opens her mouth to catch a spurt of cum from you.'); if (IsDickgirl()) { AddText(' Her cock is very erect the whole time. Every so often she strokes her cock but not to orgasm, just to make herself more aroused.'); } } else { AddText(SlaveName + ' winces, closing her eyes and just waits for it to end.'); if (IsDickgirl()) { AddText(' Her cock was limp and she never touched it.'); } } } } } } if (TotalCumBath == 1) { DifficultyGangBang -= 1; } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('\r\rAs they start cumming on her she starts masturbating, and a cock grows into her hands. She strokes it quickly and it immediately erupts a torrent of cum, adding to the cum over her.'); } SMPoints(0, 0, 0, 0, 0, 2, 0); } else { Refused(25, '', 'She refused.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -3, -2, 0, 0, -1, -5, 0); } } function FunctionDildo() { if (TestObedience(DifficultyDildo, SexAction)) { SlaveGirl.ShowSexActDildo(); if (UseGeneric) { Generic.ShowSexActDildo(); } ++TotalDildo; if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 2, 0, 0, 0)) { if (ImprovedDildoOK == 1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0); if (AppendActText) { if (VarObedienceRounded < 50) { AddText('She enjoys using the dildo but does not want to use it in front of you.'); } else { if (VarObedienceRounded < 65) { AddText('She says how wonderful the dildo is, playing with her breasts often to heighten her arousal.'); } else { if (VarObedienceRounded < 80) { AddText('She loves this dildo, as she quickly brings herself to near orgasm repeatedly, saying it is difficult not to orgasm. She suggests she could '); if (Gender == 2) { AddText('lick your pussy while using the dildo.'); } else { AddText('give you a blowjob while using the dildo.'); } } else { AddText('She is so expert with the dildo she can bring herself to the peak of arousal as fast or as slow as you ask. She does often orgasm accidentally saying the dildo is so very good. When this happens she suggests with a smile that you spank her in punishment.'); } } } } } else { if (AppendActText) { if (VarObedienceRounded < 50) { AddText('She doesn\'t seem to enjoy using the dildo.'); } else { if (VarObedienceRounded < 65) { AddText('It doesn\'t bother her to fuck herself with the dildo, playing with her breasts often to heighten her arousal.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love this dildo, as she quickly brings herself to near orgasm repeatedly. She suggests she could '); if (Gender == 2) { AddText('lick your pussy while using the dildo.'); } else { AddText('give you a blowjob while using the dildo.'); } } else { AddText('She is so expert with the dildo she can bring herself to the peak of arousal as fast or as slow as you ask. She does occasionally orgasm accidentally. When this happens she suggests you spank her in punishment.'); } } } } } } if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 3) < 2) { DickgirlChanged = true; Icons.DickgirlXFIcon._visible = true; AddText('\r\rAs ' + SlaveName + ' nears orgasm a cock rapidly grows from her clit. Before she can touch it ' + ServantName + ' slaps her to get her attention and tells her to concentrate. Immediately the cock shrinks and disappears.'); } if (TotalDildo == 1) { DifficultyDildo -= 5; } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('She starts fucking the dildo in and out. As she does her clit starts throbbing and starts growing in time with the thrusts until it is a large cock\r\r'); } } else { Refused(9, '', 'She refused to use the dildo.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -4, -2, 0, 0, -1, -4, 0); } } function FunctionFuck() { if (TestObedience(DifficultyFuck, SexAction)) { SlaveGirl.ShowSexActFuck(); if (UseGeneric) { Generic.ShowSexActFuck(Gender == 3); } NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; ++TotalFuck; if (SexAction == 4.1) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { StartFucking(1); } var v2 = VarFuck == 0; if (SexPoints(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -2, 0, 2, 0, 1, 0)) { if (SexAction == 4.1) { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She still doesn\'t really accept you fucking her with the strap-on.'); } else { if (VarObedienceRounded < 50) { AddText('She seems to enjoy you fucking her.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love to fuck with the strap-on, at one time crying out \'Who needs a cock!\'.'); } else { AddText('Looks like she doesn\'t want to stop. She begs you to be fucked more and with a larger strap-on.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (SexAction == 4.2) { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She still doesn\'t really accept the slave fucking her.'); } else { if (VarObedienceRounded < 50) { AddText('She seems to enjoy the slave fucking her.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love to fuck.'); } else { AddText('Looks like she doesn\'t want to stop. She begs you to be fucked more.'); } } } } ByYou = false; } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She still doesn\'t really accept you fucking her.'); } else { if (VarObedienceRounded < 50) { AddText('She seems to enjoy you fucking her.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love to fuck.'); } else { AddText('Looks like she doesn\'t want to stop. She begs you to fuck her more.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } } if (v2 && AppendActText) { if (ByYou) { AddText('\r\rYou are fairly sure ' + SlaveName + ' was a virgin so you made sure the slave was especially gentle.'); } else { AddText('\r\rYou are fairly sure ' + SlaveName + ' was a virgin so you were especially gentle.'); } } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { if (ByYou) { AddTextToStart('As you start fucking her you hear her moan and she seems to start rubbing her clit. You look and see she is stroking a large cock that she has grown.\r\r'); } else { AddTextToStart('As the slave starts fucking her you hear her moan and you see a large cock swell out of her groin and she starts frantically stroking it.\r\r'); } } if (TotalFuck == 1) { DifficultyFuck -= 5; } if (Talent == 8) { DickgirlRate += 0.5; } } else { var v1; if (Gender == 2) { v1 = 'She refused to be fucked by the slave.'; } else { v1 = 'She refused to be fucked by you.'; } Refused(4, '', v1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, -1, -2, 0); } } function FunctionGangBang() { if (TestObedience(DifficultyGangBang, SexAction)) { SlaveGirl.ShowSexActGangBang(); if (UseGeneric) { Generic.ShowSexActGangBang(); } ++TotalGangBang; NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; var v1 = -3; if (SMFaith != 1) { v1 = -1; } if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { StartFucking(3); } if (SexPoints(0, -1, 0, 0, v1, 1, 0, 0, 0, 2, 2, -1, 5, 5, -5, 0, 4, 0, 0, 0)) { if (Gender == 2 && Lesbian) { if (AppendActText) { if (VarObedienceRounded < 80) { AddText('She doesn\'t seem to enjoy this. She is still a little off-put by the lesbianism.'); } else { if (VarObedienceRounded < 90 && VarNymphomaniaRounded < 50) { AddText('Doing it with more than one woman doesn\'t seem to bother her, but she did seem to mainly accept their attention, not really trying to pleasure them.'); } else { if (VarObedienceRounded < 90 && VarNymphomaniaRounded < 80) { AddText('She seems to enjoy doing this with many women, happily using fingers and tongue to pleasure them.'); } else { AddText('Looks like she loves to be gang-banged, cumming often.'); } } } } } else { if (Gender == 3) { if (AppendActText) { if (VarObedienceRounded < 80) { AddText('She doesn\'t seem to enjoy this, just tolerating it. The hermaphrodites would of preferred her to enjoy it but still fucked her many times.'); } else { if (VarObedienceRounded < 90 && VarNymphomaniaRounded < 50) { AddText('Doing it with more than one hermaphrodite doesn\'t seem to bother her. They seemed to enjoy her cumming often and copiously'); } else { if (VarObedienceRounded < 90 && VarNymphomaniaRounded < 80) { AddText('She seems to enjoy doing this with many hermaphrodites, loving the quantity of their cum and their enthusiasm.'); } else { AddText('Looks like she loves to be gang-banged. After, lying coated in their cum, she commented how much better it is to be fucked by hermaphrodites.'); } } } } } else { if (AppendActText) { if (VarObedienceRounded < 80) { AddText('She doesn\'t seem to enjoy this, she just tolerated the fuckings.'); } else { if (VarObedienceRounded < 90 && VarNymphomaniaRounded < 50) { AddText('Doing it with more than one man doesn\'t seem to bother her.'); } else { if (VarObedienceRounded < 90 && VarNymphomaniaRounded < 80) { AddText('She seems to enjoy doing this with many men.'); } else { AddText('Looks like she loves to be gang-banged.'); } } } } } } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 3) < 2) { DickgirlChanged = true; Icons.DickgirlXFIcon._visible = true; AddText('\r\r' + ServantName + ' tells you once ' + SlaveName + ' briefly grew a cock but it did not last long.'); } else { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { if (Lesbian) { AddTextToStart('The women start to lick and the fuck her. You see one of them look surprised and see ' + SlaveName + ' has grown a large cock. The woman opens her mouth and sucks ' + SlaveName + '\'s new cock in.\r\r'); } else { AddTextToStart('The men start to lick and the fuck her. You see one of them look surprised and see ' + SlaveName + ' has grown a large cock.\r\r'); } } } } if (TotalGangBang == 1) { DifficultyGangBang -= 5; } if (Talent == 8) { DickgirlRate += 0.5; } if (Gender == 3) { SMPoints(0, 0, 0, 0, 0, -5, 0); } } else { Refused(15, '', 'She refused.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -8, -2, 0, 0, -1, -15, 0); } } function FunctionGroup() { if (TestObedience(DifficultyGangBang - 10, SexAction)) { SlaveGirl.ShowSexActGroup(); if (UseGeneric) { Generic.ShowSexActGroup(); } NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; ++TotalGroup; var v1 = -1; if (SMFaith != 1) { v1 = 0; } if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 1, 0, 0, v1, 1, 0, 0, 0, 1, 1, 0, 3, 2, -3, 0, 4, 0, 0, 0)) { if (Lesbian) { if (AppendActText) { if (TotalGroup < 3) { AddText('She doesn\'t like sex with a group of women'); } else { if (TotalGroup < 8 && VarObedienceRounded < 30) { AddText('She enjoys sex with the group of women and changed partners.'); } else { if (TotalGroup < 10 && VarObedienceRounded < 70) { AddText('She licked, rubbed, caressed everyone making them all orgasm, and orgasming several times loudly.'); } else { AddText('She did her best to please everyone present, orgasming often and trying to make then orgasm at least as often.'); } } } } } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She doesn\'t like fucking with a group'); if (Gender == 2) { AddText(', she only fucked with you.'); } } else { if (VarObedienceRounded < 30) { AddText('She enjoys fucking in a group and changed partners.'); } else { if (VarObedienceRounded < 70) { AddText('She fucked everyone at least once and loudly came several times.'); } else { AddText('She did her best to fuck everyone in every combination possible, cumming often and happily drinking her partners cum.'); } } } } } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('While you are fucking another woman you hear ' + SlaveName + ' cry in passion and you look. You see she has a large cock and is cumming in a huge spray.\r\r'); } if (TotalGroup == 1) { DifficultyGangBang -= 2; } if (Talent == 8) { DickgirlRate += 0.5; } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { Refused(20, 'No, that is immoral.', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0); } } function FunctionKiss() { if (SlaveGirl.ShowSexActKiss() != true) { UseGeneric = true; } if (UseGeneric) { EventLesbianTraining._visible = true; } ++TotalKiss; if (SexAction == 23.1 || SexAction == 23) { var v1; if (Gender == 1 || TestObedience(DifficultyLesbian, SexAction)) { v1 = SexPoints(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 2, 0); } else { v1 = SexPoints(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 0); } if (v1) { if (AppendActText) { if (LoveAccepted == 1 || LoveAccepted == 10) { AddText('She kisses you passionately and tenderly and only stops when you break free, she whispers,\r\r'); SlaveSpeak(SlavePronoun + ' love you...', true); } else { if (Gender != 1 && !TestObedience(DifficultyLesbian, SexAction)) { AddText('She very awkwardly and tentatively kisses you, pulling quickly free.'); } else { if (VarLovePoints < 20) { AddText(SlaveName + ' kisses you but seems distracted and not that interested. She pulls free of the kiss as soon as she could.'); } else { if (VarLovePoints < 50) { AddText(SlaveName + ' kisses you with enthusiasm and some passion. When you part she looks at you a little embarrassed.'); } else { AddText('She kisses you passionately and tenderly and only stops when you break free, she looks like she wanted to say something but does not.'); } } } } } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('\r\rAfter you part ' + ServantName + ' tells you that ' + SlaveName + ' briefly grew an erect cock, but it shrank as you broke apart.'); } } else { if (Gender != 1 && !TestObedience(DifficultyLesbian, SexAction)) { var v1 = SexPoints(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } else { var v1 = SexPoints(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0); } if (v1) { if (AppendActText) { if (Gender == 1) { if (TestObedience(DifficultyLesbian, SexAction)) { AddText('She very awkwardly and tentatively kisses the woman, pulling quickly free.'); } else { if (VarSensibilityRounded < 20) { AddText(SlaveName + ' kisses the woman but seems distracted and not that interested. She pulls free of the kiss as soon as she could.'); } else { if (VarSensibilityRounded < 50) { AddText(SlaveName + ' kisses the woman with enthusiasm and some passion. When they part she looks a little embarrassed.'); } else { AddText('She kisses the woman passionately and tenderly and only stops when you tell them to.'); } } } DifficultyLesbian -= 1; } else { if (VarSensibilityRounded < 20) { AddText(SlaveName + ' kisses the man but seems distracted and not that interested. She pulls free of the kiss as soon as she could.'); } else { if (VarSensibilityRounded < 50) { AddText(SlaveName + ' kisses the man with enthusiasm and some passion. When they part she looks a little embarrassed.'); } else { AddText('She kisses the man passionately and tenderly and only stops when you tell them to.'); } } } } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('\r\rWhile they kiss ' + SlaveName + ' briefly grow an erect cock, but it shrank as they stop kissing.'); } } SMPoints(0, 0, 0, 0, 0, 1, 0); } function FunctionLendHer() { if (TestObedience(DifficultyLendHer, SexAction)) { var v1 = SlaveGirl.ShowSexActLendHer(); NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; ++TotalLendHer; if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, -2, 0, 0, -2, 1, 0, 0, 0, 1, 1, -2, 7, 6, -3, 0, 2, 0, -2, 0)) { if (AppendActText) { AddText(SlaveName + ' is given to the Master to serve but mostly to be sexually enjoyed.\r\r'); if (VarNymphomaniaRounded < 15) { AddText('She did not like to be fucked by a stranger.'); } else { if (VarNymphomaniaRounded < 50) { AddText('Being fucked by a stranger doesn\'t seem to bother her.'); } else { if (VarNymphomaniaRounded < 80) { AddText('Even with the stranger she seems to enjoy being sexually used.'); } else { AddText('She was totally obedient, it looks like she can fuck with anybody. anytime.'); } } } } } if (TotalLendHer == 1) { DifficultyLendHer -= 5; } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('As you give her to the other, you see she has a large cock that she is trying to hide...\r\r'); } AddText(v1); } else { Refused(16, '', 'She refused.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -10, -1, 0, 0, -1, -2, 0); } } function FunctionLesbian() { if (TestObedience(DifficultyLesbian, SexAction)) { SlaveGirl.ShowSexActLesbian(); if (UseGeneric) { Generic.ShowSexActLesbian(); } ++TotalLesbian; var v1 = 0; if (IsDickgirl()) { v1 = 1; } else { if (StrapOnWorn == 1) { v1 = 1; } } var v2 = -3; if (SMFaith != 1) { v2 = 0; } if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 1, 0, 0, v2, 0, 0, 0, 0, 0, v1, 0, 2, 3, -2, 0, 2, 0, 0, 0)) { if (AppendActText) { if (Icons.DickgirlXFIcon._visible == true) { if (Gender == 1) { if (TotalLesbian < 5) { AddText('She is unused to sex with a woman and awkwardly makes love to her. She eventually fucks the other girl and quickly cums.'); } else { if (VarObedienceRounded < 70 && VarSensibilityRounded < 50) { AddText('It looks like ' + SlaveName + ' enjoys sex with another woman. Her foreplay is skilled and then fucks the girl expertly to several orgasms, cumming herself a few times.'); } else { if (VarObedienceRounded < 80 && VarSensibilityRounded < 70) { AddText('She is really enthusiastic and expertly arouses the other girl. She then fucks the girl to several mutual orgasms. The girl even gives ' + SlaveName + ' a blowjob to arouse her so they could fuck again.'); } else { AddText('She is an expert at loving women and superbly arouses the girl. She then proceeds to fuck the girl in her pussy, ass and mouth. The girl is joyful and thanks ' + SlaveName + ' profusely and asks to be fucked again.'); } } } SMPoints(0, 0, 0, 0, 0, 2, 0); ByYou = false; } else { HideAssistant(); ShowSlaveMaker(false); if (TotalLesbian < 5) { AddText('She is unused to sex as a hermaphrodite and awkwardly tries to make love to you. She eventually fucks you but quickly cums long before you.'); } else { if (VarObedienceRounded < 70 && VarSensibilityRounded < 50) { AddText(SlaveName + ' very much enjoys making love to you. Her foreplay is good and then fucks you expertly to several orgasms, cumming herself a few times.'); } else { if (VarObedienceRounded < 80 && VarSensibilityRounded < 70) { AddText('She is really enthusiastic and expertly arouses you. She then fucks you to several mutual orgasms. Impressively ' + SlaveName + ' seems to stay erect and hard after cumming the first time.'); } else { AddText('She is an expert at loving women and superbly arouses you. She then proceeds to fuck you in your pussy and then ass, all without her erection fading. After her second orgasm, deep in your ass, her cock softens, but she is willing to continue. You clean her cock and then easily lick and suck it back to a full, hard erection.' + SlaveName + ' asks if you could continue so she can \'complete the set\'...'); } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } } else { if (Lesbian) { if (VarObedienceRounded < 60) { AddText('She doesn\'t look like is familiar with this act, you do not think she came.'); } else { if (VarObedienceRounded < 70 && VarSensibilityRounded < 50) { AddText('It looks like ' + SlaveName + ' enjoyed this style of sex and orgasms a bit after you.'); } else { if (VarObedienceRounded < 80 && VarSensibilityRounded < 70) { AddText('She is really enthusiastic, her hip motions are expert, and came very strongly at almost the same time as you do.'); } else { AddText('She likes this very much and after orgasming and making sure you orgasm, she says this is her favourite lesbian sex act.'); } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (VarObedienceRounded < 60) { AddText('She doesn\'t look like she dares to let herself go, you do not think she came.'); } else { if (VarObedienceRounded < 70 && VarSensibilityRounded < 50) { AddText('It looks like ' + SlaveName + ' enjoys sex with another woman.'); } else { if (VarObedienceRounded < 80 && VarSensibilityRounded < 70) { AddText('She is really enthusiastic and cums several times.'); } else { AddText('She likes this so much it\'s hard to believe that she is not a lesbian.'); } } } if (Gender == 2) { SMPoints(0, 0, 0, 0, 0, -5, 0); } else { SMPoints(0, 0, 0, 0, 0, 2, 0); ByYou = false; } } } } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 2) == 1) { DickgirlChanged = true; Icons.DickgirlXFIcon._visible = true; if (ByYou) { AddText('\r\rLater in the training ' + SlaveName + ' becomes very aroused and asks you to lie face down. '); if (StrapOnOK) { AddText('and you feel her strap-on enter your pussy, it seems a little different than usual but you let her fuck you. She seems to be enjoying it more, grunting and groaning a lot, and fucks fast and urgently. You suddenly hear her cry out and the strap-on pulses? and you feel the unmistakable sensation of a cock pumping large amounts of cum into your pussy. You look around and see her pulling a cock from your pussy, cum spraying over your back. ' + SlaveName + ' gasps and fall back, the cock shrinks and vanishes.'); } else { AddText('and you feel a strap-on enter your pussy, but you know she does not have one. You look and she has grown a cock and is fucking you with it! You consider but decide to allow her to finish, she seem to be enjoying it, grunting and groaning a lot, and fucks fast and urgently. You suddenly hear her cry out and you feel her cock pumping large amounts of cum into your pussy. You look around and see her pulling a cock from your pussy, cum spraying over your back. ' + SlaveName + ' gasps and fall back, the cock shrinks and vanishes.'); } } else { AddText('\r\r' + ServantName + ' tells you one time the other girl thought she was being fucked with a strap-on but actually ' + SlaveName + ' had grown a cock and fucked her with it. .'); } } else { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('As the girls start embracing you see ' + SlaveName + ' has grown a large cock. This rather changes the act...\r\r'); } } } if (TotalLesbian == 1) { DifficultyLesbian -= 5; } if (Talent == 6 && !CheckBitFlag1(12)) { if (TotalLesbian == 1) { AddText('\r\rShe has agreed to lesbian acts! It is time to discuss her future training...'); } else { AddText('\r\rShe has agreed again to lesbian acts! It is time to discuss again her future training as a lesbian slave...'); } DoEvent(270); NextGeneral._visible = false; NextEvent._visible = true; SetBitFlag1(12); } } else { Refused(11, SlavePronoun + ' am not that kind of girl.', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -5, -2, 0, 0, -1, -5, 0); } } function FunctionLick() { if (TestObedience(DifficultyLick, SexAction)) { SlaveGirl.ShowSexActLick(); if (UseGeneric) { Generic.ShowSexActLick(); } ++TotalLick; ++NumLickSinceFucked; if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0)) { if (AppendActText) { if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('As '); if (SexAction == 3 || SexAction == 3.1) { AddText('you start'); } else { AddText('the slave starts'); } AddText(' ' + SlaveName + ' suddenly grows a large erect cock, '); if (SexAction == 3 || SexAction == 3.1 || SexAction == 3.4) { AddText('so you get a female slave to give her a blowjob.\r\r'); } else { AddText('so you have the female slave give her a blowjob instead.\r\r'); } SexAction = 3.2; } var v1 = VarLibidoRounded + VarNymphomaniaRounded; if (SexAction == 3.2) { if (SexPosition == 0) { AddText('You have ' + SlaveName + ' lie down and '); } else { AddText('You have ' + SlaveName + ' sit down and '); } AddText('the female slave kneels down and slowly licks ' + SlaveName + '\'s cock '); if (v1 < 50) { AddText('who seems distracted and not really interested'); } else { if (v1 < 100) { AddText('who sighs and moans in pleasure'); } else { if (v1 < 150) { AddText('who gasps in pleasure and rests her hands on the back of the slave\'s head'); } else { AddText('who cries in pleasure and tries to thrust her cock into the slave\'s mouth'); } } } AddText('.\r\rThe slave '); switch (int(Math.random() * 3)) { case 0: AddText('licks along the shaft of ' + SlaveName + '\'s cock, then licking the head of her cock. One of the slave\'s hands strokes ' + SlaveName + '\'s cock and with the other slips fingers into ' + SlaveName + '\'s pussy.\r\rShe licks and stokes faster and faster'); break; case 1: AddText('licks and kisses the head of the cock and slowly takes the cock into her mouth, deeper and deeper, working her throat until ' + SlaveName + '\'s cock is fully down her throat.\r\r' + SlaveName + ' moans, and then cries as the slave bobs her head up and down, fucking the cock with her mouth and throat,'); break; case 2: AddText('licks and kisses the head of the cock and slowly takes the cock into her mouth, at the same time working fingers in ' + SlaveName + '\'s pussy and stroking the base of her cock.\r\rShe licks and stokes faster and faster'); } AddText(' until you order her to stop, as the purpose here is to arouse ' + SlaveName + ' not make her cum.\r\r'); if (v1 < 50) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0); AddText('The slave pulls away, a hand lingering on ' + SlaveName + '\'s cock, who looks a little disappointed.'); } else { if (v1 < 100) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0); AddText('The slave pulls away, a hand lingering on ' + SlaveName + '\'s cock, who begs to cum, her cock throbbing and intensely erect.'); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0); AddText('As you say this ' + SlaveName + ' lets out a cry and cums, spraying seemingly directly into the slave\'s stomach, the slave coughs and pulls free. You scold the slave for allowing her to cum and order her to make ' + SlaveName + ' erect again. '); if (v1 < 150) { AddText('The slave licks ' + SlaveName + '\'s cock until her cock is throbbing and hard.'); } else { AddText('The slave licks ' + SlaveName + '\'s cock for some time until ' + SlaveName + ' cries out again, cumming, spurting her cum over the slave\'s face. You scold them both, but decide to leave it there.'); } } } } else { if (SexAction == 3.1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5, 0, 0, 0, 1, 0.5, 0); if (SexPosition == 0) { AddText('You have ' + SlaveName + ' lie down and lean over '); } else { AddText('You have ' + SlaveName + ' sit down and you lean in '); } AddText('and slowly lick her cock, '); if (v1 < 50) { AddText('she seems distracted and not really interested'); } else { if (v1 < 100) { AddText('she sighs and moans in pleasure'); } else { if (v1 < 150) { AddText('she gasps in pleasure and rests her hands on the back of your head. You pull her hands free'); } else { AddText('who cries in pleasure and tries to thrust her cock into your mouth'); } } } AddText('.\r\rYou lick '); switch (int(Math.random() * 3)) { case 0: AddText('along the shaft of ' + SlaveName + '\'s cock, then licking the head of her cock. You firmly stroke ' + SlaveName + '\'s cock and with your other hand slip fingers into ' + SlaveName + '\'s pussy.\r\rYou lick, stroke and finger faster and faster'); break; case 1: AddText('and kiss the head of her cock and slowly take the head of her cock into your mouth, licking and circling your tongue around the head. You take a firm and tight grasp around the base of her cock and lightly rub along the shaft with your other hand.\r\rYou lick and suck her cock head with more and more intensity'); break; case 2: AddText('and suck on the head of her cock and slowly take the cock into your mouth, at the same time working fingers in ' + SlaveName + '\'s pussy and stroking the base of her cock.\r\rYou lick and stoke faster and faster'); } AddText(' until you decide she has had enough, as the purpose here is to arouse ' + SlaveName + ' not make her cum.\r\r'); if (v1 < 50) { AddText('You pull away, a hand lingering on ' + SlaveName + '\'s cock to assert your control of her cock. ' + SlaveName + ' looks away, a little disappointed.'); } else { if (v1 < 100) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0); AddText('You pull away, a hand lingering on ' + SlaveName + '\'s cock to assert your control of her cock. ' + SlaveName + ' begs you to let her cum, her cock throbbing and intensely erect in your hand.'); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0); AddText('As decide this ' + SlaveName + ' lets out a cry and cums, pumping large gobs of cum into your mouth. You pull free and spit out her cum onto her stomach. You scold ' + SlaveName + ' for her lack of control and bend down '); if (v1 < 150) { AddText('and lick ' + SlaveName + '\'s cock until her cock is throbbing and hard.'); } else { AddText('and lick ' + SlaveName + '\'s cock for a short time until ' + SlaveName + ' suddenly cries out again, cumming, spurting her cum over your face. You scold her and order her to lick the cum from your face...'); } } } } else { if (SexPosition == 0) { AddText('You have ' + SlaveName + ' lie down and '); } else { AddText('You have ' + SlaveName + ' sit down and '); } if (SexAction == 3.4) { AddText('the male slave skillfully licks her pussy and clit, stimulating her nearer and nearer to orgasm. ' + SlaveName + ' '); if (v1 < 50) { AddText('seems tense and not really interested.'); } else { if (v1 < 100) { AddText('sighs in pleasure, enjoying the feel of his tongue.'); } else { if (v1 < 150) { AddText('moans and pants in obvious pleasure, quickly approaching her climax.'); } else { AddText('loves the feel of his tongue, rapidly approaching orgasm'); } } } AddText('\r\rYou order him to stop, as the purpose of the act is to arouse her, not make her orgasm.'); if (v1 < 50) { AddText('You see she seems nowhere near orgasm or seems to care.'); } else { if (v1 < 100) { AddText('She looks frustrated being denied her orgasm.'); } else { if (v1 < 150) { AddText('She begs you to let him finish her off. With a little regret you refuse.'); } else { AddText('He barely stops soon enough, she was one the verge of orgasming. She begs you to let him finish her off. With a little regret you refuse.'); } } } } else { AddText('with years of experience you skillfully lick her pussy and clit, stimulating her nearer and nearer to orgasm. ' + SlaveName + ' '); if (v1 < 50) { AddText('seems tense and not really interested.'); } else { if (v1 < 100) { AddText('sighs in pleasure, enjoying the feel of your tongue.'); } else { if (v1 < 150) { AddText('she moans and pants in obvious pleasure, quickly approaching her climax.'); } else { AddText('loves the feel of your tongue, rapidly approaching orgasm'); } } } AddText('\r\rYou decide to stop, as the purpose of the act is to arouse her, not make her orgasm.'); if (v1 < 50) { AddText('You see she seems nowhere near orgasm or seems to care.'); } else { if (v1 < 100) { AddText('She looks frustrated being denied her orgasm.'); } else { if (v1 < 150) { AddText('She begs you to finish her off. With a little regret you refuse.'); } else { AddText('You barely stop soon enough, she was on the verge of orgasming. She begs you to finish her off. With a little regret you refuse.'); } } } } } } } } if (TotalLick == 1) { DifficultyLick -= 5; } SMPoints(0, 0, 0, 0, 0, 2, 0); } else { Refused(3, 'She coyly refuses.', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, -1, -2, 0); } } function FunctionMaster() { if (TestObedience(DifficultyMaster, SexAction)) { SetButtonState(PlanningNightOther.MasterButton, true); SlaveGirl.ShowSexActMaster(); if (AppendActText) { SlaveSpeak('Yes... ' + Master + '...', true); } NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 5, 3, 0, 0, 0, 10, 0); DoneMaster = 1; } else { Refused(14, 'You are not my ' + Master + '!', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -15, -2, 0, 0, -1, -15, 0); } } function FunctionMasturbate() { if (TestObedience(DifficultyMasturbate, SexAction)) { SlaveGirl.ShowSexActMasturbate(); if (UseGeneric) { Generic.ShowSexActMasturbate(); } ++TotalMasturbate; NumMasturbateSinceFucked += 1; if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)) { if (AppendActText) { if (VarObedienceRounded < 40 && Slutiness < 6) { AddText('She feels embarrassed to play with herself in front of you.'); } else { if (VarObedienceRounded < 70 && Slutiness < 6) { AddText('It doesn\'t bother her masturbate for you, but seems frustrated when she cannot cum.'); } else { if (VarObedienceRounded < 85 && Slutiness < 6) { AddText('She seems to like to play with herself for your mutual pleasure, and will happily bring herself to near orgasm over and over.'); } else { AddText('She delights in masturbating to arouse you and enjoys the feeling. She does beg you often to fuck her and let her cum.'); } } } } } if (TotalMasturbate == 1) { DifficultyMasturbate -= 5; } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('\r\rAs she nears orgasm suddenly a large cock erupts from her groin. She strokes it once and it immediately erupts a torrent of cum, a lot into her own mouth! The cock disappears quickly.'); } if (IsDickgirl()) { Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0); if (ZodaiEffecting > 0) { Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0); } } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0); if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0); } } SMPoints(0, 0, 0, 0, 0, 2, 0); } else { Refused(8, '', 'She is too embarrassed and refused.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -4, -2, 0, 0, -1, -4, 0); } } function FunctionNaked() { if (TestObedience(DifficultyNaked, SexAction)) { HideBackgrounds(); SlaveGirl.ShowSexActNakedStart(); ++TotalNaked; if (DressWorn != -1) { DressToWear = DressWorn; } NakedChoice = 0; RemoveDress(); HideStatChangeIcons(); DressWorn = -1; if (SexPoints(2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0)) { if (AppendActText) { if (VarObedienceRounded < 70) { AddText('She didn\'t enjoy being nude in public, covering herself with her arms at times.'); } else { if (VarObedienceRounded < 80 && VarCharismaRounded < 50) { AddText('Being nude in public doesn\'t seem to bother her.'); } else { if (VarObedienceRounded < 80 && VarCharismaRounded < 80) { AddText('She seems to enjoy being a nudist.'); } else { AddText('She is proud of her body and she doesn\'t want to put her clothes back on.'); } } } } } SlaveGirl.ShowSexActNaked(); ShowRobes(); if (TotalNaked == 1) { DifficultyNaked -= 5; } Naked = true; if (SoundsOn) { Sounds.SoundClothes.gotoAndPlay(2); } } else { Refused(13, '', 'She blushed and refused.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -8, -2, 0, 0, -1, -8, 0); } } function FunctionPlug() { if (TestObedience(DifficultyPlug, SexAction)) { Icons.PlugIcon._visible = true; PlugInserted = 1; SlaveGirl.ShowSexActPlug(); if (UseGeneric) { Generic.ShowSexActPlug(); } ++TotalAnal; ++TotalPlug; if (SexPoints(0, 0, -1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 4, 0, 8, 0, 0, 0)) { if (AppendActText) { if (TotalAnal < 5) { AddText('It is still hard to put the plug in.'); } else { if (TotalAnal < 10) { AddText('It becomes easier to put the plug in.'); } else { if (TotalAnal < 20) { AddText('You can put the plug in very easily.'); } else { AddText('Judging by her position, she is waiting for that plug with envy.'); } } } } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 3) < 2) { AddText('\r\rAs you insert the plug you see ' + SlaveName + '\'s clit grow large and very erect almost like a small cock.'); } else { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('As you insert the plug you see ' + SlaveName + ' has grown a large cock.\r\r'); } } } if (TotalPlug == 1) { DifficultyPlug -= 5; } } else { Refused(10, '', 'She refused to wear the plug.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -5, -2, 0, 0, -1, -7, 0); } } function FunctionPonygirl() { if (TestObedience(DifficultyPonygirl, SexAction)) { SetButtonState(PlanningNightOther.PonygirlButton, true); if (TotalBondage < 5) { ServantSpeak('She needs to be more experienced at bondage.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 2, 0, 0, 0, 0, 0); } else { if (BitGagWorn == 0 || HarnessWorn == 0 || PonyTailWorn == 0) { ServantSpeak('She is not fully outfitted. She must be wearing a gag, a harness and a tail.'); Points(0, 0, -5, 0, -5, 5, 0, 0, 0, 0, 0, -5, 2, 5, 5, 0, 0, 0, 0); } else { ++TotalPony; if (SlaveGirl.ShowSexActPonygirl() == false) { Generic.ShowSexActPonygirl(); } if (DonePonygirl == 0) { if (AppendActText) { SlaveSpeak(Master + ', ' + SlavePronoun + ' am your pony, ride me.', true); } Points(5, 0, -5, 0, -5, 5, 0, 0, 0, 0, 0, -5, 2, 5, 5, 0, 0, 1, 0, 0); } else { if (AppendActText) { SlaveSpeak(Master + ', ' + SlavePronoun + ' am your pony again, mount me please!.', true); } Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); } if (AppendActText) { AddText('\r\r'); ServantSpeak('Her first action each night now will be bondage to reinforce her place and for her pleasure.', true); } DonePonygirl = 1; } } } else { Refused(17, 'That is something ' + SlavePronoun + ' will not do!', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -15, -2, 0, 0, -1, -15, 0); } } function FunctionSpank() { if (TestObedience(DifficultySpank, SexAction)) { SlaveGirl.ShowSexActSpank(Talent == 5 && WeaponType == 3); var v5 = Generic.SpankClip; if (UseGeneric) { Generic.ShowSexActSpank(Talent == 5 && WeaponType == 3); } else { v5 = SlaveGirl.SpankClip; } intervalId = setInterval(this, 'ShakeIt', 50, 1, v5, v5._x, ''); ++DoneSpank; ++TotalSpank; if (DoneSpank > 2 && Slutiness < 6) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -1, -1, 0, 2, -1, -1, 0); if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -1, -1, 0, 4, -1, -1, 0); } SlaveSpeak('Owww! Owww! Stop please!', true); AddText('\r\r'); ServantSpeak('She seems to be in pain.', true); if (Talent == 5) { AddText('\r\rYou smile.'); } MaxObedience -= 0.5; } else { if (Talent == 5 && WeaponType == 3) { if (SoundsOn) { Sounds.SoundWhipping.gotoAndPlay(2); } if (DoneScold || BadGirl == 1) { if (Slutiness > 5) { SlaveSpeak('Ahhh! Ohhhh! ' + SlavePronoun + ' am a very bad girl, whip me more!', true); AddText('\r\rShe loves the pain and is very aroused. You make sure the whip sometimes hits her pussy to stimulate her.'); Points(0, 0, 0, 0, 0.5, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, 0, 1, 0); } else { SlaveSpeak('Ahhhh! Ohhh! Please, please, enough, ' + SlavePronoun + ' will try to be good!', true); AddText('\r\r'); if (Aroused) { ServantSpeak('She really seems to like the pain, especially if you hit her pussy.', true); } Points(0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, 0, 1, 0); } if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, 0, 1, 0); } if (DoneSpank == 1) { MaxObedience += 0.5; } } else { if (Slutiness > 5) { SlaveSpeak('Ahhh! Ohhhh! ' + SlavePronoun + ' am a bad girl, whip me more!', true); AddText('\r\rShe loves the pain and is very aroused. You make sure the whip sometimes hits her pussy to stimulate her.'); } else { SlaveSpeak('Ohhh! Ahhhhh! ' + SlavePronoun + ' have already been good, please please whip, I mean don\'t whip me!', true); AddText('\r\r'); if (Aroused) { if (SlaveGirl.SpankComment() != true) { ServantSpeak('She really seems to like the pain, especially if you hit her pussy.', true); } } } var v3 = 0.5; var v4 = 0; if (SMFaith == 2) { v3 = 0; v4 = -0.5; } Points(0, 0, 0, 0, v3, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, v4, 0, 0); if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, v3, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, v4, 0, 0); } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('You see she has grown a large cock again. As she is whipped it grows more and more erect.\r\r'); } MaxObedience += 0.5; Behaving += 0.5; } else { if (SoundsOn) { Sounds.SoundSpank.gotoAndPlay(2); } if (DoneScold || BadGirl == 1) { if (Slutiness > 5) { SlaveSpeak('Ohhh! Owww! ' + SlavePronoun + ' am a very bad girl, spank me harder! Why don\'t you spank ' + ServantName + ' too, she would love it!', true); AddText('\r\rShe loves the pain and is very aroused. She appears to orgasm just from the spanking!'); Points(0, 0, 0, 0, 0.5, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, 0, 1, 0); } else { SlaveSpeak('Owww! Ohhh! Ok, ' + SlavePronoun + ' will try to be good!', true); AddText('\r\r'); if (Aroused) { if (SlaveGirl.SpankComment() != true) { ServantSpeak('She really seems to be enjoying it, she is very wet.', true); } } Points(0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, 0, 1, 0); } if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, 0, 1, 0); } if (DoneSpank == 1) { MaxObedience += 0.5; } } else { if (Slutiness > 5) { SlaveSpeak('Ohhh! Owww! ' + SlavePronoun + ' am a bad girl, spank me harder! Why don\'t you spank ' + ServantName + ' too, she would love it!', true); AddText('\r\rShe loves the pain and is very aroused. She appears to orgasm just from the spanking!'); } else { SlaveSpeak('Ohhh! Owww! ' + SlavePronoun + ' have already been good!', true); AddText('\r\r'); if (Aroused) { if (SlaveGirl.SpankComment() != true) { ServantSpeak('She really seems to be enjoying it, she is very wet.', true); } } } var v3 = 0.5; var v4 = 0; if (SMFaith != 1) { v3 = 0; v4 = -0.5; } Points(0, 0, 0, 0, v3, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, v4, 0, 0); if (ZodaiEffecting > 0) { Points(0, 0, 0, 0, v3, 1, 0, 0, 0, 0, 0, -1, 0, 0, 2, 0, 2, v4, 0, 0); } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('You see she has grown a large cock again. As she is spanked it grows more and more erect.\r\r'); } MaxObedience += 0.5; Behaving += 0.5; } } } else { var v2; if (Talent == 5) { if (WeaponType == 3) { v2 = 'Please whip ' + SlavePronoun + ', no I mean, don\'t whip ' + SlavePronoun; } else { if (SlavePronoun == 'I') { v2 = 'Don\'t hurt me!'; } else { v2 = 'Don\'t hurt ' + SlavePronoun + '!'; } } } else { if (SlavePronoun == 'I') { v2 = 'No! I am not a child you can spank!'; } else { v2 = 'No! ' + SlavePronoun + ' not a child you can spank!'; } } Refused(18, v2, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0); } } function FunctionStripTease() { if (TestObedience(DifficultyExhib, SexAction)) { if (SlaveGirl.ShowSexActStripTease() != true) { SlaveGirl.ShowJobSleazyBar(true); SetText(''); } else { if (UseGeneric) { Generic.ShowSexActStripTease(); } } ++TotalStripTease; if (SexPoints(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 0, 0, 0)) { if (AppendActText) { if (Slutiness > 5 || VarLibidoRounded > 70 || VarNymphomaniaRounded > 60) { if (int(Math.random() * 2) == 0) { AddText(SlaveName + ' performs a very sensual striptease, caressing herself as she removes her clothing. She spends a lot of time rubbing her breasts through her clothing and then as she removes her panties she virtually masturbates herself as she rubs them and pulls them.'); if (IsDickgirl()) { AddText('Her cock is clearly visible and very erect, sometimes she touches it and lightly strokes it.'); } } else { if (IsDickgirl()) { AddText(SlaveName + ' performs an energetic dance, occasionally removing bits of clothing and always rubbing, caressing her self and stroking her cock. Part way she orgasms in an exaggerated fashion, throwing off a piece of clothing as her cum flies in spurts through the air.\r\rShe quickly continues her dance a bit slower and more seductively, taking care to not show her cock again.'); } AddText(SlaveName + ' performs an energetic dance, occasionally removing bits of clothing and always rubbing, caressing her self. Part way she orgasms in an exaggerated fashion, throwing off a piece of clothing as she does.\r\rShe quickly continues her dance a bit slower and more seductively, always hiding her groin.'); } AddText('\r\rFinally with her back to you she removes her panties and then seductively turns and reveals herself to you. She is breathing heavily from the energetic dancing and from her arousal.'); if (IsDickgirl()) { AddText(' Her cock is fully, throbbingly erect.'); } } else { if (VarConstitution > 50 || VarLibidoRounded > 50) { if (int(Math.random() * 2) == 0) { AddText(SlaveName + ' performs a slow seductive striptease, keeping her '); if (IsDickgirl()) { AddText('cock'); } else { AddText('pussy'); } AddText(' always hidden, even once she has removed her panties. She slowly removes the rest of her clothes and is sitting back to you. She slowly swivels around and reveals '); if (IsDickgirl()) { AddText('her naked body and erect cock.'); } else { AddText('her naked form and moist pussy.'); } } else { AddText(SlaveName + ' performs a slow seductive striptease, dancing and swaying with one hand almost always '); if (IsDickgirl()) { AddText('stroking or holding her cock'); } else { AddText('at her pussy, rubbing and cupping'); } AddText('. Her breathing and dancing speeds up and as she removes her last piece of clothing, she '); if (IsDickgirl()) { AddText('gasps and cums, spurting cum towards you!'); } else { AddText('cries out and orgasms, a sweet shuddering orgasm.'); } } } else { AddText('She performs a simple striptease, sensually but simply removing her clothes. She looks a little aroused as she finally stands naked before you.'); } } } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('\r\rWhen she finally reveals herself, to <i>both<i> of your surprise, she has a large, erect cock. She curiously touches it and cries out, cumming large jets of cum. She screams and cries through her orgasm, until it finally stops and the cock shrinks and vanishes.'); } SMPoints(0, 0, 0, 0, 0, 1, 0); } else { Refused(25, '', 'She refused.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -3, -2, 0, 0, -1, -5, 0); } } function FunctionThreesome() { if (TestObedience(DifficultyThreesome, SexAction)) { var v1 = SlaveGirl.ShowSexActThreesome(); if (UseGeneric) { Generic.ShowSexActThreesome(); } if (v1 == undefined || v1 == '') { v1 = 'the other woman'; } NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; ++TotalThreesome; if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 2, 0, 0, 0)) { if (Gender == 2) { if (Lesbian) { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She still doesn\'t really accept you and barely touched you.'); } else { if (VarObedienceRounded < 50) { AddText('She seems to enjoy this and helped you and ' + v1 + ' to cum.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love being able to lick and caress you and ' + v1 + '.'); } else { AddText('Looks like she doesn\'t want to stop. She enthusiastically pleasures you as much as ' + v1 + '.'); } } } } } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She still doesn\'t really accept you and barely touched you.'); } else { if (VarObedienceRounded < 50) { AddText('She seems to enjoy being fucked and helped you to orgasm.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love to fuck and enthusiastically licked and caressed you.'); } else { AddText('Looks like she doesn\'t want to stop. She enthusiastically pleasures you as much as the male slave.'); } } } } } } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She still doesn\'t really accept you fucking her and barely touched ' + v1 + '.'); } else { if (VarObedienceRounded < 50) { AddText('She seems to enjoy you fucking her and helped ' + v1 + ' to cum.'); } else { if (VarObedienceRounded < 80) { AddText('She seems to love to fuck and enthusiastically licked and caressed ' + v1 + '.'); } else { AddText('Looks like she doesn\'t want to stop. She enthusiastically pleasures ' + v1 + ' as much as you.'); } } } } } } if (StandardDGText && DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddTextToStart('You and the other person start caressing ' + SlaveName + ', she grows a large cock...\r\r'); } if (Talent == 8) { DickgirlRate += 1; AddText('\r\rShe savours your cum, licking her lips.'); } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { Refused(19, 'No, it\'s wrong with another woman present.', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0); } } function FunctionTitFuck() { if (TestObedience(DifficultyTitsFuck, SexAction)) { SlaveGirl.ShowSexActTitFuck(); if (UseGeneric) { Generic.ShowSexActTitFuck(); } NumTitsFuckSinceFucked += 1; ++TotalTitsFuck; ++TotalBlowjob; if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (SexPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0)) { if (Gender == 2) { if (Lesbian) { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She is awkward in touching you and fails to make you orgasm.'); } else { if (VarObediencRounded < 30) { AddText('She seems to enjoy touching and caressing you and easily brings you to a satisfying orgasm.'); } else { if (VarObedienceRounded < 70) { AddText('She enjoys touching you and works expertly to bring you carefully nearer and nearer to orgasm and then, with skill you cum to a loud crying orgasm.'); } else { AddText('She is tender and arouses you expertly to several strong orgasms. She is flushed and aroused but awaits your touch to make her orgasm.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to like to do that, complaining it is awkward.'); } else { if (VarObediencRounded < 30) { AddText('She seems to enjoy making the male slave cum with her tits and seems to be stimulated as she plays with her nipples..'); } else { if (VarObedienceRounded < 70) { AddText('She works harder to make the slave feel good, she plays expertly with her breasts and nipples.'); } else { AddText('Looks like she won\'t let the slaves cock go, it almost seems like she could orgasm just from this.'); } } } } } } else { if (AppendActText) { if (VarObedienceRounded < 15) { AddText('She doesn\'t seem to like to do that, complaining it is awkward.'); } else { if (VarObediencRounded < 30) { AddText('She seems to enjoy making you cum with her tits and seems to be stimulated as she plays with her nipples..'); } else { if (VarObedienceRounded < 70) { AddText('She works harder to make you feel good, she plays expertly with her breasts and nipples.'); } else { AddText('Looks like she won\'t let you go, it almost seems like she could orgasm just from this.'); } } } } SMPoints(0, 0, 0, 0, 0, -5, 0); } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 2) == 1) { DickgirlChanged = true; Icons.DickgirlXFIcon._visible = true; if (Gender == 2) { AddText('\r\rAfter the slave cums, '); } else { AddText('\r\rAfter you cum, '); } if (Lesbian) { AddText(ServantName + ' tells you how ' + SlaveName + ' grew a large cock while caressing you. She stroked it urgently and came with you. The cock immediately shrunk and disappeared.'); } else { AddText(ServantName + ' tells you how ' + SlaveName + ' grew a large cock while tit-fucking you. She stroked it urgently and came with you. The cock immediately shrunk and disappeared.'); } if (RulesTouchHerself == 0) { AddText(ServantName + ' scolds her for masturbating without permission.'); BadGirl = 1; } } else { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { if (Lesbian) { AddTextToStart('The she starts to caress you, you see she has grown a large cock. You tell her to continue...\r\r'); } else { if (Gender == 2) { AddTextToStart('The slave starts to fuck his cock between her tits and you see she has grown a large cock. The slave alters his fucking, so he is not on her cock...\r\r'); } else { AddTextToStart('You start to fuck your cock between her tits and feel something. You look and see she has grown a large cock. You instead work out how to work your cock with her tits, so you are not on her cock...\r\r'); } } } } } if (TotalTitsFuck == 1) { DifficultyTitsFuck -= 5; } if (NippleChainWorn == 1 || NippleRingsWorn == 1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } if (Talent == 8) { DickgirlRate += 1; AddText('\r\rShe savours your cum, licking it from her breasts.'); } } else { Refused(6, '', 'She refused saying it is a silly idea.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, -1, -2, 0); } } function FunctionTouch() { if (TestObedience(DifficultyTouch, SexAction)) { SlaveGirl.ShowSexActTouch(); if (UseGeneric) { Generic.ShowSexActTouch(); } ++NumTouchSinceFucked; ++TotalTouch; var v2 = 1; if (IsDickgirl()) { v2 = -2; } if (SexPoints(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v2, 0, 0, 0, 0, 0)) { if (AppendActText) { if (StandardDGText) { if (DickgirlChanged && !SlaveGirl.IsDickgirl()) { AddText('As '); if (SexAction == 3 || SexAction == 3.1) { AddText('you start'); } else { AddText('the slave starts'); } AddText(' ' + SlaveName + ' suddenly cries out and grows a large erect cock, '); if (SexAction == 3 || SexAction == 3.1 || SexAction == 3.4) { AddText('so you get a female slave to stroke it instead.\r\r'); } else { AddText('so you have the female slave stroke it instead.\r\r'); } SexAction = 2.2; } } var v1 = VarLibidoRounded / 2 + VarSensibilityRounded; if (Talent == 5) { AddText('You move behind ' + SlaveName + ', chastising her, and bite her on the neck.'); if (TotalLesbian == 0) { AddText(' She starts at your bite and the feel of your breasts on her back.'); DifficultyLesbian -= 0.5; Points(0, 0, 0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, -0.5, 0, 0, 0, -0.5, 0, 0); } AddText(' You start to pinch her nipples and then her pussy lips and clit, You spank and slap her breasts and her pussy, creating red welts. Tears are slowly falling from her eyes, from the pain and humiliation.\r\r'); if (v1 < 40) { AddText('She only really responds to the pain, '); if (TotalLesbian == 0) { AddText('uncomfortable with another woman\'s touch.'); } else { AddText('a little confused, expecting you to make her orgasm.'); } } else { if (v1 < 80) { AddText('She occasionally moans, moving '); if (TotalLesbian == 0) { AddText('uncomfortably '); } AddText('beneath your touch, her nipples erect.'); } else { if (v1 < 120) { AddText('She responds with moans and sighs to your slaps, slowly becoming wet, nipples erect.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s punishment.'); } } else { AddText('She is very responsive and arouses quickly and easily, despite the pain.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' You cannot spank her pussy much as she seems rapidly approach orgasm.'); if (TotalLesbian > 0) { switch (int(Math.random() * 2)) { case 0: AddText('She whispers to you, suggesting you could paddle her ass...'); break; case 1: AddText('As you spank her pussy, she gasps and you see her orgasm. You realise she had been trying to conceal her responses. You scold her for her deception.'); BadGirl = 1; } } } } } } else { if (SexAction == 2) { AddText('You move next to ' + SlaveName + ' and speak reassuringly to her, and slowly start to run your hands over her body, caressing her breasts, touching her pussy and rubbing her ass.\r\rYou take care not to grope her breasts or ass, and you make sure not to stimulate her pussy too much. You are trying to make her more aware of her body and to arouse, but not to masturbate her and make her orgasm.\r\r'); if (v1 < 40) { AddText('She does not respond much to your touch, a little confused, expecting you to make her orgasm.'); } else { if (v1 < 80) { AddText('She sighs, moving beneath your touch, but her nipples are especially sensitive.'); if (MilkInfluence > 0 || TentaclePregnancy > 0) { AddText(' You are a little surprised to feel moisture leaking from her nipples, milk maybe?'); } } else { if (v1 < 120) { AddText('She responds with moans and sighs to your touch. Her nipples and clit become hard quickly and she seems to delight in every touch. Every time you touch her pussy she strains, hoping you will touch her more and make her orgasm.'); } else { AddText('She is very responsive and arouses quickly and easily. You cannot touch her pussy much as she seems rapidly approach orgasm.'); switch (int(Math.random() * 2)) { case 0: AddText('She whispers to you, suggesting instead you could put a finger in her ass...'); break; case 1: AddText('As you touch her, she gasps and you feel her orgasm. You realise she had been trying to conceal her responses. You scold her for her deception.'); BadGirl = 1; } } } } } else { if (SexAction == 2.1) { if (IsDickgirl()) { AddText('You move behind ' + SlaveName + ', speaking reassuringly to her, and kiss her on the neck.'); if (TotalLesbian == 0) { AddText(' She starts a little at your touch and the feel of your breasts on her back.'); DifficultyLesbian -= 0.5; Points(0, 0, 0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, -0.5, 0, 0, 0, -0.5, 0, 0); } AddText(' You slowly start to run your hands over her body, caressing her breasts, touching her ass and carefully touching her cock.\r\rYou take care not to grope her breasts or ass, but her cock quickly becomes hard and erect. You must be careful of her cock, you are trying to make her more aware of her body and to arouse, but not to masturbate her and make her cum.\r\r'); if (v1 < 40) { AddText('She does not respond much to most of your touches, '); if (TotalLesbian == 0) { AddText('she is uncomfortable with another woman\'s touch.'); } else { AddText('she is a little confused, expecting you to just masturbate her.'); } AddText(' As you feel she has had enough, she cries out and you feel and see her cock spew out a gout of cum. It was only a mild orgasm, and once she recovers you mildly scold her lack of self control.'); } else { if (v1 < 80) { AddText('She sighs, moving '); if (TotalLesbian == 0) { AddText('uncomfortably '); } AddText('beneath your touch, but her nipples are especially sensitive. '); if (MilkInfluence > 0 || TentaclePregnancy > 0) { AddText(' You are a little surprised to feel moisture leaking from her nipples, milk maybe?'); } AddText(' As you touch her nipples you hear her suppress a moan, then you see spurt after spurt of cum erupting from her cock. She calms down after her orgasm, and looks a little embarrassed. You scold her for her lack of self control.'); } else { if (v1 < 120) { AddText('She responds with moans and sighs to your touch.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' Her nipples and cock become hard quickly and she seems to delight in every touch. You stroke her cock trying to keep her from cumming but also trying to keep her near to cumming.\r\rShe seems frustrated and seems try to deceive you and hide her arousal. You have a sort of competition trying to keep her from cumming while she does her best to cum. After a while she is sweating and breathing heavily, and you are tired. She suddenly reaches up and pinches her nipples and you feel and great pulse in her cock. You looks and see huge spurts and gobs of cum pumping from her cock, coating her face, her breasts, some even getting on you! ' + SlaveName + ' cries and shouts and cums for a long time, then collapses, tired and whispers \'thank you\''); } else { AddText('She is very responsive and arouses quickly and easily.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' You find her cock is very sensitive and find it difficult to prevent her from cumming. After a time of attempting to prevent her you give up and move around. You quickly stroke her cock until she gasps '); switch (int(Math.random() * 2)) { case 0: AddText('and you bend down and place your mouth over the end of her cock and ' + SlaveName + ' cums spurt after spurt into your mouth, until she lies down panting and your mouth is full of her cum. You move and lie on her, and kiss her on the mouth, letting all of ' + SlaveName + '\'s cum pour into her own mouth. She looks surprised, and a little startled as you order \'swallow\'...'); break; case 1: AddText('and you direct her spraying cum over your breasts. She lies down panting, but you order her up, to lick the cum off your breasts...'); BadGirl = 1; } } } } } else { AddText('You move behind ' + SlaveName + ', speaking reassuringly to her, and kiss her on the neck.'); if (TotalLesbian == 0) { AddText(' She starts a little at your touch and the feel of your breasts on her back.'); DifficultyLesbian -= 0.5; Points(0, 0, 0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, -0.5, 0, 0, 0, -0.5, 0, 0); } AddText(' You slowly start to run your hands over her body, caressing her breasts, touching her pussy and rubbing her ass.\r\rYou take care not to grope her breasts or ass, and you make sure not to stimulate her pussy too much. You are trying to make her more aware of her body and to arouse, but not to masturbate her and make her orgasm.\r\r'); if (v1 < 40) { AddText('She does not respond much to you, '); if (TotalLesbian == 0) { AddText('uncomfortable with another woman\'s touch.'); } else { AddText('a little confused, expecting you to make her orgasm.'); } } else { if (v1 < 80) { AddText('She sighs, moving '); if (TotalLesbian == 0) { AddText('uncomfortably '); } AddText('beneath your touch, but her nipples are especially sensitive.'); if (MilkInfluence > 0 || TentaclePregnancy > 0) { AddText(' You are a little surprised to feel moisture leaking from her nipples, milk maybe?'); } } else { if (v1 < 120) { AddText('She responds with moans and sighs to your touch.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' Her nipples and clit become hard quickly and she seems to delight in every touch. Every time you touch her pussy she strains, hoping you will touch her more and make her orgasm.'); } else { AddText('She is very responsive and arouses quickly and easily.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' You cannot touch her pussy much as she seems to rapidly approach orgasm.'); if (TotalLesbian > 0) { switch (int(Math.random() * 2)) { case 0: AddText('She whispers to you, suggesting instead you could put a finger in her ass...'); break; case 1: AddText('As you touch her, she gasps and you feel her orgasm. You realise she had been trying to conceal her responses. You scold her for her deception.'); BadGirl = 1; } } } } } } } else { if (SexAction == 2.2) { AddText('You have the female slave move behind ' + SlaveName + ', while you speak reassuringly to her.'); if (TotalLesbian == 0) { AddText(' She starts a little at the slaves touch and the feel of her breasts on her back.'); DifficultyLesbian -= 0.5; Points(0, 0, 0, 0, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, -0.5, 0, 0, 0, -0.5, 0, 0); } AddText(' The slave slowly starts to run her hands over ' + SlaveName + '\'s body, caressing her breasts and touching her ass and carefully touching her cock. You tell the female slave to take care not to grope her breasts or ass, but you see her cock quickly becomes hard and erect. You warn the slave the she must be careful of her cock, you are trying to make her more aware of her body and to arouse, but not to masturbate her and make her cum.\r\r'); if (v1 < 50) { AddText('She does not respond much to the slaves touches, '); if (TotalLesbian == 0) { AddText('she is uncomfortable with another woman\'s touch.'); } else { AddText('she is a little confused, expecting the slave to just masturbate her.'); } AddText(' As you feel she has had enough and tell the slave to stop, but the slave seems not to hear and continues stroking and ' + SlaveName + ' cries out and you see her cock spew out a gout of cum. It was only a mild orgasm, and once she recovers you mildly scold her lack of self control. You also scold the female slave for her lack of control.'); } else { if (v1 < 90) { AddText('She sighs, moving '); if (TotalLesbian == 0) { AddText('uncomfortably '); } AddText('beneath the slaves touch, but her nipples are especially sensitive, large and erect. '); if (MilkInfluence > 0 || TentaclePregnancy > 0) { AddText(' You are a little surprised to see moisture leaking from her nipples, milk maybe?'); } AddText(' As you tell to slave to touch ' + SlaveName + 's nipples you hear ' + SlaveName + ' suppress a moan, then you see spurt after spurt of cum erupting from her cock. She calms down after her orgasm, and looks a little embarrassed. You scold her for her lack of self control.'); } else { if (v1 < 120) { AddText('She responds with moans and sighs to the slaves touch.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' Her nipples and cock become hard quickly and she seems to delight in every touch. You tell the slave to stroke her cock and try to keep her from cumming. After a short time you see ' + SlaveName + ' is trying to hide her arousal, but the slave does not notice. You are about to tell her when you see ' + SlaveName + '\'s back arch and cum erupts from her cock, spurt after spurt flying across the room. When ' + SlaveName + ' recovers to scold them both for losing control.'); } else { AddText('She is very responsive and arouses quickly and easily.'); if (TotalLesbian == 0) { AddText(' She seems very unsure, but aroused by another woman\'s touch.'); } AddText(' You see the female slave is finding it difficult to prevent ' + SlaveName + ' from cumming. Instead you tell the slave to '); switch (int(Math.random() * 2)) { case 0: AddText('move down and use her tits to masturbate ' + SlaveName + '. She does so expertly until ' + SlaveName + ' is groaning and about to cum. You tells the slave to capture all her cum in her mouth. ' + SlaveName + ' pants and gasps and cums into the slave\'s mouth. When ' + SlaveName + ' gasps and falls back the slave looks up at you, her mouth full of ' + SlaveName + '\'s cum. You tell her \'swallow\'...'); break; case 1: AddText('to quickly make ' + SlaveName + ' cum. Quickly she makes ' + SlaveName + '\'s cock erupt glob after glob of cum. You then tell the slave to make her cum again, deciding that after a half a dozen cums her cock will be very sensitive...'); BadGirl = 1; } } } } } else { if (SexAction == 2.3) { AddText('The male slave moves next to ' + SlaveName + ' and starts to run his hands over her body, caressing her breasts and touching pussy and ass. Sometimes he crudely gropes her breasts or ass, and you tell him to stop. You make sure he does not stimulate her pussy too much. You are trying to make her more aware of her body and to arouse, but not have him masturbate her and make her orgasm.\r\r'); if (v1 < 50) { AddText('She does not respond much to the slaves touch, a little confused, expecting him to make her orgasm.'); } else { if (v1 < 90) { AddText('She sighs, moving beneath his touch, but her nipples especially sensitive.'); if (MilkInfluence > 0 || TentaclePregnancy > 0) { AddText(' You are a little surprised to see moisture leaking from her nipples, milk maybe?'); } } else { if (v1 < 130) { AddText('She responds with moans and sighs to his touch. Her nipples and clit become hard quickly and she seems to delight in every touch. Every time he touches her pussy she strains, hoping to be made to orgasm.'); } else { AddText('She is very responsive and arouses quickly and easily. He cannot touch her pussy much as she seems to rapidly approach orgasm.'); } } } } } } } } } } if (StandardDGText) { if (DickgirlChangable && DickgirlChanged == false && DickgirlXF == 0 && int(Math.random() * 2) == 1) { AddText('\r\rAs '); if (SexAction == 3 || SexAction == 3.1) { AddText('you caress'); } else { AddText('the slave caresses'); } AddText(' her you see ' + SlaveName + '\'s clit grow large and very erect almost like a small cock. She rubs it almost unconsciously.'); } } if (TotalTouch == 1) { DifficultyTouch -= 4; } if (NippleChainWorn == 1 || NippleRingsWorn == 1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } } else { Refused(2, '', 'She refused to let you touch her.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, -1, -2); } } function ShowSlaveMaker(profile) { if (profile != true) { HideAssistant(); ShowMovie(OnTopOverlayWhite, false, 0); } var v1 = 0; while (v1 < AppearanceArray.length) { AppearanceArray[v1]._visible = false; AppearanceArray[v1].forceSmoothing = true; ++v1; } var v11; if (Appearance < 1) { if (Gender != 3) { if (Gender == 1) { Appearance = countMale; } else { Appearance = countFemale; } } else { Appearance = countFemale + countDickgirl; } } else { if (Gender == 3) { if (Appearance > countFemale + countDickgirl) { Appearance = 1; } } else { if (Gender == 1) { if (Appearance > countMale) { Appearance = 1; } } else { if (Appearance > countFemale) { Appearance = 1; } } } } SlaveMakerSelection.SlaverAppearance.gotoAndStop(Gender); var v2; switch (Gender) { case 1: v2 = AppearanceArray[Appearance - 1]; break; case 2: v2 = AppearanceArray[countMale + Appearance - 1]; break; case 3: v2 = AppearanceArray[countMale + Appearance - 1]; } v2._visible = true; var v6 = (profile == true) ? 31.6 : 7; var v8 = (profile == true) ? 58.5 : 342; var v4 = (profile == true) ? 201 : 153; var v3 = (profile == true) ? 259.8 : 152; var v7 = v2._width / v2._height; var v9 = v4 / v3; var v10 = v3 / (v7 / v9); if (v10 > v3) { v2._width = v4 * (v7 / v9); v2._height = v3; if (Gender == 1) { v2._x = v6; } else { v2._x = v6 + (v4 - v2._width) / 2; } v2._y = v8; } else { v2._width = v4; v2._height = v10; v2._x = v6; v2._y = v8 + v3 - v2._height; } SMAppearance._visible = true; } function NextAppearance() { var v2; var v1; ++capp; switch (cgender) { case 1: ++countMale; v2 = 'Appearance - Male ' + capp + '.jpg'; v1 = 'male' + capp; break; case 2: ++countFemale; v2 = 'Appearance - Female ' + capp + '.jpg'; v1 = 'female' + capp; break; case 3: ++countDickgirl; v2 = 'Appearance - Dickgirl ' + capp + '.jpg'; v1 = 'dg' + capp; } var v3 = SMAppearance.createEmptyMovieClip(v1, SMAppearance.getNextHighestDepth()); AppearanceArray.push(v3); mcLoaderAP.loadClip(v2, v3); } function AppearanceError() { switch (cgender) { case 1: --countMale; break; case 2: --countFemale; break; case 3: --countDickgirl; } AppearanceArray.pop(); ++cgender; if (cgender < 4) { capp = 0; NextAppearance(); } } function ShowMainButtons(n) { SystemButton._visible = true; MorningButton._visible = true; PlanningButton._visible = true; HideImages(); HideBackgrounds(); HideItems(); } function HideMainButtons() { SystemButton._visible = false; MorningButton._visible = false; PlanningButton._visible = false; HideImages(); HideBackgrounds(); HideItems(); } function DoPlanningButton() { HideStatChangeIcons(); HidePeople(); HideRobes(); NumEvent = 0; HideMainButtons(); Backgrounds.ShowSky(3); ServantSpeakStart(Master + ' you can decide here what she will do in the daytime, training, studying or working.\r\rShe can do 3 separate actions'); if (VarFatigue > 59 + FatigueBonus) { AddText(', she is too tired to do more and she will have to rest '); if (VarFatigue > 80 + FatigueBonus) { AddText('twice. These are'); } else { AddText('once. This is'); } AddText(' already set for her to do'); } Quitter._visible = true; PlanningDay.ChangeSupervision._visible = false; if (TotalActionMax == 0) { TotalActionMax = 3; PlanningDay.ChangeSupervision._visible = true; Action1 = 0; Action2 = 0; Action3 = 0; Action4 = 0; Action5 = 0; Action6 = 0; SMAction1 = 0; if (VarFatigue > 80) { AddDayNightAction(17); } if (VarFatigue > 59) { AddDayNightAction(17); } if (SlaveGirl.StartDay() != true) { if (SuperviseYourself == -1) { PersonSpeakEnd('.\r\rYou can personally supervise her daily tasks or ' + ServantPronoun + ' can do it. If you do you will not have any free time for personal training but will be able to more closely manage her training. You can change this at the start of daily training.\r\rWill you supervise her?'); DoYesNoEventXY(510); } else { PlanningDay._visible = true; PersonSpeakEnd('.'); } } } else { PlanningDay._visible = true; PersonSpeakEnd('.'); } ActionsMenu._visible = false; ItemSalesman._visible = false; SystemMenu._visible = false; LoadSaveGames._visible = false; VisitMenu._visible = false; RulesMenu._visible = false; TakeAWalkMenu._visible = false; EquipmentMenu._visible = false; ShopMenu._visible = false; SalonMenu._visible = false; SalonMenu._visible = false; TailorMenu._visible = false; Beep(); } function DoMorningButton() { StopHints(); SetText(''); if (ActionsMenu._visible == false) { TakeAWalkMenu._visible = false; VisitMenu._visible = false; ActionsMenu._visible = true; SystemButton._visible = true; SystemMenu._visible = false; LoadSaveGames._visible = false; if (DoneWalk == 0 || DoneWalk == FreeWalkPlace) { ActionsMenu.TakeAWalkButtonDisabled._visible = false; } else { ActionsMenu.TakeAWalkButtonDisabled._visible = true; } if (DoneVisit == 0) { ActionsMenu.VisitButtonDisabled._visible = false; } else { ActionsMenu.VisitButtonDisabled._visible = true; } } else { ActionsMenu._visible = false; } Beep(); } function DoLeaveButton() { Quitter._x = 626; NextEvent._x = 626; HideImages(); HideSlaveActions(); HideStatChangeIcons(); HideItems(); HidePeople(); SetText(''); ItemSalesman._visible = false; Dealer._visible = false; HideYesNoButtons(); LoadSaveGames._visible = false; StopHints(); if (EquipmentMenu._visible) { EquipmentMenu._visible = false; ActionsMenu._visible = true; } if (RulesMenu._visible) { RulesMenu._visible = false; ActionsMenu._visible = true; } if (TailorMenu._visible) { TailorMenu._visible = false; ActionsMenu._visible = true; } if (ShopMenu._visible) { ShopMenu._visible = false; ActionsMenu._visible = true; } if (SalonMenu._visible) { SalonMenu._visible = false; ActionsMenu._visible = true; } if (StablesMenu._visible) { StablesMenu._visible = false; ActionsMenu._visible = true; } if (TakeAWalkMenu._visible) { TakeAWalkMenu._visible = false; ActionsMenu._visible = true; } if (VisitMenu._visible) { VisitMenu._visible = false; ActionsMenu._visible = true; } if (Backgrounds.PlaceSlaveMarket._visible) { HideBackgrounds(); TakeAWalkMenu._visible = true; SystemMenu._visible = false; return undefined; } if (VisitFortuneTeller._visible) { SlaveMakerName = VisitFortuneTeller.SlaveMakerName.text; if (DoneMaster == 1) { SGMasterName = 'Master'; } else { SGMasterName = SlaveMakerName; } TentacleFrequency = GlobalTentacleFrequency; dmod = 1 - Difficulty / 7; Quitter._x = 626; ApplyColours(); if (ColoursOn) { if (Gender == 1) { ApplyColours(0, 0, 50); } else { if (Gender == 2) { ApplyColours(25, 0, 35); } else { ApplyColours(0, 35, 0); } } } IntroBackground._visible = false; BackgroundGrid._visible = true; MainBackground._visible = true; ShowStatistics(true); Icons._visible = true; GeneralTextField._visible = true; TakeAWalkMenu._visible = true; VisitFortuneTeller._visible = false; SaveGlobalData(); if (IntroOptionsMenu.NewAssistant.text != oldAssistantName) { if (IntroOptionsMenu.NewAssistant.text != '') { ServantFilename = 'Slave-' + IntroOptionsMenu.NewAssistant.text + '.swf'; ChangeAssistant(); } } else { ShowAssistant(); } return undefined; } ShowMainButtons(); Quitter._visible = false; HideEndings(); HideBackgrounds(); if (PlanningDay._visible) { PlanningDay._visible = false; } ShowRobes(); Beep(); } function ChangeAssistant(assistant) { if (ServantFilename == '' || ServantLoaded && oldfileServant == ServantFilename) { return undefined; } if (ServantLoaded) { CurrentAssistant.unloadMovie(); } mclListenerServant.onLoadInit = ChangeServantLoadDone; mclListenerServant.onLoadError = ChangeBadServantName; mcLoaderServant.addListener(mclListenerServant); mcLoaderServant.loadClip(ServantFilename, CurrentAssistant); } function ChangeBadServantName(target_mc, errorCode, httpStatus) { var v1 = 'Assistant' + ServantFilename.substr(5); ServantFilename = v1; mcLoaderServant.removeListener(mclListenerServant); mclListenerServant.onLoadInit = ChangeServantLoadDone; mclListenerServant.onLoadError = ChangeBadServantNameShampoo; mcLoaderServant.addListener(mclListenerServant); mcLoaderServant.loadClip(ServantFilename, CurrentAssistant); } function ChangeBadServantNameShampoo(target_mc, errorCode, httpStatus) { ServantFilename = 'Slave-Shampoo.swf'; SlaveInformation.text = 'Failed to load assistant, loading Shampoo'; mcLoaderServant.removeListener(mclListenerServant); mclListenerServant.onLoadInit = ChangeServantLoadDone; mclListenerServant.onLoadError = ChangeBadServantName; mcLoaderServant.addListener(mclListenerServant); mcLoaderServant.loadClip(ServantFilename, CurrentAssistant); } function ChangeServantLoadDone() { ServantLoaded = true; CurrentAssistant.InitialiseAsAssistant(); if (ServantHimHer == 'her') { ServantHeShe = 'she'; ServantHisHer = 'her'; if (ServantGender == 0) { ServantGender = 2; } } else { ServantHeShe = 'he'; ServantHisHer = 'his'; if (ServantGender == 0) { ServantGender = 1; } } ShowAssistant(); SaveGlobalData(); } function DoRules() { HideMainButtons(); Quitter._visible = true; ActionsMenu._visible = false; UpdateRules(); ServantSpeak('Here, you can choose the things she is allowed to do.'); StopHints(); RulesMenu._visible = true; Beep(); } function DoGeneralNext() { SetText(''); HideStatChangeIcons(); UpdateSlave(); HideImages(); HideItems(); HideBackgrounds(); Beep(); DiscussOrdinary._visible = false; DiscussCongratulate._visible = false; DiscussScold._visible = false; HidePeople(); HideSlaveActions(); HideRobes(); ClipSexDream._visible = false; Action = 0; if (Action1 != 0) { Action = Action1; Action1 = 0; } else { if (Action2 != 0) { Action = Action2; Action2 = 0; } else { if (Action3 != 0) { Action = Action3; Action3 = 0; } else { if (Action4 != 0) { Action = Action4; Action4 = 0; } else { if (Action5 != 0) { Action = Action5; Action5 = 0; } else { if (Action6 != 0) { Action = Action6; Action6 = 0; } } } } } } if (SMAction1 != 0 && Action == 0) { Action = SMAction1; SMAction1 = 0; SlaveDay = false; } if (Day) { if (Action != 0) { if (SlaveDay) { PlanningDayCode(Action); } else { SMPlanningDayCode(Action); } } else { InitialiseNight(); if (VarProstitute == 1001) { TotalActionMax = 0; ProstituteParty(8025); return undefined; } if (VarHighClassProstitute == 1001) { TotalActionMax = 0; HighClassParty(8040); return undefined; } StartNight(); } } else { if (Action != 0) { PlanningNightCode(Action); } else { NewDay(); } } } function DoGeneralYes() { Beep(); SlaveGirl.DoGeneralYes(); AddDayNightAction(ActionChoice); if (Day) { ServantSpeak(Master + ', what is her next action for today (' + (TotalAction + 1) + ' of ' + TotalActionMax + ').'); } else { ServantSpeak(Master + ', what is her next form of training for this evening (' + (TotalAction + 1) + ' of ' + TotalActionMax + ').'); } if (TotalAction >= TotalActionMax) { HideStatChangeIcons(); HideImages(); HideBackgrounds(); Beep(); HidePeople(); HideSlaveActions(); Quitter._visible = false; if (Day) { if (SlaveDay && SuperviseYourself != 1) { SlaveDay = false; PlanningDay._visible = false; Backgrounds.ShowSky(3); TotalAction = 0; TotalActionMax = 1; SMPlanningDay._visible = true; ShowSlaveMaker(false); SetText('You have some free time in your day to train or just relax.\r\rYou only have the free time to do one thing.'); return undefined; } else { SlaveDay = true; SMPlanningDay._visible = false; PlanningDay._visible = false; HideBackgrounds(); PlanningDayCode(Action1); } } else { LastActionRefused = 0; PlanningNight._visible = false; PlanningNightSex._visible = false; PlanningNightOther._visible = false; HideBackgrounds(); PlanningNightCode(Action1); } TotalAction = 0; ActionChoice = 0; Action1 = 0; TotalActionMax = 0; } } function ActionShortcuts(key) { switch (key) { case 66: DoStables(); break; case 69: DoEquipment(); break; case 72: DoShop(); break; case 79: DoSalon(); break; case 82: DoRules(); break; case 84: DoTailor(); break; case 86: DoVisitMenu(); break; case 87: DoTakeAWalk(); } } function InitialiseCombat(startmsg, runawayevent, winevent, loseeventhurt, loseeventaroused, sethealth) { CombatTime = 0; CombatStartMsg = startmsg; Action1 = winevent; Action3 = runawayevent; Action5 = loseeventhurt; Action6 = loseeventaroused; var v2 = 0; while (v2 < MonsterArray.length) { delete MonsterArray[v2]; ++v2; } delete MonsterArray; MonsterArray = new Array(); CombatCreatures.Tentacles._visible = false; CombatCreatures.DevilGirls._visible = false; CombatCreatures.Zombies._visible = false; CombatCreatures.Demons._visible = false; SMCurrentAttack = SMAttack; SMCurrentDefence = SMDefence; SMNextAttack = 45; switch (ArmourType) { case 1: SMCurrentDefence += 20; if (Talent == 5) { SMCurrentDefence += 5; } SMNextAttack -= 20; break; case 2: SMCurrentDefence += 25; SMNextAttack -= 10; break; case 3: SMCurrentDefence += 30; break; case 4: SMCurrentDefence += 35; SMNextAttack += 10; } switch (WeaponType) { case 1: SMCurrentAttack += 30; if (Talent == 1) { SMCurrentAttack += 5; } break; case 2: SMCurrentAttack += 25; if (Talent == 9) { SMCurrentAttack += 5; } break; case 3: SMCurrentAttack += 20; if (Talent == 5) { SMCurrentAttack += 5; } break; case 4: if (type == 2) { SMCurrentAttack += 40; } else { SMCurrentAttack += 35; } } if (SMCurrentAttack > 100) { SMCurrentAttack = 100; } if (SMCurrentDefence > 100) { SMCurrentDefence = 100; } SMTempDefence = SMCurrentDefence; SMSpeed = SMNextAttack; if (sethealth == true) { _root.SMHealth = _root.SMConstitution; } CurrentMonster = 0; } function SetHealth(amt) { if (amt != undefined) { _root.SMHealth += amt; if (_root.SMHealth > _root.SMConstitution) { _root.SMHealth = _root.SMConstitution; } } else { _root.SMHealth = _root.SMConstitution; } } function AddMonster(newmonster) { MonsterArray.push(newmonster); } function AddMonsterTentacle(attack, defence, health, speed, desc, image) { _root.AddMonster(new Scripts.Classes.MonsterTentacle(attack, defence, health, speed, desc, image)); } function AddMonsterZombie(attack, defence, health, speed, desc, image) { _root.AddMonster(new Scripts.Classes.MonsterZombie(attack, defence, health, speed, desc, image)); } function AddMonsterDevilGirl(attack, defence, health, speed, desc, image) { _root.AddMonster(new Scripts.Classes.MonsterDevilGirl(attack, defence, health, speed, desc, image)); } function AddMonsterAstrid(attack, defence, health, speed, desc, image) { _root.AddMonster(new Scripts.Classes.MonsterAstrid(attack, defence, health, speed, desc)); } function AddMonsterGeneric(attack, defence, health, speed, desc, mc) { _root.AddMonster(new Scripts.Classes.MonsterGeneric(attack, defence, health, speed, desc, mc)); } function CombatHitSound(monster) { if (!SoundsOn) { return undefined; } if (Hit) { MonsterArray[CurrentMonster].CombatHitSound(); } else { if (WeaponType == 0) { if (SoundsOn) { Sounds.SoundPunch.gotoAndPlay(2); } } else { if (SoundsOn) { Sounds.SoundMiss.gotoAndPlay(2); } } } } function UpdateCombatStats() { CombatStatistics.HealthBar._xscale = 30 * SMHealth; CombatStatistics.ArousalBar._xscale = 30 * SMLibido; CombatStatistics.MonsterHealthBar._width = 350 * (MonsterArray[CurrentMonster].GetHealth() / 100); } function ResetSMAttacks() { SMTempDefence = SMCurrentDefence; AskQuestions._visible = false; CombatHits._visible = false; CombatSMAttack.gotoAndStop(1); CombatSMAttack.Unarmed1._visible = false; CombatSMAttack.Sword1._visible = false; CombatSMAttack.Sword2._visible = false; CombatSMAttack.Whip1._visible = false; CombatSMAttack.Bow1._visible = false; CombatSMAttack.Miss1._visible = false; CombatSMAttack.Miss2._visible = false; } function SlaveMakerDoDamage(damage, skill, defence, stun) { if (defence != undefined) { SMTempDefence = SMCurrentDefence * defence; } if (int(Math.random() * 100) <= SMCurrentAttack * skill) { if (WeaponType == 3 && SoundsOn) { Sounds.SoundWhipCrack.gotoAndPlay(2); } if (stun) { MonsterArray[CurrentMonster].DamgeMonster(60, true); } else { var v1 = SMCurrentAttack * damage - MonsterArray[CurrentMonster].MonsterTempDefence + int(Math.random() * 5); if (v1 < 5) { v1 = int(Math.random() * 4) + 2; } if (v1 > 30) { v1 = 30; } MonsterArray[CurrentMonster].DamgeMonster(v1, false); if (v1 > 20) { CombatHits.gotoAndStop(3); } else { if (v1 > 10) { CombatHits.gotoAndStop(2); } else { CombatHits.gotoAndStop(1); } } UpdateCombatStats(); } Hit = true; } else { if (int(Math.random() * 2) == 1) { CombatSMAttack.Miss1._visible = true; } else { CombatSMAttack.Miss2._visible = true; } Hit = false; } SMNextAttack = CombatTime + SMSpeed; CombatSMAttack.gotoAndPlay(1); CombatSMAttack._visible = true; } function ResetMonsterAttacks() { AskQuestions._visible = false; CombatHits._visible = false; CombatMonsterAttacks.gotoAndStop(1); CombatMonsterAttacks.Cum1._visible = false; CombatMonsterAttacks.Tentacle1._visible = false; CombatMonsterAttacks.DevilGirlStrike._visible = false; CombatMonsterAttacks.DevilGirlKiss._visible = false; CombatMonsterAttacks.Zombie._visible = false; CombatMonsterAttacks.Miss1._visible = false; CombatMonsterAttacks.Miss2._visible = false; MonsterArray[CurrentMonster].ResetAttacks(); } function CombatEvent(eventno) { switch (eventno) { case 3000: SetText(CombatStartMsg); HideImages(); NextEvent._visible = false; FirstArousalHit = false; MonsterArray[CurrentMonster].ShowMonster(); CombatStatistics.CreatureName.text = MonsterArray[CurrentMonster].GetDescription() + ':'; CombatTime = 0; Icons._visible = false; UpdateCombatStats(); CombatStatistics._visible = true; eventno = 3100; break; case 3001: SetText('You step in and punch at the ' + MonsterArray[CurrentMonster].GetDescription() + '\'s body '); ResetSMAttacks(); CombatSMAttack.Unarmed1._visible = true; SlaveMakerDoDamage(1, 1, 1); if (Hit) { if (int(Math.random() * 2) == 1) { AddText('and solidly hit '); } else { AddText('and your fist connects with '); } MonsterArray[CurrentMonster].Hit(WeaponType, 0); } else { AddText('but '); MonsterArray[CurrentMonster].Missed(WeaponType, 0); } UpdateCombatStats(); return undefined; case 3002: ResetSMAttacks(); CombatSMAttack.Unarmed1._visible = true; SlaveMakerDoDamage(1.2, 1, 0.8); SetText('You step in and kick the ' + MonsterArray[CurrentMonster].GetDescription()); AddText('\'s body '); if (Hit) { if (int(Math.random() * 2) == 1) { AddText('and solidly hit '); } else { AddText('and your foot sinks in '); } MonsterArray[CurrentMonster].Hit(WeaponType, 1); } else { AddText('but '); MonsterArray[CurrentMonster].Missed(WeaponType, 1); } return undefined; case 3003: ResetSMAttacks(); CombatSMAttack.Sword1._visible = true; SlaveMakerDoDamage(1, 1, 1); SetText('You slash your sword at the ' + MonsterArray[CurrentMonster].GetDescription()); if (Hit) { if (int(Math.random() * 2) == 1) { AddText(' and deal a deep cut '); } else { AddText(' and cut several shallow cuts '); } MonsterArray[CurrentMonster].Hit(WeaponType, 0); } else { AddText(' but '); MonsterArray[CurrentMonster].Missed(WeaponType, 0); } return undefined; case 3004: ResetSMAttacks(); CombatSMAttack.Sword2._visible = true; SlaveMakerDoDamage(1.4, 0.8, 0.8); SetText('You lunge in to do a deep penetrating wound into a vital location '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 1); } else { AddText('but '); MonsterArray[CurrentMonster].Missed(WeaponType, 1); } return undefined; case 3005: ResetSMAttacks(); CombatSMAttack.Bow1._visible = true; SlaveMakerDoDamage(1, 1, 1); SetText('You fire a carefully aimed arrow at the ' + MonsterArray[CurrentMonster].GetDescription() + ' '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 0); } else { MonsterArray[CurrentMonster].Missed(WeaponType, 0); } return undefined; case 3006: ResetSMAttacks(); CombatSMAttack.Bow1._visible = true; SlaveMakerDoDamage(1.5, 0.6, 1); SetText('You fire several arrows with little aiming at the ' + MonsterArray[CurrentMonster].GetDescription() + ' '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 1); } else { MonsterArray[CurrentMonster].Missed(WeaponType, 1); } return undefined; case 3007: ResetSMAttacks(); CombatSMAttack.Whip1._visible = true; SlaveMakerDoDamage(1, 1, 1); if (Talent == 5) { SetText('With long experience you gleefully lash '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 0); } else { MonsterArray[CurrentMonster].Missed(WeaponType, 0); } if (SMLibido < 75) { SMLibido += 1; } UpdateCombatStats(); } else { SetText('You lash, trying to cause pain and injury '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 2); } else { MonsterArray[CurrentMonster].Missed(WeaponType, 2); } } return undefined; case 3008: ResetSMAttacks(); CombatSMAttack.Whip1._visible = true; if (Talent == 5) { SlaveMakerDoDamage(1, 1.3, 1, true); SetText('With long experience you gleefully lash trying to cause as much pain as possible '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 1); } else { MonsterArray[CurrentMonster].Missed(WeaponType, 1); } if (SMLibido < 75) { SMLibido += 1; } UpdateCombatStats(); } else { SlaveMakerDoDamage(1, 1, 1, true); SetText('You lash several times trying to cause intense pain '); if (Hit) { MonsterArray[CurrentMonster].Hit(WeaponType, 3); } else { MonsterArray[CurrentMonster].Missed(WeaponType, 3); } } return undefined; case 3009: ResetSMAttacks(); CombatSMAttack.Sword1._visible = true; SlaveMakerDoDamage(1, 1, 1); SetText('You swing the hammer at the ' + MonsterArray[CurrentMonster].GetDescription()); if (Hit) { AddText(' and deal a crushing blow '); MonsterArray[CurrentMonster].Hit(WeaponType, 0); } else { AddText(' but '); MonsterArray[CurrentMonster].Missed(WeaponType, 0); } return undefined; case 3199: ResetSMAttacks(); SMTempDefence /= 2; CombatSMAttack.Sword1._visible = true; SlaveMakerDoDamage(0, -1, 1, true); SetText('You cautiously defend against the ' + MonsterArray[CurrentMonster].GetDescription()); return undefined; case 3200: ResetSMAttacks(); ResetMonsterAttacks(); CombatStatistics._visible = false; MonsterArray[CurrentMonster].HideMonster(); Icons._visible = true; CombatHits._visible = false; NextEvent._visible = true; if (int(Math.random() * 100) < SMCurrentDefence) { AddText('You break free and run from the ' + MonsterArray[CurrentMonster].GetDescription()); MonsterArray[CurrentMonster].RunAway(); AddText('.'); NumEvent = Action3; } else { AddText('You decide you cannot win and break free and start running and feel a '); MonsterArray[CurrentMonster].FailedToRunAway(); NumEvent = Action5; } DoEventNext(); return undefined; } var v4 = false; var v1 = 0; while (v1 < MonsterArray.length) { if (MonsterArray[v1].IsFighting()) { v4 = true; } ++v1; } if (CombatDifficulty == -1 || !v4) { ResetSMAttacks(); ResetMonsterAttacks(); CombatStatistics._visible = false; MonsterArray[CurrentMonster].HideMonster(); Icons._visible = true; CombatHits._visible = false; NextEvent._visible = true; NumEvent = Action1; DoEventNext(); return undefined; } if (SMHealth <= 0) { ResetSMAttacks(); ResetMonsterAttacks(); CombatStatistics._visible = false; MonsterArray[CurrentMonster].HideMonster(); Icons._visible = true; CombatHits._visible = false; NextEvent._visible = true; NumEvent = Action5; DoEventNext(); return undefined; } if (SMLibido >= 100 && Action6 != 0) { ResetSMAttacks(); ResetMonsterAttacks(); CombatStatistics._visible = false; MonsterArray[CurrentMonster].HideMonster(); Icons._visible = true; CombatHits._visible = false; NextEvent._visible = true; NumEvent = Action6; DoEventNext(); return undefined; } if (eventno == 3100) { var v2 = SMNextAttack; var v3 = -1; v1 = 0; while (v1 < MonsterArray.length) { if (MonsterArray[v1].MonsterNextAttack < v2) { v2 = MonsterArray[v1].MonsterNextAttack; v3 = v1; } ++v1; } if (v3 != -1) { ResetMonsterAttacks(); CurrentMonster = v3; CombatStatistics.CreatureName.text = MonsterArray[CurrentMonster].GetDescription() + ':'; CombatTime = MonsterArray[CurrentMonster].MonsterNextAttack; MonsterArray[CurrentMonster].Attack(); UpdateCombatStats(); return undefined; } } CombatTime = SMNextAttack; var v5 = (Action3 == 0) ? 0 : 3200; if (SlaveGirl.ShowAttackChoices(v5) != true) { switch (WeaponType) { case 0: AskHerQuestions(3001, 3002, 3199, v5, 'Punch', 'Kick', 'Defend', 'Run Away', 'You are unarmed, how do you act?'); break; case 1: AskHerQuestions(3003, 3004, 3199, v5, 'Slash', 'Lunge', 'Defend', 'Run Away', 'You are wielding a sword, how do you attack?'); break; case 2: AskHerQuestions(3005, 3006, 3199, v5, 'Fire', 'Rapid Fire', 'Defend', 'Run Away', 'You are using a bow, how do you act?'); break; case 3: AskHerQuestions(3007, 3008, 3199, v5, 'Lash', 'Stun', 'Defend', 'Run Away', 'You are holding a whip, how do you act?'); break; case 4: AskHerQuestions(3009, 3199, v5, 0, 'Hit', 'Defend', 'Run Away', '', 'You are holding ' + SlaveName + '\'s Hammer, how do you act?'); } } } function HideEndings() { Generic.HideEndings(); SlaveGirl.HideEndings(); } function ShowEndings() { SystemButton._visible = true; if (Milkable) { temp = int(Math.random() * (18 + SlaveGirl.NumCustomEndings())); } else { temp = int(Math.random() * (17 + SlaveGirl.NumCustomEndings())) + 1; } if (temp == 0) { SetText('To get the ending \'Cow Girl\', have ' + SlaveName + ' milked at least once a week at the farm.'); } else { if (temp == 1) { SetText('To get the ending \'Drug Addict\', let her have cravings for drugs for more than 3 times.'); } else { if (temp == 2) { SetText('To get the ending \'Rebel\', finish with Temperament above 20 and Obedience below 15.'); } else { if (temp == 3) { SetText('To get the ending \'Normal -\', finish with a score between 50 and 75 and with an Obedience below 30.'); } else { if (temp == 4) { SetText('To get the ending \'Rich\', finish with more than 3000GP, more than 4 dresses bought and with a score above 40.'); } else { if (temp == 5) { SetText('To get the ending \'Marriage\', finish with a score above 75.'); } else { if (temp == 6) { SetText('To get the ending \'Bought Back\', finish with a score above 85.'); } else { if (temp == 7) { SetText('To get the ending \'Normal +\', finish with a score above 50, with more than 85 in Obedience and more than 45 in Morality.'); } else { if (temp == 8) { SetText('To get the ending \'Prostitute\', finish and not qualify for any other ending.'); } else { if (temp == 9) { SetText('To get the ending \'Maid\', finish with Cooking and Cleaning above 60 and get a score above 40.'); } else { if (temp == 10) { SetText('To get the ending \'Sex Maniac\', finish with a score above 40, with more than 85 in Nymphomania and Lust.'); } else { if (temp == 11) { SetText('To get the ending \'S&M\', have your slave do more than 20 Bondage actions and get a score above 40.'); } else { if (temp == 12) { SetText('To get the ending \'Normal\', get a score between 50 and 75.'); } else { if (temp == 13) { SetText('To get the ending \'Sex Addict\', finish with a score above 40, with more than 75 in Nymphomania and Lust.'); } else { if (temp == 14) { SetText('To get the ending \'Love\', accept her confession of love and have a score above 50.'); } else { if (temp == 15) { SetText('To get the ending \'Ponygirl\', have your slave become a ponygirl, and have 90 or more in Obedience, a score above 50 while wearing the gear required in a ponygirl race.'); } else { if (temp == 16) { SetText('To get the ending \'Dickgirl\', have ' + SlaveName + ' become a hermaphrodite permanently and choose not to be cured.\r\rThis ending is not available for all girls. It can be made available using a setting in Options.'); } else { if (temp == 17) { SetText('To get the ending \'Courtesan\', have ' + SlaveName + ' trained by Lady Okyanu after attending the high class party, and finish with Charisma > 95, Conversation 100, Refinement > 60, Fuck > 90, Blowjob > 90.'); } else { SlaveGirl.ShowEndings(temp - 18); } } } } } } } } } } } } } } } } } } ExperienceTotal(true); AddText('\r\rDuring her training your slave has done a total of ' + SlaveExperience + ' different things, out of a total of ' + SlaveActs + '. This includes owning some items, and taking some potions.'); if (SlaveExperience < SlaveActs) { AddText(' One thing she mentioned on her last day was that you had never had her ' + GetMissingExperience() + '.'); } AddText('\r\rYou may now visit the Slave Market to train another girl.'); GirlsTrained += 1; VisitFortuneTeller.CountTrainedText.text = GirlsTrained; GameDate += 14; MoonPhaseDate += 14; SMReputation += 5; Money(-400, true); SaveGlobalData(); UpdateSlave(); NextEnding._visible = false; } function DoEndingNext() { Beep(); var v1 = SlaveGirl.GetEndingTotal(); if (v1 == undefined) { v1 = VarCharismaRounded + VarSensibilityRounded + VarRefinementRounded + VarIntelligenceRounded + VarMoralityRounded + VarConstitutionRounded + VarCookingRounded + VarCleaningRounded + VarConversationRounded + VarBlowJobRounded + VarFuckRounded + VarTemperamentRounded + VarNymphomaniaRounded + VarObedienceRounded + VarLibidoRounded + VarJoyRounded + VarReputationRounded + VarLovePoints; v1 = int(v1 / 18); } if (LoveAccepted == 1 || LoveAccepted == 10) { if (Talent == 2) { v1 -= 10; } else { v1 -= 20; } } if (NumFin == 25) { NumFin = 0; ClearBitFlag1(10); } if (NumFin == 0) { HideImages(); HideBackgrounds(); Beep(); HideSlaveActions(); ClipTrainingComplete._visible = false; HideRobes(); HideEndings(); UseGeneric = false; if (TotalTentacle >= 0 && LoveAccepted == 1) { SetText('You remember the heartache when ' + SlaveName + ' left after your mutual vows of love but you felt honour bound to send her away.\r\r'); } else { SetText(''); } if (CheckBitFlag1(9)) { AddText('PS. You cheated so this is not a real ending!\r\r'); } Fin = 0; temp = 0; if (TotalTentacle > 4) { Backgrounds.ShowTentacles(1); Fin = 1; NumFin = 20; AddText('On the way to deliver ' + SlaveName + ' the caravan was attacked by tentacle monstrosities and she was taken! The search party failed to find her. Many weeks later she is found by accident in a raid on a lair...'); SlaveGirl.ShowEndingTentacleSlave(); } if (Fin != 1 && LoveAccepted != 0 && CheckBitFlag1(10)) { Backgrounds.ShowBedRoom(); Fin = 1; NumFin = 25; AddText('On the way to deliver ' + SlaveName + ', she thanks you for her training and making her realise her sexuality and the joy of lesbian sex.\r\r'); SlaveGirl.ShowEndingLesbianSlave(); } if (Fin != 1 && DonePonygirl == 1 && v1 > 50 && BitGagWorn == 1 && HarnessWorn == 1 && PonyTailWorn == 1) { Fin = 1; NumFin = 18; if (SlaveGirl.ShowEndingPonygirl() != true) { SlaveGirl.ShowSexActPonygirl(); } } if (Fin != 1 && VarConversation > 99 && VarCharismaRounded > 95 && VarRefinementRounded > 60 && VarFuckRounded > 90 && VarBlowJobRounded > 90 && VarHighClassProstitute == -4) { Fin = 1; NumFin = 26; SlaveGirl.ShowEndingCourtesan(); } if (Fin != 1 && DickgirlXF == 2) { Fin = 1; NumFin = 19; SlaveGirl.ShowEndingDickgirl(); if (UseGeneric) { Generic.ShowEndingDickgirl(); } } if (Fin != 1 && TotalBondage >= 20 && v1 > 40) { Fin = 1; NumFin = 9; SlaveGirl.ShowEndingSM(); } if (Fin != 1 && NumAphrodisiac >= 10) { Fin = 1; NumFin = 12; SlaveGirl.ShowEndingDrugAddict(); } if (Fin != 1 && VarGold >= 3000 && NumDresses >= 5 && v1 > 40) { Fin = 1; NumFin = 8; SlaveGirl.ShowEndingRich(); } if (v1 >= 75 && Fin != 1) { Fin = 1; NumFin = 2; SlaveGirl.ShowEndingMarriage(); } if (Fin != 1 && VarLibidoRounded >= 85 && VarNymphomaniaRounded >= 85 && v1 > 40) { Fin = 1; NumFin = 7; SlaveGirl.ShowEndingSexManiac(); } if (Fin != 1 && VarNymphomaniaRounded >= 75 && VarLibidoRounded > 75 && v1 > 40) { Fin = 1; NumFin = 6; SlaveGirl.ShowEndingSexAddict(); } if (Fin != 1 && VarObedienceRounded < 15) { Fin = 1; NumFin = 13; SlaveGirl.ShowEndingRebel(); } if (Fin != 1 && VarCookingRounded >= 60 && VarCleaningRounded >= 60 && v1 > 40 && (MaidUniformOK == 1 || IsDressMaid())) { Fin = 1; NumFin = 10; SlaveGirl.ShowEndingMaid(); } if (Fin != 1 && v1 >= 50) { Fin = 1; if (VarObedienceRounded >= 85 && VarMoralityRounded >= 45) { NumFin = 14; SlaveGirl.ShowEndingNormalPlus(); } else { if (VarObedienceRounded < 30) { NumFin = 16; SlaveGirl.ShowEndingNormalMinus(); } else { NumFin = 15; SlaveGirl.ShowEndingNormal(); } } } if (Fin != 1) { Fin = 1; NumFin = 17; SlaveGirl.ShowEndingProstitute(); } if (SlaveGirl.EndingStart(v1) != true) { if (NumFin != 20 && NumFin != 25) { ServantSpeak('Master, we just received a letter from the owner of ' + SlaveName + '.'); } } } else { if (SlaveGirl.EndingFinish(v1)) { return undefined; } else { if (NumFin == 2) { SetText('"I wanted to thank you with all my heart for your job. Her countless qualities have made me fall in love with her and I have decided to marry her.\r\rThank you very much."'); NumFin = 201; } else { if (NumFin == 201) { SetText('Ending \'Wedding\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 6) { SetText('"It looks like you\'ve done a good job with this girl. Just one little thing, she is permanently in need for sex.\r\rNot that it bothers me, but it can sometimes be tiring..."'); NumFin = 601; } else { if (NumFin == 601) { SetText('Ending \'Sex Addict\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 7) { SetText('"It looks like you\'ve done a good job with this girl. But there is still one little problem, She is really a sex maniac, I must always keep an eye on her so she doesn\'t launch herself on someone in the street.\r\rExcept this, you\'ve done a good job."'); NumFin = 701; } else { if (NumFin == 701) { SetText('Ending \'Sex Maniac\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 8) { SetText('"I don\'t know how to judge your work. She is well trained but this girl seems to have enjoyed a life of luxury and wealth and it is sometimes hard to satisfy her caprices.\r\rIt\'s a good thing I have the money for that, but not all your customers would enjoy her."'); NumFin = 801; } else { if (NumFin == 801) { SetText('Ending \'Rich\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 9) { SetText('"I don\'t know how to judge your work. She is well trained but her taste for bondage amazed me. Sometimes it is impossible to untie her and she asks me all the time to tie her tighter.\r\rIt\'s not a bad job but I think not all your customers would like this."'); NumFin = 901; } else { if (NumFin == 901) { SetText('Ending \'S&M\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 10) { SetText('"It looks like you\'ve done a good job with this girl. Her housework capabilities are impressive and she seems to like her apron very much...\r\rThank you for your job."'); NumFin = 1001; } else { if (NumFin == 1001) { SetText('Ending \'Maid\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 12) { SetText('"I don\'t know how to judge your work. She is well trained but it seems you used a lot of drugs during her training. She is in need for these products now.\r\rI would have rather enjoyed a voluntary slave than a girl who needs drugs to obey."'); NumFin = 1201; } else { if (NumFin == 1201) { SetText('Ending \'Drug Addict\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 13) { SetText('"I must admit that your work wasn\'t good at all! She refuses to obey the orders I give her and I must force her to obey. A slave is meant to obey when given an order!\r\rI don\'t congratulate you."'); NumFin = 1301; } else { if (NumFin == 1301) { SetText('Ending \'Rebel\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 14) { SetText('"You\'ve done an excellent job. She is so loyal I can let her go by herself and I will be sure to see her come back at my feet.\r\rCongratulations for the success!"'); NumFin = 1401; } else { if (NumFin == 1401) { SetText('Ending \'Normal +\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 15) { SetText('"I think you\'ve done an acceptable work. This girl is well-trained but that\'s all I can say.\r\rI wouldn\'t say you\'re a great Slave Maker but you do your job alright."'); NumFin = 1501; } else { if (NumFin == 1501) { SetText('Ending \'Normal\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 16) { SetText('"I want to tell you it was a good work, but this girl is not very obedient. I must sometimes force her to follow my orders.\r\rIt\'s a passable good job."'); NumFin = 1601; } else { if (NumFin == 1601) { SetText('Ending \'Normal -\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 17) { SetText('"Your work didn\'t satisfy me at all! I wanted to get back a slave and I get a slut whose only desire is sex. I had to sell her to a brothel for that matter.\r\rI don\'t thank you!"'); NumFin = 1701; } else { if (NumFin == 1701) { SetText('Ending \'Prostitute\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 18) { SetText('"I was surprised to be presented with a ponygirl. I have come to understand the delights of this type of slave.'); if (DickgirlXF > 0) { AddText(' Her cock is an interesting bonus...'); } AddText('\r\rThank you very much."\r\r'); if (DickgirlXF > 0) { AddText('Ending \'Dickgirl Ponygirl\'\r\rScore : ' + v1); } else { AddText('Ending \'Ponygirl\'\r\rScore : ' + v1); } NumFin = 1000; } else { if (NumFin == 19) { SetText('"It is odd to be presented with a slave who is a hermaphrodite. I was reluctant to touch her initially. I do now understand the flexibility of such a slave especially when I have guests.\r\rThank you."\r\r'); AddText('Ending \'Dickgirl\'\r\rScore : ' + v1); NumFin = 1000; } else { if (NumFin == 20) { SetText(SlaveName + ' is heavily pregnant with the monsters\' brood and is delirious with sexual desire. The monsters cum is a powerful aphrodisiac and she has consumed little else as she was forced to drink their cum as they fucked her many,many times!\r\rShe is treated and delivered to her new owner, with a large and permanent libido...'); Fin = 0; NumFin = 0; TotalTentacle *= -1; } else { if (NumFin == 21) { HideSlaveActions(); HideRobes(); Backgrounds.ShowFarm(); SlaveGirl.ShowEndingCowgirl(); SetText('"' + SlaveName + ' is an excellent milker for us, producing large amounts. She has other excellent talents, her ass is especially pleasurable for me. Enclosed is payment for her, she is such a good cow!'); AddText('\r\rEnding \'Cow Girl\'\r\rScore : ' + v1); NumFin = 9002; } else { if (NumFin == 26) { SetText('"' + SlaveName + ' is a superb courtesan, a lady of culture and passion.'); if (DickgirlXF > 0) { AddText(' The fact she is a hermaphrodite just compliments her abilities at court.'); } AddText('\r\rThank you."\r\r'); if (DickgirlXF > 0) { AddText('Ending \'Dickgirl Courtesan\'\r\rScore : ' + v1); } else { AddText('Ending \'Courtesan\'\r\rScore : ' + v1); } NumFin = 1000; } else { if (NumFin == 1000) { if (v1 >= 85) { HideImages(); HideBackgrounds(); HideSlaveActions(); HideEndings(); SetText('At the very end you couldn\'t part with this girl'); if (LoveAccepted == 1) { AddText(' and you remember your mutual love'); } AddText('. You bought her back and kept her for yourself. Her education was almost perfect and there is no way you would let go such a jewel.'); SlaveGirl.ShowEndingBoughtBack(); LoveAccepted = 0; NumFin = 9001; return undefined; } else { if (LoveAccepted == 1 || LoveAccepted == 10) { if (LoveAccepted == 1 && v1 > 50) { SetText('There is a postscript on the letter\r\r"' + SlaveName + ' is sad at times, I can see how she loves you dearly. After much thought I have decided to release her back to you. You have a debt to me for a reasonable price of ' + v1 * 100 + 'GP."'); LoveAccepted = 10; } else { if (LoveAccepted == 10) { SetText('Joyfully you realise she should be arriving soon!\r\rRevised Ending \'Love\''); LoveAccepted = 0; } } NumFin = 9002; return undefined; } else { NumFin = 9002; } } } else { if (NumFin == 9001) { SetText('Revised Ending \'Bought Back\'\r\rScore : ' + v1); NumFin = 9002; return undefined; } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } if (NumFin == 9002) { if (Talent == 4 && Corruption > 79) { HideEndings(); Generic.ShowEndingDemon(); NumFin = 9100; SetText('You can feel the calling of your father, and proudly take your place by his side, as a demon!\r\rSlave Maker Ending \'Demon Slave Maker\''); } else { if (CheckBitFlag1(34)) { HideImages(); HideEndings(); HideBackgrounds(); Backgrounds.ShowTentacles(1); Generic.ShowEndingImpregnated(); GameDate += 14; NumFin = 9100; SetText('You need to take a break before training a new slave. Your assault by the tentacle monsters was proven to be \'productive\'...\r\rSlave Maker Ending \'Tentacle Impregnated\''); } else { ShowEndings(); } } } else { if (NumFin == 9100) { ShowEndings(); } } } function DoEvent(enum) { PlanningButton._visible = false; MorningButton._visible = false; SystemButton._visible = false; HideRobes(); if (enum != undefined) { NumEvent = enum; } DoneEvent = 1; NextGeneral._visible = false; NextEvent._visible = true; NextVisit._visible = false; Quitter._visible = false; HideYesNoButtons(); if (NumEvent == 9703 || NumEvent == 9702 || NumEvent == 9701 || NumEvent == 9700) { StablesMenu._visible = false; SalonMenu._visible = false; ShopMenu._visible = false; Dealer._visible = false; } } function DoYesNoEvent(enum) { DoEvent(enum); YesNoFlag = 2; ShowYesNoButtons(); NextEvent._visible = false; } function PositionYesNo() { if (!YesEvent._visible) { return undefined; } if (LargerTextField._visible == false) { YesEvent._x = 220; } else { YesEvent._x = 530; } NoEvent._x = YesEvent._x + 200; if (LargerTextField._visible == true) { YesEvent._y = LargerTextField._y + (LargerTextField.bottomScroll + 1) * LineHeight; } else { YesEvent._y = GeneralTextField._y + (GeneralTextField.bottomScroll + 1) * LineHeight; } YesEvent._y += 30; if (LargerTextField._visible != true) { if (YesEvent._y > 530) { YesEvent._y = 530; YesEvent._x = 530; NoEvent._x = YesEvent._x + 100; } } NoEvent._y = YesEvent._y; } function DoYesNoEventXY(enum) { DoEvent(enum); YesNoFlag = 2; ShowYesNoButtons(); PositionYesNo(); NextEvent._visible = false; } function ResetQuestions() { HideQuestions(); EvChoice1 = 0; EvChoice2 = 0; EvChoice3 = 0; EvChoice4 = 0; EvChoice5 = 0; } function AddQuestion(Event1, Event1Label) { if (EvChoice1 == 0) { AskQuestions.Question1Text.htmlText = '<font color=\'#0000FF\'>1</font>. ' + Event1Label; EvChoice1 = Event1; } else { if (EvChoice2 == 0) { AskQuestions.Question2Text.htmlText = '<font color=\'#0000FF\'>2</font>. ' + Event1Label; EvChoice2 = Event1; } else { if (EvChoice3 == 0) { AskQuestions.Question3Text.htmlText = '<font color=\'#0000FF\'>3</font>. ' + Event1Label; EvChoice3 = Event1; } else { if (EvChoice4 == 0) { AskQuestions.Question4Text.htmlText = '<font color=\'#0000FF\'>4</font>. ' + Event1Label; EvChoice4 = Event1; } else { if (EvChoice5 == 0) { AskQuestions.Question5Text.htmlText = '<font color=\'#0000FF\'>5</font>. ' + Event1Label; EvChoice5 = Event1; } } } } } } function ShowQuestions(Caption) { if (EvChoice1 == 0) { return 0; } AskQuestions.Question1._visible = false; AskQuestions.Question1Text._visible = false; AskQuestions.Question2._visible = false; AskQuestions.Question2Text._visible = false; AskQuestions.Question3._visible = false; AskQuestions.Question3Text._visible = false; AskQuestions.Question4._visible = false; AskQuestions.Question4Text._visible = false; AskQuestions.Question5._visible = false; AskQuestions.Question5Text._visible = false; var v1 = 1; if (EvChoice1 != 0) { ++v1; AskQuestions.Question1._visible = true; AskQuestions.Question1Text._visible = true; } if (EvChoice2 != 0) { ++v1; AskQuestions.Question2._visible = true; AskQuestions.Question2Text._visible = true; } if (EvChoice3 != 0) { ++v1; AskQuestions.Question3._visible = true; AskQuestions.Question3Text._visible = true; } if (EvChoice4 != 0) { ++v1; AskQuestions.Question4._visible = true; AskQuestions.Question4Text._visible = true; } if (EvChoice5 != 0) { ++v1; AskQuestions.Question5._visible = true; AskQuestions.Question5Text._visible = true; } if (Caption != undefined) { AskQuestions.CaptionText.text = Caption; NextVisit._visible = false; NextGeneral._visible = false; NextEvent._visible = false; Quitter._visible = false; PlanningButton._visible = false; MorningButton._visible = false; SystemButton._visible = false; HideYesNoButtons(); AskQuestions._visible = true; PositionQuestions(v1); Key.removeListener(keyListenerButton); keyListenerButton.onKeyUp = AskHerQuestionsListener; Key.addListener(keyListenerButton); return v1 - 1; } AskQuestions.CaptionText.text = 'What do they talk about?'; NextVisit._visible = false; NextGeneral._visible = false; NextEvent._visible = false; Quitter._visible = false; PlanningButton._visible = false; MorningButton._visible = false; SystemButton._visible = false; HideYesNoButtons(); AskQuestions._visible = true; PositionQuestions(v1); Key.removeListener(keyListenerButton); keyListenerButton.onKeyUp = AskHerQuestionsListener; Key.addListener(keyListenerButton); return v1 - 1; } function PositionQuestions(lines) { if (!AskQuestions._visible) { return undefined; } if (lines == undefined || lines == 0) { lines = 1; if (AskQuestions.Question1._visible) { ++lines; } if (AskQuestions.Question2._visible) { ++lines; } if (AskQuestions.Question3._visible) { ++lines; } if (AskQuestions.Question4._visible) { ++lines; } if (AskQuestions.Question5._visible) { ++lines; } } var v2 = 477; if (LargerTextField._visible == true) { v2 = 373; if (lines < 4) { v2 = 433; } else { if (line < 5) { v2 = 413; } else { if (line < 6) { v2 = 393; } } } var v3 = LargerTextField.bottomScroll; if (v3 > 0) { v3 += 1; } AskQuestions._x = LargerTextField._x + 18; AskQuestions._y = LargerTextField._y + 15 + v3 * LineHeight; } else { if (lines < 4) { v2 = 517; } else { if (lines < 5) { v2 = 497; } else { v2 = 477; } } AskQuestions.Question1._width = 313; AskQuestions.Question2._width = 313; AskQuestions.Question3._width = 313; AskQuestions.Question4._width = 313; AskQuestions.Question5._width = 313; AskQuestions._x = GeneralTextField._x + 21; var v3 = GeneralTextField.bottomScroll; if (v3 > 0) { v3 += 1; } AskQuestions._y = GeneralTextField._y + 15 + v3 * LineHeight; if (AskQuestions._y > GeneralTextField._y + (GeneralLines + 1 - lines) * LineHeight) { ShowLargerText(); AskQuestions._y = LargerTextField._y + 15; } } if (LargerTextField._visible == true) { AskQuestions.Question1._width = 260; AskQuestions.Question2._width = 260; AskQuestions.Question3._width = 260; AskQuestions.Question4._width = 260; AskQuestions.Question5._width = 260; AskQuestions._x = LargerTextField._x + 18; } if (AskQuestions._y > v2) { AskQuestions._y = v2; } } function AskHerQuestions(Event1, Event2, Event3, Event4, Event1Label, Event2Label, Event3Label, Event4Label, Caption, Event5, Event5Label) { var v4 = 1; if (Event1 != 0) { v4 += 1; } if (Event2 != 0) { v4 += 1; } if (Event3 != 0) { v4 += 1; } if (Event4 != 0) { v4 += 1; } if (Event5 != 0 && Event5 != undefined) { v4 += 1; } if (Caption != undefined) { AskQuestions.CaptionText.text = Caption; } else { AskQuestions.CaptionText.text = 'What do they talk about?'; } NextVisit._visible = false; NextGeneral._visible = false; NextEvent._visible = false; Quitter._visible = false; PlanningButton._visible = false; MorningButton._visible = false; SystemButton._visible = false; HideYesNoButtons(); AskQuestions._visible = true; PositionQuestions(v4); AskQuestions.Question1._visible = false; AskQuestions.Question1Text._visible = false; AskQuestions.Question2._visible = false; AskQuestions.Question2Text._visible = false; AskQuestions.Question3._visible = false; AskQuestions.Question3Text._visible = false; AskQuestions.Question4._visible = false; AskQuestions.Question4Text._visible = false; AskQuestions.Question5._visible = false; AskQuestions.Question5Text._visible = false; i = 1; while (i < v4) { var v2; var v1; if (Event1 != 0) { v2 = Event1; v1 = Event1Label; Event1 = 0; } else { if (Event2 != 0) { v2 = Event2; v1 = Event2Label; Event2 = 0; } else { if (Event3 != 0) { v2 = Event3; v1 = Event3Label; Event3 = 0; } else { if (Event4 != 0) { v2 = Event4; v1 = Event4Label; Event4 = 0; } else { if (Event5 != 0 && Event5 != undefined) { v2 = Event5; v1 = Event5Label; Event5 = 0; } } } } } switch (i) { case 1: AskQuestions.Question1._visible = true; AskQuestions.Question1Text._visible = true; AskQuestions.Question1Text.htmlText = '<font color=\'#0000FF\'>1</font>. ' + v1; EvChoice1 = v2; break; case 2: AskQuestions.Question2._visible = true; AskQuestions.Question2Text._visible = true; AskQuestions.Question2Text.htmlText = '<font color=\'#0000FF\'>2</font>. ' + v1; EvChoice2 = v2; break; case 3: AskQuestions.Question3._visible = true; AskQuestions.Question3Text._visible = true; AskQuestions.Question3Text.htmlText = '<font color=\'#0000FF\'>3</font>. ' + v1; EvChoice3 = v2; break; case 4: AskQuestions.Question4._visible = true; AskQuestions.Question4Text._visible = true; AskQuestions.Question4Text.htmlText = '<font color=\'#0000FF\'>4</font>. ' + v1; EvChoice4 = v2; break; case 5: AskQuestions.Question5._visible = true; AskQuestions.Question5Text._visible = true; AskQuestions.Question5Text.htmlText = '<font color=\'#0000FF\'>5</font>. ' + v1; EvChoice5 = v2; } ++i; } Key.removeListener(keyListenerButton); keyListenerButton.onKeyUp = AskHerQuestionsListener; Key.addListener(keyListenerButton); } function HideQuestions() { if (AskQuestions._visible) { AskQuestions._visible = false; Key.removeListener(keyListenerButton); keyListenerButton.onKeyUp = null; } } function AskHerQuestionsListener() { var v1 = Key.getCode(); switch (v1) { case 49: AskQuestions.Question1.onPress(); break; case 50: if (AskQuestions.Question2._visible) { AskQuestions.Question2.onPress(); } break; case 51: if (AskQuestions.Question3._visible) { AskQuestions.Question3.onPress(); } break; case 52: if (AskQuestions.Question4._visible) { AskQuestions.Question4.onPress(); } break; case 53: if (AskQuestions.Question5._visible) { AskQuestions.Question5.onPress(); } } } function DoOwnerTest() { if (OwnerTesting && DoneEvent == 0 && Elapsed % 7 == 0) { DoneEvent = 1; if (SlaveGirl.OwnerTestSpecial() != true) { var v1 = ''; temp = int(Math.random() * 9) + 1; if (temp == 1) { v1 = 'beauty'; gain = VarCharismaRounded * 2; } else { if (temp == 2) { v1 = 'sensibility'; gain = VarSensibilityRounded * 2; } else { if (temp == 3) { v1 = 'behaviour at court'; gain = VarRefinementRounded * 2; } else { if (temp == 4) { v1 = 'intelligence'; gain = VarIntelligenceRounded * 2; } else { if (temp == 5) { v1 = 'morality'; gain = VarMoralityRounded * 2; } else { if (temp == 6) { v1 = 'endurance'; gain = VarConstitution * 2; } else { if (temp == 7) { v1 = 'talents as a maid'; gain = VarCookingRounded + VarCleaningRounded; } else { if (temp == 8) { v1 = 'conversation'; gain = VarConversationRounded * 2; } else { v1 = 'skills at sex'; temp = int(Math.random() * 5) + 1; if (temp == 1) { gain = VarFuckRounded * 2; } else { if (temp == 2) { gain = VarBlowJobRounded * 2; } else { if (temp == 3) { if (TestObedience(20)) { gain = VarFuckRounded * 2; } else { gain = VarFuckRounded; } } else { if (temp == 4) { if (TestObedience(30)) { gain = VarFuckRounded * 2; } else { gain = VarFuckRounded; } } else { if (temp == 5) { if (TestObedience(50)) { gain = VarFuckRounded * 2; } else { gain = VarFuckRounded; } } else { if (temp == 6) { if (TestObedience(60)) { gain = VarFuckRounded * 2; } else { gain = VarFuckRounded; } } } } } } } } } } } } } } } gain = Math.ceil(gain) + 2 - Difficulty; if (SlaveGirl.OwnerTest(v1, gain) != true) { var v2 = 'his'; var v3 = 'He'; if (SoldSlave == 2.1) { v2 = 'her'; v3 = 'She'; } AddText(SlaveName + '\'s owner came to test ' + v2 + ' future slave\'s ' + v1 + '.\r\r' + v3 + ' rewards you with a bonus of ' + gain + 'GP.'); } Money(gain); } } } function TrainingComplete() { if (GameDate < TrainingTime + TrainingStart) { GameDate = TrainingTime + TrainingStart; } NumFin = 0; SystemMenu._visible = false; HideBackgrounds(); AddText('The training of ' + SlaveName + ' is finished and her new owner has taken possession of her.\r\rSome weeks have passed since then...'); DoEvent(5555); NextEvent._visible = false; NextEnding._visible = true; if (MilkInfluence > 0 && TotalMilked >= 6) { NumFin = 21; SlaveGirl.ShowNaked(); AddText(SlaveName + ' has been acting oddly recently, fascinated with her breasts, which seem much larger than normal. Last night her breasts often leaked milk, especially when she orgasms.\r\rThis morning she is missing and appears to have run away. Her sheets smell like milk. ' + ServantName + ' searches and searches for her but fails to find her.\r\rSome days later an unsigned letter arrives with a large payment of gold...'); } else { if (SlaveGirl.ShowTrainingComplete() != true) { UseGeneric = int(Math.random() * 5) == 1; ClipTrainingComplete._visible = true; ShowOverlay(0); } } } function Events() { SystemButton._visible = true; MorningButton._visible = true; PlanningButton._visible = true; if (OwnerTestingUrgent) { DoOwnerTest(); } if (DoneEvent == 0 && TentaclePregnancy > 0) { TentaclePregnancy -= 1; if (TentaclePregnancy == 0) { AddText('In the morning you see ' + SlaveName + ' looking distressed. Her belly is very large as if she is very pregnant. You touch her belly and feel a movement! ' + ServantName + ' carefully examines her.\r\r'); ServantSpeak('About a month ago she was assaulted by a tentacle monstrosity, she appears to be pregnant with it\'s spawn. Some of these creatures have gestation periods as short as a month. We need to take her to a safe place to protect her from the spawn and it\'s parent...', true); DoEvent(190); if (SlaveGirl.ShowTentaclePregnancyReveal() != true) { Generic.ShowTentaclePregnancyReveal(); } } } if (DoneEvent == 0 && Elapsed >= TrainingTime) { TrainingComplete(); } HouseEvents.Events(); if (DoneEvent == 0 && GameDate % 8 == 0) { DoneEvent = 1; Contests.StartContests(); NumEvent = 9999; PlanningButton._visible = false; MorningButton._visible = false; SystemButton._visible = false; } if (!OwerTestingUrgent) { DoOwnerTest(); } if (DoneEvent == 0 && VarFatigue > 60 - Difficulty * 4) { temp = int(Math.random() * 2); if (temp == 1) { ServantSpeak('She fell sick because she is exhausted, and she will need one day to rest and get better.'); SlaveGirl.ShowTired(false); DoEvent(9900); } } if (DoneEvent == 0 && DickgirlRate > 66 && Talent == 8 && DickgirlXF == 0) { Backgrounds.ShowBedRoom(); NumEvent = 212; if (SlaveGirl.ShowDickgirlPermanent() != true) { Generic.ShowDickgirlPermanent(false); } SetText('You hear screams, possibly of passion from ' + SlaveName + '\'s room and run there. You see her lying coated in cum and with a larger erect cock. She is now a hermaphrodite like you!\r\r' + ServantName + ' runs in and you both carefully examine ' + SlaveName + ' and find her cock is extremely sensitive, making her cum with the slightest touch, in an intense back-arching orgasm. '); if (!SlaveLikeServant) { AddText(ServantName + ' seems to delight in accidentally touching her cock and triggering another orgasm. '); } if (NumEvent == 212) { AddText('\r\rAfter some time ' + SlaveName + ' calms down and it seems her cock appears to be permanent. You are aware there is a treatment to cure her.'); if (LastVisitDickgirl > 0) { AddText('You will have ' + ServantName + ' locate the woman Astrid and try to see if she can source the antidote.'); } else { AddText(' You do not know where to find an antidote and will have to find someone in the city who can help.'); } LastVisitDickgirl = -1; if (MilkInfluence > 0) { AddText('\r\rYou are surprised when you notice milk leaking ' + SlaveName + '\'s.'); } DickgirlXF = 1; if (MinLibido < 40) { MinLibido = 40; } Icons.DickgirlXFIcon._visible = true; if (StrapOnWorn == 1) { StrapOnWorn = 0; PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0); } else { UpdateSlave(); } DoEvent(9999); } else { AddText('\r\rAfter some time ' + SlaveName + ' calms down and her cock shrinks and fades away.'); DoEvent(9999); } } if (DoneEvent == 0 && (GamanEffecting == 1 || BiyakuEffecting == 1 || DoreiEffecting == 1 || IshinaiEffecting == 1 || ZodaiEffecting == 1)) { DrugDuration -= 1; if (DrugDuration == 0) { DoneEvent = 1; ServantSpeak('The drug effects have worn off.'); if (GamanEffecting == 1) { VarConstitution -= 30; } if (DoreiEffecting == 1) { AddText('\rShe realized you made her take drugs, she is not happy about that and is now less obedient.'); VarObedience -= 30; VarMorality = OldMorality; } if (IshinaiEffecting == 1) { AddText('\rShe realized you made her take drugs, she is not happy about that and is now less obedient.'); VarObedience = OldObedience; VarIntelligence = OldIntelligence; VarTemperament = OldVarTemperament; VarMorality = OldMorality; VarJoy -= 30; VarLovePoints -= 30; VarObedience -= 10; } GamanEffecting = 0; BiyakuEffecting = 0; ZodaiEffecting = 0; IshinaiEffecting = 0; DoreiEffecting = 0; temp = int(Math.random() * 100); if (AddictionLevel > temp) { DrugAddicted = 1; NumAddictionLevel += 1; } } } if (DoneEvent == 0 && DrugAddicted == 1) { DoneEvent = 1; ServantSpeak(SlaveName + ' seems to be in need for drugs.'); Points(0, 0, 0, -5, -5, -5, 0, 0, 0, 0, 0, -5, 0, -3, 0, 0, 10, -5, 0, 0); AddictionLevel -= 10; if (AddictionLevel <= 0) { DrugAddicted = 0; AddText('\rIt looks like she will be able to fight this dependency and is de-intoxicated.'); } } if (DoneEvent == 0 && int(SoldSlave) == 1) { SoldSlave += 1; temp = int(Math.random() * 2); if (temp == 1) { AddText('The former owner of ' + SlaveName + ' took a case to the court because you illegally sold his slave.\r\rHe was awarded 700GP in compensation!'); Money(-700); } else { AddText('The former owner of ' + SlaveName + ' took a case to the court because you illegally sold his slave.\r\rHe didn\'t win the trial due to a technicality.'); } ClipTrial._visible = true; DoEvent(9999); } Tentacles.Events(); SlaveGirl.Events(); if (DoneEvent == 0 && VarCharismaRounded > 25 && VarRefinementRounded > 20 && SoldSlave == 0 && Loyalty != 0 && NobleLove != -2) { temp = int(Math.random() * 7); if (temp == 4) { NumEvent = 2; if (SlaveGirl.EventBuyer() != true) { if (Talent == 6) { if (int(Math.random() * 2) == 0) { temp = int(Math.random() * 2) + 3; } else { temp = int(Math.random() * 4) + 1; } } else { temp = int(Math.random() * 4) + 1; } if (temp > 2) { ServantSpeakStart('A woman'); NumEvent = 2.1; } else { ServantSpeakStart('A man'); } AddText(' wants to buy ' + SlaveName + ' for ' + VarCharismaRounded * 10 + 'GP. If you accept, you could have some problems with the actual owner.'); PersonSpeakEnd(); AddText('\r\rDo you sell her?'); ClipBuyer.gotoAndStop(temp); ClipBuyer._visible = true; } DoYesNoEvent(NumEvent); } } if (DoneEvent == 0 && VarLovePoints > 60 && LoveAccepted == 0) { temp = int(Math.random() * 10 + Difficulty); if (temp < int(VarLovePoints / 20)) { if (!(Talent == 6 && !Lesbian)) { SlaveGirl.ShowLoveConfession(); DoYesNoEvent(3); if (Gender == 1) { AddText(SlaveName + ' just said that she\'s in love with you.'); } else { AddText(SlaveName + ' just said nervously that she\'s in love with you. She seems quite conscious that you are not a man...'); if (Lesbian) { SetMovieColour(Icons.LoveGauge, 0, 0, 200); AddText('\r\rYou are happy to hear her declaration as she has now decided she is a lesbian!'); } } AddText('\r\rWill you accept her love?'); } } } if (DoneEvent == 0 && VarLibidoRounded >= 25 && VarNymphomaniaRounded >= 25 && (Slutiness > 8 || RulesGoOut == 1)) { BadGirl = 1; temp = int(Math.random() * (7 - Difficulty - int(Slutiness / 3))); if (temp == 1) { if (VarCharismaRounded > 30) { SetText(''); SlaveGirl.ShowPropositionAccepted(); if (GeneralTextField.text == '') { ServantSpeak(SlaveName + ' is so aroused she offered herself to somebody in the street. The guy accepted and they had sex there and then.'); } if (SMFaith == 1) { Points(0, 0, -3, 0, -10, 0, 0, 0, 0, 0, 0, 0, 5, 0, -10, 0, 0, 0, 0, 0); } else { Points(0, 0, -4, 0, -3, 0, 0, 0, 0, 0, 0, 0, 5, 0, -10, 0, 0, 0, 0, 0); } if (RulesFuck == 0) { BadGirl = 1; } DoEvent(9999); } else { SlaveGirl.ShowPropositionRefused(); ServantSpeak(SlaveName + ' is so aroused she offered herself to somebody in the street. The guy refused her saying she is unattractive.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, -10, 0, 0); if (RulesFuck == 0) { BadGirl = 1; } DoEvent(9999); } } } if (DoneEvent == 0 && OldLover == 1 && RulesGoOut == 1) { temp = 15 + Difficulty + int(Slutiness / 3) * 5; if (Slutiness > 0 && Behaving < 1 && int((VarObedienceRounded + VarMoralityRounded) / 5) < temp) { ServantSpeak(SlaveName + ' is going out with her older lover. She doesn\'t seem to have a lot of morality. This man gave her ' + int(VarCharismaRounded / 2) + 'GP.'); ShowMovie(ClipOldLover, true, 0); Money(int(VarCharismaRounded / 2)); if (SMFaith == 1) { Points(0, -2, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { Points(0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } SlaveGirl.OldLoverDating(); BadGirl = 1; DoEvent(9999); } else { ServantSpeak(SlaveName + ' broke up with her old lover.'); OldLover = 0; ShowMovie(ClipOldLover, true, 0); DoEvent(9999); } } if (DoneEvent == 0 && TotalSleazyBar > 0 && OldLover == 0 && RulesGoOut == 1 && Slutiness > 0 && VarMoralityRounded < 26) { if (RulesFuck == 1 || Slutiness > 5) { temp = int(Math.random() * 3); } else { temp = int(Math.random() * 5); } if (temp == 1) { ShowMovie(ClipOldLover, true, 0); OldLover = 1; SlaveGirl.OldLoverStartDating(); ServantSpeak('An old guy saw ' + SlaveName + ' during a visit to a sleazy bar, and meets her again. He asked her to be his mistress for money.\r\r' + SlaveName + ' accepted.'); DoEvent(9999); } } if (DoneEvent == 0 && VarGold >= 500 && NumMerchant < 4) { temp = int(Math.random() * 3); if (Talent == 3 && NumMerchant > 1) { temp = 2; } if (temp == 1) { NumMerchant += 1; DoEvent(0); DoVisitSalesman(); ServantSpeak('A wandering trader came to sell his valuables, and has opened a stall at the market for a short time.'); if (Talent == 3 && NumMerchant == 1) { TakeAWalkMenu.SalesmanHome._visible = true; AddText('\r\rAs fellow traders you talk a bit and he tells you where his home is and invites you to visit anytime.'); } } } if (DoneEvent == 0 && (VarMoralityRounded > 20 || VarNymphomaniaRounded > 50)) { temp = int(Math.random() * 7 - Difficulty); if (temp == 3) { if (SlaveGirl.EventRescue() != true) { if (DoneEvent == 0) { DoEvent(1); NextEvent._visible = false; } temp = int(Math.random() * 2) + 1; ShowMovie(ClipRescue, true, 0, temp); if (GeneralTextField.text == '') { if (temp == 1) { ServantSpeak('A noble delegation has come to free ' + SlaveName + ', claiming reports that she is being mistreated. ' + ServantPronoun + ' think they just want to steal her for themselves but they have legal warrants.\r\rYou can try to bribe them for ' + (100 + Difficulty * 20) + 'GP to make them go away, if you don\'t they will take her away to \'freedom\'. ' + ServantPronoun + ' will try to \'retrieve\' her one night, but this will take a few days'); } else { ServantSpeak('A delegation has come from the temple of Inari to free ' + SlaveName + '. They talk about the unjust condition of slavery for such a beautiful girl and claim authority to take her from us.\r\rYou can try to make a \'donation\' for ' + (100 + Difficulty * 20) + 'GP to make them go away. If you don\'t they will take her away to join their shrine. ' + ServantPronoun + ' will try to \'retrieve\' her one night, but this will take a few days'); } } AddText('\r\rWill you bribe them?'); ShowYesNoButtons(); YesNoFlag = 2; } } } if (DoneEvent == 0 && House != 1 && VarObedienceRounded < 5 && Loyalty >= 0) { temp = int(Math.random() * Loyalty - Difficulty / 2); if (temp == 2) { DoEvent(30); ShowAssistant(6); ServantSpeak('I\'m sorry, ' + Master + '!\r' + ServantPronoun + ' didn\'t pay attention and your pupil ran away! We will need some days to find her.'); } } if (DoneEvent == 0 && EventBoyfriend == 1 && (Slutiness > 8 || RulesGoOut == 1) && BitGagWorn == 0) { if (RulesFuck == 1 || Slutiness > 8) { temp = -10; } else { temp = 0; } temp -= int(Slutiness / 3) * 5; if (VarLibidoRounded > 50 && VarLibidoRounded > VarObedienceRounded + temp) { if (RulesFuck == 0) { BadGirl = 1; } ServantSpeak(SlaveName + ' sees her boyfriend. She seems to be needing sex.'); SlaveGirl.ShowDating(); if (SMFaith == 1) { Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, -2, -5, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -5, 0, 0, 0, 0, 0); } DoEvent(9999); } else { HideImages(); ServantSpeak(SlaveName + ' understood that her boyfriend wasn\'t a correct guy and broke-up with him.'); EventBoyfriend = 0; DoEvent(9999); ShowRobes(); } } if (DoneEvent == 0 && EventBoyfriend != -1 && VarNymphomaniaRounded > 10 && (Slutiness > 8 || RulesGoOut == 1 && BitGagWorn == 0)) { if (NumBlowjobSinceFucked >= 5 || NumTitsFuckSinceFucked >= 5 || NumLickSinceFucked >= 5 || NumTouchSinceFucked >= 5 || NumAnalSinceFucked >= 5 || NumMasturbateSinceFucked >= 5) { DoEvent(9999); ServantSpeak(SlaveName + ' went to fuck with someone. Maybe you do not satisfy her needs.'); SlaveGirl.ShowDating(); EventBoyfriend = 1; if (RulesFuck == 0) { BadGirl = 1; } } } if (DoneEvent == 0 && EventBoyfriend == 0 && VarCharismaRounded >= 25 && RulesGoOut == 1 && BitGagWorn == 0) { temp = int(Math.random() * 3); if (temp == 2) { if (RulesFuck == 1) { temp = -10; } else { temp = 0; } temp -= int(Slutiness / 3) * 5; if (VarLibidoRounded > 50 && VarLibidoRounded > VarObedienceRounded + temp) { if (RulesFuck == 0) { BadGirl = 1; } DoEvent(9999); SlaveGirl.ShowDating(); EventBoyfriend = 1; ServantSpeak(SlaveName + ' has been fucking someone in the street and she accepted to go out with him. You must be careful about this, she may want to disobey you.'); if (RulesFuck == 0) { BadGirl = 1; } } } } if (DoneEvent == 0 && !CheckBitFlag1(14) && VarGold > 9) { temp = int(Math.random() * 4); if (Elapsed > 16) { temp = 1; } if (temp == 1) { ClipFortuneTelling._visible = true; PeopleFortuneTeller._visible = true; PersonSpeak('Seer', 'I can predict the future of ' + SlaveName + ' and do a reading for you for just 10GP.'); AddText('\r\rDo you want to see the future?'); DoYesNoEvent(8); } } if (DoneEvent == 0) { if (TentaclesOn == 1 && RumourTentaclesDone == 0) { Tentacles.ShowTentacleRumour(); } else { if (RumourMilkDone == 0) { RumourMilkDone = 1; ClipRumours.gotoAndStop(1); ClipRumours._visible = true; ServantSpeak(ServantPronoun + ' recently heard about a new aphrodisiac used by some noble women called the \'Nymph\'s Tears\'.\r\rIt is rare and expensive, with a thick milk like appearance. ' + ServantPronoun + ' believe a woman named Astrid is involved in its production.'); DoEvent(9999); } else { if (RumourFaerieHuntingDone == 0) { Backgrounds.ShowForest(); ClipRumours.gotoAndStop(4); ClipRumours._visible = true; RumourFaerieHuntingDone = 1; ServantSpeak(ServantPronoun + ' have heard that there has been recent hunting of the faerie folk in the nearby lands. They make an exotic slave and are much prized but are very difficult to catch.\r\rThe temples frown on such hunting like all slave hunting.'); DoEvent(9999); } } } } UpdateSlave(); } function DoEventNext() { OldNumEvent = NumEvent; NextEvent._x = 626; Quitter._x = 626; tempstr = GeneralTextField.htmlText; SetText(''); Beep(); if (SlaveGirl.DoEventNext() == true) { return undefined; } if (NumEvent > 99 && NumEvent < 200) { Tentacles.DoTentacleEvent(NumEvent, tempstr); SlaveGirl.AfterEventNext(); return undefined; } if (NumEvent > 199 && NumEvent < 250) { DickgirlEvent(NumEvent); SlaveGirl.AfterEventNext(); return undefined; } if (NumEvent > 1999 && NumEvent < 2500) { ShoppingEvent(NumEvent); SlaveGirl.AfterEventNext(); return undefined; } if (NumEvent > 2999 && NumEvent < 4000) { CombatEvent(NumEvent); SlaveGirl.AfterEventNext(); return undefined; } if (NumEvent > 3999 && NumEvent < 5000) { DoWalkEvent(tempstr); SlaveGirl.AfterEventNext(); return undefined; } if (NumEvent > 4999 && NumEvent < 6000) { DoTalentEvent(NumEvent); SlaveGirl.AfterEventNext(); return undefined; } if (NumEvent > 5999 && NumEvent < 7000) { HouseEvents.DoHouseEvent(NumEvent); return undefined; } if (NumEvent > 7999 && NumEvent < 8500) { DoVisitEvent(NumEvent); SlaveGirl.AfterEventNext(); return undefined; } switch (NumEvent) { case 8: SetBitFlag1(14); UpdateSlave(); NextEvent._visible = false; NumEvent = 9999; HideSlaveActions(); HideImages(); HideBackgrounds(); HidePeople(); ShowRobes(); ShowMainButtons(); Quitter._visible = false; ShowStatistics(true); LargerTextField._visible = false; VisitFortuneTeller._visible = false; IntroBackground._visible = false; BackgroundGrid._visible = true; MainBackground._visible = true; GeneralTextField._visible = true; Icons._visible = true; SetText('You now know where the fortune teller\'s shop is and you may visit it anytime, for 10GP of course.'); break; case 30: ShowAssistant(); if (SlaveGirl.ShowRetrieved() != true) { GameDate += 3; MoonPhaseDate += 3; Points(-5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 10, 0, 0, 0); if (GeneralTextField.text == '') { AddText('We have recaptured ' + SlaveName + ', it took 3 days.'); } } NumEvent = 9999; break; case 33: JobSleazyBarService(); return undefined; case 34: if (SMFaith == 1) { Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0); } HideSlaveActions(); Lesbian = true; if (IsDickgirl) { SexAction = 3.2; } else { SexAction = 3; } SlaveGirl.ShowSexActLick(); if (IsDickgirl()) { SetText(SlaveName + ' closes her eyes and the girl expertly sucks and licks her cock, making her cum very quickly. The girl pulls away and most of ' + SlaveName + 's cums spatters over her face. She wipes it away with a smile.'); } else { SetText(SlaveName + ' closes her eyes and the girl expertly licks her pussy and clit, bringing her quickly to orgasm.'); } AddText('\r\rAfter, Snow welcomes her to the club...'); VarSchoolGirl = 4; NextGeneral._visible = true; NextEvent._visible = false; return undefined; case 35: if (SMFaith == 1) { Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } SetText(SlaveName + ' shy\'s away, refusing the girl. Snow looks disappointed and closes her eyes as the girl licks her.\r\r' + SlaveName + ' leave class before Snow returns.'); NextGeneral._visible = true; NextEvent._visible = false; VarSchoolGirl = 3; return undefined; case 36: ShowMovie(PeopleGirl, false, 0, 2); HideSlaveActions(); Lesbian = true; SlaveGirl.ShowSexActLick(); if (SMFaith == 1) { Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0); } SetText(SlaveName + ' joins Snow in the back room and Snow sits down on a table and asks ' + SlaveName + ' to do the same.The two other girls kneel in front of them and Snow removes her skirt and panties and the girl enthusiastically licks her pussy. ' + SlaveName + ' feels the other girl '); if (!Naked) { AddText('remove her panties and starts licking her '); } if (IsDickgirl()) { AddText('cock'); } else { AddText('pussy'); } AddText('. Snow groans and comments about it is a perk of being helpful...\r\r'); if (IsDickgirl()) { AddText(SlaveName + ' closes her eyes and the girl expertly sucks and licks her cock, making her cum very quickly. The girl pulls away and most of ' + SlaveName + 's cums spatters over her face. She wipes it away with a smile.'); } else { AddText(SlaveName + ' closes her eyes and the girl expertly licks her pussy and clit, bringing her quickly to orgasm.'); } if (VarSchoolGirl != 4) { AddText('\r\rAfter, Snow welcomes her to the club...'); } NextGeneral._visible = true; NextEvent._visible = false; VarSchoolGirl = 4; return undefined; case 37: if (SMFaith == 1) { Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } SetText(SlaveName + ' shy\'s away, refusing the girl. Snow looks disappointed and leaves.\r\r' + SlaveName + ' leaves class before Snow returns.'); NextGeneral._visible = true; NextEvent._visible = false; VarSchoolGirl = 3; return undefined; case 250: DoneEvent = 0; NextEvent._visible = false; HideSlaveActions(); HideImages(); HideItems(); HideBackgrounds(); HidePeople(); HideRobes(); NextEvent._visible = false; NumEvent = 0; Events(); UsedAphrodisiac = 0; if (NumEvent == 0) { ShowRobes(); } break; case 251: HideImages(); HideBackgrounds(); NumEvent = 250; if (MilkInfluence == -2) { MilkInfluence = -1; Backgrounds.ShowBedRoom(); SetText('You visit ' + SlaveName + ' in her room and she talks about some dreams she had last night about being milked and fucked, and you see her breasts visibly swell and she is very aroused. She suddenly realises this actually happened! Her memories clear and she remembers everything that happened in the barn.\r\r' + ServantName + ' says she recognises the drug used and prepares a concoction that she says will protect ' + SlaveName + ' in future. ' + SlaveName + ' takes it and her breasts noticeably decrease in size.\r\r' + SlaveName + ' swears to avoid the barn from now on.'); if (SlaveGirl.ShowMilkEnd() != true) { SlaveGirl.ShowBreak(); } if (AskQuestions._visible == false) { AddText('\r\rYou are angry and decide to confront the farmer. You leave ' + SlaveName + ' recovering in the care of ' + ServantName + ' and go to the farm in question and find the farmer, walking out of the barn. From inside the barn you can hear muffled moans of passion.\r\rYou talk about his crime of abusing ' + SlaveName + ' and start to threaten him. He laughs and explains how this farm is owned by a certain noble and the authorities will not do anything. He looks at you smiling.'); AskHerQuestions(4082, 4083, 0, 0, 'Hit him and storm off in anger', 'Promise to go to the Lord', '', '', 'What do you do'); } Points(-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 0); } else { if (MilkInfluence == -3) { WalkCowgirl.gotoAndStop(9); WalkCowgirl._visible = true; ShowMovie(OnTopOverlay, true, 0); StartFadeImage(50, OnTopOverlay); SetText('You groggily wake-up from your sleep. You are gagged, tied bound, and stripped naked. You hear some noises and a low conversation. Your breasts feel very large and full and something is sucking insistently at your nipples...'); if (Gender == 1) { HideAllPeople(); MilkInfluence = -4; if (DickgirlOn) { AskHerQuestions(4084, 4085, 0, 0, 'Breasts?', 'Am I a woman?', '', '', 'What????'); } else { AddText('\r\rBreasts???'); NumEvent = 4084; NextEvent._visible = true; } } else { ShowMovie(PeopleFarmer, false, 0); MilkInfluence = -1; AddText('\r\rYou hear a voice\r\r'); PersonSpeak('Farmer?', '..was a threat to us here. We have had to move the cows to the second farm, they are mostly settled in. She is now in a stall, we will make sure she is tended to well, in her new, permanent home.', true); AddText('\r\rA voice answers,\r\r'); PersonSpeak('?', 'I will negotiate with the owner and at court...', true); AddText('\r\rYou feel an oily hand rub over your pussy and then a very large dildo slowly forced in, deeper and deeper, until it is uncomfortably deep and you feel it strapped in place. An intense vibration starts and you immediately orgasm.\r\rFingers start working oil into your ass and you hear a voice\r\r'); PersonSpeak('Farmer?', 'Hold the plug for now, I want her ass first...', true); if (BadEndsOn) { NumEvent = 9800; } else { NumEvent = 4086; } NextEvent._visible = true; } } else { if (MilkInfluence > 0 && int(Math.random() * 8) == 1 && !CheckBitFlag1(7)) { SetText('In the morning ' + SlaveName + '\'s dress sides down and her breasts seem very large and milk is running from them.\r\r' + ServantName + ' seems very concerned and talks about certain drugs that enhance breast size and make them lactate. They are mildly addictive and dull the mind. As long as they are not taken for a week or two the effect will fade.\r\rShe asks ' + SlaveName + ' if she is using these drugs and briefly she seems confused and then denies taking them.'); SlaveGirl.ShowMilkAccident(); SetBitFlag1(7); if (AskQuestions._visible == false) { NextEvent._visible = true; } } else { if (SlaveGirl.PreEvent() != true) { ServantSpeak('Good morning, ' + Master + '!'); DoEventNext(); } else { if (AskQuestions._visible == false) { NextEvent._visible = true; } } } } } break; case 270: NextGeneral._visible = true; NextEvent._visible = false; if (DickgirlXF > 0) { HideRobes(); SlaveGirl.ShowNaked(); SetText('Unfortunately her physical condition, that is her large cock, lesbian training seems to not be right yet. You will wait until she changes and becomes fully a woman.'); } else { EventLesbianTraining._visible = true; AddText(SlaveName + ' has agreed to lesbian acts. You talk about the joys of a lesbian life and particularly about being the slave of a lesbian.\r\r'); if (LesbianTrainable) { AddText('After a long conversation she still says she is not a lesbian but is willing to try some other things now.\r\rYou will now alter her training to focus on more lesbian acts and her skills will be re-prioritised.\r\rSometime she may learn to love women and decide she is actually a lesbian.'); SlaveGirl.LesbianTrainingAccepted(); SetBitFlag1(27); } else { if (SlaveGirl.LesbianTrainingRefused() != true) { AddText('After a long conversation she politely explains she is not a lesbian and has no desire to be that type of slave.'); } } } return undefined; case 504: ActionChoice += 0.5; DoGeneralYes(); break; case 503: ActionChoice += 0.4; DoGeneralYes(); break; case 502: ActionChoice += 0.3; DoGeneralYes(); break; case 501: ActionChoice += 0.2; DoGeneralYes(); break; case 500: ActionChoice += 0.1; DoGeneralYes(); break; case 505: if (TotalAction + 1 < TotalActionMax) { ActionChoice += (TotalActionMax - TotalAction) * 0.1; } TotalActionMax = TotalAction + 1; case 506: DoGeneralYes(); break; case 509: HideImages(); HideSlaveActions(); PlanningNight._visible = true; PlanningNightSex._visible = true; NextEvent._visible = false; break; case 9800: GameOverText._visible = true; HideImages(); HideBackgrounds(); HideSlaveActions(); HideRobes(); HideAllPeople(); ShowAssistant(4); ShowOverlay(0); NumEvent = 9801; NextEvent._visible = true; break; case 9801: GameOverText._visible = false; DoRestart(true); break; case 9999: case 9900: case 9700: case 9701: case 9702: case 9703: if (NumEvent == 9900) { UpdateDateAndItems(1); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0); } HideYesNoButtons(); HideQuestions(); HideSlaveActions(); HideImages(); HideBackgrounds(); HidePeople(); HideItems(); NextEvent._visible = false; if (NumEvent == 9700) { HideItems(); Backgrounds.ShowShop(); ShopMenu._visible = true; Quitter._visible = true; } else { if (NumEvent == 9701) { ShowRobes(); Dealer._visible = true; Quitter._visible = true; } else { if (NumEvent == 9702) { HideItems(); Backgrounds.ShowSalon(); SalonMenu._visible = true; Quitter._visible = true; PeopleSalonOwner._visible = true; } else { if (NumEvent == 9703) { HideItems(); Backgrounds.ShowStables(); StablesMenu._visible = true; Quitter._visible = true; } else { ShopMenu._visible = false; Dealer._visible = false; ShowRobes(); ShowMainButtons(); Quitter._visible = false; ShowStatistics(true); VisitFortuneTeller._visible = false; IntroBackground._visible = false; BackgroundGrid._visible = true; MainBackground._visible = true; } } } } } SlaveGirl.AfterEventNext(); } function DickgirlEvent(eventno) { switch (eventno) { case 200: HideImages(); Icons.DickgirlXFIcon._visible = true; DrinkPotion(0, 0, ''); NumEvent = 240; break; case 201: NumEvent = 200; Icons.DickgirlXFIcon._visible = true; HideImages(); if (SlaveGirl.ShowDickgirlTransform()) { Generic.ShowDickgirlTransform(false); } NextEvent._visible = true; break; case 202: NumEvent = 210; Icons.DickgirlXFIcon._visible = true; HideImages(); if (SlaveGirl.ShowDickgirlTransform()) { Generic.ShowDickgirlTransform(true); } NextEvent._visible = true; break; case 210: Icons.DickgirlXFIcon._visible = true; PotionsUsed[0] += 1; clearInterval(intervalId4); clearInterval(intervalId); HideAssistant(); ShowMovie(PeopleDickgirl, false, 6); AddText(SlaveName + ' eventually stops cumming, after coating herself in her own cum.\r\r'); PersonSpeak('Astrid', 'I think you have used the potion too much and something has gone wrong. If you are lucky the sensitivity will decrease to normal and the cock fade. In very rare cases it will stay incredibly sensitive, and you will cum large amounts, very often. In that case we will need to carefully milk...I mean make your life easier.\r\rThere is another possibility, let me examine you...', true); NumEvent = 211; break; case 211: HideImages(); HideSlaveActions(); if (SlaveGirl.ShowDickgirlPermanent() != true) { Generic.ShowDickgirlPermanent(); } if (GeneralTextField.text == '') { HideAssistant(); ShowMovie(PeopleDickgirl, false, 6); AddText('Astrid carefully examines ' + SlaveName + ', in particular her cock, stroking it and asking how it feels, bringing ' + SlaveName + ' to many more messy orgasms.'); if (MilkInfluence > 0) { AddText(' Astrid is surprised when milk squirts from ' + SlaveName + '\'s breasts everytime she cums.'); } AddText('\r\rAstrid collects some of the cum, licking and drinking the rest with obvious joy. She alchemically tests the cum and concludes the transformation is now permanent! ' + SlaveName + ' now has the genitals of both sexes with an enhanced sex drive.\r\rAstrid congratulates her and lowers her leggings, showing her large, erect cock. She explains there is another test needed and thrusts her cock into ' + SlaveName + '\'s pussy.\r\rSometime later a well fucked ' + SlaveName + ' leaves, confused and unsure, to start her new life as a <b>hermaphrodite</b>.'); } case 212: DickgirlXF = 1; if (MinLibido < 40) { MinLibido = 40; } Icons.DickgirlXFIcon._visible = true; if (StrapOnWorn == 1) { StrapOnWorn = 0; PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0); } else { UpdateSlave(); } NumEvent = 240; break; case 240: if (PotionsUsed[0] == 1) { AddText('Astrid bids farewell to an exhausted ' + SlaveName + ', and says the potion can have odd effects if taken too much.\r\r'); } else { if (DickgirlXF == 1) { AddText('Astrid bids farewell to ' + SlaveName + ' and says there is an antidote that can cure her. She will find it but it will take at least a fortnight.\r\r'); if (AntidoteDays == 0) { AntidoteDays = 15 + int(Math.random() * 3); } } else { if (PotionsUsed[0] > 2) { AddText('As ' + SlaveName + ' leaves Astrid she feels an intense throbbing in her erect clit. Her clit continues throbbing for days to come and she feels highly aroused.\r\r'); MinLibido += 10; if (DickgirlRate == 0) { DickgirlRate = 20; } else { DickgirlRate += 10; } Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0); } } } SlaveGirl.AfterDickgirlPotion(PotionsUsed[0]); HideSlaveActions(); ShowMainButtons(); Quitter._visible = false; HidePeople(); NextEvent._visible = false; ShowStatistics(true); ShowRobes(); } } function DoWalkEvent(tempstr) { if (NumEvent >= 4100 && NumEvent < 4200) { DoEvilMineEvent(NumEvent, tempstr); return undefined; } else { if (NumEvent >= 4200 && NumEvent < 4300) { DoFaerieEvent(NumEvent); return undefined; } else { if (NumEvent >= 4079 && NumEvent < 4090) { DoMilkEvent(NumEvent); return undefined; } } } switch (NumEvent) { case 4000: NumEvent = 0; temp = int(Math.random() * 100); NextEvent._visible = false; NextVisit._visible = true; DoWalkDocksPort(); return undefined; case 4002: NumEvent = 0; temp = int(Math.random() * 100); DoWalkDocks(); return undefined; case 4003: NumEvent = 0; temp = int(Math.random() * 100); NextEvent._visible = false; NextVisit._visible = true; DoSlavePensGeneralEvent(); return undefined; case 4004: NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; DoSlavePensSecureEvent(0); return undefined; case 4010: HideImages(); Backgrounds.ShowAlley(3); if (DickgirlOn) { ShowMovie(WalkTownCenter, true, 2, 2); SetText(SlaveName + ' looks and sees in a small alcove another girl, who moans, or maybe whines when she sees ' + SlaveName + '. She is lying on her back and has a large erect cock, leaking pre-cum. She puts a finger to her mouth in a gesture of silence and then waves to ' + SlaveName + ' to approach, again making a soft whining noise.\r\r' + SlaveName + ' approaches and the girl, who is still moaning, and leans in to whisper and ask what is wrong. Before she can say anything the girl reaches out and puts one of ' + SlaveName + '\'s hands on her cock and then kisses her. The girl whines again, slightly thrusting her hips and looks imploringly. For some reason ' + SlaveName + ' cannot bear to refuse.\r\r' + SlaveName); if (!Naked) { AddText(' rearranges her clothing and panties '); } AddText('and slowly lowers herself, impaling her pussy on the girl\'s cock. '); if (IsDickgirl()) { AddText('As she does she takes on of the girls hands and places it on her own cock. '); } AddText('The girl whines in a passionate way and thrusts her cock a little, meeting ' + SlaveName + ' who groans at the size and feeling of the girl\'s cock. After a brief pause, ' + SlaveName + ' moves up and down, fucking the girl\'s cock. '); if (IsDickgirl()) { AddText('The girl strokes ' + SlaveName + '\'s cock a little awkwardly, but quickly gets the correct rhythm. '); } AddText('The girl whines and moans fucking skillfully and with obvious pleasure. She fucks quicker and after a time lets out a soft cry, almost a growl and cums and cums, a large load into ' + SlaveName + '\'s pussy. '); if (IsDickgirl()) { AddText('As she cums, ' + SlaveName + ' feels her own orgasm approach and as the girl stops cumming and goes limp, ' + SlaveName + ' gasps and cums, spraying her cum over the girl\'s breasts. '); } else { AddText('As the girl cums ' + SlaveName + ' quickly orgasms, feeling the girl\'s cum filling her and the touch of the girls tongue licking her face. '); } AddText('\r\r' + SlaveName + ' is about to thank the girl, and again the girl puts a finger to her lips, and just lets out a contented whine. ' + SlaveName + ' puts a hand to her head and pats her, and returns back to the entry of the alley.\r\rAs she does the Puppy Girl returns from her chase, looking happy and panting in an exaggerated way. ' + SlaveName + ' pats her head, feeling happy for her encounter, but a little awkward for her little betrayal.'); Points(0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 1, 0, 1, 0, -2, 0, 2, 0, 1, 0, 0); } else { ShowMovie(WalkTownCenter, true, 0, 3); SetText(SlaveName + ' looks and sees a small alcove and some shadows moving at a window and cautiously sneaks up and peeks in.\r\rShe sees another girl with dog ears and tail, Mine?, presenting her rear to a man but due to the window and curtains ' + SlaveName + ' can barely see the man. She does see the man\'s cock, pressed against the girl\'s ass, and slowly worked in. The girl whines loudly and ' + SlaveName + ' can see her playing with her '); AddText('clit and pussy. ' + SlaveName + ' cannot help herself and '); if (!Naked) { AddText('reaches into her clothes and '); } AddText('massages her pussy and rubs her clit. The man fucks the girl, with some skill and care, fucking faster but not too fast to cause pain. The girl gasps and whines, and looks straight at ' + SlaveName + ' orgasming while looking directly in her eyes. ' + SlaveName + ' is surprised, aroused and '); AddText('orgasms, holding one hand over her mouth to stop from screaming out loud. The man also cums, unloading his cum into the girl\'s ass. The girl whines as he pulls free and licks his face, glancing at ' + SlaveName + '.\r\r' + SlaveName + ' quietly retreats to the entry of the alley and waits for ' + ServantName + ' and the Puppy Girl to return.'); Points(0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 2, 0, 1, 0, 0); } NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4011: SetText(SlaveName + ' gesture and says \'Look a catgirl\', hoping the Puppy Girl will run off looking. The girl looks alertly, but refuses to leave.\r\r'); AddText('The Puppy Girl smiles and wags her tail and has a happy chat with a slightly disappointed ' + SlaveName + '.\r\rAfter a time they part with a Woof!!'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4012: NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; if (VarConversationRounded < 30) { SetText(SlaveName + ' can see that ' + ServantName + ' likes the Puppy Girl and tries to convince ' + ServantHimHer + ' to play with her for a while, like when the catgirl was here.\r\r' + ServantName + ' looks tempted but refuses, explaining about ' + ServantHisHer + ' duty to supervise ' + SlaveName + '.'); } else { HideAssistant(); SetText(SlaveName + ' can see that ' + ServantName + ' likes the Puppy Girl and suggests ' + ServantHeShe + ' go play with her for a while, reassuring that ' + SlaveName + ' will talk a little rest here. ' + ServantName + ' looks tempted and agrees and they run off, happily playing.\r\rMeanwhile ' + SlaveName); Backgrounds.ShowAlley(3); AddText(' steps into the alley and '); switch (int(Math.random() * 6)) { case 0: case 1: ShowMovie(WalkTownCenter, true, 2, 2); AddText('sees in the small alcove the girl, who moans, or whines, happily when she sees ' + SlaveName + '. She is again lying on her back and her cock immediately springs erect. She puts a finger to her mouth in a gesture of silence and points towards the house and then her pussy, a slight dribble of cum is leaking from it. ' + SlaveName + ' understands, her Master had recently visited. She wonder at the girl\'s relationship with the other puppy girl.\r\r' + SlaveName); if (!Naked) { AddText(' removes some of her clothing and her panties '); } AddText('and lies next to the girl, who virtually jumps on to her, thrusting her cock into ' + SlaveName + '\'s pussy, no foreplay, no warning. Fortunately ' + SlaveName + ' is very aroused and the girl easily slides in. The girl softly whines and licks ' + SlaveName + '\'s face and neck, while fucking urgently. The girl quickly whines and arches her back, cumming into ' + SlaveName + ' large gouts of cum. ' + SlaveName + ' is a little disappointed, nowhere near cumming herself.\r\rThe girl leaves her cock inside ' + SlaveName + ' and licks and kisses her, and ' + SlaveName + ' feels the girl\'s cock grow hard again. The girl whines and starts fucking again, slower and less urgently. She fucks, building speed and depth and ' + SlaveName + ' feels her orgasm approaching and then the girl whines and cums again, whining and moaning as her cum pours into ' + SlaveName + ' again. She pulls out of a frustrated ' + SlaveName); if (IsDickgirl()) { AddText(' and she quickly slides down and takes ' + SlaveName + '\'s cock into her mouth and sucks and licks until ' + SlaveName + ' cums strongly into her mouth.'); } else { AddText(' and she quickly slides down and licks ' + SlaveName + '\'s pussy and clit until she orgasms strongly.'); } break; case 2: case 3: ShowMovie(WalkTownCenter, true, 2, 2); AddText('sees in the small alcove the girl, who moans, or whines, happily when she sees ' + SlaveName + '. She is sitting, lightly and slowly stroking her cock. She puts a finger to her mouth in a gesture of silence and points towards the entrance of the alley. ' + SlaveName + ' makes a gesture that it is ok, and the girl waves her over. ' + SlaveName + ' wonders, does this girl can love the Puppy Girl and maybe...?\r\rThe girl '); if (!Naked) { AddText(' quickly removes some of ' + SlaveName + '\'s clothing '); } AddText('and makes her kneel on hands and kneels. The words \'doggie style\' pass through ' + SlaveName + '\'s mind, and is erased as the girl thrusts her cock into ' + SlaveName + '\'s pussy, and starts fucking slowly. The girl plays with ' + SlaveName + '\'s breasts and '); if (IsDickgirl()) { AddText(' cock'); } else { AddText(' clit'); } AddText('. She fucks ' + SlaveName + ' faster and faster, sometimes licking her neck or face. After a time she fucks faster and whines and cums a torrential load of cum into ' + SlaveName + '\'s pussy and as she does ' + SlaveName); if (IsDickgirl()) { AddText('\'s cock erupts, and she gasps her orgasm, spraying cum over the ground.'); } else { AddText(' orgasms, barely holding in her cry of passion.'); } break; case 4: ShowMovie(WalkTownCenter, true, 0, 3); AddText('the girl is not there! She sees some shadows moving at a window and cautiously sneaks up and peeks in.\r\rShe sees the girl presenting her rear to a man but due to the window and curtains ' + SlaveName + ' can barely see the man. She sees the man\'s cock pressed against the girl\'s ass, and slowly worked in. The girl whines loudly and ' + SlaveName + ' can see her playing with her own cock, stroking it slowly. '); AddText(SlaveName + ' cannot help herself and '); if (IsDickgirl()) { AddText(' grabs her cock and strokes it in time with the man as he fucks the girl\'s ass'); } else { AddText(' massages her pussy and rubs her clit'); } AddText('. The man fucks the girl, with some skill and care, fucking faster but not too fast to cause pain. The girl gasps and whines, and looks straight at ' + SlaveName + ' cumming while looking directly in her eyes. ' + SlaveName + ' is surprised, aroused and '); if (IsDickgirl()) { AddText('cums, spraying her cums over the side of the house.'); } else { AddText('orgasms, holding one hand over her mouth to prevent her screaming out loud.'); } AddText(' The man also cums, unloading his cum into the girl\'s ass. The girl whines as he pulls free and licks his face, glancing at ' + SlaveName + '.\r\r' + SlaveName + ' quietly retreats to the entry of the alley and waits for ' + ServantName + ' and the Puppy Girl to return.'); Points(0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 2, 0, 1, 0, 0); return undefined; case 5: HideBackgrounds(); Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); AddText('and before she takes another step, hears the Puppy Girl return, saying,\r\r'); PersonSpeak('Puppy Girl', 'I cannot leave my post! Woof!! Mine might play with someone! Woof!!', true); AddText('\r\rShe looks happily at ' + SlaveName + ' who pretends she was just stretching. They chat for a time and the girl talks of her Master and occasionally refers to \'Mine\', and once said puppies, but maybe she just was talking about herself.'); return undefined; } AddText('\r\r' + SlaveName + ' pats the girl\'s head, and the girl contentedly whines. ' + SlaveName + ' leaves and waits briefly for ' + ServantName + ' and the Puppy Girl to return, feeling happy but a bit guilty.'); Points(0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 1, 0, 1, 0, -2, 0, 2, 0, 1, 0, 0); } return undefined; case 4013: Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 2, 0, 0, 0, 0, 0); AddText(SlaveName + ' decides it would be wrong to betray the Puppy Girl and forgets about tricking her. The Puppy Girl smiles and wags her tail and has a happy chat with ' + SlaveName + '.\r\rAfter a time they part with a Woof!!'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; PuppyGirlFlag = 4; return undefined; case 4014: HideBackgrounds(); ShowMovie(PeopleIdol, true, 1, 2 + DickgirlOn); PersonSpeak('Meigura', 'I can grant many things, as you are a slave I can give a form of freedom, and many of the standard things. My nature corrupts a little all wishes, so they are sometimes not quite what you would expect. All wishes require power and I need to absorb this from you, do not worry it will not harm you or corrupt you.\r\rIf you do not want these I will just flee the city. I will miss my friends but I can make more in another land.'); AddText('\r\r' + ServantName + ' looks angry, but suddenly faints,\r\r'); PersonSpeak('Meigura', 'It is alright, ' + ServantHeShe + ' is just dreaming of what ' + ServantHeShe + ' imagines I would do to ' + ServantHimHer + '.', true); AskHerQuestions(4016, 4015, 0, 0, 'A Wish', 'Nothing, leave this city', '', '', 'What does ' + SlaveName + ' decide?'); return undefined; case 4015: Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' does not want demons in this city, and is also a little afraid for Meigura, demon girls are prized as slaves.\r\rShe asks Meigura to leave the city, for her safety and for her friends.\r\rMeigura looks sad but agrees and walks off into the city.\r\rShortly after ' + ServantName + ' wakes up and looks very embarrassed but refuses to talk. They leave.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; VarIdol = -1; return undefined; case 4016: ShowMovie(PeopleIdol, true, 1, 2 + DickgirlOn); PersonSpeak('Meigura', 'I gain power by....'); if (DickgirlOn) { AddText('\r\rShe strokes her cocks '); } else { AddText('\r\rShe rubs her breasts '); } AddText('and then reaches out and touches ' + SlaveName + ' on her shoulders '); if (!Naked) { AddText('and her dress falls to the ground, '); } AddText('and Meigura kisses her and ' + SlaveName + ' feels a rush of arousal. Meigura has ' + SlaveName + ' '); if (DickgirlOn) { AddText('lean forwards against a wall, and slowly runs hands over ' + SlaveName + '\'s body, and slides a cock along her ass cheeks. After a bit she thrusts both cocks in, one into ' + SlaveName + '\'s pussy and one into her ass. Her cocks are very large and very hard, and she fucks hard and with skill. She has good control and as ' + SlaveName + ' feels her orgasm approach, Meigura speeds up and as ' + SlaveName + ' cums she feels Meigura spasm and her cum pours into ' + SlaveName + '\'s pussy and ass. They pant, Meigura\'s cocks still in ' + SlaveName + ' and Meigura whispers \'One\', and she slowly resumes fucking, her cocks still hard, sliding easily, lubricated by her own cum.\r\r' + SlaveName + ' groans but feels her arousal build, but Meigura cums again quickly after a minute or two. Her cum blasts into ' + SlaveName + ' seemingly with more power and volume, Meigura cries with the intensity of her orgasm, and raggedly whispers \'Two\'.\r\r' + SlaveName + ' wonders and can feel Meigura\'s cocks are still hard, and Meigura, resumes fucking again, very urgently as if she is even more aroused. Meigura fucks fast, her previous cum spurting out around her cocks, she moans with some incredible arousal. ' + SlaveName + ' feels very aroused and starts to orgasm as she feels Meigura shout almost in pain and she cums again. Her cum blasts like small geysers, tremendous amounts of cum pumping, and she cries and shouts with the intensity of her orgasm.\r\r'); AddText('They pull apart, cums pouring from ' + SlaveName + ' and Meigura whispers \'Three, and thanks\', her cocks softening.\r'); } else { if (IsDickgirl()) { AddText('lean against a wall as she kneels in front of her. She expertly fondles ' + SlaveName + '\'s cock quickly making her erect, and then takes her cock head into her mouth, licking and sucking. With amazing speed ' + SlaveName + ' cums, directly into Meigura\'s mouth, who swallows all the cum, and then whispers \'One\'.\r\r' + SlaveName + ' sighs after her cum, but realises her cock is still hard and Meigura is licking and sucking it again. ' + SlaveName + ' feels her orgasm build, and this time it feels stronger, and again she cries and cums, her hips thrusting as she cums and cums. Meigura swallows all her cum again, and whispers \'Two\'\r\rWith some nervousness ' + SlaveName + ' feels her cock is still hard, maybe harder and her arousal has only receded a little. Meigura licks and stokes ' + SlaveName + '\'s cock expertly, and works fingers in and out of ' + SlaveName + '\'s pussy. As she does ' + SlaveName + ' feels her orgasm build, stronger than before. She cries as her climax hits, her knees give way as she feels gouts of cum spurt into Meigura\'s mouth. She cums and cums and sees Meigura swallow part of the way to make more room. She cries out and sags as her climax stops, and watches Meigura swallow again and whisper \'Three\'.\r'); } else { AddText('sit on a box as she kneels in front of her. She expertly lowers her head and licks slowly along ' + SlaveName + 's pussy and then lightly licking her clit. She expertly licks and sucks ' + SlaveName + ' to a very quick orgasm, and whispers \'One\'.\r\rMeigura leans back down and continues licking and ' + SlaveName + ' feels her arousal build quickly, toward something stronger. Again very quickly ' + SlaveName + ' orgasms, a strong orgasm that leaves her gasping and slumping tiredly. Meigura whispers \'Two\'.\r\rMeigura leans in and resumes licking, this time working fingers into ' + SlaveName + '\'s pussy and lightly rubs her ass. ' + SlaveName + ' feels her orgasm build amazingly quickly as Meigura fucks her fingers in ' + SlaveName + '\'s pussy and slowly inserts a finger into her ass. As she does ' + SlaveName + ' cries out and orgasms, the strongest and longest she has ever had. She cries and gasps through her orgasm, and as she stops she hear Meigura whisper \'Three\'.\r'); } } AskHerQuestions(4017, 4018, 4019, 0, 'Freedom', 'Love', 'Health', 'Nothing, leave this city', 'What does ' + SlaveName + ' wish for?'); return undefined; case 4017: ClipNight._visible = true; ShowMovie(PeopleIdol, true, 1, 4); Points(0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0); PersonSpeak('Meigura', 'I cannot free you from slavery, but I can help you mind and soul to be free.'); AddText('\r\rWith that ' + SlaveName + ' feels a rush of self-confidence and realises the power of demons.\r\rWhe she comes to her senses, Meigura is gone and ' + ServantName + ' is awake and looking very embarrassed and insists they return home.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4018: ClipNight._visible = true; ShowMovie(PeopleIdol, true, 1, 4); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 5, 0); PersonSpeak('Meigura', 'You will love and be loved by all.'); AddText('\r\rWith that ' + SlaveName + ' feels a rush of love and desire.\r\rWhen she comes to her senses, Meigura is gone and ' + ServantName + ' is awake and looking very embarrassed and insists they return home.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4019: ClipNight._visible = true; ShowMovie(PeopleIdol, true, 1, 4); FatigueBonus += 10; Points(0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0); AddText(SlaveName + ' feels fitter, rested and is sure she can last longer before becoming tired.\r\rWhen she comes to her senses, Meigura is gone and ' + ServantName + ' is awake and looking very embarrassed and insists they return home.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4020: if (SlaveAttitude == 1) { Points(0, 0, -1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0); AddText(SlaveName + ' talks to the girl while slowly caressing her body. She promises life as a slave is not bad'); if (VarJoyRounded > 39) { AddText(' and is quite enjoyable at times'); } AddText('. She promises as much sex and you would want and many, many orgasms. While describing this she fingers the girls pussy and brings her quickly to orgasm.'); } else { Points(0, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' talks to the girl explaining that life as a slave is not as bad as it seems now'); if (VarJoyRounded > 39) { AddText(' and is quite enjoyable at times'); } AddText('. She talks about how life is simple and free of worries and touches briefly on how sexually satisfying it can be.'); } AddText('\r\rThe girls owner returns and ' + SlaveName + ' has to leave. She sees the girl being lead away with tight clamps attached to her nipples, tears slowly running from her eyes.'); DocksSlavePens.SetBitFlag(30); DocksSlavePens.NoRepeatEvent(1); DocksSlavePens.SetEventCount(2); NumEvent = 0; NextVisit._visible = true; return undefined; case 4021: Points(0, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' talks to the girl and sympathises with her condition. She truly understands why the church does not support slavery.\r\rShe promises when she can find her and her master again she will do her best to free her from him.'); AddText('\r\rThe girls owner returns and ' + SlaveName + ' has to leave. She sees the girl being lead away with tight clamps attached to her nipples, tears slowly running from her eyes.'); DocksSlavePens.NoRepeatEvent(1); DocksSlavePens.SetEventCount(2); NumEvent = 0; NextVisit._visible = true; return undefined; case 4025: Points(0, 2, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, -9, 0, 0); AddText(SlaveName + ' feels sad for Sareth and starts crying. She suddenly stops and thinks of something. She grabs ' + ServantName + '\'s hand and runs off, saying she\'ll be back soon.\r\rShe runs back to your home, arriving panting for breath. She runs to her room and gets a teddy bear you had bought for her'); if (DocksSlavePens.CheckBitFlag(30)) { AddText('. She tries to place a small wire that can be used as a lock-pick into the body of the bear but ' + ServantName + ' sees and stops her. Embarrassed she grabs the bear'); } AddText(' and runs back to the Slave Pens.\r\rThey arrive back tired and panting for breath. ' + SlaveName + ' gives the teddy bear to Sareth, who looks very happy, and tears of happiness start running down her face. She says thank ' + SlaveName + ' over and over.\r\r' + SlaveName + ' is a little sad to lose the bear but happy the girl is happy.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; DocksSlavePens.SetBitFlag(31); ShowItem(ObjectTeddyBear, true); --TotalTeddyBear; return undefined; case 4026: Points(0, 3, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0); AddText(SlaveName + ' feels sad for the girl and starts crying. '); if (!DocksSlavePens.CheckBitFlag(30)) { AddText('She wishes she could help her in some way but security is tight so escape from here is almost impossible. Maybe if she had a teddy bear she could at least give it to the girl to comfort her.'); } else { AddText('She wishes she had a teddy bear to give to girl to help comfort her.'); } AddText('\r\rShe controls herself and talks to the girl trying to help her as much as she can. The girl thanks her but looks sad as they part.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4030: case 4031: Points(0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0); if (NumEvent == 4030) { AddText(SlaveName + ' runs to fetch more guards and finds some running in. They dash in and see the deformed thing now ass-fucking the woman who is crying out in pain. Large gobs of cum are dripping from her pussy.\r\rThe guards attack and with difficulty subdue the creature.\r\rThe guards thank ' + SlaveName + ' for her help and pay a small reward. The woman is lead away by some servants.'); } else { AddText(SlaveName + ' runs to fetch more guards and finds some running in. They dash in and see the things cocks rippling as it cums into her pussy and ass. The woman is crying out and pain and maybe passion.\r\rThe guards attack and with difficulty subdue the creature.\r\rThe guards thank ' + SlaveName + ' for her help and pay a small reward. The woman is lead away by some servants.'); } Money(100); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4032: case 4033: if (NumEvent == 4032) { AddText(SlaveName + ' runs in and tries to attract the deformed thing\'s attention. It pays little notice until it grunts and arches its back, cumming deep in the woman\'s pussy. It pulls free, large gobs of cum drip from her pussy.\r\rHe pushes her to the side and springs toward ' + SlaveName + ' and after a short chase grabs her and forces her face down into the ground. She feels '); } else { AddText(SlaveName + ' runs in and grabs a sword lying on the ground and slashes at the webbing freeing the woman\'s arms. ' + SlaveName + ' slashes at the creature but the sword just bounces. The creature seems to ignore her and it\'s cock-tentacles swell and large ripples of cum pump into the woman\'s pussy and ass. ' + SlaveName + ' slashes again and the tentacle in the woman\'s pussy pulls free.\r\rThe creature seems to notice ' + SlaveName + ' and pulls free and slithers towards her and after a chase wraps itself around her, and she feels '); } if (!Naked) { AddText('her dress ripped to one side and '); } AddText('a large cock pushing at her ass. Just as it is about to thrust in, it grunts and collapses. ' + SlaveName + ' sees the woman standing, holding a bloody sword.\r\rMoments later the soldiers arrive and start checking the situation.\r\rThe woman thanks ' + SlaveName + ' profusely for the help and gives her a reward. She introduces herself as the Lady Farun and promises any help ' + SlaveName + ' needs in future and invites her to <b>visit</b> anytime.'); Money(300); SetBitFlag1(15); SetBitFlag1(17); VarLadyFarun = 0.02; Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 2, 0, 0, 0, 0); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4040: if (SoundsOn) { Sounds.SoundSpank.gotoAndPlay(2); } Points(0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' runs to the girls and pulls off their ear-muffs and tells them quickly they are with their sister! The girls start and stop writhing and pull back.\r\r' + SlaveName + ' is roughly pulled back by their owner and he angrily slaps her. He demands ' + ServantName + ' punish her severely, but ' + ServantHeShe + ' replied that this is up to their Slave Maker, not you!\r\r' + ServantName + ' grabs ' + SlaveName + ' and they leave.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4041: Money(-1); Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 2, 0, 0, 0, 0); AddText(SlaveName + ' angrily reaches to slap the man but ' + ServantName + ' grabs her hand, saying \'No\'. The man looks shocked, and more so when ' + ServantName + ' walks over to the girls and removes their hoods entirely. The girls look surprised to see the reality of the situation.\r\rTheir owner looks outraged and demands recompense for the loss of training. ' + ServantName + ' throws him 1GP for his losses and leaves with ' + SlaveName); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4050: UseGeneric = false; WalkSlavePens._visible = false; SlaveGirl.ShowSexActBlowjob(); TotalBlowjob += 1; Points(0, 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0); AddText(SlaveName + ' looks around and quickly bends down and takes the girl\'s cock into her mouth and starts giving her a blowjob. Very quickly the girl cries out and cums, mostly into ' + SlaveName + '\'s mouth. She sighs and thanks ' + SlaveName + ' who smiles and waves goodbye.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4051: Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0); AddText(SlaveName + ' apologises and says it would be embarrassing out here in the public. The slave girl looks frustrated and they part with the girl\'s cock still very, very erect.'); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4060: AddText(SlaveName + ' explains about her promise to help Sareth and her dubious new owner. The Lady Farun is sympathetic to her request, but is unsure about the ruins she was taken to.\r\rShe says she will ask around court but it could take a few days and asks ' + SlaveName + ' to check back daily until she has found something.'); AfterLadyFarun(); ClearBitFlag1(17); VarLadyFarun = -3 - Difficulty; NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4061: Points(0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' asks the Lady Farun to fix the next race she enters so she wins, despite the dubious morals of this.\r\rThe Lady agrees to this with no reservations.'); SetBitFlag1(19); ClearBitFlag1(17); AfterLadyFarun(); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4062: AddText(SlaveName + ' says there is little she can think of so just asks for some money instead.\r\rThe Lady looks little disappointed and agrees, giving her 1000GP.'); ClearBitFlag1(17); Money(1000); AfterLadyFarun(); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; case 4063: AddText(SlaveName + ' cannot think of anything now. The Lady says the offer remains.'); AfterLadyFarun(); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = true; return undefined; } } function DoMilkEvent(eventno) { switch (NumEvent) { case 4080: UseGeneric = false; HideImages(); HideBackgrounds(); HideSlaveActions(); Backgrounds.ShowSlums(1); MilkInfluence = 9; NumEvent = 4081; AddText('She is dimly aware of being partly carried into a large building and hearing cries and moans\r\rShe is positioned straddling an odd cushioned bench, leaning forward. Her huge breasts are lifted onto a platform in front of her, intense feelings from them, her nipples incredibly erect.\r\rHer hands are tied above her head and her feet are strapped into place. She feels fingers rubbing her anus working some oil expertly in and then a large cock-like thing is worked into her ass until deeply in place. She feels uncomfortably full.'); AddText('Fingers rub her pussy finding it leaking juices and then a larger phallus is plunged in. It is larger than any human cock and she moans, and then cries as it starts to vibrate with increasing strength. Almost immediately ' + SlaveName + ' explodes in orgasm.\r\rShe then feels suction cups applied to her nipples that start insistently sucking. Between that and the phallus she orgasms again.\r\rShe is dimly aware of time passing, having orgasm after orgasm. Occasionally the dildo in her ass is removed and someone\'s real cock replaces it, fucking her until they cum and then replacing the dildo. A cock is sometimes placed to her lips and she sucks it and drinks the cum. She is beyond caring lost in a daze of orgasm and the intense feelings in her breasts.\r\rShe is aware after a while that milk starts to flow from her breasts, and also starts hearing low whispering, few words except clearly \'return\'.\r\rAfter many fuckings her consciousness fades, and she awakens to ' + ServantName + ' shaking her. She is lying in the woods near the farm, remembering nothing.'); SlaveGirl.ShowMilking(); if (UseGeneric) { Generic.ShowMilking(); } TotalMilked = 1; UpdateDateAndItems(1); return undefined; case 4081: HideSlaveActions(); ShowMainButtons(); Quitter._visible = false; HidePeople(); NextEvent._visible = false; AddText(SlaveName + ' recovers from her experience and a full day has passed. Her breasts have returned to normal, but maybe a little larger. Sometimes though they leak a little milk.\r\rShe remembers little of the experience but sometimes in her sleep her breasts swell and milk stains her sheets.'); ShowRobes(); ShowStatistics(true); return undefined; case 4082: NumEvent = 250; NextEvent._visible = true; SetText('You punch the farmer and leave the farm in anger. When you return home and explain ' + SlaveName + ' thanks you for understanding. You see she is blushing.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 8, 0); return undefined; case 4083: MilkInfluence = -3; HideImages(); Backgrounds.ShowFarm(); ShowMovie(PeopleFarmer, false, 0); SetText('The farmer looks worried, and promises to do something. He explains he needs to talk to a certain noble first. He tells you that he will contact you soon, in the next few days.\r\rHe looks very, very concerned and as you leave he begs you to not do anything until he contacts you.'); AskHerQuestions(4088, 4087, 0, 0, 'Agree to wait', 'Forget it and go to the Lord', '', '', 'What do you do'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 8, 0); return undefined; case 4084: NumEvent = 250; ChangeSlaveMakerGender(2); ShowMovie(PeopleFarmer, false, 0); NextEvent._visible = true; SetText('Breasts, you have breasts!! You try to look down and you can see you have a large pair of breasts.\r\rYou hear a voice\r\r'); PersonSpeak('Farmer?', '..was a threat to us here. We have had to move the cows to the second farm, they are mostly settled in. The alchemical potion was quite expensive but \'she\' is now in a stall, we will make sure she is tended to well, in her new, permanent home.', true); AddText('\r\rA voice answers,\r\r'); PersonSpeak('?', 'I will negotiate with the owner and at court...', true); AddText('\r\rYou feel an oily hand rub over your pussy, you have a pussy! and you know your cock is gone and you are a woman! As you think this you gasp as a very large dildo slowly forced into your new pussy, deeper and deeper, until it is uncomfortably deep and you feel it strapped in place. An intense vibration starts and you immediately orgasm, your first female orgasm. You are stunned by the intensity, the difference of the sensation.\r\rFingers start working oil into your ass and you hear a voice\r\r'); PersonSpeak('Farmer?', 'Hold the plug for now, I want her ass first...', true); if (BadEndsOn) { NumEvent = 9800; } else { NumEvent = 4086; } return undefined; case 4085: NumEvent = 250; ChangeSlaveMakerGender(3); ShowMovie(PeopleFarmer, false, 0); NextEvent._visible = true; AddText('What are you a woman? Then you feel a hand cup your testicles, which feel larger than before. Your cock feels very erect. You look down and you see you have a large pair of breasts!!\r\rYou hear a voice\r\r'); PersonSpeak('Farmer?', '..was a threat to us here. We have had to move the cows to the second farm, they are mostly settled in. The alchemical potion was quite expensive but it did not work correctly. \'She\' is now a hermaphrodite and is now in a stall, we will make sure she is tended to well, in her new, permanent home. We can sell her \'other\' milk to that alchemist.', true); AddText('\r\rA voice answers,\r\r'); PersonSpeak('?', 'I will negotiate with the owner and at court...', true); AddText('\r\rYou feel an oily hand rub over your pussy, you have a pussy! and you know you are a hermaphrodite! As you think this you gasp as a very large dildo slowly forced into your new pussy, deeper and deeper, until it is uncomfortably deep and you feel it strapped in place. An intense vibration starts and you immediately orgasm, your first female orgasm. You are stunned by the intensity, the difference of the sensation and then you cum again, this time your cock spewing cum.\r\rFingers start working oil into your ass and you hear a voice\r\r'); PersonSpeak('Farmer?', 'Hold the plug for now, I want her ass first...', true); if (BadEndsOn) { NumEvent = 9800; } else { NumEvent = 4086; } return undefined; case 4086: case 4087: HidePeople(); HideImages(); Backgrounds.ShowPalace(); ShowMovie(PeopleLord, true, 0); Money(500); if (NumEvent == 4086) { UpdateDateAndItems(3); SetText('After a long time and many fuckings you pass out..\r\r'); var v1 = 'You wake-up in a forest clearing, ' + ServantName + ' standing over you and ' + ServantHeShe + ' explains that they finally found you! After nightfall, ' + ServantHeShe + ' was able to sneak in and rescue you, carrying you here. '; if (MilkInfluence == -4) { v1 = v1 + ServantName + ' looks embarrassed and comments about how ' + ServantHeShe + ' did not at first recognise you...'; } v1 += '\r\rYou are quite angry and storm to the Palace demanding to see the Lord. You are let in and he hears your story. He promises immediate retailation and orders the city guard dispatched to free the captive girls and disband the farm. '; if (MilkInfluence == -4) { v1 += 'The Lord is a bit amused at your change of body, and comments that it will not affect his opinion of you as a Slave Maker.'; } v1 += '\r\rThe Lord gives you a reward for your service to the city, and suggests you return home to your training.'; if (MilkInfluence == -4) { v1 += '\r\rYou will need sometime to adjust to your new body, and what it means to being a Slave Maker...'; } ShowMovie(OnTopOverlay, true, 0); StartFadeImage(50, OnTopOverlay, v1); } else { SetText('You are quite angry and ignore his request and storm to the Palace demanding to see the Lord. You are let in and he hears your story. He promises immediate retailation and orders the city guard dispatched to free the captive girls and disband the farm.\r\rThe Lord gives you a reward for your service to the city, and suggests you return home to your training.'); } NumEvent = 250; SetBitFlag1(26); MilkInfluence = -1; NextEvent._visible = true; return undefined; case 4088: NumEvent = 250; NextEvent._visible = true; SetText('You agree to wait a few days before going to the Lord and leave.\r\rWhen you return home and explain ' + SlaveName + ' thanks you for understanding. You see she is blushing.'); return undefined; } } function DoFaerieEvent(eventno) { switch (NumEvent) { case 4200: case 4203: temp = FairyMeeting; if (temp > 59) { temp -= 60; } else { if (temp > 49) { temp -= 50; } } ClipFairyMeeting.gotoAndStop(temp + 8); ClipFairyMeeting._visible = true; NextEvent._visible = true; HideStatChangeIcons(); if (NumEvent == 133) { AddText(SlaveName + ' sneaks in and quickly frees the faerie. She is unable to remove all the binding, but it may just be the faerie already had some odd piercings...\r\rThe faerie whispers her thanks and asks ' + SlaveName + ' to return tomorrow and silently leaves. ' + SlaveName + ' quickly leaves but is chased for a time by the hunters who seem to think she is the faerie. Eventually she escapes.'); } else { AddText(SlaveName + ' sneaks in and quickly frees the faerie girl. She is unable to remove all the binding, but it may just be the faerie already had some odd piercings...\r\rThe faerie looks at her with gratitude and silently leaves.\r\r' + SlaveName + ' quickly leaves but is chased for a time by the hunters who seem to think she is the faerie. Eventually she loses them.'); } Points(0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0); NumEvent = 9999; return undefined; case 4201: ClipFairyMeeting._visible = false; NextEvent._visible = true; if (FairyMeeting < 50) { FairyMeeting += 50; } HideStatChangeIcons(); AddText(SlaveName + ' hears a struggle and thinks the faerie was captured, she is very curious but leaves for her own safety.\r\rShe hears a noise and realises she is being chased, and she runs for her freedom. Eventually she escapes.'); Points(0, -2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0); NumEvent = 9999; return undefined; case 4202: if (FairyMeeting < 50) { FairyMeeting += 60; } else { if (FairyMeeting < 60) { FairyMeeting += 10; } } temp = FairyMeeting; if (temp > 59) { temp -= 60; } else { if (temp > 49) { temp -= 50; } } ClipFairyMeeting.gotoAndStop(temp + 5); ClipFairyMeeting._visible = true; NextEvent._visible = true; HideStatChangeIcons(); NumEvent = 9999; Money(100); AddText(SlaveName + ' walks in and re-binds the faerie who looks surprised and fearful.\r\r'); if (temp == 2) { AddText('An odd woman walks in who appears to be some sort of faerie too. She looks silently at ' + SlaveName + ' and grabs the bound faerie and starts to take her away.\r\rShe turns and throw a small gold nugget and a berry at ' + SlaveName + ' who pockets the gold and unconsciously eats the berry...'); NumEvent = 4207; } else { AddText('A group of hunters arrive and see what she has done and thank her.\r\rThey chat to ' + SlaveName + ' for a bit about hunting faeries and pay her a reward for her help'); } if (FaeriesRingOK == 1) { AddText('\r\rThe Faeries Ring grows hot and turns to dust.'); } FaeriesRingOK = 10; FaeriesRingWorn = 0; Points(0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0); return undefined; case 4204: NextEvent._visible = true; HideStatChangeIcons(); Money(300); HideImages(); HideBackgrounds(); Backgrounds.ShowShop(); Points(0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0); ServantSpeak(SlavePronoun + ' have sold the gem for 300GP'); NumEvent = 9999; return undefined; case 4205: NextEvent._visible = true; HideStatChangeIcons(); switch (int(Math.random() * 5)) { case 0: NumAphrodisiac += 1; MinLibido += 10; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0); UsedAphrodisiac = 1; DrinkPotion(20, 0, 'eats the gem and is knocked to her knees by overwhelming lust.'); break; case 1: Points(8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' eats the gem and feels a rush of heat in her skin. She looks at her reflection in some water and sees her appearance has slightly altered and she is more beautiful.'); break; case 2: Points(0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' eats the gem and feels surge of emotions and has vision after vision of perfect love and romance. The visions remain with her for the rest of her life.'); break; case 3: Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0); AddText(SlaveName + ' eats the gem and feels a rush of happiness and starts laughing uncontrollably. She eventually stops but the good mood persists.'); break; case 4: Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' eats the gem and feels a surge of self confidence. After a time the feeling fades but she remembers it fondly.'); } NumEvent = 9999; return undefined; case 4207: HideStatChangeIcons(); NumAphrodisiac += 1; MinLibido += 10; UsedAphrodisiac = 1; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0); DrinkPotion(20, 0, 'swallows the berry and is knocked to her knees by overwhelming lust.'); NumEvent = 9999; return undefined; } } function DoTalentEvent(eventno) { switch (eventno) { case 5010: AnySex = true; Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, 1, 0, 1, 0, 0, 0, 0, 0); NumEvent = 251; DoEventNext(); break; case 5011: Points(0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0); NumEvent = 251; DoEventNext(); break; case 5012: AnyNonSex = true; Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, 1, 0, 1, 0, 0, 0, 0, 0); NumEvent = 251; DoEventNext(); break; case 5013: Points(0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, -2, 1, 2, 1, 0, 0, 0, 0, 0); NumEvent = 251; DoEventNext(); break; case 5014: Points(0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0); NumEvent = 251; DoEventNext(); break; case 5015: MaxFuck += 0.5; MaxBlowJob += 0.5; Points(0, 0, 0, -1, -1, 0, 0, 0, 0, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0); NumEvent = 251; DoEventNext(); break; case 5020: Corruption += 1; TentacleHaunt += 10; NumEvent = 251; DoEventNext(); break; case 5021: TentacleHaunt += 20; Corruption += 10; case 5022: NumEvent = 251; DoEventNext(); } } function ShowYesNoButtons() { if (!YesEvent._visible) { YesEvent._x = 220; NoEvent._x = YesEvent._x + 200; YesEvent._y = 530; NoEvent._y = 530; NoEvent._visible = true; YesEvent._visible = true; } } function HideYesNoButtons() { YesEvent._x = 220; NoEvent._x = YesEvent._x + 200; YesEvent._y = 530; NoEvent._y = 530; if (YesEvent._visible) { NoEvent._visible = false; YesEvent._visible = false; } } function DoEventYes() { StopHints(); OldNumEvent = NumEvent; NextEvent._x = 626; Quitter._x = 626; HideYesNoButtons(); SetText(''); if (YesNoFlag == 0) { DoTailorYes(); SlaveGirl.AfterEventYes(); return undefined; } else { if (YesNoFlag == 1) { DoGeneralYes(); SlaveGirl.AfterEventYes(); return undefined; } } Beep(); if (SlaveGirl.DoEventYes() != true) { if (NumEvent > 99 && NumEvent < 200) { Tentacles.DoTentacleYes(NumEvent); return undefined; } else { if (NumEvent > 5999 && NumEvent < 7000) { HouseEvents.DoHouseYes(NumEvent); return undefined; } } switch (NumEvent) { case 1: if (VarGold >= 100 + Difficulty * 20) { Money(-(100 + Difficulty * 20)); } else { ClipRescue._visible = false; if (SlaveGirl.ShowRetrieved() != true) { AddText('You could not pay.\r\r'); ServantSpeak(Master + ', your slave has been retrieved after 3 days.', true); UpdateDateAndItems(3, true); } NumEvent = 9999; NextVisit._visible = true; } break; case 2: case 2.1: Money(VarCharisma * 10); SoldSlave = NumEvent - 1; HideImages(); HideBackgrounds(); AddText('You have illegally sold ' + SlaveName + ', hopefully the original owner will not be able to do anything.'); break; case 3: HideStatChangeIcons(); MaxObedience += 5; PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 10, 0); AddText(SlaveName + ' is really happy and swears to work harder now.\r\rYou feel torn, happy with your mutual feelings, but sorry that you are still bound to sell her at the end of her training.'); LoveAccepted = 1; Icons.LoveGauge.play(); if (SlaveGirl.ShowLoveAccepted() == true) { return undefined; } NextVisit._visible = true; NumEvent = 9999; break; case 6: HideSlaveActions(); HideStatChangeIcons(); Points(5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0); MinLibido += 5; UpdateSlave(); DrinkPotion(11, 0, 'takes the pill and feels an odd wave of confidence and desire.'); break; case 7: Lake.SetBitFlag(32); HideStatChangeIcons(); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0); NumAphrodisiac += 1; MinLibido += 15; UpdateSlave(); UsedAphrodisiac = 1; DrinkPotion(12, 0, 'swallows the potion and feels an enormous surge of lust.'); break; case 8: DoVisitSeer(false); break; case 9: CuteGirlLesbianSex(); break; case 10: SailorSex(); break; case 13: HideStatChangeIcons(); HideImages(); HideBackgrounds(); HidePeople(); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, -10, -10, 0); SlaveGirl.ShowNobleLoveAccepted(); AddText(' is very happy and \'takes\' possession of her.'); NobleLove = -2; SoldSlave = 1; NumEvent = 9999; NextVisit._visible = true; break; case 16: DifficultyBondage += 10; ServantSpeak('She is now a normal slave.'); HarnessWorn = 0; DonePonygirl = -1; UpdateEquipment(); Quitter._visible = true; NumEvent = 9999; break; case 17: HideStatChangeIcons(); PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -5, 0, 0, 5, 0); ServantSpeak('She is now a normal slave.'); BitGagWorn = 0; DonePonygirl = -1; UpdateEquipment(); Quitter._visible = true; NumEvent = 9999; break; case 18: HideStatChangeIcons(); DifficultyBondage -= 5; if (!(SlaveGirl.IsDickgirl() || DickgirlXF > 0)) { Icons.DickgirlXFIcon._visible = false; } PointsMod(0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0); ServantSpeak('She is now a normal slave.'); PonyTailWorn = 0; DonePonygirl = -1; PlugInserted = 0; UpdateEquipment(); Quitter._visible = true; NumEvent = 9999; break; case 19: ShowSlaveShop = 1; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 4); ClipTownCenter._visible = false; ServantSpeak('We have found a small shop front in the town center and have set up the shop.'); break; case 31: SetBitFlag1(32); AddText(SlaveName + ' accepts and starts working as an assistant chef.'); BlankLine(); NextGeneral._visible = true; NumEvent = 9999; FunctionJobRestaurant(); return undefined; case 32: if (Slutiness > 5 || VarObedienceRounded > 69) { AddText(SlaveName + ' enthusiastically agrees to do the strip-tease.\r\r'); } else { AddText(SlaveName + ' agrees a little reluctantly to do the strip-tease.\r\r'); } WorkInSleazyBar(true); return undefined; case 33: JobSleazyBarService(); return undefined; case 36: DoEventNext(); return undefined; case 200: Icons.DickgirlXFIcon._visible = true; if (SlaveGirl.ShowDickgirlTransform() != false) { if (NumEvent == 200 && NumEvent != 0 && PotionsUsed[0] == 2 && AllDickgirlXFOn) { NumEvent = 202; } Generic.ShowDickgirlTransform(); } NextEvent._visible = true; break; case 220: if (DressWorn == -1) { NakedChoice = 0; } DickgirlXF = 0; SlaveGirl.ShowLoveRefused(); AddText(SlaveName + ' is sad to lose her cock but understands and drinks the potion. Her cock shrinks and disappears.\r\rAstrid is also sad and says ' + SlaveName + ' can return any time.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -5, 0, 0, -1, 0, 0); PotionsUsed[0] = 1; Icons.DickgirlXFIcon._visible = false; ClearBitFlag1(12); NumEvent = 0; break; case 510: SuperviseYourself = 1; PlanningDay._visible = true; Quitter._visible = true; UpdateSupervision(); break; case 4070: SetBitFlag1(18); NumEvent = 9999; if (Slutiness > 5) { AddText(SlaveName + ' eagerly agrees'); } else { AddText(SlaveName + ' agrees nervously'); } AddText(' to the tutors request. The teacher gives her several bottles of the potion, saying\r\r'); PersonSpeak('Tutor', 'This potion is very potent, it makes you orgasm stronger and easier and makes you feel wonderfully stimulated. If you take it too much you will find it hard to orgasm without it. You will eventually become a slut, somewhat focused on orgasms and sex in any form. It will slowly wear off, but few want it to.\r\rI look forward to educating you...', true); AddText('\r\rShe blows ' + SlaveName + ' a kiss while walking away, and then cracks her whip and laughs.'); if (SoundsOn) { Sounds.SoundWhipCrack.gotoAndPlay(2); } NextEvent._visible = true; break; case 4080: WalkCowgirl._visible = false; Points(2, 0, 0, -2, 0, 3, 0, 0, 0, 0, 3, -3, 3, -1, 3, 0, 3, 0, 0, 0); NextVisit._visible = false; NextEvent._visible = true; NumEvent = 4080; if (SlaveGirl.ShowMilkFall() != true) { SlaveGirl.ShowTired(); } SetBitFlag1(6); AddText(SlaveName + ' swallows the sweet and immediately feels an intense pressure in her chest. '); if (Naked) { AddText('She looks down'); } else { AddText('She pulls off her clothes'); } AddText(' and her breasts swell, visibly growing, and growing.\r\rThey finally stop and as she turns they pendulously swing and she topples over backward onto the ground. She feels a fog descend on her mind and also a considerable arousal, her breasts feel very sensitive. She grows very wet from the unaccustomed sensations, to the extent juices leak from her pussy.\r\rShe feels arms lift her..'); break; case 4115: if (VarGold > 999) { Money(-1000); EvilMineFlag = 6; AddText('She promises to pay and she drags Misana back to the mine, running.'); } else { AddText('She remembers you cannot pay and runs back to the mine.'); } NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; break; case 8025: AddText('She looks happy,\r\r'); PersonSpeak('Prostitute', 'I\'ll pick you up tonight.', true); NumEvent = 0; break; case 8040: AddText('She looks pleased,\r\r'); PersonSpeak('Lady Okyanu', 'I\'ll pick you up tonight.', true); NumEvent = 0; break; case 8079: VarHighClassProstitute = -1; AddText('Lady Okyanu is happy and instructs her to <b>visit</b> for her training.\r\rIn the morning Lady Okyanu returns ' + SlaveName + ' to you.'); NextEvent._visible = false; NextGeneral._visible = true; } } if (NumEvent < 100 && NumEvent != 8) { HidePeople(); ShowMainButtons(); Quitter._visible = false; NextVisit._visible = false; ShowRobes(); } SlaveGirl.AfterEventYes(); } function DoEventNo() { StopHints(); OldNumEvent = NumEvent; NextEvent._x = 626; Quitter._x = 626; HideYesNoButtons(); HideQuestions(); SetText(''); Beep(); if (YesNoFlag == 0) { ActionChoice = 0; HideItems(); Quitter._visible = true; if (ClipTravellingMerchant._visible == true) { ShowSlaveMaker(false); } else { HideImages(); HideSlaveActions(); if (StablesMenu._visible || SalonMenu._visible || Dealer._visible || ShopMenu._visible) { return undefined; } HideBackgrounds(); HideRobes(); ShowRobes(); TailorMenu._visible = true; } SlaveGirl.AfterEventNo(); return undefined; } else { if (YesNoFlag == 1) { return undefined; } } if (SlaveGirl.DoEventNo() == true) { return undefined; } if (NumEvent > 99 && NumEvent < 200) { Tentacles.DoTentacleNo(NumEvent); SlaveGirl.AfterEventNo(); return undefined; } else { if (NumEvent > 5999 && NumEvent < 7000) { HouseEvents.DoHouseNo(NumEvent); SlaveGirl.AfterEventNo(); return undefined; } } switch (NumEvent) { case 1: HideImages(); HideBackgrounds(); if (SlaveGirl.ShowRetrieved() != true) { ShowAssistant(); ServantSpeak(Master + ', we have retrieved your slave, but it took 3 days.'); UpdateDateAndItems(3, true); } NumEvent = 9999; NextVisit._visible = true; break; case 3: HideStatChangeIcons(); SlaveGirl.ShowLoveRefused(); if (GeneralTextField.text == '') { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, -15, -20, 0); AddText(SlaveName + ' is very sad but at least you don\'t let your personal likes interfere with your job.'); } LoveAccepted = 2; NextVisit._visible = true; NumEvent = 9999; break; case 6: Points(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText('You are unsure of the pill and discard it.'); HideSlaveActions(); break; case 9: AddText('The girl is disappointed but understands.\r\rThey continue their walk and part laughing.'); break; case 10: Points(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (VarLibidoRounded > 50) { SlaveSpeak(SlavePronoun + ' really wanted him...'); } else { SlaveSpeak('Another time!'); } break; case 13: HideStatChangeIcons(); HideImages(); HideBackgrounds(); HidePeople(); SlaveGirl.ShowNobleLoveRefused(); NobleLove = -1; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 0); NumEvent = 9999; NextVisit._visible = true; break; case 15: PonyTailWorn = 1; PlugInserted = 1; UpdateEquipment(); case 16: case 17: case 18: NumEvent = 9999; Quitter._visible = true; break; case 19: ShowSlaveShop = -1; AddText('She is very disappointed.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -10, 0); break; case 31: AddText(SlaveName + ' refuses and decides to continue working as a waitress.'); BlankLine(); NextGeneral._visible = true; NumEvent = 9999; FunctionJobRestaurant(); break; case 32: NextGeneral._visible = true; NumEvent = 9999; if (Slutiness > 5) { AddText(SlaveName + ' is disappointed the she could not do the strip-tease.\r\r'); } else { AddText(SlaveName + ' is relieved she does not have to do the strip-tease.\r\r'); } break; case 33: SlaveGirl.AfterEventNo(); DoGeneralNext(); return undefined; case 36: if (SMFaith == 1) { Points(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } DoGeneralNext(); return undefined; case 200: if (PotionsUsed[0] > 0) { HideStatChangeIcons(); SlaveSpeak(SlavePronoun + ' wish ' + SlavePronoun + ' had done that again, my cock felt so wonderful.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 2, 0, 0, 0, 0, 0); } else { AddText(SlaveName + ' was curious about the potion but it is fine to not try it.'); } break; case 220: HideStatChangeIcons(); if (DressWorn == -1) { NakedChoice = 0; } DickgirlXF = 2; AddText(SlaveName + ' is joyous to be able to keep her cock. Astrid is very happy too and congratulates her by kneeling down and giving her an amazingly skilled blowjob.'); Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 2, 2, 1, 5, 5, 0); break; case 510: SuperviseYourself = 0; PlanningDay._visible = true; Quitter._visible = true; UpdateSupervision(); break; case 4070: AddText(SlaveName + ' refuses her price. The tutor smiles,\r\r'); PersonSpeak('Private Tutor', 'I\'ll teach you sometime...', true); AddText('\r\rShe cracks the whip and leaves.'); NumEvent = 9999; NextVisit._visible = false; ShowMainButtons(); Quitter._visible = false; HidePeople(); ShowRobes(); HideItems(); if (SoundsOn) { Sounds.SoundWhipCrack.gotoAndPlay(2); } break; case 4080: Points(0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' is suspicious of the man and refuses. He looks disappointed and she leaves looking for ' + ServantName + '. A few minutes later she hears ' + ServantName + ' calling, they meet and finish their walk.'); break; case 4115: AddText(SlaveName + ' does not believe Misana and refuses.\r\rShe runs back to the ruins.'); NumEvent = 4120; NextEvent._visible = true; NextVisit._visible = false; return undefined; case 8025: NumEvent = 8020; AddText('The prostitute seems to not understand why she would not want money and sex.\r\r'); var v1 = int(Math.random() * 2) + 3; PersonSpeak('Prostitute', 'I am sorry you will miss the cocks, I mean party. There is another in ' + v1 + ' more days, come back then.', true); VarProstitute = 1000 + 100 * v1; NextEvent._visible = true; break; case 8040: NumEvent = 9999; AddText('Lady Okyanu smiles and leaves. Over her shoulder she comments that she will not bother to invite ' + SlaveName + ' again.\r\r'); VarHighClassProstitute = -5; NextEvent._visible = true; break; case 8079: NumEvent = 9999; VarHighClassProstitute = -5; AddText('Lady Okyanu is a little sad and changes the topic of the conversation.\r\rIn the morning Lady Okyanu returns ' + SlaveName + ' to you.'); NextEvent._visible = false; NextGeneral._visible = true; } if (NumEvent != 9999 && NumEvent != 8020 && NumEvent != 510) { NextVisit._visible = false; ShowMainButtons(); Quitter._visible = false; HidePeople(); ShowRobes(); } SlaveGirl.AfterEventNo(); } function DoEvilMine() { ShowAssistant(); if (EvilMineFlag == -1) { AddText('You, ' + SlaveName + ' and ' + ServantName + ' return to the mine. You see no activity at all. You search for a long time but find no sign of the girls or the zombies. You find several dead zombies from your last encounter, but nothing else.\r\rSadly you return home, unable to find where the girls have gone, remembering their cries of pain and ecstasy.'); if (Talent != 4 && Talent != 7 && Talent != 10) { RuinedTemple.SetAccessible(false); TakeAWalkMenu.Ruins._visible = false; } EvilMineFlag = -10; NumEvent = 9999; return undefined; } if (Talent != 4 && Talent != 7 && Talent != 10) { AddText(SlaveName + ' follows Lady Farun\'s directions and reaches the ruins without challenge.\r\r'); } AddText(SlaveName + ' sees an odd looking wagon near the ruins with a large man in a cloak loading what looks like rocks or maybe ore. Even from this distance she can smell a horrible odour from the man.\r\rLooking back she can see a dark cave with some sort of activity. ' + ServantName + ' whispers to be cautious, and they advance...'); Backgrounds.ShowCave(1); DoEvent(4100); EvilMineFlag = 1; var v4 = 75 + int(Math.random() * (6 + Difficulty)) * 2; var v2 = 45 + int(Math.random() * (6 + Difficulty)) * 2; var v1 = 65 + int(Math.random() * (6 + Difficulty)) * 2; var v3 = 40; if (Difficulty > -1) { Action5 = 4133; } else { Action5 = 4131; } InitialiseCombat('You enter the mine and see several shambling shapes advance, zombies the living dead.', 4132, 4130, Action5, Action5); AddMonster(new Scripts.Classes.MonsterZombie(v4, v2, v1, v3, 'Zombie')); } function DoEvilMineEvent(eventno, tempstr) { switch (eventno) { case 4100: NumEvent = 4199; NextEvent._visible = true; NextVisit._visible = false; WalkRuinedTemple.gotoAndStop(1); WalkRuinedTemple._visible = true; AddText(SlaveName + ' and ' + ServantName + ' approach the tunnel and see a pair of bound girls pulling a cart of some sort. They seems to be being used to work a mine of some sort. They are tightly bound with gags, leather harnesses, large nipple piercings and their arms are bound behind their backs. Large dildo are secured somehow to their leggings and as they walk it thrusts in and out in time with their steps.\r\rOne of them lets out a muffled cry and stumbles, '); if (!DocksSlavePens.CheckBitFlag(30)) { AddText('and ' + SlaveName + ' can clearly see it is Sareth, '); } AddText('looking bruised, dirty, but flushed with passion. The other girl is not familiar but she looks dirtier with many welt marks and bruises on her skin.\r\rA sudden crack startles ' + SlaveName + ' as a whip hits '); if (!DocksSlavePens.CheckBitFlag(30)) { AddText('Sareth'); } else { AddText('the fallen girl'); } AddText('. ' + SlaveName + ' looks and sees a horrible, skeletal creature holding a cruel whip, who whips her again. She gets up and they move on pulling the cart, sweat glistening on their skin. As they move away ' + ServantName + ' whisper that they also have uncomfortably large plugs in their asses...\r\r'); if (SlaveGirl.EvilMineStart() != true) { AddText(SlaveName + ' is desperate to help but realises she cannot do anything here, especially against the living dead. The living dead have a fearsome, terrible reputation for huge strength (and other disgusting things).\r\rShe knows she will need to ask you for help but it is possible to seek other assistance.\r\rThey withdraw and both can see other moving shapes deep in the mine...'); } return undefined; case 4101: case 4102: case 4103: if (BountyHunterFlag > 0) { EvilMineFlag = 2; SMCurrentAttack += 35; SMCurrentDefence += 15; ShowMovie(PeopleBountyHunter, true, 0, 2); AddText(SlaveName + ' thinks of looking for the beautiful bounty hunter, Irina, and asks after her. Quickly she finds Irina relaxing in a bar and explains. Irina looks worried but says she will help '); if (BountyHunterFlag > 3) { AddText('as ' + SlaveName + ' is a friend.'); } else { AddText('but the dead are dangerous and asks a fee from her Slave Maker of 300GP, or whatever can be afforded.'); Money(-300, false, true); } AddText('\r\rIrina quickly gets some things and they run to the ruins...'); } else { AddText(SlaveName + ' looks around the docks in general. She has hears of some guards and some bounty hunters that have been seen there, but she finds no-one that will help.\r\rShe runs back to the ruins as fast as she can...'); } NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4104: AddText(SlaveName + ' looks around the farm to find some farm-hands or hunters but finds no-one.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4105: AddText(SlaveName + ' looks around the forest to find some woodsmen or hunters but finds no-one.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4106: EvilMineFlag = 5; if (Corruption < 50) { SMCurrentDefence += 40; } AddText(SlaveName + ' runs to the lake, the pure waters of the lake are rumoured to ward against many forms of evil. She collects a bottle and liberally washes herself.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4107: SetText(SlaveName + ' runs to the Palace hoping to find a guard or military officer or a knight. She starts asking around and notices a few shocked looks.\r\rA couple of palace guards step up to her and escort her out of the Palace. They inform her the Chancellor has ordered that she is not allowed access to the Palace anymore!\r\rShocked she runs back to the ruins as fast as she can...'); Palace.SetAccessible(false); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4108: AddText(SlaveName + ' looks around the town center for someone to help but she has no luck in the crowd of people.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4109: ShowMovie(PeopleThug, false, 0); EvilMineFlag = 3; SMCurrentDefence += 5; SMCurrentAttack += 10; Money(-50); AddText(SlaveName + ' runs to the slums, and hires a couple of thugs to help, she doubts they will be much help.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4110: AddText(SlaveName + ' runs to the drug dealer, maybe he has a drug or potion to help. He says plainly that he does not sell things like that.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4111: TakeAWalkMenu._visible = false; Backgrounds.ShowBath(1); ShowMovie(PeopleMedium, true, 1); SetText(SlaveName + ' runs to the seer, hoping she has some arcane knowledge of the living dead. The seer say she does not, but knows a medium who can and they walk to bath.\r\rThe seer introduces her to Misana an oddly dressed woman, ropes tied over her clothes in a suggestive way. She looks relaxed and has just finished her bath. ' + SlaveName + ' explains her need, and Misana states, as a matter of fact,\r\r'); PersonSpeak('Misana', 'I am intimately familiar with the dead and their ways. The dead do not belong in this world, and are bound to the basest part of their living life.\r\rI guarantee I can put the wretches to peace. My fee is 1000GP.', true); AddText('\r\rDoes ' + SlaveName + ' hire her?\r'); DoYesNoEventXY(4115); return undefined; case 4112: EvilMineFlag = 4; if (Corruption < 50 && Talent != 7) { SMCurrentDefence += 30; } AddText(SlaveName + ' runs to the salesman, maybe he has an item that can help. He says he has nothing for sale but gives her a small holy item, to hopefully protect her.\r\rShe runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4113: SetText(SlaveName + ' runs to the slave market, maybe a guard or other slave maker will help. At the entrance a guard forbids her entry, she is only an unaccompanied slave.\r\rFrustrated, she runs back to the ruins as fast as she can...'); NumEvent = 4120; NextVisit._visible = false; NextEvent._visible = true; return undefined; case 4120: HidePeople(); HideImages(); HideBackgrounds(); TakeAWalkMenu.Ruins._visible = true; Backgrounds.ShowCave(1); AddText(ServantName + ' runs in and breathlessly explains to you about the mine in the ruins, and about ' + SlaveName + '\'s determination to rescue the girls held there. After some thought you agree that something should be done. You get '); switch (WeaponType) { case 1: AddText('your Sword'); break; case 2: AddText('your Bow'); break; case 3: AddText('your Whip'); break; case 4: AddText('your Hammer'); break; default: AddText('some gear'); } AddText(' and go as fast as possible to the mine in the ruins.\r\r'); AddText('You arrive in the afternoon, seeing no sign of patrols or other people. You survey the mine and a little while later ' + SlaveName + ' arrives '); switch (EvilMineFlag) { case 2: AddText('with the beautiful bounty hunter Irina. She promises to fight by your side and she carries a large weapon.'); break; case 3: AddText('with a couple of thugs, looking tough but maybe a little scared when the living dead are mentioned.'); break; case 4: AddText('and offers you a holy symbol the help protect you. '); if (Corruption < 50) { if (SMFaith != 1) { AddText('You apologise but it is not of your gods and refused to wear it.'); } else { AddText(' You happily put it on.'); } } else { AddText(' You look at it and refuse to wear it.'); } break; case 5: AddText('and offers some of the pure waters of the holy lake.'); if (Corruption < 50) { AddText(' You wash ritually in the water to purify yourself. hoping it will protect against the evil of the mine.'); } else { AddText(' You look at it and tell her to use the water herself.'); } break; case 6: AddText('with the medium Misana. She smiles a tells you she will put them to rest.'); } AddText('\r\rYou order ' + SlaveName + ' to stay at the rear and ask ' + ServantName + ' to guard her. As a group you advance to the cave.\r\rYou see no movement at near or in the mine and the wagon is long gone. You can hear muted noises from deep inside.\r\rYou enter the mine tunnel...'); NumEvent = 4121; return undefined; case 4121: WalkRuinedTemple.gotoAndStop(2); WalkRuinedTemple._visible = true; StartMoaning(1); AddText('You pass along tunnels, mostly long, long disused, partially filled with rubble and dust. A few areas show some signs of crude working, and there are footprints everywhere. Your only guide is the low sounds in the distance, so you follow the sound, until you reach a dimly lit room and see a horrible, disgusting sight.\r\rA band of the living dead, zombies, are swarming over the girls ' + SlaveName + ' and ' + ServantName + ' saw earlier. Some memory of their life must remain in their decayed flesh and they are trying to satisfy their lust on the girls. Some of the creatures are too far gone, dust is the only thing that remains of their genitals. Others are fresher and you can see one is forcing a girl to give him a blowjob. Another is behind, fucking her crudely. The girl is dirty, bruised but seems oddly enthusiastic, almost enjoying her fucking.'); AddText('\r\rThe other girl'); if (!DocksSlavePens.CheckBitFlag(30)) { AddText(', Sareth,'); } AddText(' is being roughly fucked by several zombies, decayed but hard cocks pounding her pussy and ass. She is crying out in pain and horror, muffled by another cock in her mouth. As you watch the one in her mouth pulls out and spews a disgusting liquid over her face.\r\r'); if (EvilMineFlag == 6) { AddText('Misana tells you to wait, she will deal with them...'); NumEvent = 4122; } else { AddText('Horrified, you'); switch (EvilMineFlag) { case 2: HideAssistant(); ShowMovie(PeopleBountyHunter, false, 2, 1); AddText(' and Irina'); break; case 3: ShowMovie(PeopleThug, false, 0); AddText(', followed by the thugs,'); } AddText(' attack...'); SMHealth = SMConstitution; NumEvent = 3000; } return undefined; } switch (eventno) { case 4122: case 4130: if (eventno == 4122) { WalkRuinedTemple._visible = false; Backgrounds.ShowCave(1); if (SoundsOn) { Sounds.SoundWhipCrack.gotoAndPlay(2); } Backgrounds.ShowTunnel(9); ShowMovie(PeopleMedium, true, 4); StopSounds(); AddText('Misana advances, she turns a smiles, and the ropes binding her body writhe and ripple. They erupt and whip, striking all the zombies. The zombies collapse, unmoving, motionless dead bodies once again.\r\r'); AddText('You advance and pull the motionless zombies from the girls. One girl looks distressed and bewildered, after a bit you find out she has been captive here for a long time. She is unsure how long, maybe years, and had come to enjoy in some way the fucking, beating and harsh treatment.\r\rThe other girl'); } else { AddText('The last zombie has fallen. ' + SlaveName + ' runs up to the girls. One girl looks distressed and bewildered, after a bit you find out she has been captive here for a long time. She is unsure how long, maybe years, and had come to enjoy in some way the fucking, beating and harsh treatment.\r\rThe other girl'); } if (!DocksSlavePens.CheckBitFlag(30)) { AddText(', Sareth,'); } AddText(' is newly arrived and is crying and thanking '); if (!DocksSlavePens.CheckBitFlag(30)) { AddText(SlaveName); } else { AddText('you'); } AddText(' for rescuing her from the pain and forced pleasure of the harnesses and dildos and their cocks.\r\r'); if (CombatDifficulty != -1) { VibratorPantiesOK = 1; BitGagOK = 1; HarnessOK = 1; PonygirlAware = 1; AddText('You find in the room two sets of harnesses, two bit-gags, two pony-tails and two odd versions of dildo panties/vibrator panties. You take all these items, but when you examine the pony-tails you see that are cruel devices with barbs designed to hurt the wearer. Wisely you abandon these devices of pain'); if (Talent == 5) { AddText(', there are plenty of ways to hurt someone and not cause so much injury'); } _root.AddText('.'); } AddText('\r\rSometime later you all return home, including the rescued girls. You decide eventually to give the girls their freedom if they want.\r\rOne girl'); if (!DocksSlavePens.CheckBitFlag(30)) { AddText(', Sareth,'); } AddText(' joyously thanks you promising to return to her distant home as soon as she can.'); if (DocksSlavePens.CheckBitFlag(31)) { AddText(' ' + SlaveName + ' gives Sareth a teddy bear, saying she is returning it, her friend from the Slave Pens held it. Sareth starts crying, happy, joyous tears.'); } else { if (!DocksSlavePens.CheckBitFlag(30) && TotalTeddyBear > 0) { AddText(' ' + SlaveName + ' gives Sareth a teddy bear, saying she is sorry she could not give her one before. Sareth starts crying, happy, joyous tears.'); } } AddText('\r\rThe girl who had been long captive, is unsure, and asks to remain a slave. She does not directly say but you know she wants to be whipped, beaten, fucked. '); if (Talent == 5) { AddText('You promise her all the pain and pleasure you can enjoy and she <i>might</i> tolerate. The girl looks a little frightened by also happy.'); } else { AddText('You promise to locate an appropriate Master or Mistress for her.'); } AddText('\r\rLater ' + SlaveName + ' thanks you for saving the girls, blushing as she says so.'); Points(0, 2, 0, 0, 0, 1, 0, 0, 2, 0, 0, 2, 2, 1, 3, 0, 10, 5, 5, 0); EvilMineFlag = 0; RuinedTemple.SetBitFlag(31); UpdateEquipment(); if (Talent != 4 && Talent != 7 && Talent != 10) { RuinedTemple.SetAccessible(false); TakeAWalkMenu.Ruins._visible = false; } NumEvent = 9999; NextEvent._visible = true; return undefined; case 4131: HideBackgrounds(); HideImages(); Backgrounds.ShowCave(1); ShowMovie(OnTopOverlay, true, 0); if (tempstr != undefined) { AddText(tempstr); } else { if (Difficulty > -1) { AddText('You pass out from the pain...'); } else { AddText('You collapse to the ground filled with pain.'); } } var v3 = '\r\rYou awaken some time later outside the cave and see ' + SlaveName; switch (EvilMineFlag) { case 2: if (Difficulty > -1) { v3 = v3 + ' and Irina. ' + SlaveName + ' tells you that they were almost overwhelmed when you fell and had to run. Once Irina had got ' + SlaveName + ' to safety she returned back and found you, and freed you from the zombies, dragging you free.'; } else { v3 = v3 + ' and Irina. ' + SlaveName + ' tells you that Irina pulled you free of the zombies when you fell and saw there was no hope of winning.'; } ShowMovie(PeopleBountyHunter, false, 2, 1); break; case 3: ShowMovie(PeopleThug, false, 0); if (Difficulty > -1) { v3 = v3 + ' and one of the thugs. ' + SlaveName + ' tells you that they were almost overwhelmed when you fell and had to run. Once the thug had got ' + SlaveName + ' to safety he returned back and found you, and freed you from the zombies, dragging you free.'; } v3 += ' and one of the thugs, the other fled in terror at the start of the fight. She tells you she pulled you free while thug held off the zombies briefly and they ran.'; break; default: if (Difficulty > -1) { v3 = v3 + ' and ' + ServantName + ' and they tell you that they were almost overwhelmed when you fell and had to run. Once ' + ServantName + ' had got ' + SlaveName + ' to safety she returned back and found you, and freed you from the zombies, dragging you free.'; } else { v3 = v3 + ' and ' + ServantName + ' and they tell you they were able to pull you free once you fell. They carried you out of the cave.'; } } v3 += '\r\rThe last they saw the zombies were dragging the girls deeper into the mine. You are determined to return the following day to try again.'; EvilMineFlag = -1; NextEvent._visible = true; Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 8, -5, 0, 0); StartFadeImage(50, OnTopOverlay, v3); NumEvent = 9999; break; case 4132: HideBackgrounds(); HideImages(); Backgrounds.ShowCave(1); SetText('You decide you cannot win and tell the others to run, you bring up the rear holding the zombies briefly off and the run out of the mine.'); AddText('\r\rThe last you saw the zombies were dragging the girls deeper into the mine. You are determined to return the following day to try again.'); EvilMineFlag = -1; Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 8, -5, 0, 0); NumEvent = 9999; NextEvent._visible = true; break; case 4133: HideBackgrounds(); HideImages(); ShowOverlay(0); AddText('You collapse to the ground filled with pain.'); var v3 = '\r\rYou awaken some time later filled with pain '; NumEvent = 4134; if (Gender == 1) { StartFucking(3); v3 += 'and feel bite marks and claw marks all over. You see one of the captive girls push a zombie off of you and cover your body with hers. She says something about distracting them, pulling zombie hands from you. You see her grab a zombie cock and put it in her mouth. Despite the pain, your cock starts to stiffen, then you feel to grab it and stroke it to full hardness. She straddles you and mounts your cock slowly fucking you and sucking the zombie.\r\rAbruptly she is pulled off you, you fear they are after you, but she is just flipped over and a zombie thrusts into her pussy. You feel a hand, hers, a zombies, grab your cock and shove it into her ass. The zombies fuck her on top of you, their cocks in her mouth and pussy, and you involuntarily fuck her ass. After a while, you feel your orgasm building, and the feel her shudder and orgasm. Moments later you peak and cum into her ass.\r\r'; if (BadEndsOn) { NumEvent = 9800; v3 += 'You feel a huge pain as you head is smashed and you breathe your last.\r\rSometime later your corpse rises to join the ranks of the guardians...'; } else { v3 += 'You feel a huge pain as something hits your head...'; } StartChangeImage(2000, this.WalkRuinedTemple, 4, v3, undefined, NextEvent); } else { StartFucking(1); v3 += 'and the presence of a cold body on you. You see a zombie lying on you and the feel a cold, unnaturally hard cock enter your pussy. '; if (Gender == 3) { v3 += 'Your cock is pressed hard between you and the zombie, and to your embarrassment is hard and erect. '; } v3 += 'The zombie is disgusting and foul smelling, but fucks hard and fast, making little noise. Despite your pain and the situation, long before the zombie '; if (Gender == 3) { v3 += 'you erupt and cum, spurting cum between your bodies'; } else { v3 += 'you orgasm, a long shuddering climax'; } v3 += '. The zombie pays no attention and continues fucking, eventually thrusting deep and you feel a cold eruption of cum in your womb.\r\rThe zombie stands and you move to get free and another presses you down with inhuman strength, impaling you with his cold cock...\r\rZombie after zombie fuck you, filling you over and over again with their cold cum. You have orgasm after unwilling orgasm until finally the exhaustion and your injuries become too much...'; StartChangeImage(2000, this.WalkRuinedTemple, 3, v3, undefined, NextEvent); } NextEvent._visible = false; break; case 4134: NextEvent._visible = false; SetText(''); if (BadEndsOn) { DoEvilMineEvent(4135); } else { DoEvilMineEvent(4131); } break; case 4135: HideBackgrounds(); HideImages(); ShowOverlay(0); AddText('You collapse to the ground filled with pain.'); var v3 = '\r\rYou awaken some time later filled with pain '; NumEvent = 9800; v3 += 'and you see you are in some unknown chamber, the captive girls are near, freed of their bindings, but look confused, drugged most likely.\r\rYou feel a large thing plugging you ass, very large and deeply in. Your pussy is filled with an even larger dildo that seems to be softly humming or vibrating.'; if (Gender == 3) { v3 += ' Your cock is very tightly bound in some way, you look and see a cage surrounding it preventing anyone touching it and there is a tight ring around it\'s base.'; } v3 += '\r\rYou try to call out and realise your mouth is gagged with a bit gag. You struggle trying to get free and as you move you feel the dildo in your pussy moving, sliding in and out, in time with your movement. The other girls watch, a bit dazed, and you see they are covered in dirt and bruises. One of them says \'Welcome to your new home, don\'t worry, they will be here to fuck us soon\''; StartChangeImage(2000, this.WalkRuinedTemple, 5, v3, undefined, NextEvent); NextEvent._visible = false; break; case 4199: HideBackgrounds(); HideImages(); NumEvent = 0; NextEvent._visible = false; NextVisit._visible = false; SetText(ServantName + ' says ' + ServantHeShe + ' will ask you to help, meanwhile ' + SlaveName + ' will try to get other help.\r\rWhere will she go?'); TakeAWalkMenu._visible = true; TakeAWalkMenu.Ruins._visible = false; } } function IsDressAttribute(dress, att) { if (dress == undefined) { dress = DressWorn; } if (dress < 0) { return false; } if (DressAttributes[dress] == undefined) { return false; } return (DressAttributes[dress] & 1 << att) != 0; } function IsDressCourtly(dress) { if (dress == undefined) { dress = DressWorn; } if (dress < 0) { return false; } var v2 = DressWorn; DressWorn = dress; if (SlaveGirl.IsCourtDress() == true) { DressWorn = v2; return true; } DressWorn = v2; if (DressAttributes[dress] == undefined) { return false; } return (DressAttributes[dress] & 2) != 0; } function IsDressEasy(dress) { return IsDressAttribute(dress, 0); } function IsDressSwimsuit(dress) { return IsDressAttribute(dress, 2); } function IsDressSleazyBar(dress) { if (dress == undefined) { dress = DressWorn; } if (dress < 0) { return false; } var v2 = DressWorn; DressWorn = dress; if (SlaveGirl.IsSleazyBarDress() == true) { DressWorn = v2; return true; } DressWorn = v2; if (DressAttributes[dress] == undefined) { return false; } return (DressAttributes[dress] & 8) != 0; } function IsDressSlutty(dress) { return IsDressAttribute(dress, 4); } function IsDressDancing(dress) { return IsDressAttribute(dress, 5); } function IsDressMaid(dress) { return IsDressAttribute(dress, 6); } function IsDressLingerie(dress) { return IsDressAttribute(dress, 7); } function SetDressAttribute(dress, att) { if (dress == undefined) { dress = DressWorn; } if (dress < 0) { return undefined; } if (DressAttributes[dress] == undefined) { DressAttributes[dress] = 0; } DressAttributes[dress] |= 1 << att; } function SetDressCourtly(dress) { SetDressAttribute(dress, 1); } function SetDressEasy(dress) { SetDressAttribute(dress, 0); } function SetDressSwimsuit(dress) { SetDressAttribute(dress, 2); } function SetDressSleazyBar(dress) { SetDressAttribute(dress, 3); } function SetDressSlutty(dress) { SetDressAttribute(dress, 4); } function SetDressDancing(dress) { SetDressAttribute(dress, 5); } function SetDressMaid(dress) { SetDressAttribute(dress, 6); } function SetDressLingerie(dress) { SetDressAttribute(dress, 7); } function SetDressDetails(dress, short, desc, forsale, price) { var v4 = (forsale != false) ? 1 : 0; switch (dress) { case 0: if (desc != undefined) { RobePlainDescription = desc; } else { RobePlainDescription = 'Plain Dress\r\rNo effects'; } if (short != undefined) { SetEquipmentButtonState(0, false, true, short); } else { SetEquipmentButtonState(0, false, true, 'Plain Dress'); } break; case 1: SellDress1 = v4; if (desc != undefined) { Robe1Description = desc; } else { Robe1Description = 'Refinement + 5'; } if (short != undefined) { SetEquipmentButtonState(-1, false, true, short); TailorMenu.Dress1.text = short; } if (price != undefined) { Robe1Price = price; } else { Robe1Price = 100; } break; case 2: SellDress2 = v4; if (desc != undefined) { Robe2Description = desc; } else { Robe2Description = 'Charisma + 10'; } if (short != undefined) { SetEquipmentButtonState(-2, false, true, short); TailorMenu.Dress2.text = short; } if (price != undefined) { Robe2Price = price; } else { Robe2Price = 150; } break; case 3: SellDress3 = v4; if (desc != undefined) { Robe3Description = desc; } else { Robe3Description = 'Refinement + 10\rSensibility + 5'; } if (short != undefined) { SetEquipmentButtonState(-3, false, true, short); TailorMenu.Dress3.text = short; } if (price != undefined) { Robe3Price = price; } else { Robe3Price = 300; } break; case 4: SellDress4 = v4; if (desc != undefined) { Robe4Description = desc; } else { Robe4Description = 'Refinement + 10\rCharisma + 10\rSensibility + 10'; } if (short != undefined) { SetEquipmentButtonState(-4, false, true, short); TailorMenu.Dress4.text = short; } if (price != undefined) { Robe4Price = price; } else { Robe4Price = 500; } break; case 5: SellDress5 = v4; if (desc != undefined) { Robe5Description = desc; } else { Robe5Description = ''; } if (short != undefined) { SetEquipmentButtonState(-5, false, true, short); TailorMenu.Dress5.text = short; } if (price != undefined) { Robe5Price = price; } else { Robe5Price = 700; } break; case 6: SellDress6 = v4; if (desc != undefined) { Robe6Description = desc; } else { Robe6Description = ''; } if (short != undefined) { SetEquipmentButtonState(-6, false, true, short); TailorMenu.Dress6.text = short; } if (price != undefined) { Robe6Price = price; } else { Robe6Price = 4000; } } } function RemoveDress() { HideStatChangeIcons(); HideRobes(); if (IsDressSlutty()) { Slutiness -= 1; } SlaveGirl.RemoveDress(); DressWorn = 0; } function WearDress(dress) { HideStatChangeIcons(); DressWorn = dress; if (IsDressSlutty()) { Slutiness += 1; } SlaveGirl.WearDress(); UpdateEquipment(); UpdateSlave(); } function PutDressOn(dress) { if (DressWorn < 0) { var v1 = LargerTextField.htmlText; ServantSpeak('Today, you have ordered her to be naked so she cannot wear a dress.'); ShowLargerText(); LargerTextField.htmlText = v1; Bloop(); } else { RemoveDress(); WearDress(dress); ShowRobes(); } } function TakeDressOff() { RemoveDress(); WearDress(0); ShowRobes(); } function ChoiceNaked(range, offset) { if (NakedChoice != 0) { return NakedChoice; } var v1 = range; if (v1 != 0) { v1 = int(Math.random() * v1); } v1 += offset; NakedChoice = v1; return v1; } function PositionHalo(xpos, ypos, rot, wid, hei) { DressHalo._visible = false; if (HaloWorn == 1 && SMFaith != 2) { DressHaloCentered._visible = true; PositionMovie(DressHaloCentered, 230, 43, 0, 163, 54); } PositionMovie(DressHaloCentered, xpos, ypos, rot, wid, hei); } function PositionGag(gframe, xpos, ypos, rot, wid, hei) { DressBitgag.gotoAndStop(gframe); PositionMovie(DressBitgag, xpos, ypos, rot, wid, hei); } function PositionLeash(gframe, xpos, ypos, rot, wid, hei) { DressLeash.gotoAndStop(gframe); PositionMovie(DressLeash, xpos, ypos, rot, wid, hei); } function PositionTail(xpos, ypos, rot, wid, hei) { if (PlugInserted > 0) { if (Catgirl) { DressTail.gotoAndStop(2); } else { if (PonyTailWorn == 1) { DressTail.gotoAndStop(1); } else { return undefined; } } DressTail._visible = true; PositionMovie(DressTail, xpos, ypos, rot, wid, hei); } } function PositionNymphsTiara(xpos, ypos, rot, wid, hei) { if (NymphsTiaraWorn == 1) { DressNymphsTiara._visible = true; PositionMovie(DressNymphsTiara, xpos, ypos, rot, wid, hei); } } function PositionHaloSimple(xpos, ypos, rot, wid, hei) { DressHalo._visible = false; if (HaloWorn == 1 && SMFaith != 2) { DressHaloCentered._visible = true; PositionMovieSimple(DressHaloCentered, 230, 43, 0, 163, 54); } PositionMovieSimple(DressHaloCentered, xpos, ypos, rot, wid, hei); } function PositionGagSimple(gframe, xpos, ypos, rot, wid, hei) { DressBitgag.gotoAndStop(gframe); PositionMovieSimple(DressBitgag, xpos, ypos, rot, wid, hei); } function PositionLeashSimple(gframe, xpos, ypos, rot, wid, hei) { DressLeash.gotoAndStop(gframe); PositionMovieSimple(DressLeash, xpos, ypos, rot, wid, hei); } function PositionTailSimple(xpos, ypos, rot, wid, hei) { if (PlugInserted > 0) { if (Catgirl) { DressTail.gotoAndStop(2); } else { if (PonyTailWorn == 1) { DressTail.gotoAndStop(1); } else { return undefined; } } DressTail._visible = true; PositionMovieSimple(DressTail, xpos, ypos, rot, wid, hei); } } function PositionNymphsTiaraSimple(xpos, ypos, rot, wid, hei) { if (NymphsTiaraWorn == 1) { DressNymphsTiara._visible = true; PositionMovieSimple(DressNymphsTiara, xpos, ypos, rot, wid, hei); } } function ShowRobes() { if (HaloWorn == 1 && SMFaith != 2) { DressHalo._visible = true; } else { DressHalo._visible = false; } if (BitGagWorn == 1) { DressBitgag._visible = true; } else { DressBitgag._visible = false; } if (LeashWorn == 1) { DressLeash._visible = true; } else { DressLeash._visible = false; } DressTail._visible = false; DressNymphsTiara._visible = false; DressSky.gotoAndStop(1); PositionMovie(DressHalo, 291.5, 44, 0, 163, 54); DressBitgag.gotoAndStop(1); PositionMovie(DressBitgag, 240, 42.5, 0, 30, 5); DressLeash.gotoAndStop(2); PositionMovie(DressLeash, 326, 20, 0); DressLeash.gotoAndStop(1); PositionMovie(DressLeash, 326, 20, 0, 82, 120); PositionMovie(DressNypmhsTiara, 223, 25, 0, 40, 40); PositionMovie(DressTail, 232, 198.5, 0, 140, 85); if (Naked) { SlaveGirl.ShowNaked(); } else { SlaveGirl.ShowDress(); } } function HideRobes() { DressLeash._visible = false; DressLeashCentered._visible = false; DressHalo._visible = false; DressHaloCentered._visible = false; DressBitgag._visible = false; DressTail._visible = false; DressNymphsTiara._visible = false; DressBeach._visible = false; DressForest._visible = false; DressSky._visible = false; SlaveGirl.HideRobes(); } function UpdateEquipment() { HideYesNoButtons(); SetEquipmentButtonState(0, DressWorn == 0, true); SetEquipmentButtonState(-1, DressWorn == 1, Robe1OK == 1); SetEquipmentButtonState(-2, DressWorn == 2, Robe2OK == 1); SetEquipmentButtonState(-3, DressWorn == 3, Robe3OK == 1); SetEquipmentButtonState(-4, DressWorn == 4, Robe4OK == 1); SetEquipmentButtonState(-5, DressWorn == 5, Robe5OK == 1); SetEquipmentButtonState(-6, DressWorn == 6, Robe6OK == 1); TailorMenu.Dress1Tick._visible = SellDress1 == 1 && Robe1OK == 1; TailorMenu.Dress2Tick._visible = SellDress2 == 1 && Robe2OK == 1; TailorMenu.Dress3Tick._visible = SellDress3 == 1 && Robe3OK == 1; TailorMenu.Dress4Tick._visible = SellDress4 == 1 && Robe4OK == 1; TailorMenu.Dress5Tick._visible = SellDress5 == 1 && Robe5OK == 1; TailorMenu.Dress6Tick._visible = SellDress6 == 1 && Robe6OK == 1; TailorMenu.LingerieTick._visible = SellLingerie == 1 && LingerieOK == 1; TailorMenu.BunnySuitTick._visible = SellBunnySuit == 1 && BunnySuitOK == 1; TailorMenu.MaidUniformTick._visible = SellMaidUniform == 1 && MaidUniformOK == 1; TailorMenu.SwimsuitTick._visible = SellSwimsuit == 1 && SwimsuitOK == 1; SetEquipmentButtonState(4, AngelsTearWorn == 1, AngelsTearOK == 1); SetEquipmentButtonState(16, FaeriesRingWorn == 1, FaeriesRingOK == 1); SetEquipmentButtonState(12, DragonRingWorn == 1, DragonRingOK == 1); SetEquipmentButtonState(13, ApronWorn == 1, ApronOK == 1); SetEquipmentButtonState(3, DemonicPendantWorn == 1, DemonicPendantOK == 1); SetEquipmentButtonState(7, LeashWorn == 1, LeashOK == 1); SetEquipmentButtonState(6, VibratorPantiesWorn == 1, VibratorPantiesOK == 1); SetEquipmentButtonState(2, HaloWorn == 1, HaloOK == 1); SetEquipmentButtonState(10, HandcuffBraceletWorn == 1, HandcuffBraceletOK == 1); SetEquipmentButtonState(5, DemonicBraWorn == 1, DemonicBraOK == 1); SetEquipmentButtonState(8, NymphsTiaraWorn == 1, NymphsTiaraOK == 1); SetEquipmentButtonState(9, SpikedBraceletWorn == 1, SpikedBraceletOK == 1); SetEquipmentButtonState(15, StrapOnWorn == 1, StrapOnOK == 1); SetEquipmentButtonState(11, HarnessWorn == 1, HarnessOK == 1); SetEquipmentButtonState(14, BitGagWorn == 1, BitGagOK == 1); SetEquipmentButtonState(1, PonyTailWorn == 1, PonyTailOK == 1); SetEquipmentButtonState(18, NippleRingsWorn == 1, NippleRingsOK == 1); SetEquipmentButtonState(17, NippleChainWorn == 1, NippleChainOK == 1); if (DildoOK == 0 && ImprovedDildoOK == 0) { ShopMenu.BtnDildo._visible = true; SetActButtonState(PlanningNightSex.DildoButton, false, false); } else { ShopMenu.BtnDildo._visible = false; SetActButtonState(PlanningNightSex.DildoButton, false, true); } SalonMenu.NippleRingsBought._visible = NippleRingsOK == 1; StablesMenu.NippleChainBought._visible = NippleChainOK == 1; StablesMenu.NippleChainNA._visible = PiercingsType == 0; SalonMenu.NippleRingsNA._visible = PiercingsType == 0; SalonMenu.VanityCaseBought._visible = VanityCaseOK == 1; SalonMenu.PiercingsBought._visible = PiercingsType > 1; ActionsMenu.StablesButton._visible = PonyTailOK == 1; StablesMenu.PonyBootsBought._visible = PonyBootsOK == 1; StablesMenu.PonyCartBought._visible = PonyCartOK == 1; SetActButtonState(PlanningNightSex.BondageButton, false, RopesOK == 1); ShopMenu.BtnBondage._visible = BDSMOn && RopesOK == 0; ShopMenu.BtnPlug._visible = PlugOK == 0; ItemSalesman.HarnessButton._visible = PonygirlAware == 1; ItemSalesman.HarnessTick._visible = PonygirlAware == 1 && HarnessOK == 1; ItemSalesman.HaloTick._visible = SMFaith != 2 && HaloOK == 1; ItemSalesman.OroborusTick._visible = SMFaith == 2 && HaloOK == 1; ItemSalesman.LeashTick._visible = LeashOK == 1; ItemSalesman.SpikedBraceletTick._visible = SpikedBraceletOK == 1; ItemSalesman.HandcuffBraceletTick._visible = HandcuffBraceletOK == 1; ItemSalesman.NymphsTiaraTick._visible = NymphsTiaraOK == 1; } function DoCounted(count, desc) { if (count == 0) { return undefined; } AddText(' ' + count + ' ' + desc); if (count > 1) { AddText('s'); } AddText('\r\r'); } function ShowOtherEquipment() { ShowLargerText(); AddText('<b>Other Items</b>\r\r'); if (DildoOK == 1 && ImprovedDildoOK == 0) { AddText(' Plain Dildo\r\r'); } if (ImprovedDildoOK == 1) { AddText(' Cock Dildo\r\r'); } if (PlugOK == 1) { AddText(' Anal Plug\r\r'); } if (PiercingsType > 0) { if (PiercingsType > 1) { AddText(' Full Piercing\r\r'); } else { AddText(' Nipple/Clit Piercing\r\r'); } } if (VanityCaseOK == 1) { AddText(' Vanity Case\r\r'); } if (BDSMOn && RopesOK == 1) { AddText(' Basic Ropes\r\r'); } if (SilkenRopesOK == 1) { AddText(' Silken Ropes\r\r'); } switch (ArmourType) { case 1: AddText(' Leather Armour\r\r'); break; case 2: AddText(' Chain Mail\r\r'); break; case 3: AddText(' Scale Mail\r\r'); break; case 4: AddText(' Plate Armour\r\r'); } switch (WeaponType) { case 1: AddText(' Sword\r\r'); break; case 2: AddText(' Bow\r\r'); break; case 3: AddText(' Whip\r\r'); break; case 4: AddText(' Hammer\r\r'); } if (BunnySuitOK == 1) { AddText(' Bunny Suit\r\r'); } if (LingerieOK == 1) { AddText(' Lingerie\r\r'); } if (MaidUniformOK == 1) { AddText(' Maid Uniform\r\r'); } if (SwimsuitOK == 1) { AddText(' Swimsuit\r\r'); } DoCounted(TotalTeddyBear, 'Teddy Bear'); DoCounted(TotalGames, 'Game'); DoCounted(TotalDoll, 'Doll'); DoCounted(TotalBooks, 'Science/General Book'); DoCounted(TotalPoetry, 'Poetry Book'); DoCounted(TotalJewelry, 'Jewelry Item'); if (PonyBootsOK == 1) { AddText(' Ponygirl Boots\r\r'); } if (PonyCartOK == 1) { AddText(' Ponygirl Cart\r\r'); } if (TrophyOK == 1) { AddText(' Grand Trophy\r\r'); } if (SmallTrophyOK == 1) { AddText(' Champion Trophy\r\r'); } SlaveGirl.ShowOtherEquipment(); } function DoEquipment() { SetText(''); HideMainButtons(); Quitter._visible = true; UpdateEquipment(); HideYesNoButtons(); EquipmentMenu._visible = true; ActionsMenu._visible = false; Beep(); ShowOtherEquipment(); } function GetEquipmentMovieClip(item) { var v1 = MovieClip(item); if (v1._x == undefined) { switch (item) { return v1; case -6: v1 = EquipmentMenu.Robe6On; return v1; case -5: v1 = EquipmentMenu.Robe5On; return v1; case -4: v1 = EquipmentMenu.Robe4On; return v1; case -3: v1 = EquipmentMenu.Robe3On; return v1; case -2: v1 = EquipmentMenu.Robe2On; return v1; case -1: v1 = EquipmentMenu.Robe1On; return v1; case 0: v1 = EquipmentMenu.RobePlainOn; return v1; case 1: v1 = EquipmentMenu.PonyTail; return v1; case 2: v1 = EquipmentMenu.Halo; return v1; case 3: v1 = EquipmentMenu.DemonicPendant; return v1; case 4: v1 = EquipmentMenu.AngelsTear; return v1; case 5: v1 = EquipmentMenu.Bra; return v1; case 6: v1 = EquipmentMenu.VibratorPanties; return v1; case 7: v1 = EquipmentMenu.Leash; return v1; case 8: v1 = EquipmentMenu.NymphsTiara; return v1; case 9: v1 = EquipmentMenu.SpikedBracelet; return v1; case 10: v1 = EquipmentMenu.HandcuffBracelet; return v1; case 11: v1 = EquipmentMenu.Harness; return v1; case 12: v1 = EquipmentMenu.DragonRing; return v1; case 13: v1 = EquipmentMenu.Apron; return v1; case 14: v1 = EquipmentMenu.BitGag; return v1; case 15: v1 = EquipmentMenu.StrapOn; return v1; case 16: v1 = EquipmentMenu.FaeriesRing; return v1; case 17: v1 = EquipmentMenu.NippleChain; return v1; case 18: v1 = EquipmentMenu.NippleRings; return v1; } } return v1; } function EquipmentButtonRemove() { if (this._parent.itemno < 1) { TakeDressOff(); } else { RemoveItem(this._parent.itemno); } } function EquipmentButtonWear() { if (this._parent.itemno < 1) { PutDressOn(Math.abs(this._parent.itemno)); } else { WearItem(this._parent.itemno); } } function EquipmentButtonRollOver() { var v2 = this._parent.itemno; if (IsHints()) { if (v2 < 1) { switch (this._parent.itemno) { case -1: SetGeneralText(TailorMenu.Dress1.text + '\r\r' + Robe1Description); break; case -2: SetGeneralText(TailorMenu.Dress2.text + '\r\r' + Robe2Description); break; case -3: SetGeneralText(TailorMenu.Dress3.text + '\r\r' + Robe3Description); break; case -4: SetGeneralText(TailorMenu.Dress4.text + '\r\r' + Robe4Description); break; case -5: SetGeneralText(TailorMenu.Dress5.text + '\r\r' + Robe5Description); break; case -6: SetGeneralText(TailorMenu.Dress6.text + '\r\r' + Robe6Description); break; case 0: SetGeneralText(RobePlainDescription); } } else { ShowItemDescription(v2); } } if (v2 > 0) { if (v2 == 3 || v2 == 6) { ShowItem(v2, false, 1, -1); } else { var v3 = GetItemMovieClip(v2); v3._visible = true; } HideAssistant(); } } function EquipmentButtonRollOut() { HideItems(); ShowAssistant(); HideHints(true); } function SetEquipmentButtonState(item, worn, available, actlabel, shortcut) { var v1 = GetEquipmentMovieClip(item); if (actlabel != undefined) { v1.DressName.htmlText = actlabel; if (v1.DressName.bottomScroll > 1) { v1.DressName._y = 2; } else { v1.DressName._y = 8; } v1.itemno = item; if (ColoursOn) { if (Gender == 1) { SetMovieColour(v1, 0, 0, 30, 0, 1, 1, 1, 1); } else { if (Gender == 2) { SetMovieColour(v1, 15, 0, 30, 0, 1, 1, 1, 1); } else { SetMovieColour(v1, 0, 20, 0, 0, 1, 1, 1, 1); } } } v1.ItemOn.onPress = EquipmentButtonRemove; v1.ItemOff.onPress = EquipmentButtonWear; v1.ItemOn.onRollOver = EquipmentButtonRollOver; v1.ItemOff.onRollOver = EquipmentButtonRollOver; v1.ItemOn.onRollOut = EquipmentButtonRollOut; v1.ItemOff.onRollOut = EquipmentButtonRollOut; } if (available != undefined) { v1._visible = available; } if (worn != undefined) { v1.ItemOn._visible = worn; v1.ItemOff._visible = !worn; } if (shortcut != undefined) { v1.ShortcutLabel.htmlText = '<font color=\'#0000FF\'>' + shortcut + '<font color=\'#000000\'>'; } } function SetEquipmentLabel(item, actlabel) { SetEquipmentButtonState(item, undefined, undefined, actlabel); } function EquipmentShortcuts(key) { switch (key) { case 48: ChangeItem(0); return undefined; case 49: ChangeItem(-1); return undefined; case 50: ChangeItem(-2); return undefined; case 51: ChangeItem(-3); return undefined; case 52: ChangeItem(-4); return undefined; case 53: ChangeItem(-5); return undefined; case 54: ChangeItem(-6); return undefined; case 65: ChangeItem(13); return undefined; case 66: ChangeItem(5); return undefined; case 67: ChangeItem(17); return undefined; case 68: ChangeItem(12); return undefined; case 69: ChangeItem(18); return undefined; case 70: ChangeItem(16); return undefined; case 71: ChangeItem(14); return undefined; case 72: ChangeItem(2); return undefined; case 76: ChangeItem(7); return undefined; case 78: ChangeItem(8); return undefined; case 79: ChangeItem(15); return undefined; case 80: ChangeItem(3); return undefined; case 82: ChangeItem(11); return undefined; case 83: ChangeItem(9); return undefined; case 84: ChangeItem(4); return undefined; case 85: ChangeItem(10); return undefined; case 86: ChangeItem(6); return undefined; case 89: ChangeItem(1); return undefined; } } function DrinkPotion(potion, price, say) { if (SoundsOn) { Sounds.SoundGurgle.gotoAndPlay(2); } var v1 = ''; switch (potion) { case 0: v1 = 'Priapus Draft'; break; case 1: v1 = 'Uninhibitor potion'; break; case 2: v1 = 'Aphrodisiac'; break; case 3: v1 = 'Soothing Potion'; break; case 4: v1 = 'Energy Drink'; break; case 5: v1 = 'Dorei'; break; case 6: v1 = 'Zodai'; break; case 7: v1 = 'Gaman'; break; case 8: v1 = 'Biyaku'; break; case 9: v1 = 'Ishinai'; break; case 10: v1 = 'Lust Draft'; break; case 11: v1 = 'Odd Pill'; break; case 12: v1 = 'Nymph\'s Tears'; } if (PotionsUsed[potion] != -1) { PotionsUsed[potion] += 1; } if (SlaveGirl.DrinkPotion(potion, price, v1, say) != false) { if (say != '') { AddText(SlaveName + ' ' + say); } return true; } return false; } function GetItemMovieClip(item) { var v1 = MovieClip(item); if (v1._x == undefined) { switch (item) { return v1; case 1: v1 = ObjectPonyTail; return v1; case 2: v1 = (SMFaith == 2) ? ObjectOroborusCandle : ObjectHalo; return v1; case 3: v1 = ObjectDemonicPendant; return v1; case 4: v1 = (SMFaith == 2) ? ObjectChalice : ObjectAngelsTear; return v1; case 5: v1 = ObjectDemonicBra; return v1; case 6: v1 = ObjectVibratorPanties; return v1; case 7: v1 = ObjectLeash; return v1; case 8: v1 = ObjectTiara; return v1; case 9: v1 = ObjectSpikedBracelet; return v1; case 10: v1 = ObjectHandcuffBracelet; return v1; case 11: v1 = ObjectHarness; return v1; case 12: v1 = ObjectDragonRing; return v1; case 13: v1 = ObjectApron; return v1; case 14: v1 = ObjectBitGag; return v1; case 15: v1 = ObjectStrapOn; return v1; case 16: v1 = ObjectFaeriesRing; return v1; case 17: v1 = ObjectNippleChain; return v1; case 18: v1 = ObjectNippleRings; return v1; case 19: v1 = ObjectKey; return v1; case 20: v1 = ObjectTeddyBear; return v1; case 21: v1 = ObjectTrophy; return v1; case 22: v1 = ObjectScroll; return v1; } } return v1; } function GetItemNo(item) { var v2 = MovieClip(item); if (v2._x == undefined) { return Number(item); } var v1; switch (v2) { return v1; case ObjectPonyTail: v1 = 1; return v1; case ObjectOroborusCandle: v1 = 2; return v1; case ObjectHalo: v1 = 2; return v1; case ObjectDemonicPendant: v1 = 3; return v1; case ObjectChalice: v1 = 4; return v1; case ObjectAngelsTear: v1 = 4; return v1; case ObjectDemonicBra: v1 = 5; return v1; case ObjectVibratorPanties: v1 = 6; return v1; case ObjectLeash: v1 = 7; return v1; case ObjectTiara: v1 = 8; return v1; case ObjectSpikedBracelet: v1 = 9; return v1; case ObjectHandcuffBracelet: v1 = 10; return v1; case ObjectHarness: v1 = 11; return v1; case ObjectDragonRing: v1 = 12; return v1; case ObjectApron: v1 = 13; return v1; case ObjectBitGag: v1 = 14; return v1; case ObjectStrapOn: v1 = 15; return v1; case ObjectFaeriesRing: v1 = 16; return v1; case ObjectNippleChain: v1 = 17; return v1; case ObjectNippleRings: v1 = 18; return v1; case ObjectKey: v1 = 19; return v1; case ObjectTeddyBear: v1 = 20; return v1; case ObjectTrophy: v1 = 21; return v1; case ObjectScroll: v1 = 22; return v1; } return v1; } function HideItem(item, align) { if (align == undefined) { align = -9; } var v1 = GetItemMovieClip(item); if (SlaveGirl.HideItem(GetItemNo(v1)) == true) { return undefined; } ShowMovie(v1, false, align, 1); v1._visible = false; } function ShowItem(item, main, align, gframe) { var v1 = GetItemMovieClip(item); if (SlaveGirl.ShowItem(GetItemNo(v1), main, align, gframe) == true) { return undefined; } if (main == undefined) { main = false; } if (main == true) { if (align == 0 || align == 10) { ShowMovie(v1, main, (align == 0) ? 9 : 10, gframe); } else { if (gframe != undefined) { v1.gotoAndStop(gframe); } v1._width = 220; v1._height = 220; if (align == 4) { v1._x = 235; v1._y = 121; } else { v1._x = 120; v1._y = 55; } v1._visible = true; } } else { if (align == undefined) { align = 9; } ShowMovie(v1, false, align, gframe); } } function HideItems() { SlaveGirl.HideItems(); ObjectsLarge._visible = false; HideItem(ObjectVibratorPanties); HideItem(ObjectDemonicPendant); HideItem(ObjectFaeriesRing); HideItem(ObjectApron); HideItem(ObjectAngelsTear, -10); HideItem(ObjectDragonRing); HideItem(ObjectDemonicBra); HideItem(ObjectLeash); HideItem(ObjectHandcuffBracelet); HideItem(ObjectSpikedBracelet); HideItem(ObjectTiara); HideItem(ObjectHalo); HideItem(ObjectStrapOn); HideItem(ObjectBitGag, -10); HideItem(ObjectHarness); HideItem(ObjectNippleChain); HideItem(ObjectNippleRings); HideItem(ObjectPonyTail); HideItem(ObjectKey); HideItem(ObjectTeddyBear); HideItem(ObjectTrophy); HideItem(ObjectOroborusCandle); HideItem(ObjectChalice); HideItem(ObjectScroll); } function EquipItem(item) { if (SlaveGirl.EquipItem(item) != true) { HideStatChangeIcons(); switch (item) { case 1: if (PonyTailWorn != 1) { DifficultyBondage -= 5; PointsMod(0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0); } PonyTailWorn = 1; PlugInserted = 1; break; case 2: HaloWorn = 1; break; case 3: DemonicPendantWorn = 1; break; case 4: AngelsTearWorn = 1; break; case 5: if (DemonicBraWorn == 0) { DemonicBraWorn = 1; PointsMod(0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); DifficultyXXX -= 5; DifficultyBrothel -= 5; DifficultyTouch -= 5; DifficultyLick -= 5; DifficultyFuck -= 5; DifficultyBlowjob -= 5; DifficultyTitsFuck -= 5; DifficultyDildo -= 5; DifficultyLesbian -= 5; DifficultyBondage -= 5; DifficultyThreesome -= 5; DifficultyGangBang = 0; } break; case 6: if (VibratorPantiesWorn == 0) { VibratorPantiesWorn = 1; PointsMod(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); DifficultyDildo -= 2; MinLibido += 5; NumDaysWithoutFuck = 0; } break; case 7: if (LeashWorn == 0) { if (Loyalty >= 0) { Loyalty -= 1; } PointsMod(0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, -5, 0, 11, 0, 0, 0); LeashWorn = 1; } break; case 8: if (NymphsTiaraWorn == 0) { PointsMod(20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } NymphsTiaraWorn = 1; break; case 9: SpikedBraceletWorn = 1; break; case 10: HandcuffBraceletWorn = 1; break; case 11: if (HarnessWorn == 0) { DifficultyBondage -= 10; } HarnessWorn = 1; break; case 12: if (DragonRingWorn == 0) { PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0); } DragonRingWorn = 1; break; case 13: if (ApronWorn == 0) { PointsMod(0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0); } ApronWorn = 1; break; case 14: if (BitGagWorn == 0) { PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 5, 0, 0, -5); } BitGagWorn = 1; RulesTalk = 0; break; case 15: if (StrapOnWorn == 0) { PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0); } StrapOnWorn = 1; break; case 16: FaeriesRingWorn = 1; break; case 17: NippleChainWorn = 1; NippleRingsWorn = 0; break; case 18: NippleChainWorn = 0; NippleRingsWorn = 1; } UpdateEquipment(); UpdateSlave(); } } function WearItem(item) { Beep(); if (item == 1) { if (!TestObedience(DifficultyBondage)) { ServantSpeak('She refuses to wear it.'); ShowOtherEquipment(); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1); return undefined; } } if (SlaveGirl.WearItem(item) != false) { HideStatChangeIcons(); ShowItemDescription(item); switch (item) { case 2: StopHints(); if (SMFaith == 2) { SetGeneralText(SlaveName + ' lights the candle and places it besides her bed.\r\r' + OroborusCandleDescription); } break; case 5: StopHints(); SetGeneralText('The bra immediately starts massaging her breasts and tweaking her nipples. Sometimes it feels like someone is licking and sucking her nipples.'); break; case 15: if (DickgirlXF > 0) { SlaveSpeak(SlavePronoun + ' cannot wear this, my cock gets in the way.'); ShowOtherEquipment(); return undefined; } } EquipItem(item); ShowRobes(); } } function UnEquipItem(item) { HideStatChangeIcons(); if (SlaveGirl.UnEquipItem(item) != true) { switch (item) { case 1: if (PonyTailWorn == 1) { DifficultyBondage += 5; if (!(SlaveGirl.IsDickgirl() || DickgirlXF > 0)) { Icons.DickgirlXFIcon._visible = false; } PointsMod(0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0); PonyTailWorn = 0; PlugInserted = 0; } break; case 2: HaloWorn = 0; StopHints(); break; case 3: DemonicPendantWorn = 0; break; case 4: AngelsTearWorn = 0; break; case 5: break; case 6: if (VibratorPantiesWorn == 1) { PointsMod(0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); DifficultyDildo += 2; MinLibido -= 5; VibratorPantiesWorn = 0; } break; case 7: if (LeashWorn == 1) { if (Loyalty > 0) { Loyalty += 1; } PointsMod(0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, -11, 0, 0, 0); LeashWorn = 0; } break; case 8: if (NymphsTiaraWorn == 1) { PointsMod(-20, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } NymphsTiaraWorn = 0; break; case 9: SpikedBraceletWorn = 0; break; case 10: HandcuffBraceletWorn = 0; break; case 11: if (HarnessWorn == 1) { DifficultyBondage += 10; } HarnessWorn = 0; break; case 12: if (DragonRingWorn == 1) { PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0); } DragonRingWorn = 0; break; case 13: if (ApronWorn == 1) { PointsMod(0, 0, 0, 0, 0, 0, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0); } ApronWorn = 0; break; case 14: if (BitGagWorn == 1) { PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -5, 0, 0, 5); } BitGagWorn = 0; break; case 15: if (StrapOnWorn == 1) { PointsMod(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0); } StrapOnWorn = 0; break; case 16: FaeriesRingWorn = 0; break; case 17: NippleChainWorn = 0; break; case 18: NippleRingsWorn = 0; } UpdateEquipment(); UpdateSlave(); } } function RemoveItem(item) { Beep(); if (SlaveGirl.RemoveItem(item) != false) { HideStatChangeIcons(); ShowItemDescription(item); switch (item) { case 1: if (DonePonygirl == 1) { SlaveSpeak('If ' + SlavePronoun + ' remove my tail ' + SlavePronoun + ' will no longer be a proper Ponygirl!'); AddText('\r\r'); ServantSpeak('She will no longer be a Ponygirl, are you sure you wish her to remove the tail?', true); ShowOtherEquipment(); DoYesNoEvent(18); ShowRobes(); return undefined; } break; case 2: StopHints(); if (SMFaith == 2) { SetGeneralText(SlaveName + ' douses the candle.\r\r' + OroborusCandleDescription); } break; case 5: StopHints(); SetGeneralText('The Demonic Bra seems to have merged into ' + SlaveName + '\'s breasts. It can\'t be taken off!!!!'); break; case 11: if (DonePonygirl == 1) { SlaveSpeak('If ' + SlavePronoun + ' remove my harness ' + SlavePronoun + ' will no longer be a proper Ponygirl!'); AddText('\r\r'); ServantSpeak('She will no longer be a Ponygirl, are you sure you wish her to remove the harness?', true); ShowOtherEquipment(); DoYesNoEvent(16); ShowRobes(); return undefined; } break; case 14: if (DonePonygirl == 1) { ServantSpeak('She will no longer be a Ponygirl if she removes the gag permanently. Are you sure you wish her to remove it?'); ShowOtherEquipment(); DoYesNoEvent(17); ShowRobes(); return undefined; } } UnEquipItem(item); ShowRobes(); } } function IsItemWorn(item) { switch (item) { case 1: return PonyTailWorn == 1; case 2: return HaloWorn == 1; case 3: return DemonicPendantWorn == 1; case 4: return AngelsTearWorn == 1; case 5: return DemonicBraWorn == 1; case 6: return VibratorPantiesWorn == 1; case 7: return LeashWorn == 1; case 8: return NymphsTiaraWorn == 1; case 9: return SpikedBraceletWorn == 1; case 10: return HandcuffBraceletWorn == 1; case 11: return HarnessWorn == 1; case 12: return DragonRingWorn == 1; case 13: return ApronWorn == 1; case 14: return BitGagWorn == 1; case 15: return StrapOnWorn == 1; case 16: return FaeriesRingWorn == 1; case 17: return NippleChainWorn == 1; case 18: return NippleRingsWorn == 1; } } function IsItemAvailable(item) { if (item < 1) { return DressWorn == Math.abs(item); } switch (item) { case -6: return Robe6OK == 1; case -5: return Robe5OK == 1; case -4: return Robe4OK == 1; case -3: return Robe3OK == 1; case -2: return Robe2OK == 1; case -1: return Robe1OK == 1; case 0: return true; case 1: return PonyTailOK == 1; case 2: return HaloOK == 1; case 3: return DemonicPendantOK == 1; case 4: return AngelsTearOK == 1; case 5: return DemonicBraOK == 1; case 6: return VibratorPantiesOK == 1; case 7: return LeashOK == 1; case 8: return NymphsTiaraOK == 1; case 9: return SpikedBraceletOK == 1; case 10: return HandcuffBraceletOK == 1; case 11: return HarnessOK == 1; case 12: return DragonRingOK == 1; case 13: return ApronOK == 1; case 14: return BitGagOK == 1; case 15: return StrapOnOK == 1; case 16: return FaeriesRingOK == 1; case 17: return NippleChainOK == 1; case 18: return NippleRingsOK == 1; } } function ShowItemDescription(item) { if (SlaveGirl.ShowItemDescription(item) != true) { switch (item) { case 1: SetGeneralText(PonyTailDescription); break; case 2: if (SMFaith == 2) { SetGeneralText(OroborusCandleDescription); } else { SetGeneralText(HaloDescription); } break; case 3: SetGeneralText(DemonicPendantDescription); break; case 4: if (SMFaith == 2) { SetGeneralText(ChaliceDescription); } else { SetGeneralText(AngelsTearDescription); } break; case 5: SetGeneralText(DemonicBraDescription); break; case 6: SetGeneralText(VibratorPantiesDesciption); break; case 7: if (PonygirlAware == 1) { SetGeneralText(LeashPonyDescription); } else { SetGeneralText(LeashDescription); } break; case 8: SetGeneralText(NymphsTiaraDescription); break; case 9: SetGeneralText(SpikedBraceletDesciption); break; case 10: SetGeneralText(HandcuffBraceletDescription); break; case 11: SetGeneralText(HarnessDescription); break; case 12: SetGeneralText(DragonRingDescription); break; case 13: SetGeneralText(ApronDesciption); break; case 14: SetGeneralText(BitGagDescription); break; case 15: SetGeneralText(StrapOnDescription); break; case 16: SetGeneralText(FaeriesRingDescription); break; case 17: SetGeneralText(NippleChainDescription); break; case 18: SetGeneralText(NippleRingsDescription); } } } function ChangeItem(item) { if (IsItemAvailable(item)) { if (item < 1) { if (DressWorn == Math.abs(item)) { TakeDressOff(); } else { PutDressOn(Math.abs(item)); } } else { if (IsItemWorn(item)) { RemoveItem(item); } else { WearItem(item); } } } } function MeetNun(Description) { var v2 = int(Math.random() * 5); if (VarMoralityRounded > 49 && AngelsTearOK == 0 && int(Math.random() * 3) == 0) { v2 = 0; } if (SlaveGirl.MeetNun(Description, v2) == true) { return undefined; } temp2 = int(Math.random() * 2) + 2; if (temp2 == 3) { ShowMovie(PeopleNun, false, 6, temp2); } else { ShowMovie(PeopleNun, false, 1, temp2); } if (v2 == 0 && VarMoralityRounded > 49 && AngelsTearOK == 0) { if (SMFaith == 2) { ShowMovie(PeopleNun, true, 2, 3 + _root.DickgirlOn); AddText(SlaveName + ' talks to a nun and recognises an item she is wearing. The nun is a member of the Old Faith! The nun explains how she and a few others are in hiding trying to spread the faith.\r\rThey talk for a time and the nun realises the strength of ' + SlaveName + '\'s faith and gives her a sacred chalice \'Torun\'s Chalice\', a relic of a hero of the Old Faith. She instructs ' + SlaveName + ' to use it as her normal drinking cup and it will strengthen her body and soul.'); ShowItem(ObjectChalice, true, 4); } else { AddText(SlaveName + ' talks about morality with a nun.\r\rTo congratulate her for being righteous, the nun gives her an earring named the \'Angel\'s Tear\'.'); ShowItem(ObjectAngelsTear, true); if (SoundsOn) { Sounds.SoundChoir.start(0, 1); } } AngelsTearOK = 1; SlaveGirl.AfterMeetNun(Description, v2); return undefined; } if (v2 == 1 && (VarMoralityRounded < 31 || VarNymphomaniaRounded > 74 || Slutiness > 5) && DemonicPendantOK == 0 && Slutiness > 0) { ShowMovie(PeopleNun, false, 2, 1); if (SMFaith == 2) { if (int(Math.random() * 2) == 0) { AddText(SlaveName + ' met a nun, but she was kind of strange, speaking oddly and dressed in a kinky way. ' + SlaveName + ' thought she is a follower of the old gods. You are quite certain she was not, but you are uncertain who she worships, fearing some demonic entity.'); } else { AddText(SlaveName + ' met a person dressed as a nun, but she was creepy, speaking seductively and wearing minimal clothes with breasts exposed and pierced. ' + SlaveName + ' was unsure about the woman and <i>if</i> she was actually a nun, you are certain she is a demon worshipper.'); } } else { AddText(SlaveName + ' met a nun, but she was kind of strange, speaking oddly and dressed rather slutily. Possibly she is a follower of the old gods, a wild and passionate pantheon.'); } AddText('\r\rShe gave ' + SlaveName + ' a pendant, saying that there is a potential in her. Touching the pendant makes ' + SlaveName + ' feel a wave of hot arousal.'); if (SMFaith == 2) { AddText(' You believe the pendant will grant demonic visions to the wearer.'); } Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); DemonicPendantOK = 1; ShowItem(ObjectDemonicPendant, true); SlaveGirl.AfterMeetNun(Description, v2); return undefined; } if (v2 == 2 && VarMoralityRounded < 16) { ShowMovie(PeopleNun, false, 6, 3); if (SMFaith == 2) { AddText(SlaveName + ' met a nun who sternly gives her a religious text and almost orders her to study it.\r\rYou may ask ' + SlaveName + ' to read it anytime.'); } else { AddText(SlaveName + ' met a nun who gave her a religious text to study.\r\rYou may have ' + SlaveName + ' read it anytime.'); } ++TotalScripture; UpdateSlave(); SlaveGirl.AfterMeetNun(Description, v2); return undefined; } if (v2 == 3) { AddText('A nun talks with ' + SlaveName + ' and offers to pray with her to the gods for their blessing.\r\r'); if (VarMoralityRounded > 49) { v2 = 3.1; if (SoundsOn) { Sounds.SoundChoir.start(0, 1); } EventAngelicVision.gotoAndStop(int(Math.random() * 2) + 1); EventAngelicVision._visible = true; if (SMFaith == 2) { Points(0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' agrees, mainly to not offend the nun. there is a wash of white light and ' + SlaveName + ' is sure she sees an angel! The angel looks at ' + SlaveName + ' sadly and turns her back on ' + SlaveName + ' and vanishes.\r\r' + SlaveName + ' feels oddly reassured in her faith, even an angel knows of her faith!'); } else { AddText('They pray and there is a wash of white light and ' + SlaveName + ' is sure she sees an angel!\r\rThe vision fades and ' + SlaveName + ' feels a wash of peace and strengthened faith in the gods.'); Points(0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 0, 0, 0, 0, 0); } } else { if (VarMoralityRounded > 20) { v2 = 3.2; Points(0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -0.5, 0, -1, 0, 0, 0, 0, 0); AddText(SlaveName + ' agrees to pray and stands with the nun and offers prayers '); if (SMFaith == 2) { AddText('instead to the old gods, silently to not offend the nun.\r\r' + SlaveName + ' is sure she felt a presence while praying.'); } else { AddText('to the gods.\r\r' + SlaveName + ' is sure she felt a presence while praying.'); } } else { v2 = 3.3; Points(0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' is not really interested but ' + ServantName); if (!SlaveLikeServant) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0); AddText(' orders her to pray as well. Reluctantly ' + SlaveName); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0); AddText(' asks her to pray, offering to pray as well. ' + SlaveName); } AddText(' agrees and they pray to the gods.'); if (SMFaith == 2) { AddText(' ' + SlaveName + ' prays silently to the old gods though.'); } AddText('\r\r' + SlaveName + ' feels something but does not know what.'); } } SlaveGirl.AfterMeetNun(Description, v2); return undefined; } if (VarMoralityRounded < 21) { ShowMovie(PeopleNun, false, 0, 2); AddText(SlaveName + ' met a nun who was praying so she did not interrupt.'); } else { Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + Description); if (Lectures == 0 || Lectures == 2) { AddText('\r\rThe nun lectures her about the gods and what is moral. The gods gave us sex for procreation and is a private matter between lovers, not strangers. The Goddess of Love and Sex wishes us to enjoy it so she gave us the joy of orgasm. She emphasises modesty and privacy.\r\rThe gods do not approve of slavery but it is not immoral to be a slave.'); Lectures += 1; } } SlaveGirl.AfterMeetNun(Description, -1); } function MeetSleazyBarOwner() { temp = int(Math.random() * 2); ShowMovie(PeopleSleazyBarOwner, false, 0, temp); if (SlaveGirl.MeetSleazyBarOwner(temp) == true) { return undefined; } if (temp == 0) { if (VarNymphomaniaRounded < 50) { DifficultySleazyBar -= 5; Points(1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (TestObedience(DifficultySleazyBar, 112)) { AddText(SlaveName + ' meets the owner of a sleazy bar. He compliments her body and personality.\r\r' + SlaveName + ' tells him \'I\'ll look forward to working for you!\'.'); } else { AddText(SlaveName + ' meets the owner of a sleazy bar. He compliments her figure and personality.\r\rWhen leaving she talks to ' + ServantName + ' and it seems the idea of working at the sleazy bar seems more interesting to her now.'); } SlaveGirl.AfterMeetSleazyBarOwner(0); } else { if (SMFaith == 2) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, -5, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } TotalBlowjob += 1; var v2 = Lesbian; var v3 = Talent; var v1 = DickgirlOn == 1 && int(Math.random() * 3) == 0; if (v1) { Talent = 9; } UseGeneric = false; Lesbian = false; SlaveGirl.ShowSexActBlowjob(); if (UseGeneric) { Generic.ShowSexActBlowjob(); } Talent = v3; if (v2) { Lesbian = true; } if (v1) { PeopleSleazyBarOwner.gotoAndStop(2); if (CheckBitFlag1(23)) { AddText(SlaveName + ' again meets the charismatic and sleazy woman. ' + ServantName + ' looks wary and a little angry. The woman talks to ' + ServantHimHer + ', who looks a bit tired and sits down.'); } else { AddText(SlaveName + ' meets a charismatic but somehow sleazy woman. She privately speaks to ' + ServantName + ' who looks a little odd and leaves explaining ' + ServantHeShe + ' will return in a little while.'); SetBitFlag1(23); } AddText('\r\rThe woman politely explains that she is a hermaphrodite and asks ' + SlaveName + ' to give her a blowjob, '); if (TestObedience(DifficultyBlowjob, 5)) { AddText('and she agrees as the woman seems so very attractive.'); } else { AddText('but ' + SlaveName + ' is very reluctant. The woman speaks skillfully, whispering words ' + SlaveName + ' can barely hear, who changes her mind and agrees.'); } AddText('\r\r' + SlaveName + ' has difficulty trying to make her cum, despite the reputation of hermaphrodites and their libido. Her cock is large and hard but she seems to be expertly holding herself back.\r\r' + SlaveName + ' licks, sucks her for many minutes, also working fingers in the woman\'s pussy. The woman finally gasps and grabs ' + SlaveName + '\'s head, holding her mouth over her cock and unloads spurt after spurt of hot cum into ' + SlaveName + '\'s mouth. She moans and mutters in a strange language, finally pulling her semi-hard cock free of ' + SlaveName + '\'s cum filled mouth, whispering \'swallow\'. Despite herself ' + SlaveName + ' swallows all of her hot, hot cum.\r\r'); AddText('When she recovers and rearranges her clothes, she'); } else { if (CheckBitFlag1(22)) { AddText(SlaveName + ' again meets the charismatic and sleazy man. ' + ServantName + ' looks wary and a little angry. The man talks to ' + ServantHimHer + ', who looks a bit tired and sits down.'); } else { AddText(SlaveName + ' meets a charismatic but somehow sleazy man. He privately speaks to ' + ServantName + ' who looks a little odd and leaves explaining ' + ServantHeShe + ' will return in a little while.'); SetBitFlag1(22); } AddText('\r\rThe man politely asks ' + SlaveName + ' to give him a blowjob, '); if (TestObedience(DifficultyBlowjob, 5)) { AddText('and she agrees as he seems so very attractive.'); } else { AddText('but she is very reluctant. He skillfully speaks and whispers words she barely hears and changes her mind and agrees.'); } AddText('\r\r' + SlaveName + ' has difficulty trying to make him cum. His cock is large and hard but he seems to be holding himself back. ' + SlaveName + ' licks and sucks him for many, many minutes until he gasps and grabs her head.\r\rHe holds her mouth over his cock and unloads spurt after spurt into her mouth. He gasps and mutters in a strange language and finally pulls his softening cock free of her cum filled mouth, whispering \'swallow\'. Despite herself ' + SlaveName + ' swallows all of his hot, hot cum.\r\r'); AddText('When he recovers and rearranges his clothes, he'); } AddText(' politely thanks ' + SlaveName + ' and gives her a strange pill in gratitude.\r\rShortly later ' + SlaveName + ' is aware of ' + ServantName + ' who seems a little confused and insists they return to you. You examine the pill but it is totally unknown to you.\r\rDo you want ' + SlaveName + ' to take it?\r'); DoYesNoEventXY(6); SlaveGirl.AfterMeetSleazyBarOwner(v1 ? 0.1 : 0.2); } } else { if (VarObedienceRounded < 40 || DemonicBraOK == 1) { Points(2, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets the owner of a sleazy bar who compliments her beauty and tries to convince her to work at his bar.'); DifficultySleazyBar -= 1; if (TestObedience(DifficultySleazyBar, 112)) { AddText('\r\r' + SlaveName + ' replies \'Sure anytime!\''); } else { AddText('\r\r' + SlaveName + ' seems reluctant still.'); } SlaveGirl.AfterMeetSleazyBarOwner(1); } else { AddText(SlaveName + ' meets the owner of a sleazy bar and they talk about working in the bar.\r\rHe gives her a strange and skimpy bra, explaining that his customers like girls who wear this type of bra.\r\r' + ServantName + ' does not trust him or the bra. When you examine it '); if (SMFaith == 2) { AddText('you feel this thing is probably of hellish origin.'); } else { if (Talent == 4 || Talent == 10) { AddText('you feel a strange feeling and your cock becomes intensely erect. In a slight daze you have ' + SlaveName + ' immediately wear the bra.'); DemonicBraWorn = 1; } else { if (Gender != 1) { AddText('you feel a wave of arousal as you touch it.'); } else { AddText('you see the bra is of a very exotic origin but little more.'); } } } DemonicBraOK = 1; DifficultySleazyBar = 0; ShowItem(ObjectDemonicBra, true); SlaveGirl.AfterMeetSleazyBarOwner(2); } } } function MeetBountyHunter(place) { ShowAssistant(); PeopleBountyHunter._visible = true; var v1 = BountyHunterFlag; if (v1 > 5) { v1 = int(Math.random() * 2) + 4; } switch (v1) { case 0: PeopleBountyHunter.gotoAndStop(1); Points(2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0); AddText(SlaveName + ' meets a beautiful woman, who is a bounty hunter, sometimes hunting run-away slaves, other times criminals or dangerous monstrosities.\r\rShe is a little busy so they only briefly talk but she is happy and cheerful.\r\r' + SlaveName + '\'s mood is lightened by the short chat. She is also impressed with the woman\'s beauty and decides to vary her hair and makeup a little to match her\'s.'); break; case 1: case 4: PeopleBountyHunter.gotoAndStop(1); Backgrounds.ShowBar(); Points(0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0); AddText(SlaveName + ' meets the beautiful bounty hunter again. She has some free time and invites ' + SlaveName + ' and ' + ServantName + ' for a drink in a nearby tavern.\r\r'); if (v1 == 1) { AddText('She introduces herself as Irina, and they'); } else { AddText('They '); } AddText('have a lengthy talk about her work, she mainly talks about the hunt of dangerous \'things\' and criminals, but it is obvious she hunts slaves at times. ' + ServantName + ' changes the topic of the conversation and they have a pleasant talk.\r\rIrina is cheerful and friendly and seems to like ' + SlaveName + '. They part friendly and ' + SlaveName + ' feels happy and rested.'); break; case 2: case 5: PeopleBountyHunter.gotoAndStop(2); Points(0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0); AddText(ServantName + ' gestures and ' + SlaveName + ' sees the beautiful bounty hunter Irina running along the street. She waves and Irina waves back but continues running very gracefully.\r\r' + SlaveName + ' admires the elegance and precision of her motions and resolves to improve her physical training.'); break; case 3: PeopleBountyHunter.gotoAndStop(3); Points(0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(ServantName + ' the beautiful bounty hunter Irina but she seems very sad. They go to a private place and Irina explains that she has lost someone very dear to her and starts crying.\r\r' + SlaveName + ' comforts her until she regains her composure. They talk for a time, a little about Irina\'s beloved, who may of even been related to her but whom she loved completely, and a little about life in general.\r\rWhen they part Irina sincerely thanks ' + SlaveName + '.'); } SlaveGirl.AfterMeetBountyHunter(place, v1); BountyHunterFlag += 1; } function MeetOddTeacher(place, say) { AddText(SlaveName + ' meets '); if (CheckBitFlag1(18)) { AddText('the Private Tutor of Discipline again'); } else { if (CheckBitFlag1(24)) { AddText('the odd Private Tutor again'); } else { AddText('a woman calling herself a Private Tutor, but not of what or who,'); } } if (CheckBitFlag1(20) && Lake.CheckBitFlag(33)) { AddText(' ' + say); ShowAssistant(); ShowMovie(PeopleOddTeacher, true, 2); AddText('\r\r' + SlaveName + ' asks about the potion \'Nymph\'s Tears\' and her desire to find a supply. The woman says she can supply all of that potion ' + SlaveName + ' wants, for a <i>price</i>. Expecting a money value, ' + ServantName + ' asks the price.\r\rThe tutor says that she wants ' + SlaveName + ' to take </i>lessons</i> from her whenever and however she wants. ' + ServantName + ' asks what lessons, and the tutor takes out a whip, but does not answer.\r\rDoes ' + SlaveName + ' agree?'); DoYesNoEventXY(4070); SlaveGirl.AfterMeetMeetOddTeacher(place, 0); return true; AddText(' ' + say); ShowMovie(PeopleOddTeacher, false, 5); SetBitFlag1(24); SlaveGirl.AfterMeetMeetOddTeacher(place, 2); return false; } if (CheckBitFlag1(18)) { ShowMovie(PeopleOddTeacher, false, 2); UseGeneric = false; SlaveGirl.ShowSexActSpank(true); var v3 = Generic.SpankClip; if (UseGeneric) { Generic.ShowSexActSpank(true); } else { v3 = SlaveGirl.SpankClip; } intervalId = setInterval(this, 'ShakeIt', 50, 1, v3, v3._x, ''); if (SoundsOn) { Sounds.SoundWhipping.gotoAndPlay(2); } AddText(' who demands to <i>teach</i> her now '); if (place == 2 || place == 3) { AddText('and takes her to a nearby building.'); } else { AddText('and they retreat to her room.'); } if (Naked) { AddText('\r\rThe tutor compliments ' + SlaveName + '\'s naked state and tells her to'); } else { AddText('\r\rThe tutor tells ' + SlaveName + ' to strip naked and'); } AddText(' start masturbating. She then starts lightly whipping ' + SlaveName + ' varying the strength and timing of the blows. Even with the pain ' + SlaveName + '\'s arousal grows, and the whipping increases until ' + SlaveName + ' orgasms in a mixture of pleasure and pain.\r\rThe tutor looks satisfied and then undoes the lower part of her garb and tells ' + SlaveName + ' \'lick me!\'.\r\rSome time later a sore but satisfied ' + SlaveName + ' leaves.'); SlaveGirl.AfterMeetMeetOddTeacher(place, 1); return true; } AddText(' ' + say); ShowMovie(PeopleOddTeacher, false, 5); SetBitFlag1(24); SlaveGirl.AfterMeetMeetOddTeacher(place, 2); return false; } function MeetDancer(say) { ShowMovie(PeopleDancer, false, 0); if (Forest.CheckBitFlag(31)) { AddText(SlaveName + ' meets the faerie dancer, who conceals her nature in the city, ' + say); } else { if (Forest.SetBitFlag(30)) { AddText(SlaveName + ' meets a dancer again ' + say); } else { AddText(SlaveName + ' meets a dancer ' + say); } } Forest.SetBitFlag(30); } function MeetXXXSchoolOwner() { ShowMovie(PeopleXXXOwner, true, 4, 2); ++MaxFuck; ++MaxBlowJob; temp = int(Math.random() * 3); if (SlaveGirl.MeetXXXSchoolOwner(temp) == true) { return undefined; } if (temp == 0) { if (VarMoralityRounded > 20) { if (SMFaith == 2) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0); } AddText(SlaveName + ' meets the owner of the XXX School and they talk about their sexual experiences. ' + SlaveName + ' is amazed at the variety of partners the woman talks about.'); if (Lectures == 0 || Lectures == 1) { AddText('\r\rThe woman complains about the hypocrisy of the gods and morality. About how joyous love between women is wrong and how it is wrong to enjoy being fucked when tied.'); if (TentaclesOn) { AddText(' Also how the god of nature created tentacle beasts who mate with us to breed. And how they produce one of the strongest aphrodisiacs, but the gods say it is wrong to have sex with them.'); } Lectures += 2; Points(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } } else { ShowMovie(PeopleXXXOwner, false, 0, 1); AddText(SlaveName + ' meets the owner of the XXX School who gives her a book of the Kamasutra to broaden her knowledge of sexual techniques.\r\rYou can have ' + SlaveName + ' read it when you wish to order her to.'); ClipKamasutra.gotoAndStop(int(Math.random() * 3) + 1); ClipKamasutra._visible = true; ++TotalKamasutra; UpdateSlave(); } } else { if (temp == 1) { if (VarMoralityRounded < 35 && VibratorPantiesOK != 1) { AddText(SlaveName + ' meets the owner of the XXX School who talks about how things are clearer and more enjoyable when you are aroused, and she gives her a vibrator panty.\r\rThis is a vibrating phallus set inside a leather panty, locked in place and is designed to stimulate and arouse the wearer. It can be adjusted for various levels but normally it is set to bring the wearer to just short of orgasm.\r\rThe woman lifts her dress and shows ' + SlaveName + ' the set she is wearing...'); VibratorPantiesOK = 1; ShowItem(6, true); } else { if (SMFaith == 2) { Points(0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0); } AddText(SlaveName + ' meets the owner of the XXX School who describes how the feeling of sexual arousal is marvelous and how you can be aroused all day if you try. The teacher shows ' + SlaveName + ' by masturbating them both almost to orgasm several times while getting ' + SlaveName + ' to describe a sexual fantasy.'); } } else { if (VarMoralityRounded > 15 && VarNymphomaniaRounded < 50) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets the owner of the XXX School who asks her about her best sexual experience. The teacher insists that ' + SlaveName + ' masturbate while describing it. As she nears orgasm the teacher stops her and ends their talk, to ' + SlaveName + '\'s frustration.'); } else { Backgrounds.ShowPalace(); if (SMFaith == 2) { Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 5, 5, 0, 2, 0, 0, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, -2, 0, 0, 0, 0, 5, 5, 0, 2, 0, 0, 0, 0, 0, 0, 0); } AddText(SlaveName + ' meets the owner of the XXX School who takes ' + SlaveName + ' into a room of a discrete building near the Palace to be used as a model for her school.\r\r' + SlaveName + ' is used to demonstrate a number of sexual techniques. Each time a demonstration is finished the teacher makes ' + SlaveName + ' cum to a huge orgasm.'); } } } SlaveGirl.AfterMeetXXXSchoolOwner(temp); } function MeetAstrid() { if (SlaveGirl.MeetAstrid() == true) { return true; } if (CheckBitFlag1(20) && !Lake.CheckBitFlag(33)) { AddText(SlaveName + ' asks Astrid if she makes a potion called \'Nymph\'s Tears\' and how to get a supply of it.\r\r'); PersonSpeak('Astrid', 'Yes, I milk the main ingredients here and then refine and process it. I also make several other potions from the same materials.\r\rI have an agreement with several noble ladies to supply the potion to them exclusively. My word is my contact so I cannot supply any to you directly. There is a certain lady, a private tutor, who can supply you with doses. She normally \'teaches\' at the Palace and can often be found there. She is also fond of the Lake and I have seen her there walking.', true); Lake.SetBitFlag(33); AddText('\r\r'); return true; } return false; } function MeetBarmaid() { if (VarBarmaid == 0) { VarBarmaid = 0.01; AddText('\r\rThe barmaid tells ' + SlaveName + ' about the places she works and suggests that she could <b>visit</b> her sometime while working.'); } } function MeetKnight() { if (VarKnight == 0) { VarKnight = 0.01; if (NobleLoveType == 3) { AddText('\r\rThe Knight looks a little embarrassed and invites ' + SlaveName + ' to <b>visit</b> his mansion sometime to discuss battle and ethics more.'); } else { if (VarRefinementRounded >= 50 && VarMorality > 25) { AddText('\r\rThe Knight invites ' + SlaveName + ' to <b>visit</b> his mansion sometime to discuss battle and ethics more.'); } else { AddText('\r\rThe Knight suggests ' + SlaveName + ' could sometime learn more of chivalry from him. When she has studied more she can <b>visit</b> his mansion.'); } } } } function MeetPuppyGirl() { WalkZoom._visible = false; if (SlaveGirl.MeetPuppyGirl() == true) { return undefined; } ShowAssistant(); HideBackgrounds(); switch (PuppyGirlFlag) { case 0: ShowMovie(WalkTownCenter, true, 2, 1); Points(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' meets an odd slave girl who is sitting in front of a short alley leading to a small home. The alley is overgrown with vines and ' + SlaveName + ' can barely see the house. The girl looks at ' + SlaveName + ' and smiles,\r\r'); PersonSpeak('Puppy Girl', 'I\'m a guard dog! Woof!!', true); AddText('\r\r' + SlaveName + ' asks what is she guarding?\r\r'); PersonSpeak('Puppy Girl', 'What is mine! Also my Master\'s home! Woof!!', true); AddText('\r\r' + SlaveName + ' is amused by the girl\'s cheerfulness and spirited attitude, and sits and talks for a while with her. The girl is a little strange, always ending her sentences with Woof!!\r\rAfter a time they part with a Woof!!'); break; case 1: ShowMovie(WalkTownCenter, true, 2, 1); ShowMovie(WalkCatgirlMeeting, true, -3, 3); StartChangeImage(1000, WalkCatgirlMeeting); Points(0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0); AddText(SlaveName + ' meets the little puppy girl again, still guarding her house. They talk a little bit, until ' + SlaveName + ' notices a girl with cat ears walking past and the puppy girl leaps,\r\r'); PersonSpeak('Puppy Girl', 'Catgirl! Catgirl!', true); AddText('\r\rShe runs off chasing the catgirl. ' + SlaveName + ' can see she is playing and the catgirl is pretending to be afraid, running awkwardly. Amused ' + ServantName + ' follows, playing a little with them.\r\r' + SlaveName + ' wonders a little about the puppy girl\'s previous talk about \'guarding what is mine\' and peeks down the alley...'); DoEvent(4010); break; case 2: ShowMovie(WalkTownCenter, true, 2, 1); Points(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' meets again the Puppy Girl guarding her home, who looks at her and smiles,\r\r'); PersonSpeak('Puppy Girl', 'Woof!! You\'re here again! You are cute, but I have a Master! Woof!!', true); if (DickgirlOn) { AddText('\r\rThey talk a little, but ' + SlaveName + ' cannot but help to remember her little betrayal last time, but the other girl really enjoyed it, in fact started it!\r\r'); PersonSpeak('Puppy Girl', 'I\'m still guarding mine and my Masters home! Catgirl\'s won\'t trick me again.', true); AddText('\r\r' + SlaveName + ' thinks, maybe she could, maybe, trick the girl away from her post. She is very unsure, and will think more on this. Maybe the next time she returns she will have decided.'); } else { AddText('\r\r' + SlaveName + ' is still amused by the girl\'s happiness and determination, and sits and talks for a while with her.\r\rAfter a time they part with a Woof!!'); } break; case 3: ShowMovie(WalkTownCenter, true, 2, 1); Points(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' meets again the Puppy Girl guarding her home, who looks at her and smiles, somehow wagging her tail,\r\r'); PersonSpeak('Puppy Girl', 'Woof!! Woof!! You\'re back! You are cute, maybe you join me and Master? Woof!!', true); AddText('\r\r' + ServantName + ' is amused and explains that ' + SlaveName + ' has a ' + Master + ' already. '); if (DickgirlOn) { AddText('\r\r' + SlaveName + ' has thought over the last while and thinks she can trick the Puppy Girl for a bit, but does she want to do this, just so she can \'visit\' her \'bitch\'?\r\r'); AskHerQuestions(4011, 4012, 4013, 0, '\'Look a catgirl\'', 'Have ' + ServantName + ' play with her', 'No, don\'t do it!', '', 'What does she do?'); return undefined; } else { AddText('The Puppy Girl smiles and wags her tail and has a happy chat with ' + SlaveName + '.\r\rAfter a time they part with a Woof!!'); } break; case 4: ShowMovie(WalkTownCenter, true, 2, 1); Points(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' meets again the Puppy Girl guarding her home, who looks at her and smiles, somehow wagging her tail,\r\r'); PersonSpeak('Puppy Girl', 'Woof!! Woof!! You\'re back! You are cute, maybe you join me and Master? Woof!!', true); AddText('\r\r' + ServantName + ' is amused and explains that ' + SlaveName + ' has a ' + Master + ' already. '); AddText('The Puppy Girl smiles and wags her tail and has a happy chat with ' + SlaveName + '.\r\rAfter a time they part with a Woof!!'); } SlaveGirl.AfterMeetPuppyGirl(); if (PuppyGirlFlag < 3) { ++PuppyGirlFlag; } } function MeetIdol() { if (SlaveGirl.MeetIdol() == true) { return undefined; } if (VarIdol < 0) { ShowAssistant(); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0); SetText(SlaveName + ' sees some of Meigura\'s friends, looking sad, they ask her if she has seen Meigura.'); return undefined; } Points(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 2, 0, 0, 0); switch (VarIdol) { case 0: ShowMovie(PeopleIdol, false, 0, 1); AddText(SlaveName + ' sees a girl surrounded by a small crowd. She is beautiful in an odd way. ' + SlaveName + ' cannot quite work out why she seems so popular but as she watches she feels drawn toward the girl.\r\r' + SlaveName + ' feels a hand on her shoulder and sees ' + ServantName + ' and realises she has walked almost to the group and the idol. ' + ServantName + ' insists they leave.\r\r' + SlaveName + ' still feels fascinated by the girl and wonders about how to improve her appearance to be more like the idol.'); break; case 1: ShowMovie(PeopleIdol, false, 0, 5); AddText(SlaveName + ' sees again that popular girl with her small crowd of friends. ' + SlaveName + ' walks over and introduces herself. She notices some of the others look at her with some jealousy. The girl happily chats, and introduces herself as Meigura.\r\r' + SlaveName + ' can see how the others almost fawn over Meigura and vie for her attention. Despite all this they all seem friends and talk and play, but everything is centered on Meigura.\r\rAfter a while ' + ServantName + ' almost drags ' + SlaveName + ' away, muttering something like \'don\'t like her\'.'); break; case 2: ShowMovie(PeopleIdol, false, 0, 5); AddText(SlaveName + ' again meets Meigura and her friends and joins them. ' + ServantName + ' looks annoyed and watches from a distance.\r\r' + SlaveName + ' spends time chatting with Meigura, and can see how she is expert at manipulating her friends, playing one off against another to get them to do things, or just to tease. ' + SlaveName + ' can see no malicious or mean intention, just playfulness.\r\rSometimes Meigura says strange things, she seems very knowledgeable, but avoids any talk of the gods, but allows other to talk if they must. Once she got angry when a friend tried to go back on his word, she was furious and insisted he live up to the word, and intention of his promise.\r\rAfter this ' + ServantName + ' insisted they leave.'); break; case 3: ShowMovie(PeopleIdol, false, 0, 1); AddText(SlaveName + ' notices Meigura enter a small house and is sorry she missed her. A little time later they pass the house again and see a girl leaving, but she is shimmering. She has bat wings and horns on her head! The shimmering stops and they can see it is Meigura, who looks at them surprised and runs off.\r\r' + SlaveName + ' and ' + ServantName + ' chase after her, and corner her in an alley. She looks unhappy and says,\r\r'); PersonSpeak('Meigura', 'You saw me, didn\'t you...\r\rAlright, I am a demon but I\'m not evil now, I grew tired of torment and lust, I just wanted people to be with, to like and be friends with. I have repented, as such, my ways, but I still reject all gods and their teachings. I am complete in myself, I do not need gods telling me what is right and wrong, I can decide this myself.\r\rPlease do not tell anyone about me, if you do I swear to grant you a boon, some would call it a wish...', true); AddText('\r\rShe starts to shimmer again...'); DoEvent(4014); break; default: ShowMovie(PeopleIdol, false, 0, 1); AddText(SlaveName + ' sees her demonic friend Meigura and briefly says \'hello\'. ' + ServantName + ' interrupts and insists they leave, now.\r\r' + SlaveName + ' waves goodbye.'); } SlaveGirl.AfterMeetIdol(); if (VarIdol < 4) { ++VarIdol; } } function MeetSchoolGirl() { if (SlaveGirl.MeetSchoolGirl() == true) { return undefined; } HidePeople(); BlankLine(); if (VarSchoolGirl == 0.1 && VarConversationRounded < 40 || VarSchoolGirl == 0) { ShowMovie(PeopleGirl, false, 0, 1); if (VarSchoolGirl == 0) { AddText(SlaveName + ' sees a girl in the class who seems quite bright. After she is very friendly and many students talk to her.\r\rShe even introduces herself to ' + SlaveName + ' as Snow, with a little laugh, explaining her parents are odd and choose funny names. She offers to help ' + SlaveName + ' anytime if she has problems understanding the work.'); } else { AddText(SlaveName + ' briefly talks with the girl Snow about the class. She is friendly and kind but a bit aloof.'); } Points(0, 0, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); VarSchoolGirl = 0.1; return undefined; } switch (int(VarSchoolGirl)) { case 0: Points(0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); VarSchoolGirl = 1; ShowMovie(PeopleGirl, false, 0, 3); AddText(SlaveName + ' talks more to the girl Snow. She finally gets the girl to talk about some personal things, but Snow looks a bit upset when she realises she had opened up. ' + SlaveName + ' is surprised at her burst of anger, and apologises. Snow calms down and apologises too, and they have a pleasant chat, but a bit more reserved.'); break; case 1: ShowMovie(PeopleGirl, false, 0, 1); Points(0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' chats pleasantly with the girl Snow, mainly complaining in a friendly way about family and friends. Snow carefully avoids any talk about slavery and ' + SlaveName + '\'s training.'); if (VarConversation > 50) { ++VarSchoolGirl; } break; case 2: AddText('While talking to Snow, ' + SlaveName + ' realises she is hiding a lot, she makes odd references to things and she realises Snow may not be the nice, good student she appears to be'); if (TotalSleazyBar < 0) { ShowMovie(PeopleGirl, false, 0, 1); AddText(' but she cannot quite pin her down or convince her to talk more.'); } else { ShowMovie(PeopleGirl, false, 0, 2); Lesbian = true; Generic.ShowSexActLick(); AddText(' and she remembers seeing a girl while working in the sleazy bar. She was partying very enthusiastically with some people, drinking, and dancing. ' + SlaveName + ' once saw her moaning as someone under the table was clearly licking her pussy.\r\r' + SlaveName + ' confronts Snow, who looks surprised, but also a little relieved, and happily confesses to loving to party. She talks about how her family is a little odd, but strongly wants her to succeed at everything. They want her to train, to study, but partying is discouraged. Snow often sneaks out on a pretense and indulges in her enjoyment of parties, men, women, whoever.\r\rShe asks ' + SlaveName + ' to join her in a back room for a private chat, and they step out. In the room Snow sits down on a table and asks ' + SlaveName + ' to do the same. A moment later two female students join them and kneel in front of them. Snow removes her skirt and panties and the girl enthusiastically licks her pussy. ' + SlaveName + ' feels the other girl '); if (!Naked) { AddText('remove her panties and starts licking her '); } if (IsDickgirl()) { AddText('cock'); } else { AddText('pussy'); } AddText('. Snow groans and comments about it is a perk of being helpful...'); AskHerQuestions(34, 35, 0, 0, 'Let the girl lick her', 'Refuse', '', '', 'What does ' + SlaveName + ' do?'); } break; case 3: ShowMovie(PeopleGirl, false, 0, 1); AddText(SlaveName + ' starts to talk to Snow, but she politely says,\r\r'); PersonSpeak('Snow', 'Join me in the backroom and we can talk there...', true); AddText('\r\rand she steps out with two fellow, female, students.\r'); AskHerQuestions(36, 37, 0, 0, 'Join her', 'Refuse', '', '', 'What does ' + SlaveName + ' do?'); break; case 4: ShowMovie(PeopleGirl, false, 0, 4); AddText(SlaveName + ' talks to Snow, about class, and her experiences and adventures in the night life of Mioya.\r\rAfter a time Snow invites ' + SlaveName + ' to attend a club meeting and walks to the backroom. Does ' + SlaveName + ' join her?\r'); DoYesNoEvent(36); } SlaveGirl.AfterMeetSchoolGirl(); } function MeetNarana(img) { if (img == 1) { ShowMovie(PeopleSlut, false, 7, 1); } else { ShowMovie(PeopleSlut, true, 1, 2); } if (DocksSlavePens.CheckBitFlag(30) && CheckBitFlag1(42)) { AddText(',she is Narana'); } if (DocksSlavePens.CheckBitFlag(30)) { AddText(',she is Narana, the woman from in front of the demon cage'); } else { if (CheckBitFlag1(42)) { AddText(',she is Narana, the medium from the party'); } else { AddText('introducing herself as Narana'); } } } function NobleLoveEvent(allowoffer) { if (NobleLove >= 0) { NobleLove += 1; } SlaveGirl.NobleLove(allowoffer); } function SailorSex() { HideStatChangeIcons(); if (TestObedience(DifficultyFuck, 4)) { TotalFuck += 1; if (VarFuckRounded > 50) { Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -2, 0, 2, 1, 0, 0); AddText('The sailor is amazed at how skilled ' + SlaveName + ' is and says she is the best he has ever had. ' + SlaveName + ' is very pleased.'); } else { Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, -2, 0, 2, 0, 0, 0); AddText('They have a passionate tryst and leave satisfied.'); } } else { DifficultyFuck -= 2; Points(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, -1, 2, 0, 0, 0, -1, 0); AddText('They start embracing passionately but ' + SlaveName + ' shies away nervously. The sailor is kind and thanks her.'); } } function CuteGirlLesbianSex() { HideStatChangeIcons(); if (TestObedience(DifficultyLesbian, 11)) { TotalLesbian += 1; if (_root.Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } Points(0, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 2, -1, 0, 2, 0, 0, 0); AddText(SlaveName + ' enjoys pleasuring the girl. The girl very much enjoyed it and thanks ' + SlaveName + ' profusely.\r\rThe girl moves ' + SlaveName + ' and expertly returns the favour, licking ' + SlaveName + ' to a quick orgasm.'); } else { TotalLesbian += 1; DifficultyLesbian -= 2; Points(0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, 1, 0, 2, 0, 0, 0); AddText(SlaveName + ' did not enjoy pleasuring the girl. When the girl moves to do the same to ' + SlaveName + ' she refuses. The girl understands and gives ' + SlaveName + ' pointers for future.'); } } function DoIntroOptions() { if (IntroOptionsMenu._visible == false) { oldAssistantName = IntroOptionsMenu.NewAssistant.text; UpdateFromGlobalData(); fortuneq = Quitter._visible; Quitter._visible = false; NextEvent._visible = false; fortunem = VisitFortuneTeller._visible; IntroOptionsMenu._visible = true; IntroLoadButton._visible = false; SMAppearance._visible = false; if (!fortunem) { SlaveMakerSelection._visible = false; } else { VisitFortuneTeller._visible = false; } SlaveMakerSelection._visible; } else { IntroLoadButton._visible = !fortunem; IntroOptionsMenu._visible = false; if (fortunem) { VisitFortuneTeller._visible = true; Quitter._visible = fortuneq; NextEvent._visible = !fortuneq; } else { SlaveMakerSelection._visible = true; } SMAppearance._visible = true; TentacleFrequency = GlobalTentacleFrequency; } Beep(); } function IntroOptionsRollout() { IntroOptionsMenu.SlaveInformation.text = ''; } function PressSlaveMakerActions() { DoSlaveMakerActions(this._parent.curract); } function DoSlaveMakerActions(type, cost) { HideQuestions(); HideYesNoButtons(); YesNoFlag = 1; Beep(); if (VarGold < cost) { ServantSpeak('You don\'t have enough money.'); return undefined; } if (SlaveGirl.DoSlaveMakerActions(type) == true) { return undefined; } ActionChoice = type; switch (type) { case 1: SetText('You will train combat techniques at the training grounds near the Palace.\r\rDo you want to do that?'); break; case 2: if (SMFaith == 2) { SetText('You will visit a place of the old gods and make offerings and pray.\r\rDo you want to do that?'); } else { SetText('You will visit a church and pray to the gods.\r\rDo you want to do that?'); } break; case 3: SetText('You want to relax and chat with other Slave Makers and other people. You will visit a bar, or maybe a sleazy bar.\r'); AskHerQuestions(500, 501, 599, 0, 'Normal Bar', 'A Sleazy Bar', 'Forget it', '', 'Where will you relax?'); return undefined; case 4: SetText('You will attend the Royal Court, meeting influential people and making connections.\r\rDo you want to do that?'); } ShowYesNoButtons(); } function SMPlanningDayCode(actno) { ShowSlaveMaker(false); SetText(''); NextGeneral._visible = true; LastActionDoneDay = actno; var v1 = int(actno); Beep(); if (SlaveGirl.SMPlanningDayCode(actno) == true) { return undefined; } if (v1 == 1) { MartialTraining(); } else { if (v1 == 2) { PrayAtChurch(); } else { if (v1 == 3) { RelaxBar(); } else { AttendCourt(); } } } SlaveGirl.AfterSMPlanningDayCode(LastActionDoneDay); } function MartialTraining() { if (SoundsOn) { Sounds.SoundClang.gotoAndPlay(2); } ++TotalSMMartial; SlaveMakerTraining.gotoAndStop(int(Math.random() * 4) + 4); SlaveMakerTraining._visible = true; SMPoints(1, 1, 0, 0.5, 0, -1, 0); AddText('You practice your martial training at a training area near the palace. You meet different people and partner with them to spar and train.'); if (SMAttack < 40) { if (TotalSMMartial == 1 || int(Math.random() * 3) == 1) { AddText('\r\rYou see a Knight of the realm training on the far side of the training area. From what you can see he is a superb swordsman, far beyond your skills.'); ShowMovie(PeopleKnight, false, 0); SMAppearance._visible = false; } } else { if (VarKnight == 0) { if (int(Math.random() * 2) == 0) { PeopleKnight.gotoAndStop(3); ShowMovie(PeopleKnight, true, 0); SMAppearance._visible = false; AddText('\r\rAt the end of your training you are invited to speak to a Knight, a superb swordsman, and from what you have heard a highly honourable person. You speak for a time, and he expresses some admiration of your martial techniques.\r\rYou move to a nearby bar and have a few drinks and discuss many things, your slave training and his duties. You can strongly see his clean moral center and honour. He expresses a dislike of slavery but is willing to allow you your profession. You both talk and argue for a long while.\r\rEventually he suggests that you could send some of your slaves to <b>visit</b> and discuss morality and chivalry with him. He seem to be hoping to educate your slaves, and possibly <i>you</i>. He does mention that his servants only allow <i>well acted and stylish</i> girls who are <i>trying to follow the gods</i>.'); VarKnight = 0.01; } } } } function LearnNewGods() { if (TheologyTraining < 10) { ++TheologyTraining; HideBackgrounds(); HideSlaveActions(); ShowSlaveMaker(); BlankLine(); switch (TheologyTraining) { case 1: HideImages(); ClipDay._visible = true; AddText('The nun talks for a time with you about the Lady Amaterasu, the Great Goddess of the Sun.\r\rShe explains that to bathe naked in the rays of the Lady is not shameful and slowly removes her robes in the sunshine. She warns you against parading your slaves naked for the purpose of tantalising and arousing others.'); ShowMovie(PeopleNun, true, 2, 3); break; case 2: Gods.gotoAndStop(1); Gods._visible = true; AddText('The nun tells you she is a priestess of the god and goddess Inari, who appears as a male'); if (DickgirlOn == 1) { AddText(', female or hermaphrodite'); } else { AddText(' or female'); } AddText(' as he/she desires. The God/Goddess is the god of rice and fertility, and foxes are particularly blessed.\r\rThe priestess talks about fertility, particularly scolding you about how sex is for expressing love and for procreation, not a matter of recreation and slaves as sex-toys is particularly wrong.'); if (DickgirlOn == 1) { AddText('\r\rShe explains how hermaphrodites are blessed of Inari as they express his/her nature. Almost all priestesses of Inari are hermaphrodites, and she briefly removes her robes to show her quite erect cock.'); ShowMovie(PeopleNun, true, 2, 4); } break; case 3: AddText('Nervously the nun talks about Lord Tsukiyomi, the god of the Moon, and of many evil things in the world, but she stresses that this does not include demons as they follow no-one, fiercely free.\r\rShe explains that the evil ones gain power with the full moon, and stresses how, as a Slave Maker, you walk a thin line between good and evil and should take care.'); if (TentaclesOn == 1) { Gods.gotoAndStop(3); AddText('\r\rShe talks of the tentacle monstrosities and how they are the children of Tsukiyomi and the goddess of food and desire, Ukemochi. They are children of the night and the dark, and are ruled by lust. They have come to hate their father, as he slew their mother in a fit of anger, and they have fled into the dark places of the world, avoiding his gaze.\r\rSometime long ago it is said they offended Inari by taking one of his/her beloved priestesses. It is said the priestess abandoned Inari out of the huge lust the tentacle creatures cause. Inari cursed them to never have female children, so now they hunt human women to satisfy their lusts and to bear their children. The nun wonders about Inari\'s curse, of course no-one questions the gods, but why that curse?\r\rEspecially as since then the monstrosities have had a particular taste for nuns...'); } else { Gods.gotoAndStop(2); } Gods._visible = true; break; case 4: AddText('The nun happily talks of Fuijin, god of the wind and his friend, Raiden the god of thunder and lightning. These gods are often shown wearing the garb of demons, tiger-skins and with horns on their heads. She sternly explains that they are not demons, nor are they worshipped by demons. Their dress is an expression of their chaotic and sometime destructive nature, but they are gods and support their followers and the other gods.\r\rYou remember hearing a story about a slave girl taken in a far, far land. She dresses in a tiger-skin bikini and could generate lightning! Perhaps her people are the blessed of Raiden, like the foxes of Inari. The slave girl is said to have escaped and fled long ago.'); Gods.gotoAndStop(4); Gods._visible = true; break; case 5: AddText('The nun calls for an acolyte to play some music, and talks with you about Benten, the goddess of love, beauty and elegance. All things that flow, including music, dance and speech are also in her favour. This being the land of Mioya, she is especially revered as the goddess of love and passion, and she is the favourite of courtesans and prostitutes.\r\rAs you talk a scantily clad acolyte steps out and dances seductively to the music. While you watch the nun cautions you against training slave-sluts, girls who desire only sex and want little else. The nun regretfully explains how the girl dancing had such training until she was rescued. For a long time she could only serve the goddess in taking, um, offerings. You look at the nun curiously and she waves the dancer over.\r\r'); AddText('The dancer kneels before you and whispers a prayer to Benten while undoing you lower clothes. Before you can comment she finishes her prayer and leans down, '); if (Gender != 2) { AddText('licking your cock expertly and passionately. Your cock springs erect and the girl takes you deep into her throat. She moves up and down, fucking your cock with her throat. Rapidly you strain and cum almost directly down her throat.'); } else { AddText('and slowly licks your pussy with obvious experience and skill. She licks your pussy and then after a while sucking your clit, arousing you and making you orgasm strongly.'); } AddText('\r\rThe nun looks a little embarrassed and asks the girl to leave. She talks more of Benten, about how she favours cats and sometimes appears as a catgirl. It is also said the legendary True Catgirls worship her.'); Gods.gotoAndStop(5); Gods._visible = true; break; case 6: AddText('The nun talks to you of Bishamon, the god of war and good fortune. He is also the divine punisher and it is said certain demons favour him and choose to punish the wicked in his name.\r\rThe nun suggests you find his favour in martial training.'); Gods.gotoAndStop(6); Gods._visible = true; break; case 7: AddText('The nun tells you the story of creation, the story of the first man Izanagi and his wife and sister Izanami. She tells of how their arguments and love brought life and death to the world.\r\rAs they are brother and sister, the land of Mioya permits the marriage of siblings, but under some restrictions to try and limit weak or sickly children. Any such union requires the blessing of the Divine Siblings.'); HideImages(); Backgrounds.ShowLivingRoom(11); break; case 8: AddText('The nun tells you stories about Susanoo, the god of storms and the sea. He is a great trickster, loving jokes and is fond of all comedians. He is also a great warrior, wielding his sword Kusanagi and many warriors seek his favour.\r\rShe also tells you how he loves to tease his sister the Lady Amaterasu.'); Gods.gotoAndStop(7); Gods._visible = true; break; case 9: AddText('The nun briefly talks about Kuni-Nushi the god of sorcery, medicine and alchemy. She advises you against using his drugs and potions, as many can have unexpected effects.\r\rShe also talks a little about Tenjin the god of sages and scholars, but she seems to have little knowledge of the god.'); HideImages(); Backgrounds.ShowOther(3); break; case 10: HideImages(); AddText('The nun lectures you about Amatsu Mikaboshi, the god of evil and corruption, mainly preaching to you to avoid his ways. She is very, very insistent you avoid the seductions of his followers, the accursedly beautiful demon girls. She tells you to resist their amazing, passionate, orgasmic.....um..well avoid them!'); CombatCreatures.DevilGirls._visible = true; CombatCreatures.Zombies._visible = false; CombatCreatures.Demons._visible = false; CombatCreatures.Tentacles._visible = false; CombatCreatures._visible = true; CombatCreatures.DevilGirls.gotoAndStop(2); } } } function LearnOldGods() { if (TheologyTraining < 9) { ++TheologyTraining; HideBackgrounds(); HideSlaveActions(); ShowSlaveMaker(); BlankLine(); switch (TheologyTraining) { case 1: Gods.gotoAndStop(8); Gods._visible = true; AddText('The priestess tells you about the gods, some reigning over a single lake or mountain, some of great power, like the Mother Goddess Matres, goddess of the sky, fertility, sex, passion and creation. She is a wild, passionate, free goddess, but is vengeful, cruel and spiteful for those who break her few rules. Matres wants us to protect the home, to honour guests and to joyfully embrace sex whenever we can, as it is the expression of her power, of fertility, passion and creation.\r\rWith that she gestures to her followers who remove their clothing '); if (Gender != 2) { AddText('and invite you to fuck them to orgasm after orgasm. As you slide your cock into the moist and ready pussy of one of the acolytes'); } else { AddText('and welcome you to lick and be licked to many mutual orgasms. As your tongue touches the moist pussy of an acolyte'); } AddText(' the priestess warns you of Matres\'s wrath. You are a Slave Maker, depriving girls of their freedom. You should make slaves who joyously live their life and celebrate passion. With that she kisses you '); if (Gender != 2) { AddText('and pushes your ass, plunging your cock deep into her acolyte\'s pussy.'); } else { AddText('over and over, lower and lower, moving toward your pussy.'); } AddText('\r\rMuch later, after joyfully offering your body to Matres, the priestess looks down on you as you rest. She warns you again of Matres\'s wrath.'); break; case 2: Gods.gotoAndStop(9); Gods._visible = true; AddText('The priestess talks to you of Epona, the Goddess of the sacred horse. She emphasises the joy of riding horses and the great favour the goddess gives to horse racing and cavalry.'); break; case 3: Gods.gotoAndStop(10); Gods._visible = true; AddText('The priestess tells you of Herne the Hunter, the god of hunting and the forest. He is the stern, vengeful protector of all forests and those who live there. It is said the faerie folk are dear to his heart and any who harm them will be hunted by the god Herne.\r\rShe talks of the Wild Hunt that Herne leads punishing those who incur his wrath. It is a wild, orgiastic affair, and it is said many of those in the hunt are animalistic or even the rumoured werewolves.\r\rSometimes though the hunt chases women or faeries, who at least secretly desire it. When captured a wild, joyous orgy celebrates the hunt and glorifies Matres. After many, many partners the hunted woman is returned to her home, always pregnant.'); break; case 4: Gods.gotoAndStop(11); Gods._visible = true; AddText('The priestess takes you to the lake that lies to the south east of the city. On the way she tells you how water, lakes and rivers are sacred. Many have gods or goddesses, and the lake has a goddess called only The Lady of the Lake as she has never named herself otherwise. The Lady is a beautiful, pure spirit who grants peace and healing. She loathes the creatures of evil and the dark, and most especially the monstrous undead.'); if (TentaclesOn == 1) { AddText('\r\rThe lady does not hate the tentacle monsters and seems to pity those creatures. She encourages her followers to enjoy the amazing lust of those creatures, but gives them instructions on how to escape from the creatures <i>after</i>.'); } AddText('\r\rWhen you arrive she strips naked and has you do the same and you wade in. She explains that you will make an offering to the Lady. The priestess stands close behind you and runs her hands over your body, reaching lower and lower. '); if (Gender != 2) { AddText('She sensuously caresses your cock, rubbing and stroking until you are erect. She then kisses your neck, stoking your cock'); if (Gender == 3) { AddText(' and using her other hand fingers and rubs your pussy'); } AddText('. You quickly feel your orgasm approach under her expert touch and cry out as your cum sprays out landing in the waters of the lake. The priestess gently moves your head and to your surprise you are sure you can see a dim outline of a face in the water, mouth open where your cum lands.'); } else { AddText('She sensuously runs her fingers over your pussy, her other hand lightly caressing your breasts. Faster, harder she masturbates you, kissing your neck and pinching your nipples. With a cry you orgasm and small squirts of pussy juice erupt from your pussy. As you do the priestess gently moves your head and to your surprise you are sure you can see a dim outline of a face in the water, mouth open where your juice lands.'); } break; case 5: AddText('The priestess happily talks of Taranis, the god of thunder and lightning. Taranis is often thought of as an angry, passionate god who loves his followers but is quick to punish.\r\rYou remember hearing a story about a slave girl taken in a far, far land. She dresses in a tiger-skin bikini and could generate lightning! Perhaps her people are blessed of Taranis, like the foxes of Inari. The slave girl is said to have escaped and fled long ago.'); Gods.gotoAndStop(4); Gods._visible = true; break; case 6: AddText('The priestess talks to you of Teutates, the god of war and of the tribe, of the community. He is also the divine punisher and it is said certain demons favour him and choose to punish the wicked in his name.\r\rThe priestess suggests you find his favour in martial training.'); Gods.gotoAndStop(6); Gods._visible = true; break; case 7: AddText('The priestess tells you stories about Manannán, the god of the sea and ruler of the isles of the afterlife. He is a great warrior, carrying a large spear and a bottomless bag of many, many things.'); Gods.gotoAndStop(7); Gods._visible = true; break; case 8: AddText('The priestess briefly talks of Lugh, the master of all arts and crafts. The priestess seems to have little interest in Lugh but tells you a story of his cunning and skill.'); HideImages(); Backgrounds.ShowOther(8); } } if (!CheckBitFlag1(36) && PonygirlAware > 0 && TheologyTraining > 1) { AddText('\r\rYou ask the priestess about Epona and ponygirls.\r\r'); PersonSpeak('Priestess', 'Epona, like all the gods, wants her people to be free, the idea of a person in bondage continually is wrong. But...if the person is willing, it is said that Epona greatly favours those who honours the horse in that way. I have heard it said in a distant temple of Epona, all the acolytes dress as ponygirls. They wear the bit-gag and ponytail with pride, although it is said that most of their duties involve being \'mounted\', doing their best to honour Matres and be pregnant as often as they can.'); SetBitFlag1(36); } } function PrayAtChurch() { ++TotalSMPray; SlaveMakerTraining._visible = true; if (SMFaith == 2) { SMPoints(0, 0, 0, 0, 0, 1, -5); Backgrounds.ShowRuinedTemple(1); SlaveMakerTraining.gotoAndStop(11); AddText('You visit a secret place in the ruined temple to meet a priestess of the old gods and some followers. She is dressed as a nun of the new order, but she reveals her lower clothes and exposes herself and her dedication to the passionate ways of the old, true gods.\r\rYou make offerings, dance, drink, eat and celebrate the joy of the life the gods have given you. The priestess and her followers happily celebrate with you and she tells you tales of the ways of the gods. You will tell ' + SlaveName + ' some of these stories later.'); Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0); LearnOldGods(); } else { SMPoints(0, 0, 0, 0, 0, -4, -5); AddText('You visit a church and pray there. After you talk with a nun about the ways of the gods.'); SlaveMakerTraining.gotoAndStop(int(Math.random() * 3) + 8); LearnNewGods(); } if (Corruption > 0) { if (Talent == 4) { AddText('\r\rFor some reason you are uncomfortable praying with her and for no reason think of your father.'); } else { if (Talent == 10) { AddText('\r\rYou feel a pain in your cock as you enter the church. The pain fades quickly and your cock rapidly becomes very erect as you look at the nun.'); } } } } function RelaxBar() { Money(-10); SlaveMakerTraining._visible = true; Backgrounds.ShowBar(); if (Action == 3.1) { ++TotalSMBar; AddText('You visit a bar and relax, drink and chat with the other patrons.'); SlaveMakerTraining.gotoAndStop(2); SMPoints(0, 0, 0, 0, 0.5, -1, 0); } else { ++TotalSMSleazyBar; AddText('You visit the sleazy bar and watch the shows. You consider tipping a girl for a \'special\' performance.'); SlaveMakerTraining.gotoAndStop(3); SMPoints(0, 0, 0, 0, 0.5, -4, 0); if (VarCount == 0) { if (VarCharismaRounded < 50) { if (int(Math.random() * 3) == 0 || TotalSMSleazyBar == 0) { ShowMovie(PeopleCount, false, 1); SMAppearance._visible = false; BlankLine(); switch (int(Math.random() * 4)) { case 0: AddText('You see a small group at a table. You recognise the Count, a senior minister in the Lord\'s government. He has a girl from the bar sitting at his side, and he is rather crudely groping her breasts, her large, ample breasts.'); break; case 1: AddText('You notice the Count, a senior minister in the Lord\'s government leaning back, looking distracted. When you next look he is smiling and a girl is standing up, licking her lips. You cannot help but notice her <i>very</i> large, exposed breasts.'); break; case 2: AddText('You see the Count, a senior minister in the Lord\'s government, drinking and laughing with some associates. You would hesitate to call them friends as from what you hear the Count is not a sociable person. A female slave walks over carrying drinks, it appears she is his slave. You see she is complete naked, with the largest breasts you have seen on a woman. Large, full breasts with heavy weights hanging from her pierced nipples. She has what appears to be sizable plugs in pussy and ass.\r\rAs she puts the drinks down you seen her raise a breast, removing the piercing, and places the nipple to the Count\'s mouth. He sucks with obvious enjoyment...'); break; case 3: AddText('You see a small group at a table. You recognise the Count, a senior minister in the Lord\'s government. He has a slave-girl tied to his table on her back, arms and legs bound and a gag in her mouth. Every so often on of his companions stands and fucks the slave-girl, crudely and roughly. All the time, the Count plays with the slave-girl\'s breasts and nipples.'); } LastActionDoneDay = 3.3; return undefined; } } else { if (int(Math.random() * 2) == 0) { ShowMovie(PeopleCount, true, 1); AddText('You see a small group at a table. You recognise the Count, a senior minister in the Lord\'s government. He has a slave-girl tied to his table on her back, arms and legs bound and a gag in her mouth. Every so often on of his companions stands and fucks the slave-girl, crudely and roughly. All the time, the Count plays with the slave-girl\'s breasts and nipples.\r\rThe Count attracts your attention and gestures for you to join him.\r\r'); PersonSpeakStart('Count', 'I have heard a little about the slave you are training. I have heard she is a well endowed, I mean well behaved slave. I would welcome the opportunity to talk to her sometime. Please have her <b>visit</b>, but please make sure she able to act like an elegant lady.', true); if (Gender != 2) { AddText('\r\rWould you like to use my slave?'); } else { AddText('\r\rYou may remove my slave\'s gag and use her mouth?'); } PersonSpeakEnd(); AddText('\r\rYou are almost insulted by the way they are abusing this slave. She is not being treated with respect, just as a sex toy. You politely refuse, implying you had already \'tipped\' a girl recently.'); AddText('\r\rYou know the Count is an educated man, skilled in stories and tales of mythology. He is an expert on agriculture and botany, so you will take ' + SlaveName + ' to visit sometime, but you will closely supervise the visit.\r\rYou also feel a sight sense of outrage about how the Count seems so tit obsessed...'); VarCount = 0.01; LastActionDoneDay = 3.4; return undefined; } } } if (int(Math.random() * 3) == 0) { AddText(' You attract a girls attention, '); if (Gender != 2) { SlaveMakerTraining.gotoAndStop(13); if (VarBarmaid > 0) { AddText('and you recognise her as the barmaid that ' + SlaveName + ' had befriended.'); } else { AddText('who looks somewhat familiar but you cannot quite place her.'); } AddText(' You '); } else { SlaveMakerTraining.gotoAndStop(12); } AddText(' pay her a tip for a \'special\' performance. She kneels before you and demonstrates her skill at dancing, tongue dancing...'); LastActionDoneDay = 3.5; } } } function AttendCourt() { ++TotalSMCourt; SlaveMakerTraining.gotoAndStop(1); SlaveMakerTraining._visible = true; SMPoints(0, 0, 0, 0, 1, 0, 0, 0); if (VarReputationRounded < 61) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0); } if (VarLadyFarun > -1 && TotalSMCourt == 1 && !CheckBitFlag1(18) && !CheckBitFlag1(20)) { ShowMovie(PeopleLadyFarun, true, 1, 8); AddText('You visit the Royal Court, your position as a Slave Maker entitles you as a very minor noble. Here are court there are many officials and courtiers vying for position and for the notice of the Lord.\r\rThe Lord of Mioya is best described as an eccentric man, subject to wild changes of fancy and very enthusiastic. As a saving grace he is honourable and just.\r\rWhile familiarising yourself you meet a beautiful woman, introduced to you as Lady Farun, a noted slave dealer and lady of the court. She is very alluring and quite flirtatious, but also non-committal when you ask her anything. You talk about <b>visiting</b> her sometime but she says nothing. She leans in and kisses your cheek and walks off, hips swaying.'); VarLadyFarun = 0.01; return undefined; } else { AddText('You visit the Royal Court and speak with some officials and minor nobles.'); if (VarLadyFarun == -2.1) { ShowMovie(PeopleLadyFarun, true, 1, 8); AddText('\r\rYou see the beautiful Lady Farun, dazzling all with her wit, charm and elegance. She is talking to a court official and seems to be arguing something.\r\rYou approach and they are arguing about access to the ruins and the Lady looks at you and smiles. She leans and kisses your cheek, and you both argue for temporary access to the ruins. The official is very reluctant but after a long talk eventually agrees, but on the condition of a private audience with Lady Farun.\r\rShe smiles and agrees, and then asks you to visit later for the permits.'); VarLadyFarun = -1; return undefined; } else { if (VarLadyFarun < -1) { ShowMovie(PeopleLadyFarun, true, 1, 8); AddText('\r\rYou see the beautiful Lady Farun, dazzling all with her wit, charm and elegance. She speaks to you for a while and whispers how she is looking for the information ' + SlaveName + ' wants. She leans in so close while whispering you could easily kiss her. You see her look at you knowingly and she kisses you on the cheek. She caresses your cheek and walks off seductively.'); return undefined; } } if ((CheckBitFlag1(18) || CheckBitFlag1(20)) && int(Math.random() * 4) == 0) { AddText('\r\rYou overhear a fragment of a conversation, but only make out the words \'Farun\' and \'slut\'.\r\rYou turn to confront the person but cannot determine who said it. You notice a number of people looking at you, some discretely smiling.\r\r'); } if (VarLord == 0) { if (VarReputationRounded < 25) { if (int(Math.random() * 3) == 0) { ShowMovie(PeopleLord, false, 1); SMAppearance._visible = false; BlankLine(); switch (int(Math.random() * 4)) { case 0: AddText('In the distance you see the Lord, taking with some senior officials.'); break; case 1: AddText('You see the Lord talking with Lady Farun, he seems quite taken with her. She is flirting but little more seems to happen.'); break; case 2: AddText('The Lord briefly talks to you and asks you about your current slave, what\'s her name...'); break; case 3: AddText('You see the Lord practicing sword-play in the middle of the throne-room. During the play he cuts some tapestries and laughs.'); } return undefined; } } else { if (int(Math.random() * 2) == 0) { ShowMovie(PeopleLord, true, 1); AddText('The Lord summons you to speak to him,\r\r'); PersonSpeakStart('Lord', 'Your slave, umm ' + SlaveName + ', has come to my attention, she sounds interesting. Have her <b>visit</b> me sometime.', true); VarLord = 0.01; return undefined; } } } } } function SlaveMakerPlanningShortcuts(key) { switch (key) { case 66: DoSlaveMakerActions(3); break; case 67: DoSlaveMakerActions(4); break; case 77: DoSlaveMakerActions(1); break; case 80: DoSlaveMakerActions(2); } } function SetLesbianTraining() { StatisticsGroup.BlowjobLabel.text = 'Cunnilingus :'; StatisticsGroup.FuckLabel.text = 'Trib/Strap-On :'; SetButtonState(PlanningNightSex.CumBathButton, false, false); SetButtonState(PlanningNightSex.BlowjobButton, false, true, 'Lick you <font color=\'#0000FF\' size=\'-4\'>J</font>'); SetButtonState(PlanningNightSex.FuckButton, false, true, 'Strap-On\r<font color=\'#0000FF\'>F</font>uck'); SetButtonState(PlanningNightSex.TitsFuckButton, false, true, 'Masturba<font color=\'#0000FF\'>t</font>e\rYou'); SetButtonState(PlanningNightSex.LesbianButton, false, true, 'Tribadism <font color=\'#0000FF\' size=\'-4\'>L</font>'); SetBitFlag1(10); Lesbian = true; } function ApplyColours(red, green, blue) { var v1 = 0.85; if (red == undefined) { v1 = 1; red = 0; green = 0; blue = 0; } SetMovieColour(MainBackground, red, green, blue, 0, v1, v1, v1, 1); SetMovieColour(SystemButton, red, green, blue, 0, v1, v1, v1, 1); SetMovieColour(Icons.IconBar, red, green, blue, 0, v1, v1, v1, v1); SetMovieColour(StatsTextBtn, red, green, blue, 0, v1, v1, v1, 1); SetMovieColour(StatisticsGroup.YourStats, red, green, blue, 0, v1, v1, v1, 1); SetMovieColour(SlaveMakerStatisticsGroup.HerStats, red, green, blue, 0, v1, v1, v1, 1); SetMovieColour(DiscussOrdinary, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(DiscussCongratulate, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(DiscussScold, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(NextEvent, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(NextVisit, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(Quitter, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(NextEnding, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(NextGeneral, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(Contests.NextContests, red / 2, green / 2, blue / 2, 0, v1, v1, v1, 1); SetMovieColour(HouseEvents.ExplorationTitle.MapView, red, green, blue, 0, v1, v1, v1, 1); SetMovieColour(ItemSalesman, red, green, blue, 0, 1, 1, 1, 1); SetMovieColour(Dealer, red, green, blue, 0, 1, 1, 1, 1); } function ResumeGame(startgame) { ServantPronoun = 'I'; ServantHimHer = 'her'; if (startgame != undefined) { ResumeStartLoad = startgame; } SlaveGirl.Initialise(); HideRobes(); UpdateEquipment(); UpdateSlaveMaker(); HideStatChangeIcons(); HideSlaveActions(); HideEndings(); HideImages(); HideBackgrounds(); UpdateRules(); Icons.MoonPhase.gotoAndStop(MoonPhaseDate * 2); if (LoveAccepted == 1) { Icons.LoveGauge.play(); } dmod = 1 - Difficulty / 7; if (Difficulty > 0) { MaxTentacleHarem += 1; } if (ShowSpecial == 1) { StatisticsGroup.SpecialStatLabel._visible = true; StatisticsGroup.SpecialStatValue._visible = true; StatisticsGroup.BarSpecial._visible = true; } SetButtonState(PlanningNightSex.BlowjobButton, false, true, 'Blow<font color=\'#0000FF\'>j</font>ob'); SetButtonState(PlanningNightSex.FuckButton, false, true, '<font color=\'#0000FF\'>F</font>uck'); SetButtonState(PlanningNightSex.TitsFuckButton, false, true, '<font color=\'#0000FF\'>T</font>its-Fuck'); SetButtonState(PlanningNightSex.LesbianButton, false, true, '<font color=\'#0000FF\'>L</font>esbian'); switch (Talent) { case 5: if (WeaponType == 3) { SetButtonState(PlanningNightOther.SpankButton, false, true, 'Whip Her <font color=\'#0000FF\' size=\'-4\'>S</font>'); } break; case 6: if (CheckBitFlag1(10)) { SetLesbianTraining(); } break; case 7: SMFaith = 2; break; case 9: SetButtonState(PlanningNightSex.LesbianButton, false, false); } if (SMFaith == 2) { RuinedTemple.SetAccessible(); SetEquipmentButtonState(4, false, false, '<font color=\'#0000FF\'>T<font color=\'#000000\'>oran\'s\rChalice'); SetEquipmentButtonState(2, false, false, 'Oroborus\rCandle <font color=\'#0000FF\' size=\'-4\'>H</font>'); SetButtonState(PlanningDay.AcolyteButton, false, false); SetButtonState(SMPlanningDay.PrayButton, false, true, '<font color=\'#0000FF\'>P<font color=\'#000000\'>ray to the\rOld Gods', 2); } Places.HomeRoom = 0; Places.HomeBath = 0; Places.HomeKitchen = 0; Places.HomeDungeon = 0; PlaceHouse.gotoAndStop(House); switch (House) { case 1: TakeAWalkMenu.CastleHouse._visible = true; break; case 2: TakeAWalkMenu.ForestHouse._visible = true; Forest.SetBitFlag(34); break; case 3: TakeAWalkMenu.FarmHouse._visible = true; break; case 4: FreeWalkPlace = 13; TakeAWalkMenu.ApartmentHouse._visible = true; break; case 5: TakeAWalkMenu.MansionHouse._visible = true; break; case 6: TakeAWalkMenu.TempleHouse._visible = true; break; case 7: TakeAWalkMenu.OnsenHouse._visible = true; } if (LoveAccepted != 0 && CheckBitFlag1(10)) { SetMovieColour(Icons.LoveGauge, 0, 0, 200); } VisitFortuneTeller.CountTrainedText.text = GirlsTrained; SlaveGirl.CurrentPath = CurrentPath; UpdateSlave(); ApplyColours(); if (ColoursOn) { if (Gender == 1) { ApplyColours(0, 0, 50); } else { if (Gender == 2) { ApplyColours(25, 0, 35); } else { ApplyColours(0, 35, 0); } } } if (ServantFilename == '' || ServantLoaded && oldfileServant == ServantFilename) { if (ResumeStartLoad == true) { ShowGirlsStory(); } else { ResumeShow(); } } else { if (ServantLoaded) { CurrentAssistant.unloadMovie(); } mclListenerServant.onLoadInit = ServantLoadDone; mclListenerServant.onLoadError = BadServantName; mcLoaderServant.addListener(mclListenerServant); mcLoaderServant.loadClip(ServantFilename, CurrentAssistant); } } function BadServantName(target_mc, errorCode, httpStatus) { var v1 = 'Assistant' + ServantFilename.substr(5); ServantFilename = v1; SlaveInformation.text = 'Could not load, trying ' + v1; mcLoaderServant.removeListener(mclListenerServant); mclListenerServant.onLoadInit = ServantLoadDone; mclListenerServant.onLoadError = BadServantNameShampoo; mcLoaderServant.addListener(mclListenerServant); mcLoaderServant.loadClip(ServantFilename, CurrentAssistant); } function BadServantNameShampoo(target_mc, errorCode, httpStatus) { ServantFilename = 'Slave-Shampoo.swf'; SlaveInformation.text = 'Failed to load assistant, loading Shampoo'; mcLoaderServant.removeListener(mclListenerServant); mclListenerServant.onLoadInit = ServantLoadDone; mclListenerServant.onLoadError = BadServantName; mcLoaderServant.addListener(mclListenerServant); mcLoaderServant.loadClip(ServantFilename, CurrentAssistant); } function ServantLoadDone() { ServantLoaded = true; if (ResumeStartLoad == true) { ShowGirlsStory(); } else { IntroPage = IntroPages; ResumeShow(); } } function UpdateIntroPage() { var v2 = '#'; do { var v1 = SlaveGirl.Introduction.WhiteText.text.indexOf(v2); if (v1 > -1) { SlaveGirl.Introduction.WhiteText.replaceText(v1, v1 + 1, ServantName); v1 = SlaveGirl.Introduction.BlackText.text.indexOf(v2); if (v1 > -1) { SlaveGirl.Introduction.BlackText.replaceText(v1, v1 + 1, ServantName); } } else { break; } } while (true); v2 = '^'; do { v1 = SlaveGirl.Introduction.WhiteText.text.indexOf(v2); if (v1 > -1) { SlaveGirl.Introduction.WhiteText.replaceText(v1, v1 + 1, ServantHimHer); v1 = SlaveGirl.Introduction.BlackText.text.indexOf(v2); if (v1 > -1) { SlaveGirl.Introduction.BlackText.replaceText(v1, v1 + 1, ServantHimHer); } } else { break; } } while (true); v2 = '~'; do { v1 = SlaveGirl.Introduction.WhiteText.text.indexOf(v2); if (v1 > -1) { SlaveGirl.Introduction.WhiteText.replaceText(v1, v1 + 1, ServantHeShe); v1 = SlaveGirl.Introduction.BlackText.text.indexOf(v2); if (v1 > -1) { SlaveGirl.Introduction.BlackText.replaceText(v1, v1 + 1, ServantHeShe); } } else { break; } } while (true); } function ShowGirlsStory() { CurrentAssistant.InitialiseAsAssistant(); SlaveGirl.InitialiseAssistant(); if (ServantGender != 1) { ServantHimHer = 'her'; ServantHeShe = 'she'; ServantHisHer = 'hers'; } else { ServantHimHer = 'him'; ServantHeShe = 'he'; ServantHisHer = 'his'; } SlaveSelection._visible = false; IntroLoadButton._visible = false; SlaveInformation._visible = false; mcLoader.removeListener(mclListener); GirlsStory._visible = true; if (IntroPages > 1 || SlaveGirl.IsTrainable() != false) { SlaveGirl.Introduction.gotoAndStop(1); SlaveGirl.Introduction._visible = true; UpdateIntroPage(); } else { SlaveGirl.Untrainable._visible = true; } } function ResumeShow() { Beep(); if (ServantLoaded) { CurrentAssistant.InitialiseAsAssistant(); } SlaveGirl.InitialiseAssistant(); if (ResumeStartLoad == true && IntroPage != IntroPages) { IntroPage += 1; if (SlaveGirl.IsTrainable() != false) { SlaveGirl.Introduction.gotoAndStop(IntroPage); UpdateIntroPage(); } else { SlaveGirl.Introduction._visible = false; SlaveGirl.Untrainable.gotoAndStop(IntroPage - 1); SlaveGirl.Untrainable._visible = true; } return undefined; } if (SlaveGirl.IsTrainable() == false) { GirlsStory._visible = false; DoRestart(false); return undefined; } SlaveGirl.Introduction._visible = false; GirlsStory._visible = false; IntroBackground._visible = false; BackgroundGrid._visible = true; MainBackground._visible = true; StopHints(); ShowStatistics(true); HideAssistant(); ShowAssistant(); UpdateSlave(); ShowRobes(); Icons._visible = true; GeneralTextField._visible = true; LargerTextField._visible = false; StatsTextBtn._visible = false; IntroTitle._visible = false; SlaveSelection._visible = false; SlaveMakerSelection._visible = false; SlaveMakerHousing._visible = false; IntroLoadButton._visible = false; SlaveInformation._visible = false; SystemButton._visible = true; MorningButton._visible = true; PlanningButton._visible = true; if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { Icons.DickgirlXFIcon._visible = true; } else { Icons.DickgirlXFIcon._visible = false; } Cheat._visible = true; if (ResumeStartLoad == true) { if (SlaveGirl.StartMessage() != true) { ServantSpeak('The training of this girl will last for ' + TrainingTime + ' days, and then she will be delivered to her owner.'); } } } function StartGame() { function DoDifficulty(val) { var v1 = 0; if (Difficulty == -1) { v1 = val - int(Math.random() * 3) - 2; } else { if (val != 0) { v1 = val + int(Math.random() * Difficulty) * 3 + Difficulty * 2; } else { v1 = val; } } if (v1 > 100) { v1 = 100; } if (v1 < 0) { v1 = 0; } return v1; } GirlLoaded = true; SlaveGirl.StartGame(); HideAssistant(); HideSlaveActions(); HideEndings(); HideRobes(); HideImages(); HideBackgrounds(); Beep(); DifficultyXXX = DoDifficulty(DifficultyXXX); DifficultyExhib = DoDifficulty(DifficultyExhib); DifficultySleazyBar = DoDifficulty(DifficultySleazyBar); DifficultyBrothel = DoDifficulty(DifficultyBrothel); DifficultyTouch = DoDifficulty(DifficultyTouch); DifficultyLick = DoDifficulty(DifficultyLick); DifficultyFuck = DoDifficulty(DifficultyFuck); DifficultyBlowjob = DoDifficulty(DifficultyBlowjob); DifficultyTitsFuck = DoDifficulty(DifficultyTitsFuck); DifficultyAnal = DoDifficulty(DifficultyAnal); DifficultyMasturbate = DoDifficulty(DifficultyMasturbate); DifficultyDildo = DoDifficulty(DifficultyDildo); DifficultyPlug = DoDifficulty(DifficultyPlug); DifficultyLesbian = DoDifficulty(DifficultyLesbian); DifficultyBondage = DoDifficulty(DifficultyBondage); DifficultyNaked = DoDifficulty(DifficultyNaked); DifficultyMaster = DoDifficulty(DifficultyMaster); DifficultyGangBang = DoDifficulty(DifficultyGangBang); DifficultyLendHer = DoDifficulty(DifficultyLendHer); DifficultyPonygirl = DoDifficulty(DifficultyPonygirl); DifficultySpank = DoDifficulty(DifficultySpank); DifficultyThreesome = DoDifficulty(DifficultyThreesome); TrainingTime -= (Difficulty - 1) * 3; if (Gender == 3) { DickgirlOn = 1; } if (Talent == 4) { TentaclesOn = 1; } UpdateFromGlobalData(); switch (Talent) { case 1: VarGold += 300; break; case 2: Loyalty -= 2; VarLove += 5; DifficultyBondage += 5; break; case 3: VarRefinement -= 5; break; case 4: Corruption += 10; RuinedTemple.SetAccessible(); break; case 5: HarnessOK = 1; VarLove = 0; DifficultyPonygirl -= 5; DifficultyBondage -= 5; SetButtonState(PlanningNightOther.SpankButton, false, true, 'Hurt Her <font color=\'#0000FF\' size=\'-4\'>S</font>', 18); break; case 6: DifficultyLesbian -= 8; DifficultyFuck += 2; DifficultyBlowjob += 2; DifficultyTitsFuck += 2; DifficultyAnal += 2; break; case 7: VarMorality -= 5; break; case 8: DifficultyBlowjob = 0; break; case 9: LeashOK = 1; DifficultyPonygirl -= 5; DifficultyBondage -= 5; break; case 10: RuinedTemple.SetAccessible(); } switch (House) { case 1: RopesOK = 1; break; case 2: VarSensibility += 4; break; case 3: RopesOK = 1; BitGagOK = 1; PonygirlsOn = true; PonygirlAware = 1; VarTemperament -= 3; VarRefinement -= 3; break; case 4: VarConversation += 4; FreeWalkPlace = 3; break; case 5: VarRefinement += 4; break; case 6: VarMorality += 4; break; case 7: DifficultyExhib -= 5; DifficultyNaked -= 5; } WearDress(0); ResumeGame(true); } function ShowStatistics(showhide) { if (SlaveGirlStatsShown) { StatisticsGroup._visible = showhide; SlaveMakerStatisticsGroup._visible = false; } else { StatisticsGroup._visible = false; SlaveMakerStatisticsGroup._visible = showhide; } LargerTextField._visible = !showhide; } function TestObedienceBase(Difficulty, Action) { if (Slutiness > 8 || Difficulty == 0) { return true; } Action = int(Action); var v1 = VarObedienceRounded; if (v1 < 0) { v1 == 0; } v1 -= int(VarIntelligenceRounded / 40); v1 -= int(VarMoralityRounded / 40); v1 -= int(VarTemperamentRounded / 40); v1 -= int(VarFatigue / 20) - 1; v1 += int(VarJoyRounded / 40); v1 += int(VarNymphomaniaRounded / 40); v1 += int(VarLovePoints / 40); var v4 = int(Math.random() * 2); Difficulty += v4; if (Action == 2 || Action == 3 || Action == 4 || Action == 5 || Action == 6 || Action == 15 || Action == 19) { if (v1 >= Difficulty || VarLibidoRounded >= Difficulty * 2) { return true; } } else { if ((Action == 7 || Action == 8) && Loyalty == 0) { if (v1 >= Difficulty || VarLibidoRounded >= Difficulty * 2 + 30) { return true; } } else { if (v1 >= Difficulty) { return true; } } } if (Action != undefined) { if (AnySex && Action < 100) { AnySex = false; return true; } if (AnyNonSex && Action > 99) { AnyNonSex = false; return true; } } return false; } function TestObedience(Difficulty, Action) { var v1 = SlaveGirl.TestObedience(Difficulty, Action); if (v1 == undefined) { return TestObedienceBase(Difficulty, Action); } return v1; } function ShowStatIcons(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Special) { if (VarCharisma < 100 && Charisma > 0) { StatisticsGroup.PlusCharisma._visible = true; } if (VarRefinement < 100 && Refinement > 0) { StatisticsGroup.PlusRefinement._visible = true; } if (VarSensibility < 100 && Sensibility > 0) { StatisticsGroup.PlusSensibility._visible = true; } if (VarIntelligence < 100 && Intelligence > 0) { StatisticsGroup.PlusIntelligence._visible = true; } if (VarMorality < 100 && Morality > 0) { StatisticsGroup.PlusMorality._visible = true; } if (VarConstitution < 100 && Constitution > 0) { StatisticsGroup.PlusConstitution._visible = true; } if (VarCooking < 100 && Cooking > 0) { StatisticsGroup.PlusCooking._visible = true; } if (VarCleaning < 100 && Cleaning > 0) { StatisticsGroup.PlusCleaning._visible = true; } if (VarConversation < 100 && Conversation > 0) { StatisticsGroup.PlusConversation._visible = true; } if (VarBlowJob < 100 && BlowJob > 0) { StatisticsGroup.PlusBlowjob._visible = true; } if (VarFuck < 100 && Fuck > 0) { StatisticsGroup.PlusFuck._visible = true; } if (VarTemperament < 100 && Temperament > 0) { StatisticsGroup.PlusTemperament._visible = true; } if (VarNymphomania < 100 && Nymphomania > 0) { StatisticsGroup.PlusNymphomania._visible = true; } if (VarObedience < 100 && Obedience > 0) { StatisticsGroup.PlusObedience._visible = true; } if (VarLibido < 100 && Libido > 0) { StatisticsGroup.PlusLibido._visible = true; } if (VarReputation < 100 && Reputation > 0) { StatisticsGroup.PlusReputation._visible = true; } if (VarJoy < 100 && Joy > 0) { StatisticsGroup.PlusJoy._visible = true; } if (VarFatigue > 0 && Fatigue > 0) { StatisticsGroup.PlusFatigue._visible = true; } if (Special != undefined && ShowSpecial == 1) { if (VarSpecial < 100 && Special > 0) { StatisticsGroup.PlusSpecial._visible = true; } } if (VarCharisma > 0 && Charisma < 0) { StatisticsGroup.MinusCharisma._visible = true; } if (VarRefinement > 0 && Refinement < 0) { StatisticsGroup.MinusRefinement._visible = true; } if (VarSensibility > 0 && Sensibility < 0) { StatisticsGroup.MinusSensibility._visible = true; } if (VarIntelligence > 0 && Intelligence < 0) { StatisticsGroup.MinusIntelligence._visible = true; } if (VarMorality > 0 && Morality < 0) { StatisticsGroup.MinusMorality._visible = true; } if (VarConstitution > 0 && Constitution < 0) { StatisticsGroup.MinusConstitution._visible = true; } if (VarCooking > 0 && Cooking < 0) { StatisticsGroup.MinusCooking._visible = true; } if (VarCleaning > 0 && Cleaning < 0) { StatisticsGroup.MinusCleaning._visible = true; } if (VarConversation > 0 && Conversation < 0) { StatisticsGroup.MinusConversation._visible = true; } if (VarTemperament > 0 && Temperament < 0) { StatisticsGroup.MinusTemperament._visible = true; } if (VarBlowJob > 0 && BlowJob < 0) { StatisticsGroup.MinusBlowjob._visible = true; } if (VarFuck > 0 && Fuck < 0) { StatisticsGroup.MinusFuck._visible = true; } if (VarNymphomania > 0 && Nymphomania < 0) { StatisticsGroup.MinusNymphomania._visible = true; } if (VarObedience > 0 && Obedience < 0) { StatisticsGroup.MinusObedience._visible = true; } if (VarLibido > 0 && Libido < 0) { StatisticsGroup.MinusLibido._visible = true; } if (VarReputation > 0 && Reputation < 0) { StatisticsGroup.MinusReputation._visible = true; } if (VarJoy > 0 && Joy < 0) { StatisticsGroup.MinusJoy._visible = true; } if (VarFatigue > 0 && Fatigue < 0) { StatisticsGroup.MinusFatigue._visible = true; } if (Special != undefined && ShowSpecial == 1) { if (VarSpecial > 0 && Special < 0) { StatisticsGroup.MinusSpecial._visible = true; } } } function UpdateFactors() { CharismaFactor = dmod; MoralityFactor = dmod; CookingFactor = dmod; CleaningFactor = dmod; ConversationFactor = dmod; FatigueFactor = dmod; BlowjobFactor = dmod; FuckFactor = dmod; NymphomaniaFactor = dmod; LibidoFactor = dmod; SensibilityFactor = dmod; RefinementFactor = dmod; IntelligenceFactor = dmod; ConstitutionFactor = dmod; TemperamentFactor = dmod; ObedienceFactor = dmod; SpecialFactor = dmod; if (Difficulty > -1) { SlaveGirl.ApplyDifficulty(Charisma, Morality, Cooking, Cleaning, Conversation, Fatigue); } } function Points(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special) { if (DickgirlChanged) { Icons.DickgirlXFIcon._visible = true; } UpdateFactors(); if (Gender == 2) { if (Lesbian) { Love *= 0.7; } else { Love /= 2; } } else { if (Gender == 3) { Love *= 0.75; } } switch (Talent) { case 2: Love *= 1.2; break; case 3: Refinement *= 0.8; break; case 6: if (Lesbian) { Fuck = 0; BlowJob = 0; } break; case 9: Cooking *= 0.9; Cleaning *= 0.9; Refinement *= 0.9; break; case 10: Morality *= 0.6; } if (House !== 4) { } else { Cooking *= 0.8; Cleaning *= 0.8; Love *= 1.2; } if (IsDressEasy()) { Fatigue *= 0.75; } ShowStatIcons(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Special); VarCharisma += Charisma * CharismaFactor; VarSensibility += Sensibility * SensibilityFactor; VarRefinement += Refinement * RefinementFactor; VarIntelligence += Intelligence * IntelligenceFactor; VarMorality += Morality * MoralityFactor; VarConstitution += Constitution * ConstitutionFactor; VarCooking += Cooking * CookingFactor; VarCleaning += Cleaning * CleaningFactor; VarConversation += Conversation * ConversationFactor; VarBlowJob += BlowJob * BlowjobFactor; VarFuck += Fuck * FuckFactor; VarTemperament += Temperament * TemperamentFactor; VarNymphomania += Nymphomania * NymphomaniaFactor; VarObedience += Obedience * ObedienceFactor; VarLibido += Libido * LibidoFactor; VarReputation += Reputation * dmod; VarFatigue += Fatigue * FatigueFactor; VarJoy += Joy * dmod; VarLovePoints += Love * dmod; if (Special != undefined) { VarSpecial += Special * SpecialFactor; } UpdateSlave(); } function PointsMod(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Joy, Special) { VarCharismaMod += Charisma; VarSensibilityMod += Sensibility; VarRefinementMod += Refinement; VarIntelligenceMod += Intelligence; VarMoralityMod += Morality; VarConstitutionMod += Constitution; VarCookingMod += Cooking; VarCleaningMod += Cleaning; VarConversationMod += Conversation; VarBlowJobMod += BlowJob; VarFuckMod += Fuck; VarTemperamentMod += Temperament; VarNymphomaniaMod += Nymphomania; VarObedienceMod += Obedience; VarLibidoMod += Libido; VarReputationMod += Reputation; VarJoyMod += Joy; if (Special != undefined) { VarSpecialMod += Special; } ShowStatIcons(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, 0, Joy, Special); UpdateSlave(); } function PointsExact(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special) { var v1 = dmod; var v2 = Difficulty; Difficulty = 0; Points(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special); Difficulty = v2; dmod = v1; } function NoTalentPoints(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special) { var v1 = Talent; Talent = 0; Points(Charisma, Sensibility, Refinement, Intelligence, Morality, Constitution, Cooking, Cleaning, Conversation, BlowJob, Fuck, Temperament, Nymphomania, Obedience, Libido, Reputation, Fatigue, Joy, Love, Special); Talent = v1; } function ChangeSpecial(special) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, special); } function ShowSpecialStat(slabel) { ShowSpecial = 1; StatisticsGroup.SpecialStatLabel.text = slabel; } function HideSpecialStat() { ShowSpecial = 0; } function ChangePath(p1, p2, p3) { Path1 += p1; Path2 += p2; Path3 += p3; } function UpdateCurrentPath() { if (Path3 > Path2 && Path3 > Path1) { MaxPath = 3; } else { if (Path2 > Path1 && Path2 > Path3) { MaxPath = 2; } else { if (Path1 > Path2 && Path1 > Path3) { MaxPath = 1; } else { MaxPath = 0; } } } CurrentPath = MaxPath; SlaveGirl.CurrentPath = CurrentPath; SlaveGirl.MaxPath = CurrentPath; } function UpdateDateAndItems(NumDays, free) { DoneWalk = 0; DoneVisit = 0; DoneEvent = 0; Day = true; SlaveDay = true; BadGirl = 0; DoneSpank = 0; AnySex = false; AnyNonSex = false; DoneScold = false; DickgirlChanged = false; GameDate += NumDays; MoonPhaseDate += NumDays; Elapsed = GameDate - (TrainingStart - 1); if (AntidoteDays > 0) { AntidoteDays -= NumDays; if (AntidoteDays < 0) { AntidoteDays = 0; } } if (VarProstitute >= 1000) { VarProstitute -= 100 * NumDays; if (VarProstitute < 1000) { VarProstitute = -1000; } } if (VarHighClassProstitute >= 1000) { VarHighClassProstitute -= 100 * NumDays; if (VarHighClassProstitute < 1000) { VarHighClassProstitute = -1000; } } if (CheckBitFlag1(27)) { SetLesbianTraining(); VarOldBlowJob = VarBlowJob; VarOldFuck = VarFuck; VarFuck = 1; VarBlowJob = TotalLick; UpdateSlave(); ClearBitFlag1(27); if (GeneralTextField.text == '') { ServantSpeak('She is now training as a lesbian slave, sex acts are altered'); } } if (MilkInfluence > 0) { MilkInfluence -= NumDays; if (MilkInfluence <= 0) { MilkInfluence = -2; } } if (GamanEffecting == 1) { VarFatigue += NumDays * 5; } if (BiyakuEffecting == 1) { VarLibido += NumDays * 20; VarNymphomania += NumDays * 20; } if (DrugDuration > 0 && NumDays > 1) { DrugDuration -= NumDays - 1; if (DrugDuration < 1) { DrugDuration = 1; } } if (HandcuffBraceletWorn == 1) { VarObedience += NumDays; } if (HaloWorn == 1) { if (House == 7) { if (SMFaith == 2) { VarLibido += NumDays / 2; } VarMorality = VarMorality + NumDays + NumDays / 2; } else { if (SMFaith == 2) { VarLibido += NumDays; } VarMorality = VarMorality + NumDays + NumDays; } } if (DemonicBraWorn == 1) { if (House == 7) { VarLibido += NumDays * 3; } else { VarLibido += NumDays * 5; } } if (HarnessWorn == 1) { VarLibido += NumDays * 2; } if (NippleRingsWorn == 1 || NippleChainWorn == 1) { VarLibido += NumDays; } if (SpikedBraceletWorn == 1) { VarTemperament += NumDays * 2; } if (DemonicPendantWorn == 1) { if (House == 7) { VarCharisma += NumDays; VarFuck += NumDays; } else { VarCharisma += NumDays * 2; VarFuck += NumDays; } } SlaveGirl.UpdateDateAndItems(NumDays); FirstTimeTodayBrothel = true; FirstTimeTodayAcolyte = true; FirstTimeTodaySleazyBar = true; FirstTimeTodayDiscuss = true; FirstTimeTodayBreak = true; FirstTimeTodayTheology = true; FirstTimeTodayRestaurant = true; FirstTimeTodayBar = true; FirstTimeTodaySciences = true; FirstTimeTodayDance = true; FirstTimeTodayRefinement = true; FirstTimeTodayWalk = true; FirstTimeTodayXXX = true; FirstTimeTodayCooking = true; FirstTimeTodayCleaning = true; FirstTimeTodayExpose = true; FirstTimeTodayMakeup = true; if (AngelsTearWorn == 1) { if (SMFaith == 2) { VarConstitution += NumDays; } else { VarSensibility += NumDays; } } if (FaeriesRingWorn == 1) { if (House == 7) { VarSensibility += NumDays / 2; VarCharisma += NumDays / 2; } else { VarSensibility += NumDays; VarCharisma += NumDays; } } var v3 = NumDays; if (VanityCaseOK == 0) { v3 += NumDays; } DurationHairCare -= v3; if (DurationHairCare < 0) { DurationHairCare = 0; } DurationFacialCare -= v3; if (DurationFacialCare < 0) { DurationFacialCare = 0; } DurationMakeupCare -= v3; if (DurationMakeupCare < 0) { DurationMakeupCare = 0; } if (free != true) { if (Talent !== 5) { } else { VarObedience += NumDays; VarLovePoints = 0; } switch (House) { case 1: VarJoy -= NumDays; break; case 2: VarFatigue += NumDays; VarCooking += NumDays / 2; VarCleaning += NumDays / 2; break; case 3: VarFatigue -= NumDays; VarTemperament -= NumDays; break; case 7: Money(20, true); } if (UsedAphrodisiac == 1) { if (DateLastAphrodisiac == GameDate - 1) { DaysUsedAphrodisiac += 1; } DateLastAphrodisiac = GameDate; if (DaysUsedAphrodisiac >= 5) { if (DaysUsedAphrodisiac == 5) { SetText(SlaveName + ' is acting more and more aroused all the time. The continual use of aphrodisiacs is making her horny all the time.'); MinLibido += 5; } else { MinLibido += 1; } } } else { DaysUsedAphrodisiac = 0; } if (RulesTalk == 0) { VarConversation -= NumDays; VarSensibility += NumDays; } if (RulesGoOut == 0) { VarJoy -= NumDays * 3; VarSensibility -= NumDays; VarReputation -= NumDays; VarConstitution -= NumDays; } else { if (RulesFuck == 1) { if (VarNymphomaniaRounded > 50) { libidoinc = NumDays * (int(Math.random() * int(Slutiness / 3) + 1) + 1); temp = int(Math.random() * 3); if (temp == 2) { VarFuck += libidoinc; libidoinc = 0; } temp = int(Math.random() * 3); if (temp == 2) { bjinc = NumDays * (int(Math.random() * int(Slutiness / 3) + 1) + 1); VarBlowJob += bjinc; libidoinc += bjinc; } VarLibido += libidoinc; } } } if (RulesTouchHerself == 1) { if (VarLibidoRounded > 60) { VarLibido -= NumDays; VarTemperament -= NumDays; } } else { VarLibido += NumDays / 2; } if (RulesWriteLetters == 1) { VarSensibility += NumDays; VarJoy -= NumDays; } if (RulesPocketMoney == 1 && VarGold > 1) { VarSensibility -= NumDays; VarJoy += NumDays; VarGold -= 2 * NumDays; } if (RulesPray == 1) { if (VarMoralityRounded > 50) { VarMorality += NumDays; VarLibido -= NumDays * 3; VarNymphomania -= NumDays * 3; } else { VarLibido -= NumDays; } } NumDaysWithoutFuck += NumDays; if (VibratorPantiesWorn == 1) { if (House != 7) { VarLibido += NumDaysWithoutFuck * 7; } else { VarLibido += NumDaysWithoutFuck * 4; } } } var v4 = 0; if (Talent == 4 || Talent == 10) { v4 = NumDays * 2; } if (Gender == 3) { SMPoints(0, 0, 0, 0, NumDays, 10 * NumDays, v4, 0); } else { SMPoints(0, 0, 0, 0, NumDays, 5 * NumDays, v4); } if (NumDays > 1 && DressWorn < 0) { DarkDressColour = false; WearDress(DressToWear); HideStatChangeIcons(); } if (TentaclesOn == 1) { var v2 = TentacleFrequency * 2; if (TentacleFrequency > 49) { v2 /= 5; } else { v2 /= 10; } if (MoonPhaseDate == 16) { v2 = 100; } else { if (MoonPhaseDate > 14 && MoonPhaseDate < 18) { v2 = TentacleFrequency * 2; } } if (Difficulty == -1) { v2 = 0; } if (int(Math.random() * 100) < v2) { if (RuinedTemple.IsAccessible()) { temp = int(Math.random() * 4); } else { temp = int(Math.random() * 3); } switch (temp) { case 0: TentacleHaunt = 1; break; case 1: TentacleHaunt = 4; break; case 2: TentacleHaunt = 6.1; break; case 3: TentacleHaunt = 8; } } else { TentacleHaunt = -1; } } else { TentacleHaunt = -1; } UpdateSlave(); } function LimitStatFraction(stat, mod) { var v1 = stat + mod; if (v1 > 100) { v1 = 100; } if (v1 < 0) { v1 = 0; } return v1; } function LimitStat(stat, mod) { var v1 = LimitStatFraction(stat, mod); return Math.ceil(v1); } function UpdateSlave() { if (MoonPhaseDate > 29) { MoonPhaseDate -= 29; } Icons.MoonPhase.gotoAndStop(MoonPhaseDate * 2); Elapsed = GameDate - (TrainingStart - 1); SlaveGirl.SlaveName = SlaveName; if (DickgirlXF > 0) { Icons.DickgirlXFIcon._visible = true; } if (DickgirlXF == 2 || DickgirlXF == 3 || DickgirlXF == 4) { colorTrans.rgb = 16776960; transXF.colorTransform = colorTrans; } if (AddictionLevel < 0) { AddictionLevel = 0; } if (VarCharisma < 0) { VarCharisma = 0; } if (VarSensibility < 0) { VarSensibility = 0; } if (VarRefinement < 0) { VarRefinement = 0; } if (VarIntelligence < 0) { VarIntelligence = 0; } if (VarConstitution < 0) { VarConstitution = 0; } if (VarConversation < 0) { VarConversation = 0; } if (VarTemperament < 0) { VarTemperament = 0; } if (VarReputation < 0) { VarReputation = 0; } if (VarFatigue < 0) { VarFatigue = 0; } if (VarJoy < 0) { VarJoy = 0; } if (VarSpecial < 0) { VarSpecial = 0; } if (VarObedience < 0) { VarObedience = 0; } if (VarLovePoints < 0) { VarLovePoints = 0; } if (MaxCharisma > 100) { MaxCharisma = 100; } if (VarCharisma > MaxCharisma) { VarCharisma = MaxCharisma; } if (VarSensibility > 100) { VarSensibility = 100; } if (MaxRefinement > 100) { MaxRefinement = 100; } if (VarRefinement > MaxRefinement) { VarRefinement = MaxRefinement; } if (MaxIntelligence > 100) { MaxIntelligence = 100; } if (VarIntelligence > MaxIntelligence) { VarIntelligence = MaxIntelligence; } if (VarConstitution > 100) { VarConstitution = 100; } if (MaxCooking > 100) { MaxCooking = 100; } if (VarCooking > MaxCooking) { VarCooking = MaxCooking; } if (MaxCleaning > 100) { MaxCleaning = 100; } if (VarCleaning > MaxCleaning) { VarCleaning = MaxCleaning; } if (MaxConversation > 100) { MaxConversation = 100; } if (VarConversation > MaxConversation) { VarConversation = MaxConversation; } if (MaxBlowJob > 100) { MaxBlowJob = 100; } if (VarBlowJob > MaxBlowJob) { VarBlowJob = MaxBlowJob; } if (MaxFuck > 100) { MaxFuck = 100; } if (VarFuck > MaxFuck) { VarFuck = MaxFuck; } if (VarTemperament > 100) { VarTemperament = 100; } if (VarNymphomania > 100) { VarNymphomania = 100; } if (MaxObedience > 100) { MaxObedience = 100; } if (VarObedience > MaxObedience) { VarObedience = MaxObedience; } if (MinLibido > 100) { MinLibido = 100; } if (MinLibido < 0) { MinLibido = 0; } if (VarLibido > 100) { VarLibido = 100; } if (VarReputation > 100) { VarReputation = 100; } if (VarFatigue > 100) { VarFatigue = 100; } if (VarJoy > 100) { VarJoy = 100; } if (MaxSpecial > 100) { MaxSpecial = 100; } if (VarSpecial > MaxSpecial) { VarSpecial = MaxSpecial; } if (VarGold < 0) { VarGold = 0; } if (VarMorality < 0) { VarMorality = 0; } if (MaxMorality > 100) { MaxMorality = 100; } if (VarMorality > MaxMorality) { VarMorality = MaxMorality; } if (VarLovePoints > 100) { VarLovePoints = 100; } if (DickgirlRate > 67) { DickgirlRate = 67; } if (Loyalty < 0) { Loyalty = 0; } BackgroundGrid.DateText.text = 'Date : ' + (1252 + int(GameDate / 400)) + '/' + GameDate % 400; BackgroundGrid.GoldText.text = VarGold; SlaveMakerStatisticsGroup.DebtText.text = SMDebt; VarFatigueRounded = Math.ceil(VarFatigue); StatisticsGroup.FatigueValue.text = VarFatigueRounded; VarCookingRounded = LimitStat(VarCooking, VarCookingMod); StatisticsGroup.CookingValue.text = VarCookingRounded; VarConversationRounded = LimitStat(VarConversation, VarConversationMod); StatisticsGroup.ConversationValue.text = VarConversationRounded; var v4 = VarCharisma; if (DurationHairCare > 0) { v4 += DurationHairCare; } if (DurationFacialCare > 0) { v4 += DurationFacialCare; } if (DurationMakeupCare > 0) { v4 += DurationMakeupCare; } VarCharismaRounded = LimitStat(v4, VarCharismaMod); StatisticsGroup.CharismaValue.text = VarCharismaRounded; VarObedienceRounded = LimitStat(VarObedience, VarObedienceMod); StatisticsGroup.ObedienceValue.text = VarObedienceRounded; VarReputationRounded = LimitStat(VarReputation, VarReputationMod); StatisticsGroup.ReputationValue.text = VarReputationRounded; VarRefinementRounded = LimitStat(VarRefinement, VarRefinementMod); StatisticsGroup.RefinementValue.text = VarRefinementRounded; VarSensibilityRounded = LimitStat(VarSensibility, VarSensibilityMod); StatisticsGroup.SensibilityValue.text = VarSensibilityRounded; VarIntelligenceRounded = LimitStat(VarIntelligence, VarIntelligenceMod); StatisticsGroup.IntelligenceValue.text = VarIntelligenceRounded; VarMoralityRounded = LimitStat(VarMorality, VarMoralityMod); VarConstitutionRounded = LimitStat(VarConstitution, VarConstitutionMod); StatisticsGroup.ConstitutionValue.text = VarConstitutionRounded; VarCleaningRounded = LimitStat(VarCleaning, VarCleaningMod); StatisticsGroup.CleaningValue.text = VarCleaningRounded; VarBlowJobRounded = LimitStat(VarBlowJob, VarBlowJobMod); StatisticsGroup.BlowJobValue.text = VarBlowJobRounded; VarFuckRounded = LimitStat(VarFuck, VarFuckMod); StatisticsGroup.FuckValue.text = VarFuckRounded; VarTemperamentRounded = LimitStat(VarTemperament, VarTemperamentMod); StatisticsGroup.TemperamentValue.text = VarTemperamentRounded; VarLibidoRounded = LimitStat(VarLibido, VarLibidoMod); VarNymphomaniaRounded = LimitStat(VarNymphomania, VarNymphomaniaMod); VarJoyRounded = LimitStat(VarJoy, VarJoyMod); StatisticsGroup.JoyValue.text = VarJoyRounded; VarSpecialRounded = LimitStat(VarSpecial, VarSpecialMod); StatisticsGroup.SpecialStatValue.text = VarSpecialRounded; Trust = _root.VarObedienceRounded + _root.VarLovePoints; SlaveGirl.Trust = Trust; var v3 = 0; var v2 = MinLibido; if (AngelsTearWorn == 1 && VarMoralityRounded < 50) { VarMorality = 50 - VarMoralityMod; } if (DoreiEffecting == 0) { if (NymphsTiaraWorn == 1) { v3 = 50; if (v2 < 50) { v2 = 50; } if (VarNymphomaniaRounded < 50) { VarNymphomania = 50 - VarNymphomaniaMod; } if (VarLibidoRounded < 50) { VarLibido = 50 - VarLibidoMod; } } else { if (VarNymphomania < 0) { VarNymphomania = 0; } } } else { v3 = 80; if (v2 < 80) { v2 = 80; } if (VarNymphomaniaRounded < 80) { VarNymphomania = 80 - VarNymphomaniaMod; } if (VarLibidoRounded < 80) { VarLibido = 80 - VarLibidoMod; } } if (DemonicPendantWorn == 1 && VarMoralityRounded > 25) { VarMorality = 25 - VarMoralityMod; } if (VarLibido + VarLibidoMod < MinLibido) { VarLibido = MinLibido - VarLibidoMod; } if (SlaveGirl.IsDickgirl() || DickgirlXF > 0) { if (v3 < 40) { v3 = 40; } if (VarNymphomaniaRounded < 40) { VarNymphomania = 40 - VarNymphomaniaMod; } } if (Loyalty == 0 && VarObedienceRounded < 5) { VarObedience = 5 - VarObedienceMod; } if (Slutiness > 5) { if (v3 < 50) { v3 = 50; } if (v2 < 30) { v2 = 30; } if (VarMoralityRounded > 50) { VarMorality = 50 - VarMoralityMod; } if (VarNymphomaniaRounded < 50) { VarNymphomania = 50 - VarNymphomaniaMod; } if (VarLibido + VarLibidoMod < 30) { VarLibido = 30 - (VarLibido + VarLibidoMod); } } temp = Math.floor(VarLovePoints / 12); if (temp > 6) { temp = 6; } if (LoveAccepted != 1) { Icons.LoveGauge.gotoAndStop(temp * 4 + 1); } Lesbian = CheckBitFlag1(10); SlaveGirl.Lesbian = Lesbian; if (DemonicBraWorn == 1 || DemonicPendantWorn == 1 || VibratorPantiesWorn == 1 || VarLibidoRounded > 25) { Aroused = true; } else { Aroused = false; } SlaveGirl.Aroused = Aroused; if (DressWorn == -1) { Naked = true; } else { Naked = false; } SlaveGirl.Naked = Naked; Catgirl = SlaveGirl.IsCatgirl(); if (Catgirl) { PlugType = 'cat tail'; } else { if (PonyTailWorn == 1) { PlugType = 'pony tail'; } else { PlugType = 'anal plug'; } } if (PlugInserted > 0) { if (Catgirl) { Icons.PlugIcon.gotoAndStop(3); } else { if (PonyTailWorn == 1) { Icons.PlugIcon.gotoAndStop(2); } else { Icons.PlugIcon.gotoAndStop(1); } } Icons.PlugIcon._visible = true; } else { Icons.PlugIcon._visible = false; } if (DonePonygirl == 1) { SetButtonState(PlanningDay.WalkButton, false, true, 'R<font color=\'#0000FF\'>i<font color=\'#000000\'>de Her'); SetButtonState(PlanningDay.MakeupButton, false, true, 'Groo<font color=\'#0000FF\'>m<font color=\'#000000\'>ing'); SetButtonState(PlanningDay.DanceButton, false, true, 'Pra<font color=\'#0000FF\'>n<font color=\'#000000\'>cing'); } else { SetButtonState(PlanningDay.WalkButton, false, true, '<font color=\'#0000FF\'>W<font color=\'#000000\'>alk'); SetButtonState(PlanningDay.MakeupButton, false, true, '<font color=\'#0000FF\'>M<font color=\'#000000\'>ake Up'); SetButtonState(PlanningDay.DanceButton, false, true, 'Da<font color=\'#0000FF\'>n<font color=\'#000000\'>cing'); } if (TotalBooks + TotalPoetry + TotalScrolls + TotalScripture + TotalKamasutra - int(TotalBooksRead / 2) - int(TotalPoetryRead / 2) - TotalScrollsRead - TotalScriptureRead - TotalKamasutraRead > 0) { SetButtonState(PlanningDay.ReadButton, false, true); SetButtonState(PlanningNightOther.ReadButton, false, true); } else { SetButtonState(PlanningDay.ReadButton, false, false); SetButtonState(PlanningNightOther.ReadButton, false, false); } VisitMenu.Barmaid._visible = VarBarmaid != 0; VisitMenu.Maid._visible = VarMaid != 0; VisitMenu.Count._visible = VarCount != 0; VisitMenu.Lord._visible = VarLord != 0; VisitMenu.Knight._visible = VarKnight != 0; VisitMenu.LadyFarun._visible = VarLadyFarun != 0; TakeAWalkMenu.AstridHome._visible = Forest.CheckBitFlag(34); TakeAWalkMenu.Ruins._visible = RuinedTemple.IsAccessible(); TakeAWalkMenu.SeerHome._visible = CheckBitFlag1(14); if (Talent == 3) { if (NumMerchant > 0) { TakeAWalkMenu.SalesmanHome._visible = true; } if (NumDealer > 0) { TakeAWalkMenu.DealerHome._visible = true; } } if (DoneMaster == 1) { SGMasterName = Master; } else { SGMasterName = SlaveMakerName; } if (ServantGender != 1) { ServantHimHer = 'her'; ServantHeShe = 'she'; ServantHisHer = 'hers'; } else { ServantHimHer = 'him'; ServantHeShe = 'he'; ServantHisHer = 'his'; } if (ShowSlaveShop == 1) { PlanningDay.SlaveShopLabel._visible = true; PlanningDay.SlaveShop._visible = true; } else { PlanningDay.SlaveShopLabel._visible = false; PlanningDay.SlaveShop._visible = false; } UpdateSupervision(); SlaveGirl.UpdateSlave(); if (Path3 > Path2 && Path3 > Path1) { MaxPath = 3; } else { if (Path2 > Path1 && Path2 > Path3) { MaxPath = 2; } else { if (Path1 > Path2 && Path1 > Path3) { MaxPath = 1; } else { MaxPath = 0; } } } SlaveGirl.MaxPath = MaxPath; VarLibidoRounded = LimitStat(VarLibido, VarLibidoMod); StatisticsGroup.LibidoValue.text = VarLibidoRounded; VarNymphomaniaRounded = LimitStat(VarNymphomania, VarNymphomaniaMod); StatisticsGroup.NymphomaniaValue.text = VarNymphomaniaRounded; VarMoralityRounded = LimitStat(VarMorality, VarMoralityMod); StatisticsGroup.MoralityValue.text = VarMoralityRounded; VarSpecialRounded = LimitStat(VarSpecial, VarSpecialMod); StatisticsGroup.SpecialStatValue.text = VarSpecialRounded; StatisticsGroup.BarCharisma._width = VarCharismaRounded; StatisticsGroup.BarSensibility._width = VarSensibilityRounded; StatisticsGroup.BarRefinement._width = VarRefinementRounded; StatisticsGroup.BarIntelligence._width = VarIntelligenceRounded; StatisticsGroup.BarMorality._width = VarMoralityRounded; StatisticsGroup.BarConstitution._width = VarConstitutionRounded; StatisticsGroup.BarCooking._width = VarCookingRounded; StatisticsGroup.BarCleaning._width = VarCleaningRounded; StatisticsGroup.BarConversation._width = VarConversationRounded; StatisticsGroup.BarBlowJob._width = VarBlowJobRounded; StatisticsGroup.BarFuck._width = VarFuckRounded; StatisticsGroup.BarTemperament._width = VarTemperamentRounded; StatisticsGroup.BarObedience._width = VarObedienceRounded; StatisticsGroup.BarNymphomania._width = VarNymphomaniaRounded; StatisticsGroup.BarLibido._width = VarLibidoRounded; StatisticsGroup.BarFatigue._width = VarFatigue; StatisticsGroup.BarJoy._width = VarJoyRounded; StatisticsGroup.BarReputation._width = VarReputationRounded; StatisticsGroup.BarSpecial._width = VarSpecialRounded; StatisticsGroup.BarNymphomaniaMinimum._width = v3; StatisticsGroup.BarLibidoMinimum._width = v2; StatisticsGroup.FuckLimit._visible = VarFuckRounded < 100 && VarFuck == MaxFuck && MaxFuck < 100; StatisticsGroup.BlowjobLimit._visible = VarBlowJobRounded < 100 && VarBlowJob == MaxBlowJob && MaxBlowJob < 100; StatisticsGroup.ObedienceLimit._visible = VarObedienceRounded < 100 && VarObedience == MaxObedience && MaxObedience < 100; StatisticsGroup.CharismaLimit._visible = VarCharismaRounded < 100 && VarCharisma == MaxCharisma && MaxCharisma < 100; StatisticsGroup.RefinementLimit._visible = VarRefinementRounded < 100 && VarRefinement == MaxRefinement && MaxRefinement < 100; StatisticsGroup.IntelligenceLimit._visible = VarIntelligenceRounded < 100 && VarIntelligence == MaxIntelligence && MaxIntelligence < 100; StatisticsGroup.MoralityLimit._visible = VarMoralityRounded < 100 && VarMorality == MaxMorality && MaxMorality < 100; StatisticsGroup.CookingLimit._visible = VarCookingRounded < 100 && VarCooking == MaxCooking && MaxCooking < 100; StatisticsGroup.CleaningLimit._visible = VarCleaningRounded < 100 && VarCleaning == MaxCleaning && MaxCleaning < 100; StatisticsGroup.ConversationLimit._visible = VarConversationRounded < 100 && VarConversation == MaxConversation && MaxConversation < 100; StatisticsGroup.SpecialStatLabel._visible = ShowSpecial == 1; StatisticsGroup.BarSpecial._visible = ShowSpecial == 1; StatisticsGroup.SpecialStatValue._visible = ShowSpecial == 1; } function HideStatChangeIcons() { StatisticsGroup.PlusCharisma._visible = false; StatisticsGroup.PlusSensibility._visible = false; StatisticsGroup.PlusRefinement._visible = false; StatisticsGroup.PlusIntelligence._visible = false; StatisticsGroup.PlusMorality._visible = false; StatisticsGroup.PlusConstitution._visible = false; StatisticsGroup.PlusCooking._visible = false; StatisticsGroup.PlusCleaning._visible = false; StatisticsGroup.PlusConversation._visible = false; StatisticsGroup.PlusBlowjob._visible = false; StatisticsGroup.PlusFuck._visible = false; StatisticsGroup.PlusTemperament._visible = false; StatisticsGroup.PlusNymphomania._visible = false; StatisticsGroup.PlusObedience._visible = false; StatisticsGroup.PlusLibido._visible = false; StatisticsGroup.PlusFatigue._visible = false; StatisticsGroup.PlusJoy._visible = false; StatisticsGroup.PlusReputation._visible = false; StatisticsGroup.PlusSpecial._visible = false; SlaveMakerStatisticsGroup.PlusConversation._visible = false; SlaveMakerStatisticsGroup.PlusConstitution._visible = false; SlaveMakerStatisticsGroup.PlusAttack._visible = false; SlaveMakerStatisticsGroup.PlusDefence._visible = false; SlaveMakerStatisticsGroup.PlusRenown._visible = false; SlaveMakerStatisticsGroup.PlusCorruption._visible = false; SlaveMakerStatisticsGroup.PlusLibido._visible = false; StatisticsGroup.MinusCharisma._visible = false; StatisticsGroup.MinusSensibility._visible = false; StatisticsGroup.MinusRefinement._visible = false; StatisticsGroup.MinusIntelligence._visible = false; StatisticsGroup.MinusMorality._visible = false; StatisticsGroup.MinusConstitution._visible = false; StatisticsGroup.MinusCooking._visible = false; StatisticsGroup.MinusCleaning._visible = false; StatisticsGroup.MinusConversation._visible = false; StatisticsGroup.MinusTemperament._visible = false; StatisticsGroup.MinusBlowjob._visible = false; StatisticsGroup.MinusFuck._visible = false; StatisticsGroup.MinusNymphomania._visible = false; StatisticsGroup.MinusObedience._visible = false; StatisticsGroup.MinusLibido._visible = false; StatisticsGroup.MinusFatigue._visible = false; StatisticsGroup.MinusJoy._visible = false; StatisticsGroup.MinusReputation._visible = false; StatisticsGroup.MinusSpecial._visible = false; SlaveMakerStatisticsGroup.MinusConversation._visible = false; SlaveMakerStatisticsGroup.MinusConstitution._visible = false; SlaveMakerStatisticsGroup.MinusAttack._visible = false; SlaveMakerStatisticsGroup.MinusDefence._visible = false; SlaveMakerStatisticsGroup.MinusRenown._visible = false; SlaveMakerStatisticsGroup.MinusCorruption._visible = false; SlaveMakerStatisticsGroup.MinusLibido._visible = false; } function SMPoints(attack, defence, arousaldef, constitution, conversation, libido, corrupt, renown) { SMLibido = LimitStatFraction(SMLibido, libido * dmod); if (Gender == 3) { if (SMLibido > 80) { SMLibido = 80; } } else { if (SMLibido > 70) { SMLibido = 70; } } SMConstitution = LimitStatFraction(SMConstitution, constitution * dmod); SMAttack = LimitStatFraction(SMAttack, attack * dmod); SMDefence = LimitStatFraction(SMDefence, defence * dmod); SMConversation = LimitStatFraction(SMConversation, conversation * dmod); ArousalDefence = LimitStatFraction(ArousalDefence, arousaldef * dmod); if (renown != undefined) { SMReputation = LimitStatFraction(SMReputation, renown * dmod); } Corruption += corrupt; if (Corruption > 100) { Corruption = 100; } if (Corruption < 0) { Corruption = 0; } if (SMAttack < 100 && attack > 0) { SlaveMakerStatisticsGroup.PlusAttack._visible = true; } if (SMDefence < 100 && defence > 0) { SlaveMakerStatisticsGroup.PlusDefence._visible = true; } if (Corruption < 100 && corrupt > 0) { SlaveMakerStatisticsGroup.PlusCorruption._visible = true; } if (SMConstitution < 100 && constitution > 0) { SlaveMakerStatisticsGroup.PlusConstitution._visible = true; } if (SMConversation < 100 && conversation > 0) { SlaveMakerStatisticsGroup.PlusConversation._visible = true; } if (SMReputation < 100 && renown > 0 && renown != undefined) { SlaveMakerStatisticsGroup.PlusRenown._visible = true; } if (SMLibido < 100 && libido > 0) { SlaveMakerStatisticsGroup.PlusLibido._visible = true; } if (SMAttack > 0 && attack < 0) { SlaveMakerStatisticsGroup.MinusAttack._visible = true; } if (SMDefence > 0 && defence < 0) { SlaveMakerStatisticsGroup.MinusDefence._visible = true; } if (Corruption > 0 && corrupt < 0) { SlaveMakerStatisticsGroup.MinusCorruption._visible = true; } if (SMConstitution > 0 && constitution < 0) { SlaveMakerStatisticsGroup.MinusConstitution._visible = true; } if (SMConversation > 0 && conversation < 0) { SlaveMakerStatisticsGroup.MinusConversation._visible = true; } if (SMReputation > 0 && renown < 0 && renown != undefined) { SlaveMakerStatisticsGroup.MinusRenown._visible = true; } if (SMLibido > 0 && libido < 0) { SlaveMakerStatisticsGroup.MinusLibido._visible = true; } UpdateSlaveMaker(); } function UpdateSlaveMaker() { SMPlanningDay.PrayButton._visible = SMFaith != 3; if (SMFaith == 2) { StatisticsGroup.MoralityLabel.text = 'Faith :'; } else { if (SMFaith == 3) { StatisticsGroup.MoralityLabel.text = 'Ethics :'; } } SlaveMakerStatisticsGroup.ConstitutionValue.text = Math.ceil(SMConstitution); SlaveMakerStatisticsGroup.BarConstitution._width = Math.ceil(SMConstitution); SlaveMakerStatisticsGroup.LibidoValue.text = Math.ceil(SMLibido); SlaveMakerStatisticsGroup.BarLibido._width = Math.ceil(SMLibido); SlaveMakerStatisticsGroup.CorruptionValue.text = Math.ceil(Corruption); SlaveMakerStatisticsGroup.BarCorruption._width = Math.ceil(Corruption); SlaveMakerStatisticsGroup.RenownValue.text = Math.ceil(SMReputation); SlaveMakerStatisticsGroup.BarRenown._width = Math.ceil(SMReputation); SlaveMakerStatisticsGroup.AttackValue.text = Math.ceil(SMAttack); SlaveMakerStatisticsGroup.BarAttack._width = Math.ceil(SMAttack); SlaveMakerStatisticsGroup.DefenceValue.text = Math.ceil(SMDefence); SlaveMakerStatisticsGroup.BarDefence._width = Math.ceil(SMDefence); SlaveMakerStatisticsGroup.ConversationValue.text = Math.ceil(SMConversation); SlaveMakerStatisticsGroup.BarConversation._width = Math.ceil(SMConversation); if (Gender != 1) { SlaveMakerHimHer = 'her'; SlaveMakerHeShe = 'she'; } else { SlaveMakerHimHer = 'him'; SlaveMakerHeShe = 'he'; } if (Gender == 1) { SetButtonState(PlanningNightOther.MasterButton, false, true, '<font color=\'#0000FF\'>M</font>aster'); Master = 'Master'; } else { Master = 'Mistress'; SetButtonState(PlanningNightOther.MasterButton, false, true, '<font color=\'#0000FF\'>M</font>istress'); } } function ChangeSlaveMakerGender(gnd) { Gender = gnd; UpdateSlaveMaker(); UpdateSlave(); ApplyColours(); if (ColoursOn) { if (Gender == 1) { ApplyColours(0, 0, 50); } else { if (Gender == 2) { ApplyColours(25, 0, 35); } else { ApplyColours(0, 35, 0); } } } } function ShowStatHint(stat) { if (MorningButton._visible == false) { return undefined; } if (!IsHints()) { return undefined; } if (SlaveGirl.ShowStatHint(stat) == true) { return undefined; } switch (stat) { case 0: SetText('<b>Charisma:</b> a measure of her beauty and style, including her appearance, figure, make-up, hair-style and dress.\r\rShe is <b>'); if (VarCharismaRounded < 30) { AddText('average looking'); } else { if (VarCharismaRounded < 50) { AddText('pretty'); } else { if (VarCharismaRounded < 80) { AddText('beautiful'); } else { AddText('stunning'); } } } AddText('</b>\nwhich is ' + VarCharismaRounded + ' in a range of 0 to 100.'); break; case 1: SetText('<b>Sensibility:</b> Her heart, her emotional range and feelings for others.\r\rShe is <b>'); if (VarSensibilityRounded < 30) { AddText('self centered'); } else { if (VarSensibilityRounded < 50) { AddText('considerate of others'); } else { if (VarSensibilityRounded < 80) { AddText('caring'); } else { AddText('wonderfully compassionate'); } } } AddText('</b>\nwhich is ' + VarSensibilityRounded + ' in a range of 0 to 100.'); break; case 2: SetText('<b>Refinement:</b> Her ability to deal with high society. Also a measure of her elegance and knowledge of etiquette.\r\rShe is <b>'); if (VarRefinementRounded < 25) { AddText('coarse and common'); } else { if (VarRefinementRounded < 60) { AddText('well acted and stylish'); } else { if (VarRefinementRounded < 80) { AddText('as elegant as a noble woman'); } else { AddText('a lady to grace any court'); } } } AddText('</b>\nwhich is ' + VarRefinementRounded + ' in a range of 0 to 100.'); break; case 3: SetText('<b>Intelligence:</b> A measure of her intelligence and education.\r\rShe is <b>'); if (VarIntelligenceRounded < 25) { AddText('uneducated'); } else { if (VarIntelligenceRounded < 50) { AddText('well schooled'); } else { if (VarIntelligenceRounded < 80) { AddText('highly educated'); } else { AddText('brilliant and understands most topics'); } } } AddText('</b>\nwhich is ' + VarIntelligenceRounded + ' in a range of 0 to 100.'); break; case 4: if (SMFaith == 2) { SetText('<b>Faith:</b> Her moral code and ethics and also how she follows the old gods and their ways.\r\rShe is <b>'); } else { if (SMFaith == 3) { SetText('<b>Ethics:</b> Her moral code and ethics.\r\rShe is <b>'); } else { SetText('<b>Morality:</b> Her moral code and ethics and also how she follows the gods and their strictures.\r\rShe is <b>'); } } if (VarMoralityRounded < 25) { AddText('immoral'); } else { if (VarMoralityRounded < 50) { if (SMFaith == 3) { AddText('trying to be ethical'); } else { AddText('trying to follow the gods'); } } else { if (VarMoralityRounded < 80) { AddText('faithful and true'); } else { AddText('saintly'); } } } AddText('</b>\nwhich is ' + VarMoralityRounded + ' in a range of 0 to 100.'); break; case 5: SetText('<b>Constitution:</b> Her fitness, endurance and strength.\r\rShe is <b>'); if (VarConstitutionRounded < 30) { AddText('unfit'); } else { if (VarConstitutionRounded < 60) { AddText('fit and healthy'); } else { if (VarConstitutionRounded < 90) { AddText('athletic'); } else { AddText('highly strong and fit'); } } } AddText('</b>\nwhich is ' + VarConstitutionRounded + ' in a range of 0 to 100.'); break; case 6: SetText('<b>Cooking:</b> Her skills as a cook and her knowledge of recipes.\r\rShe is <b>'); if (VarCookingRounded < 25) { AddText('a poor cook'); } else { if (VarCookingRounded < 60) { AddText('a fine cook'); } else { if (VarCookingRounded < 80) { AddText('able to work for any restaurant'); } else { AddText('skilled enough to prepare meals at Court'); } } } AddText('</b>\nwhich is ' + VarCookingRounded + ' in a range of 0 to 100.'); break; case 7: SetText('<b>Cleaning:</b> Her skills in cleaning and general house and garden maintenance.\r\rShe is <b>'); if (VarCleaningRounded < 25) { AddText('unskilled'); } else { if (VarCleaningRounded < 60) { AddText('able to clean the house and garden'); } else { if (VarCleaningRounded < 80) { AddText('a manager of staff and is an expert in all areas'); } else { AddText('capable of the most complex tasks and can organise a large staff'); } } } AddText('</b>\nwhich is ' + VarCleaningRounded + ' in a range of 0 to 100.'); break; case 8: SetText('<b>Conversation:</b> Her conversational skills, her ability to hold an entertaining conversation.\r\rShe is <b>'); if (VarConversationRounded < 30) { AddText('awkward and finds it difficult to talk clearly'); } else { if (VarConversationRounded < 60) { AddText('a pleasant person to talk with'); } else { if (VarConversationRounded < 80) { AddText('erudite and persuasive'); } else { AddText('a master of conversation, able to convince anyone of her point in a discussion'); } } } AddText('</b>\nwhich is ' + VarConversationRounded + ' in a range of 0 to 100.'); break; case 9: if (Lesbian) { SetText('<b>Cunnilingus:</b> Her skill at licking pussy and orally bringing a woman to orgasm.\r\rShe is <b>'); if (VarBlowJobRounded < 30) { AddText('awkward and inexperienced, seldom makes the woman orgasm'); } else { if (VarBlowJobRounded < 60) { AddText('fairly skilled, can usually make her cum'); } else { if (VarBlowJobRounded < 80) { AddText('has a talented tongue and can always make her orgasm'); } else { AddText('amazing, can always bring her to orgasm after orgasm'); } } } } else { SetText('<b>Blowjobs:</b> To be coarse, her skill at sucking cocks.\r\rShe is <b>'); if (VarBlowJobRounded < 30) { AddText('awkward and finding it difficult to make the cock cum. She dislikes it'); } else { if (VarBlowJobRounded < 60) { AddText('a skilled cock-sucker, she does not mind it'); } else { if (VarBlowJobRounded < 80) { AddText('an expert cock-sucker who enjoys it'); } else { AddText('loves to suck cocks and drink cum. She could teach at the XXX School'); } } } } AddText('</b>\nwhich is ' + VarBlowJobRounded + ' in a range of 0 to 100.'); if (MaxBlowJob < 100) { AddText('\r\rThere is only so much you can learn by experience. She will need education to achieve her potential.'); } break; case 10: if (Lesbian) { SetText('<b>Tribadism and Strap-On Fucking:</b> Her skill at tribadism, or pussy grinding, or where two woman rub their pussies together. Also her skill at being fucked by another woman with a strap-on dildo, both vaginally and anally.\r\rShe is <b>'); if (VarFuckRounded < 30) { AddText('awkward and inexperienced'); } else { if (VarFuckRounded < 60) { AddText('experienced and knows how to help her partner'); } else { if (VarFuckRounded < 80) { AddText('talented and knows how to help her partner orgasm too'); } else { AddText('a masterful lover, knowing almost all techniques. She could teach at the XXX School'); } } } } else { SetText('<b>Fucking:</b> Her experience and knowledge of being vaginally and anally fucked. Also includes her ability to please her partner while being fucked.\r\rShe is <b>'); if (VarFuckRounded == 0) { AddText('probably a virgin'); } else { if (VarFuckRounded < 30) { AddText('inexperienced, tending to lay back and be fucked'); } else { if (VarFuckRounded < 60) { AddText('experienced and knows how to help her partner'); } else { if (VarFuckRounded < 80) { AddText('as talented as a whore, skilled in all positions'); } else { AddText('a masterful lover, knowing almost all techniques. She could teach at the XXX School'); } } } } } AddText('</b>\nwhich is ' + VarFuckRounded + ' in a range of 0 to 100.'); if (MaxFuck < 100) { AddText('\r\rThere is only so much you can learn by experience. She will need education to achieve her potential.'); } break; case 11: SetText('<b>Temperament:</b> A measure of her independence, will and determination.\r\rShe is <b>'); if (VarTemperamentRounded < 20) { AddText('submissive'); } else { if (VarTemperamentRounded < 60) { AddText('determined and able to make up her own mind'); } else { AddText('independent and strong willed'); } } AddText('</b>\nwhich is ' + VarTemperamentRounded + ' in a range of 0 to 100.'); break; case 12: SetText('<b>Nymphomania:</b> Her need, her want for sex, even when not aroused.\r\rShe is <b>'); if (VarNymphomaniaRounded < 20) { AddText('of normal sexual drive'); } else { if (VarNymphomaniaRounded < 50) { AddText('of above average drive, and will have sex anytime'); } else { if (VarNymphomaniaRounded < 80) { AddText('usually thinking about sex, and actively seeks it'); } else { AddText('always wanting sex and it is her main hobby'); } } } AddText('</b>\nwhich is ' + VarNymphomaniaRounded + ' in a range of 0 to 100.'); break; case 13: SetText('<b>Obedience:</b> How much she will obey orders from her owner.\r\rShe is <b>'); if (VarObedienceRounded < 20) { AddText('rebellious'); } else { if (VarObedienceRounded < 50) { AddText('somewhat obedient'); } else { if (VarObedienceRounded < 80) { AddText('loyal and obedient'); } else { AddText('completely trustworthy and will do anything ordered'); } } } AddText('</b>\nwhich is ' + VarObedienceRounded + ' in a range of 0 to 100.'); if (MaxBlowJob < 100) { AddText('\r\rShe has a rebellious streak that will prevent true loyalty. You will need to correct this.'); } break; case 14: SetText('<b>Lust:</b> Her current arousal, her desire and lust for sex.\r\rShe is <b>'); if (VarLibidoRounded < 25 && !Aroused) { AddText('satisfied with no desire for sex'); } else { if (VarLibidoRounded < 50) { AddText('stimulated and wanting sex'); } else { if (VarLibidoRounded < 80) { AddText('highly aroused, needing sex'); } else { AddText('lusting for sex'); } } } AddText('</b>\nwhich is ' + VarLibidoRounded + ' in a range of 0 to 100.'); if (MinLibido > 0) { AddText('\r\rShe has been affected by some aphrodisiac or substance and her arousal <i>never</i> recedes, she is <i>never</i> truly satisfied.'); } break; case 15: SetText('<b>Tiredness:</b> Her exhaustion and tiredness\r\rShe is <b>'); if (VarFatigueRounded < 30) { AddText('fine'); } else { if (VarFatigueRounded < 60) { AddText('tired'); } else { if (VarFatigueRounded < 80) { AddText('very tired'); } else { AddText('exhausted'); } } } AddText('</b>\nwhich is ' + VarFatigueRounded + ' in a range of 0 to 100.'); break; case 16: SetText('<b>Joy:</b> Her acceptance and pleasure of being a slave.\r\rShe is <b>'); if (VarJoyRounded < 25) { AddText('unhappy'); } else { if (VarJoyRounded < 50) { AddText('accepting her lot of being a slave'); } else { if (VarJoyRounded < 80) { AddText('happy as a slave'); } else { AddText('joyous and wants to be a slave'); } } } AddText('</b>\nwhich is ' + VarJoyRounded + ' in a range of 0 to 100.'); break; case 17: SetText('<b>Reputation:</b> How well known she is throughout the city, particularly in noble circles.\r\rShe is <b>'); if (VarReputationRounded < 25) { AddText('unknown'); } else { if (VarReputationRounded < 50) { AddText('sometimes recognised'); } else { if (VarReputationRounded < 80) { AddText('well known and respected as a slave'); } else { AddText('famous'); } } } AddText('</b>\nwhich is ' + VarReputationRounded + ' in a range of 0 to 100.'); } } function ShowSlaveMakerStatHint(stat) { if (MorningButton._visible == false) { return undefined; } switch (stat) { case 0: SetText('<b>Conversation:</b> Your conversational skills, your ability to manipulate and convince.\r\rYou are <b>'); if (SMConversation < 30) { AddText('awkward and finds it difficult to talk clearly'); } else { if (SMConversation < 60) { AddText('a pleasant person to talk with'); } else { if (SMConversation < 80) { AddText('erudite and persuasive'); } else { AddText('a master of conversation, able to convince anyone of your point in a discussion'); } } } AddText('</b>\nwhich is ' + SMConversation + ' in a range of 0 to 100.'); break; case 1: SetText('<b>Constitution:</b> Your fitness, endurance and strength, and health in combat.\r\rYou are <b>'); if (SMConstitution < 30) { AddText('unfit'); } else { if (SMConstitution < 60) { AddText('fit and healthy'); } else { if (SMConstitution < 90) { AddText('athletic'); } else { AddText('highly strong and fit'); } } } AddText('</b>\nwhich is ' + SMConstitution + ' in a range of 0 to 100.'); break; case 2: SetText('<b>Renown:</b> How well known and respected you are as a Slave Maker.\r\rYou are <b>'); if (SMReputation < 25) { AddText('unknown'); } else { if (SMReputation < 50) { AddText('sometimes recognised'); } else { if (SMReputation < 80) { AddText('well known and respected as a Slave Maker'); } else { AddText('famous'); } } } AddText('</b>\nwhich is ' + SMReputation + ' in a range of 0 to 100.'); break; case 3: SetText('<b>Attack:</b> Your skill in combat in attacking and damaging your opponent.\r\rYou are <b>'); if (SMAttack < 25) { AddText('unskilled'); } else { if (SMAttack < 50) { AddText('average'); } else { if (SMAttack < 80) { AddText('expert'); } else { AddText('one of the best'); } } } AddText('</b>\nwhich is ' + SMAttack + ' in a range of 0 to 100.'); break; case 4: SetText('<b>Defence:</b> Your skill in combat in avoiding attacks.\r\rYou are <b>'); if (SMDefence < 25) { AddText('unskilled'); } else { if (SMDefence < 50) { AddText('average'); } else { if (SMDefence < 80) { AddText('expert'); } else { AddText('one of the best'); } } } AddText('</b>\nwhich is ' + SMDefence + ' in a range of 0 to 100.'); break; case 5: SetText('<b>Lust:</b> your current lust and desire for sex.\r\rYou are <b>'); if (SMLibido < 40) { AddText('satisfied with a normal desire for sex'); } else { if (SMLibido < 60) { AddText('stimulated and wanting sex'); } else { AddText('lusting for sex'); } } AddText('</b>\nwhich is ' + SMLibido + ' in a range of 0 to 100.'); break; case 6: SetText('<b>Corruption:</b> How much you have followed the evil in your heart.\r\rYou are <b>'); if (Corruption < 25) { AddText('normal'); } else { if (Corruption < 80) { AddText('corrupt'); } else { AddText('lost in darkness'); } } AddText('</b>\nwhich is ' + Corruption + ' in a range of 0 to 100.'); } } function CalcExperience(total, desc) { ++SlaveActs; if (total < 0 || total > 0.01) { ++SlaveExperience; } else { SlaveActArray.push(new String(desc)); } } function ExperienceTotal(drugs) { SlaveActs = 0; SlaveExperience = 0; var v1 = 0; while (v1 < SlaveActArray.length) { delete SlaveActArray[v1]; ++v1; } delete SlaveActArray; SlaveActArray = new Array(); CalcExperience(TotalContestBeauty, 'compete in a Beauty contest'); CalcExperience(TotalContestCourt, 'compete in a Court behaviour contest'); CalcExperience(TotalContestHousework, 'compete in a Housework contest'); if (PonygirlAware >= 0) { CalcExperience(TotalContestPonygirl, 'run a Ponygirl race'); } CalcExperience(TotalContestXXX, 'compete in a XXX contest'); CalcExperience(TotalNothing, 'do nothing'); if (Lesbian) { CalcExperience(TotalBlowjob, 'do cunnilingus'); CalcExperience(TotalFuck, 'be strap-on fucked'); CalcExperience(TotalLesbian, 'do a tribadism'); CalcExperience(TotalTitsFuck, 'masturbate you'); } else { CalcExperience(TotalBlowjob, 'give a blowjob'); CalcExperience(TotalFuck, 'be fucked'); if (Talent != 10) { CalcExperience(TotalLesbian, 'do a lesbian act'); } CalcExperience(TotalTitsFuck, 'do a tits-fuck'); CalcExperience(TotalCumBath, 'be covered in cum'); } CalcExperience(TotalAnal, 'be fucked in the ass'); CalcExperience(TotalMasturbate, 'masturbate for you'); CalcExperience(TotalNaked, 'be naked for the day'); CalcExperience(TotalGangBang, 'be gang-banged'); CalcExperience(TotalTouch, 'be touched and caressed'); CalcExperience(TotalLick, 'be licked'); CalcExperience(TotalDildo, 'use a dildo'); CalcExperience(TotalPlug, 'wear an anal plug for the day'); CalcExperience(TotalLendHer, 'be loaned to another Master or Mistress'); if (BDSMOn == 1) { CalcExperience(TotalBondage, 'be bound helpless'); } CalcExperience(TotalSpank, 'be spanked'); CalcExperience(TotalThreesome, 'be in a threesome'); CalcExperience(Total69, 'do a 69'); CalcExperience(TotalGroup, 'be in an orgy'); CalcExperience(TotalKiss, 'be kissed'); CalcExperience(TotalStripTease, 'do a strip-tease'); CalcExperience(TotalXXX, 'study XXX'); CalcExperience(TotalSleazyBar, 'work in a sleazy bar'); CalcExperience(TotalSleazyBarService, 'please a customer in a sleazy bar'); CalcExperience(TotalExhib, 'expose myself to people'); CalcExperience(TotalBrothel, 'work in a brothel'); if (TentaclesOn == 1) { CalcExperience(TotalTentacle, 'encounter a tentacle monster'); } if (PonygirlAware >= 0) { CalcExperience(TotalPony, 'become a ponygirl'); } CalcExperience(TotalAcolyte, 'work as an acolyte'); CalcExperience(TotalRestaurant, 'work in a restaurant'); CalcExperience(TotalBar, 'work in a bar'); CalcExperience(TotalWalk, 'go for a walk'); CalcExperience(TotalCooking, 'train my cooking'); CalcExperience(TotalCleaning, 'train my cleaning skills'); CalcExperience(TotalBreak, 'take a break'); CalcExperience(TotalDance, 'study dancing'); CalcExperience(TotalSciences, 'study sciences'); CalcExperience(TotalRefinement, 'study refined things'); CalcExperience(TotalTheology, 'study the teachings of the gods'); CalcExperience(TotalDiscuss, 'talk with you'); CalcExperience(TotalMakeUp, 'train my make-up'); CalcExperience(TotalWalkForest, 'walk in the forest'); CalcExperience(TotalWalkFarm, 'walk to the farm'); CalcExperience(TotalWalkPalace, 'walk in the palace'); CalcExperience(TotalWalkSlums, 'walk in the slums'); CalcExperience(TotalWalkLake, 'walk around the lake'); CalcExperience(TotalWalkTownCenter, 'walk through the town center'); CalcExperience(TotalWalkDocks, 'walk in the docks'); CalcExperience(TotalWalkRuins, 'walk in the ruined temple'); CalcExperience(CheckBitFlag1(37) ? 1 : 0, 'attend a party with Miss N. and help her'); CalcExperience(CheckBitFlag1(39) ? 1 : 0, 'attend a party with Miss N. and do other activities'); CalcExperience(CheckBitFlag1(38) ? 1 : 0, 'attend a party with Lady Okyanu and help her'); CalcExperience(CheckBitFlag1(40) ? 1 : 0, 'attend a party with Lady Okyanu but look around on my own'); CalcExperience(TotalVisitAstrid, 'to visit a lady I have heard of who lives in the forest'); CalcExperience(TotalMakeupCare, 'have my make-up done in a salon'); CalcExperience(TotalHairCare, 'have my hair done in a salon'); CalcExperience(TotalSkinCare, 'have my skin done in a salon'); CalcExperience(TotalTeddyBear, 'own a teddy bear'); CalcExperience(TotalGames, 'own a game to play with'); CalcExperience(TotalJewelry, 'own some jewellery'); CalcExperience(TotalDoll, 'own a cute doll'); CalcExperience(TotalBooksRead, 'read a general knowledge book'); CalcExperience(TotalPoetryRead, 'read a poetry book'); CalcExperience(TotalScriptureRead, 'read some religious scripture'); CalcExperience(TotalKamasutraRead, 'read from the kamasutra'); CalcExperience(FairyMeeting, 'meet a faerie'); CalcExperience(PiercingsType, 'be pierced'); CalcExperience(LingerieOK, 'own some lingerie'); CalcExperience(BunnySuitOK, 'own a bunny suit'); if (Milkable) { CalcExperience(TotalMilked, 'do something, sometimes I dream about my breasts and a barn'); } CalcExperience(DoneMaster, 'call you ' + Master); CalcExperience(VarProstitute, 'visit the prostitute'); CalcExperience(VarHighClassProstitute, 'visit the High Class Prostitute'); CalcExperience(VarBarmaid, 'visit a barmaid'); CalcExperience(VarMaid, 'visit a maid'); CalcExperience(VarMerchant, 'visit the merchant'); CalcExperience(VarKnight, 'visit the Knight'); CalcExperience(VarCount, 'visit the Count'); CalcExperience(VarLord, 'visit the Lord of Mioya'); CalcExperience(VarLadyFarun, 'visit Lady Farun'); CalcExperience(VarIdol, 'talk to some people. I once heard about a very popular girl somewhere'); CalcExperience(BountyHunterFlag, 'meet a bounty hunter'); CalcExperience(PuppyGirlFlag, 'meet a puppy girl'); CalcExperience(VarSchoolGirl, 'talk to some people. There is a girl at school I once saw but never met'); if (DickgirlOn == 1) { CalcExperience(PotionsUsed[0], 'drink the Priapus Draft'); } CalcExperience(PotionsUsed[1], 'drink that uninhibitory potion'); CalcExperience(PotionsUsed[2], 'take an aphrodisiac'); CalcExperience(PotionsUsed[3], 'take the soothing draft'); CalcExperience(PotionsUsed[4], 'take the energy drink'); if (drugs) { CalcExperience(PotionsUsed[5], 'take Dorei'); CalcExperience(PotionsUsed[6], 'take Zodai'); CalcExperience(PotionsUsed[7], 'take Gaman'); CalcExperience(PotionsUsed[8], 'take Biyaku'); CalcExperience(PotionsUsed[9], 'take Ishinai'); } CalcExperience(PotionsUsed[10], 'take the Lust Draft'); CalcExperience(PotionsUsed[11], 'take a pill that I heard a man offers'); CalcExperience(PotionsUsed[12], 'taste the Nymph\'s Tears'); return Math.ceil(100 * (SlaveExperience / SlaveActs)); } function GetMissingExperience() { if (ExperienceTotal() == 100) { return ''; } return SlaveActArray[int(Math.random() * SlaveActArray.length)]; } function StatHintRollout() { if (MorningButton._visible) { HideHints(); } } function StatHintRollover() { ShowStatHint(this.currStat); } function SMStatHintRollover() { ShowSlaveMakerStatHint(this.currStat); } function DoTakeAWalk() { if (DoneWalk == 0 || DoneWalk == FreeWalkPlace) { HideRobes(); HideMainButtons(); Quitter._visible = true; ServantSpeak('Choose where you want me to take ' + SlaveName + ' for a walk. Who knows who she will meet or what she will find?'); TakeAWalkMenu._visible = true; ActionsMenu._visible = false; } else { ServantSpeak(SlaveName + ' has already taken a walk today.'); } Beep(); } function DoWalk(place, specific) { if (ColoursOn) { ShowMovie(OnTopOverlayWhite, false, 0); } TakeAWalkMenu._visible = false; DoneWalk = DoneWalk + place + 10; UseGeneric = int(Math.random() * 6) == 1; HideRobes(); SetText(''); HideStatChangeIcons(); Quitter._visible = false; NextVisit._visible = true; HideAssistant(); NumEvent = 0; Beep(); if (specific != undefined) { NumEvent = specific; } else { temp = int(Math.random() * 100); } switch (place) { case 1: DoWalkForest(); break; case 2: DoWalkLake(); break; case 3: DoWalkTownCenter(); break; case 4: DoWalkSlums(); break; case 5: DoWalkPalace(); break; case 6: DoWalkDocks(); return undefined; case 6.1: DoWalkDocksPort(); break; case 6.2: DoWalkDocksSlavePens(); break; case 7: DoWalkFarm(); break; case 8: DoWalkRuins(); } SlaveGirl.AfterWalk(place); } function DoWalkDocks() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 280, 240); } if (!DocksSlavePens.IsAccessible()) { DoWalkDocksPort(); } else { Backgrounds.ShowDocks(); if (DocksSlavePens.GetEventCount() < 3) { AddText('<b>The Docks</b>\rThere are two main areas\r - wharves where ships are loaded and maintained\r - slave holding pens where slaves are briefly held for shipping'); AskHerQuestions(4000, 4003, 0, 0, 'Port area', 'Slave Pens', '', '', 'Where will she visit?'); } else { AddText('<b>The Docks</b>\rThere are three main areas\r - wharves where ships are loaded and maintained\r - main pens for holding and some training, a large majority of the area\r - secure area for exotic and dangerous slaves'); AskHerQuestions(4000, 4003, 4004, 0, 'Port area', 'Main Slave Pens', 'Secure Slave Pens', '', 'Where will she visit?'); } } } function DoWalkDocksPort() { Backgrounds.ShowDocks(); if (EvilMineFlag > 0) { DoEvilMineEvent(4101); SlaveGirl.AfterWalk(6.1); return undefined; } ++TotalWalkDocks; if (TentacleHaunt == 6.1 || TentacleHaunt == 16.1 || TentacleHaunt == 26.1) { if (TentacleHaunt == 16.1) { AddText('While ' + SlaveName + ' starts walking through the docks she smells a foul odour. In a small alley nearby she sees a horribly slain thing. She sees torn tentacles and ripped apart flesh. Terrible burns and claw marks cover the flesh. She looks away in fright and hurries on.\r\r'); TentacleHaunt = -1; } else { if (TentacleHaunt == 26.1) { DemonHelpAndRape(' is walking along a dark alley towards a wharf'); SlaveGirl.AfterWalk(6.1); return undefined; } else { NumEvent = -1; } } } if (NumEvent == 0) { if (!DocksSlavePens.IsAccessible() && (VarObedienceRounded > 49 || VarReputationRounded > 49)) { ShowAssistant(); AddText('Some guards approach ' + ServantName + ' and ' + SlaveName + ' near the Slave Pens and are closely questioned. '); if (VarReputationRounded > 49) { AddText('One of the guards says he has heard of ' + SlaveName + ' as an excellent slave'); } else { AddText('The guards are impressed with ' + SlaveName + '\'s obedience to ' + ServantName); } AddText('.\r\rThe guards tell ' + ServantName + ' that they are granted access to the slave pens if they so desire.\r\r'); DocksSlavePens.SetAccessible(); DoEvent(4002); return undefined; } if (!DocksPort.IsVisited()) { DocksPort.SetVisited(); NumEvent = 10; } else { if (BountyHunterFlag > 0 && BountyHunterFlag < 5 && temp < 30) { NumEvent = 5; } else { if (PonygirlsOn && TestObedience(DifficultyBondage - 5) && BitGagOK == 0 && temp < 60) { NumEvent = 2; } else { if (temp < 10 || !PonygirlsOn && temp < 22) { NumEvent = 1; } else { if (temp < 22) { NumEvent = 2; } else { if (temp < 27) { NumEvent = 3; } else { if (temp < 40) { NumEvent = 4; } else { if (temp < 55) { NumEvent = 5; } else { if (temp < 65) { NumEvent = 6; } else { if (temp < 80) { NumEvent = 7; } else { if (temp < 90) { NumEvent = 8; } else { NumEvent = VarLibidoRounded > 25 ? 9 : 9.5; } } } } } } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkDocksPort(NumEvent) == true) { SlaveGirl.AfterWalk(6.1); return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case -1: if (AssistantTentacleSex) { ShowAssistant(2); } else { ShowAssistant(4); } TentacleChoice = int(Math.random() * 4); Tentacles.TentacleSex(6); break; case 1: ShowMovie(PeopleMerchant, true, 1); switch (int(Math.random() * 3)) { case 0: OldNumEvent = 1.1; Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0); AddText(SlaveName + ' meets a merchant who needs help to unload a box from a ship. She helps and gets some good exercise and the merchant pays her a small reward.'); break; case 1: OldNumEvent = 1.2; AddText(SlaveName + ' meets a merchant who is having trouble convincing some sailors that a crate is his. ' + ServantName + ' whispers that they probably want a bribe.\r\r' + SlaveName + ' steps over '); if (Naked) { AddText('and the sailors are very distracted by her nakedness. She easily convinces them to leave after accidentally rubbing up against some of them.'); } else { if (Aroused || SlaveAttitude == 1) { Points(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0); AddText('re-adjusting her clothes to emphasise her breasts. She flirts with the sailors and lures them to one side. The merchant loads to box while she flirts and touches the sailors. Once the merchant has finished she blows the sailors a kiss and leaves with the merchant. The merchant pays her a small reward for the help.'); } else { if (SlaveAttitude > 1) { Points(0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); AddText('and lectures the sailors about the evils of corruption and bribery. The sailors seem amused and quite attracted to her. While she lectures the merchant loads the box and once finished she joins him and they leave. The merchant insists on paying her a small reward for the help.'); } else { Points(0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText('and talks with the sailors and with the merchants help demonstrates his ownership of the crate. The sailors give-up and leave them. The merchant pays her a small reward for the help.'); } } } break; case 2: OldNumEvent = 1.3; Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0); AddText(SlaveName + ' meets a merchant who is desperately looking for a crate. He cannot find where it is stored and no-one else is helping. She helps him to find it and then load it, getting some good exercise and the merchant pays her a small reward.'); } AddText('\r\r' + ServantName); if (SlaveLikeServant) { Money(50); AddText(' pockets most of the money but allows ' + SlaveName + ' some coins to spend on a snack.'); } else { Money(55); AddText(' pockets all the money.'); } break; case 2: if (TestObedience(DifficultyBondage - 5) && BitGagOK == 0) { OldNumEvent = 2.1; ShowMovie(PeoplePonyMistress, false, 0); PonygirlAware = 1; DifficultyBondage -= 2; EndingPonygirl.gotoAndStop(1); EndingPonygirl._visible = true; Points(0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a strange Mistress and her slave, the slave is pulling a cart like she is a pony!\r\r' + SlaveName + ' talks to the Mistress and is told about ponygirls, a form of submissive bondage where you become your Mistresses or Master\'s \'mount\' and live a much simpler and pleasurable life.\r\rA ponygirl dresses in a particular way and the Mistress gives her a bit-gag, a gag in the form of a pony\'s bit. She also is told there are other items around for a full outfit.'); BitGagOK = 1; SlaveGirl.AfterPonyMistress(); if (BitGagOK == 1) { ShowItem(ObjectBitGag, true); } UpdateEquipment(); } else { ShowAssistant(); DifficultyBondage -= 1; temp = int(Math.random() * 2) + 1; EventPonygirlMeeting.gotoAndStop(temp); if (DonePonygirl == 1) { AddText(SlaveName + ' meets a fellow'); } else { AddText(SlaveName + ' meets a'); } if (PonygirlAware > 0) { AddText(' ponygirl'); } else { AddText(' slave'); } if (temp == 1) { AddText(' tightly bound waiting for her Master or Mistress, tied by a chain between her nipples and clit.' + SlaveName); } else { AddText(' with a saddle, waiting for her Master or Mistress, wearing little more than her harness. ' + SlaveName); } switch (int(Math.random() * 3)) { case 0: OldNumEvent = 2.2; AddText(' removes her gag and the slave talks lovingly of her Master and the wonderful discipline and pleasure he gives her. The slave is quite aroused and ' + SlaveName + ' sees a large dildo inserted in her pussy.'); if (Aroused || SlaveAttitude == 1) { AddText('\r\rWhen they finish talking the slave asks ' + SlaveName + ' to replace her gag. ' + SlaveName + ' does so, sensuously rubbing her breasts on the girl\'s back as she does so. As the gag is replaced the girl convulses in orgasm.'); } else { AddText('\r\rThe slave\'s hips had been slowly moving during their talk and as ' + SlaveName + ' leaves her she notices the girl shudder and orgasm.'); } break; case 1: OldNumEvent = 2.3; AddText(' removes her gag and they have a long discussion about submission and discipline.'); if (Aroused || SlaveAttitude == 1) { AddText('\r\rWhen they finish talking the slave asks ' + SlaveName + ' to replace her gag. ' + SlaveName + ' does so, sensuously rubbing her breasts on the girl\'s back as she does so.'); } break; case 2: OldNumEvent = 2.4; AddText(' removes her gag and the slave with some fear of her Mistress who torments and whips her. She is brought to the edge of orgasm over and over and then whipped or abandoned.\r\rNightly she has to lick her Mistress to many orgasms but is never allowed one herself. She has to always wear a dildo on her pussy and an anal plug but they are not arranged to allow her to orgasm, just to torment.\r\rShe begs ' + SlaveName + ' to adjust her dildo to allow her to orgasm. '); if (Aroused || SlaveAttitude == 1) { AddText('Without thinking '); } AddText(SlaveName + ' does so and the girl\'s hips move faster and faster and she quickly orgasms, crying and gasping. ' + SlaveName + ' wishes she could free her but ' + ServantName + ' is watching so she leaves the girl to her orgasm.'); } AddText('\r\r' + SlaveName + ' leaves feeling oddly aroused.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 1, 3, 0, 0, 0, 0, 0); EventPonygirlMeeting._visible = true; } break; case 3: ShowAssistant(); Money(-100); temp = int(Math.random() * 3); if (Naked) { temp = int(Math.random() * 2); } switch (temp) { case 0: OldNumEvent = 3.1; ShowAssistant(5); AddText(SlaveName + ' jumps out of the way of a wagon being poorly driven and hits ' + ServantName + ' knocking ' + ServantHimHer + ' into the water. ' + ServantName + ' climbs out dripping wet buy has lost ' + ServantHimHer + ' money.\r\r'); if (SlaveLikeServant) { AddText(SlaveName + ' apologises and ' + ServantName + ' says it was not her fault and they continue on their way.'); } else { AddText(ServantName + ' yells at ' + SlaveName + ' for her clumsiness, ignoring the wagon and it\'s fault. They continue on their way ' + ServantName + ' still angry.'); } break; case 1: OldNumEvent = 3.2; AddText(SlaveName + ' is bumped by a passing sailor and falls into a small stall, breaking a number of fragile items.\r\r' + ServantName); if (SlaveLikeServant) { AddText(' apologises to the stall-holder, as does ' + SlaveName + '. ' + ServantName + ' then pays for the broken items and they continue on their way.'); } else { AddText(' angrily slaps ' + SlaveName + ' and orders her to apologise. ' + SlaveName + ' does and then ' + ServantName + ' then pays for the broken items and they continue on their way.'); } break; case 2: OldNumEvent = 3.3; ShowMovie(PeopleTailor, false, 2); AddText(SlaveName + ' tears her dress on a packing crate and ' + ServantName + ' finds a tailor to do a repair. The tailor charges a large fee to do the immediate job, but does a fine, invisible repair. '); if (!SlaveLikeServant) { AddText('\r\r' + ServantName + ' scolds ' + SlaveName + ' for her clumsiness.'); } } break; case 4: ShowMovie(PeopleLesbian, true, 3); Points(0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0); if (!CheckBitFlag1(21)) { switch (int(Math.random() * 2)) { case 0: Money(20); AddText(SlaveName + ' meets a cute girl and helps her run some errands and is given some money for her time.\r\rIn an alley the girl says she is aroused and asks ' + SlaveName + ' to lick her to orgasm, promising to do the same in return.\r'); break; case 1: AddText(SlaveName + ' meets a cute girl who happily chats with ' + SlaveName + ', ignoring ' + ServantName + '. They have a pleasant chat, the girl often making suggestive remarks.\r\rIn a small booth of a tavern the girl says she is very attracted to ' + SlaveName + ' and very turned on. She asks ' + SlaveName + ' to lick her to orgasm, promising to return the favour.\r'); } SetBitFlag1(21); } else { Money(20); AddText(SlaveName + ' meets again the cute lesbian girl who buys her some gifts and give her some money. She then takes her into a tavern into a private booth, ignoring completely ' + ServantName + '\r\rIn the booth the girl says finds ' + SlaveName + ' to be the most desirable woman she has ever met. She asks ' + SlaveName + ' to lick her to orgasm, promising to do the same in return to ' + SlaveName + '.'); } if (Slutiness > 6) { AddText(SlaveName + ' is eager to help.\r\r'); CuteGirlLesbianSex(); } else { AddText('\rDoes she pleasure the girl?'); DoYesNoEvent(9); } break; case 5: HideBackgrounds(); MeetBountyHunter(6); break; case 6: MeetNun(' visits the small temple at the dockside and talks about faith with a nun.'); break; case 7: ShowMovie(PeopleCook, false, 0); if (SoundsOn) { Sounds.SoundMuffledCry.start(0, 1); } Points(0, 0, -1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a ships cook who takes her aboard his ship and gives her some instructions on meal preparation at sea.'); if (TotalBondage < 1) { OldNumEvent = 7.1; AddText('\r\r' + SlaveName + ' hears some soft moans from an adjacent room. He comments with a smile that his assistant is a little tied up at the moment.'); } else { ClipRopes._visible = true; if (SilkenRopesOK == 0) { ClipRopes.gotoAndStop(1); AddText('\r\r' + SlaveName + ' hears some soft moans from an adjacent room and looks in. She sees a girl tied up and sensuously writhing obviously in pleasure. The cook explains she is being punished and gives ' + SlaveName + ' some silk ropes for her pleasure.'); SilkenRopesOK = 1; OldNumEvent = 7.2; } else { OldNumEvent = 7.3; HideBackgrounds(); ShowOverlay(16706770); ClipRopes.gotoAndStop(2); AddText('\r\r' + SlaveName + ' sees the cook\'s assistant is still being \'punished\' as the girl writhes working her crotch rope and she quickly orgasms.'); } } break; case 8: ShowMovie(PeopleSailor, false, 0); Points(0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); switch (int(Math.random() * 3)) { case 0: OldNumEvent = 8.1; AddText(SlaveName + ' meets a sailor and talks of many things including the world, work on ship and more.'); break; case 1: OldNumEvent = 8.199999999999999; AddText(SlaveName + ' meets a sailor they have a talk about life at sea and some of the dockside procedures.'); break; case 2: OldNumEvent = 8.300000000000001; AddText(SlaveName + ' meets a sailor and they talk about distant and exotic lands, the people and creatures that live there.'); } break; case 9: case 9.5: ShowMovie(PeopleSailor, false, 0); Money(50); if (NumEvent == 9) { Points(1, 0, -1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0); AddText(SlaveName + ' helps some sailors amid ribald comments. She rather enjoys it and after a handsome sailor propositions her. '); if (Slutiness > 6) { AddText(SlaveName + ' is eager to fuck.\r\r'); SailorSex(); } else { AddText('\r\rWill she have sex with him?'); DoYesNoEvent(10); } } else { Points(1, 0, -1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0); if (Naked) { AddText(SlaveName + ' helps some sailors amid ribald comments. She rather enjoys it, although they often leer at her naked body.'); } else { AddText(SlaveName + ' helps some sailors amid ribald comments. She rather enjoys it.'); } } break; case 10: Points(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ShowAssistant(); WalkSlavePens.gotoAndStop(1); WalkSlavePens._visible = true; if (DocksSlavePens.IsAccessible()) { AddText(SlaveName + ' sees some naked girls secured in the stocks. It appears they are slaves newly arrived awaiting their Slave Maker. ' + ServantName + ' explains they will be moved into the slave pens to await their Master. As they watch some guards release the girls from the stocks and move them into the pens.\r\rThe pens are a secure area of the Docks that only trusted people are allowed into. We are allowed access to that area.'); } else { AddText(SlaveName + ' sees some naked girls secured in the stocks. It appears they are slaves newly arrived awaiting their Slave Maker. ' + ServantName + ' explains they will be moved into the slave pens to await their Master. As they watch some guards release the girls from the stocks and move them into the pens.\r\rThe pens are a secure area of the Docks that only trusted people are allowed into. ' + ServantName + ' says that ' + SlaveName + ' will probably not be granted access until she proves her trustworthiness more.'); } } SlaveGirl.AfterWalk(6.1); } function DoSlavePensGeneralEvent() { HideBackgrounds(); ++TotalWalkDocks; if (DocksSlavePens.GetEventCount() < 3 || int(Math.random() * 3) < 2) { DoSlavePensGeneralEventSequential(NumEvent); } else { if (NumEvent > 100) { DoSlavePensGeneralEventSequential(NumEvent - 100); } else { DoSlavePensGeneralEventRandom(NumEvent); } } SlaveGirl.AfterWalk(6.2); } function DoSlavePensGeneralEventSequential(NumEvent) { Backgrounds.ShowSlavePens(); if (EvilMineFlag > 0) { DoEvilMineEvent(4102); return undefined; } if (NumEvent == 0) { NumEvent = DocksSlavePens.GetEvent(); } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkDocksSlavePens(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case 0: DoSlavePensGeneralEventRandom(0); break; case 1: DocksSlavePens.EventDone(1); ShowAssistant(); WalkSlavePens.gotoAndStop(2); WalkSlavePens._visible = true; Points(0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, -1, 1, 0, 0, -3, 0, 0); AddText(ServantName + ' leads ' + SlaveName + ' through the slave pens and ' + ServantHeShe + ' points out the holding areas and the secure area for exotic or dangerous slaves. '); AddText(ServantName + ' shows how some slaves are actually trained here. After all skilled Slave Makers are uncommon and there is a great demand for slaves. Some slaves just receive a basic tuition before their owners take possession of them. Most of these unfortunate girls just become simple sex toys or menial servants.\r\rWhile ' + ServantHeShe + ' is talking ' + SlaveName + ' sees a girl bound and gagged nearby. She is naked and has rather large breasts. A man is standing by her and is fondling her breasts roughly. ' + SlaveName + ' overhears part of his conversation and it appears he is only interested in her breasts, size being everything. He comments it is good she is gagged, he only wants her tits and ass...\r\r' + SlaveName + ' is upset at this callous statement and as the man leaves briefly she steps up to talk to the poor slave.'); AskHerQuestions(4020, 4021, 0, 0, 'Comfort her, slave life\'s good', 'Promise to help when she can', '', '', 'What does ' + SlaveName + ' talk about?'); break; case 2: ShowAssistant(); if (DocksSlavePens.IsEventDone(2)) { OldNumEvent = 2.2; DocksSlavePens.NoRepeatEvent(2); DocksSlavePens.SetEventCount(3); WalkSlavePens.gotoAndStop(4); AddText(SlaveName + ' hears a girl call out her name again and sees a single green haired girl locked in a cell. It is the same cell as the girl from the other day, Sareth, but she is missing. This appears to be her cell mate.\r\r' + SlaveName + ' walks up and speaks to her, the girl says how '); if (!DocksSlavePens.CheckBitFlag(30)) { Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0); if (DocksSlavePens.CheckBitFlag(31)) { ShowItem(ObjectTeddyBear, false); } AddText('a strange, creepy man took possession of her friend Sareth earlier today. The man was heavily robed and foul smelling and dragged her roughly away. '); if (DocksSlavePens.CheckBitFlag(31)) { AddText(' Sareth dropped the teddy bear as she was dragged away. She was very happy to have received it and I am sure she misses it. '); } AddText('Sareth was crying as she was dragged away.\r\rThe girl asks if ' + SlaveName + ' can please help her. She heard a man nearby speaks in disgusted terms about the ruins.\r\r'); if (TakeAWalkMenu.Ruins._visible == true) { AddText(SlaveName + ' says she has heard her Slave Maker talk of some ruins and commits herself to finding the girl.'); } else { AddText(SlaveName + ' sadly says she has never heard of any ruins. She plans to search for these when she can.'); RuinedTemple.SetBitFlag(32); } } else { if (DocksSlavePens.CheckBitFlag(31)) { Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0); AddText('a foreign man took possession of her earlier today. The man seemed nice and her friend waved goodbye, looking happy and cradling the teddy bear.'); } else { Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0); AddText('a foreign man took possession of her earlier today. The man seemed nice and her friend waved goodbye looking a little anxious.'); } } } else { OldNumEvent = 2.1; DocksSlavePens.EventDone(2); WalkSlavePens.gotoAndStop(3); AddText(SlaveName + ' hears a girl call out her name and sees a pair of girls locked in a cell. ' + ServantName + ' says they are in a temporary holding area awaiting pickup by their owners. ' + SlaveName + ' sees a fit brown-haired girl standing and a tired green-haired girl sitting at the rear of the cell.\r\r' + SlaveName + ' walks up and the brown-haired girl speaks to her, introducing herself as Sareth, saying how she had seen ' + SlaveName + ' comforting a girl the other day. She thanks ' + SlaveName + ' for her compassion, it was comforting to her too, seeing a fellow slave can be happy in their life.'); if (SlaveAttitude == 1) { AddText(' She was a little surprised though at the overt sexual way ' + SlaveName + ' did her comforting...'); } AddText('\r\rSareth talks about how she was taken as a slave in a raid in a distant country, and speaks fondly of a stuffed teddy bear she owned but was lost then...'); if (TotalTeddyBear > 0) { DoEvent(4025); } else { DoEvent(4026); } } WalkSlavePens._visible = true; break; case 3: ShowAssistant(); DocksSlavePens.EventDone(3); DocksSlavePens.NoRepeatEvent(3); DocksSlavePens.SetEventCount(4); temp = 1 + DickgirlOn; if (IncestOn) { ++temp; } temp = int(Math.random() * temp); if (temp == 0) { WalkSlavePens.gotoAndStop(15); OldNumEvent = 3.3; AddText(SlaveName + ' sees a pair of young women bound in an open area, one appears to be high-born and the other a maid. They are wearing fine lingerie and are lightly, but securely tied together. A man, clearly their owner is standing nearby, talking to an official. ' + SlaveName + ' and ' + ServantName + ' overhear their conversation.\r\r'); PersonSpeak('Master', '...former noble and her maid, now mine. They have yet to learn their place, the Lady is defiant, refusing to submit to me and the maid still considers herself the Ladies servant, not mine.\r\rI am going to show them who is in charge, the Lady will learn that I will treat her maid as the superior slave, always fucked first, and the Lady will alway have to lick her clean, pussy, ass, where ever. She will learn to pleasure her maid before she receives any pleasure herself, that is once she submits to me....', true); AddText('\r\rThe man notices ' + SlaveName + ' listening and glares at her. ' + ServantName + ' takes ' + SlaveName + ' away.'); Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -4, 0, 0); } else { if (temp == 1 && IncestOn) { WalkSlavePens.gotoAndStop(6); OldNumEvent = 3.1; AddText(SlaveName + ' sees a pair of girls chained closely to each other, with hoods blinding them and blocking their hearing. They are writhing and rubbing against each other sensuously, not quite kissing and not quite sexual.\r\rA man stands near by holding their chains. ' + SlaveName + ' asks him about the girls. He looks condescending and ignores ' + SlaveName + ' until ' + ServantName + ' intervenes and asks him again. He addresses ' + ServantName + ' only.\r\r'); PersonSpeak('Man', 'These are two sisters I have bought and had trained. I am taking delivery of them now their training is as complete as can be. I wanted the girl to put on lesbian performances for my guests and for my pleasure. I also desire to fuck them as I desire. Their Slave Maker has not been completely successful as they are still reluctant to do lesbian acts with each other. They will with other slaves though which is why they are hooded. They believe they are chained to other women.', true); AddText('\r\r' + SlaveName + ' is concerned about his deception. She wants to do something.'); AskHerQuestions(4040, 4041, 0, 0, 'Pull their earmuffs off and explain', 'Slap the man in anger', '', '', 'What does ' + SlaveName + ' do?'); } else { WalkSlavePens.gotoAndStop(7); OldNumEvent = 3.2; AddText(SlaveName + ' sees a pair of girls, hermaphrodites actually, being trained in a cell. They are bound and suspended and giving each other blowjobs and while ' + SlaveName + ' watches the lower ones hips buck as she cums. The other girl slurps and swallows the small amount of cum. She continues the blowjob licking the lower girl\'s cock which softens a little but quickly grows erect.\r\r'); AddText(SlaveName + ' sees a woman monitoring their acts, and records the time of the girl\'s orgasm. The woman looks up and notices the girl above strain and cum as well. Her cock also stays erect and the other girl continues sucking. The woman also notes this.\r\r' + ServantName + ' talks briefly to the woman and returns to ' + SlaveName + ' looking angry and insists they leave. ' + ServantName + ' explains the girls have finished simple training and are being tested before delivery to their new owner, a high ranked noblewoman.\r\r' + ServantName + ' explains they have been made into sex obsessed cock-sluts. Their only training is to have an erect cock always and to be able to fuck whenever asked. A complex series of potions and continuous sex has focused their life on their cocks, rendering them almost always erect and making the girls insatiable, desiring only to fuck and cum.\r\r' + ServantName + ' is angry, saying this is a travesty of true slave training. The noblewoman deserves to be punished for creating such slaves just to fuck her.'); AddText('\r\rThey leave the slave pens and the girls to their lives of fucking and waiting to fuck. ' + SlaveName + ' is upset, but a little aroused despite herself.'); Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -4, 0, 0); } } WalkSlavePens._visible = true; break; case 4: ShowAssistant(); DocksSlavePens.EventDone(4); DocksSlavePens.NoRepeatEvent(4); temp = int(Math.random() * (1 + DickgirlOn)) + 9; WalkSlavePens.gotoAndStop(temp); if (temp == 9) { OldNumEvent = 4.1; HideBackgrounds(); AddText(SlaveName + ' sees a large breasted woman bound near a wall, she has cum over face and breasts and looks very aroused. ' + SlaveName + ' talks to her a bit and she explains she is waiting for a Slave Maker to pick her up. She has heard many disgusting and perverted things about slave training. She seems to be looking forward to it.\r\rShe explains many men have presented their cocks to her and she has eagerly...umm been forced to suck them to orgasm, most forcing her to drink their tasty...umm disgusting cum.\r\rAs she describes this ' + SlaveName + ' sees her hips moving slowly and can clearly see she has a large dildo strapped into her pussy.' + SlaveName + ' bids her goodbye as her hips slowly move faster, and as she leaves notices and man step in front of the slave, revealing his cock. She leans in eagerly...'); } else { OldNumEvent = 4.2; AddText(SlaveName + ' sees a girl tied up to a wall, she has a erect cock and is splattered with cum. ' + SlaveName + ' talks to her for a bit and she explains she is waiting for a Slave Maker to pick her up. She says a guard made her give him a blowjob a little while ago cumming over her. She has heard many things about slave training, the extreme sexual acts, the perversions and being used over and over. Her cock is very erect and she seems very aroused.\r\rShe asks ' + SlaveName + ' to please, please make her cum...'); AskHerQuestions(4050, 4051, 0, 0, 'Give her a blowjob', 'Refuse', '', '', 'What does ' + SlaveName + ' do?'); } WalkSlavePens._visible = true; } } function DoSlavePensSecureEvent(NumEvent) { HideBackgrounds(); Backgrounds.ShowSlavePens(); if (EvilMineFlag > 0) { DoEvilMineEvent(4103); SlaveGirl.AfterWalk(6.3); return undefined; } DemonChoice = 0; if (NumEvent == 0) { if (!DocksSlavePens.CheckBitFlag(29) && temp < 60) { NumEvent = 5; } else { if (temp < 40) { NumEvent = 1; } else { if (temp < 60) { NumEvent = 2; } else { if (temp < 80) { NumEvent = 3; } else { NumEvent = 4; } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkDocksSlavePensSecure(NumEvent) == true) { SlaveGirl.AfterWalk(6.3); return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case 1: ShowAssistant(); if (DemonChoice == 0) { var v5 = CheckBitFlag1(2) && CheckBitFlag1(3); if (DickgirlOn == 1) { v5 = v5 && CheckBitFlag1(4); } if (!v5) { v5 = true; var v3; var v4 = 1; while (v4 < 10) { v3 = false; DemonChoice = int(Math.random() * (2 + DickgirlOn)) + 1; switch (DemonChoice) { case 1: if (CheckBitFlag1(2)) { v3 = true; } SetBitFlag1(2); break; case 2: if (CheckBitFlag1(3)) { v3 = true; } SetBitFlag1(3); break; case 3: if (CheckBitFlag1(4)) { v3 = true; } } if (!v3) { v5 = false; break; } ++v4; } } if (v5) { DemonChoice = int(Math.random() * (2 + DickgirlOn)) + 1; } } if (DemonChoice < 3) { PeopleDemon.gotoAndStop(DemonChoice); } else { HideBackgrounds(); } PeopleDemon._visible = true; if (DemonicBraWorn == 1 || DemonicPendantWorn == 1) { if (DemonicBraWorn == 1) { _root.itemstr = 'Demonic Bra '; } else { _root.itemstr = 'Demonic Pendant '; } Points(0, 0, 0, 0, -2, 0, 0, 0, 0, 1, 1, 0, 1, 1, 10, 0, 0, 0, 0, 0); if (DemonChoice == 1) { AddText(SlaveName + ' meets an odd girl chained to a wall, with a slightly demonic appearance who whispers a command to the ' + itemstr + 'your slave is wearing. ' + SlaveName + ' immediately is filled with lust and visions of depraved, orgasmic sex.\r\r' + SlaveName + ' staggers away, leaving the girl.'); } else { if (DemonChoice == 2) { AddText(SlaveName + ' meets a woman of demonic appearance who stares at ' + SlaveName + '. Suddenly the ' + itemstr + 'she is wearing flares up and immediately she is filled with lust and visions of depraved, orgasmic sex.\r\rWhen she recovers she sees the woman is obviously orgasming and leaves quickly.'); } else { if (CheckBitFlag1(4)) { if (CheckBitFlag1(5)) { PeopleDemon.gotoAndStop(3); AddText(SlaveName + ' nervously meets the hermaphrodite demon girl she has met previously. She is relieved to see the girl is securely bound with a tight ring around the base of her very large erect cock, but there is no vibrator in her pussy.\r\rShe looks seductively at ' + SlaveName + ' and whispers a command to the ' + itemstr + 'your slave is wearing. ' + SlaveName + ' immediately is filled with lust and visions of depraved, orgasmic sex.\r\r' + SlaveName + ' staggers away, leaving the girl.'); } else { intervalId = setInterval(this, 'DemonGirlCum', 1000, PeopleDemon, PeopleDemon._x); PeopleDemon.gotoAndStop(4); AddText('<b>' + SlaveName + '</b> nervously sees the demonic looking hermaphrodite girl she had met before. She seems to have been recaptured but is starting to get free again! Her very large cock is erect and she is frantically masturbating. She looks at ' + SlaveName + ' with a wicked smile and cums a huge spray of cum.'); SetBitFlag1(5); } } else { PeopleDemon.gotoAndStop(4); intervalId = setInterval(this, 'DemonGirlCum', 1000, PeopleDemon, PeopleDemon._x); AddText('<b>' + SlaveName + '</b> meets an odd girl chained by only one wrist to a wall, having freed the other. She has a very large erect cock and is frantically masturbating.'); SetBitFlag1(4); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0); } } } } else { if (DemonChoice == 1) { AddText(SlaveName + ' meets an odd girl chained to a wall, with a slightly demonic appearance and talks with her about matters of heaven and hell.'); } else { if (DemonChoice == 2) { AddText(SlaveName + ' meets a woman of demonic appearance shackled to a wall, heavy weights hanging from nipples and clitoris, she even has a tail of some sort! ' + SlaveName + ' carefully talks with her, and she complains of the gods, her captors and complains about a cruel thing they had placed in her pussy.\r\r' + SlaveName + ' offers to help and puts her fingers in and searches, The woman moans and tell her it is deeper. ' + SlaveName + ' searches but finds nothing, then feels a spray and convulsions as the woman starts orgasming. When she recovers she smiles and comments how aroused she had been. ' + SlaveName + ' smiles nervously and leaves.'); } else { if (CheckBitFlag1(4)) { if (CheckBitFlag1(5)) { PeopleDemon.gotoAndStop(3); AddText(SlaveName + ' nervously meets the hermaphrodite demon girl she has met previously. She is relieved to see the girl is securely bound with a tight ring around the base of her very large erect cock, but there is no vibrator in her pussy. She looks seductively at ' + SlaveName + ' and talks with her about heaven, hell and at length about sexual encounters.\r\rThe demon girl rubs her cock continuously against the ground as if trying to masturbate and begs ' + SlaveName + ' to release her cock-ring. Wisely and a little sadly ' + SlaveName + ' refuses.'); } else { PeopleDemon.gotoAndStop(4); intervalId = setInterval(this, 'DemonGirlCum', 1000, PeopleDemon, PeopleDemon._x); AddText('<b>' + SlaveName + '</b> nervously sees the demonic looking hermaphrodite girl she had met before. She seems to have been recaptured but is starting to get free again! Her very large cock is erect and she is frantically masturbating. She looks at ' + SlaveName + ' with a wicked smile and cums a huge spray of cum.'); SetBitFlag1(5); } } else { intervalId = setInterval(this, 'DemonGirlCum', 1000, PeopleDemon, PeopleDemon._x); PeopleDemon.gotoAndStop(4); AddText(SlaveName + ' meets an odd girl chained by only one wrist to a wall, having freed the other. She has a very large erect cock and is masturbating slowly. She looks seductively at ' + SlaveName + ' and talks with her about heaven, hell and sex.'); SetBitFlag1(4); } } } Points(0, 0, 0, 0, -1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } break; case 2: ShowAssistant(); HideBackgrounds(); PeopleBountyHunter._visible = true; PeopleBountyHunter.gotoAndStop(1); Points(0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (BountyHunterFlag > 0) { AddText(SlaveName + ' sees the beautiful bounty hunter, Irina, and she is delivering a bound slave. She looks at ' + SlaveName + ' but is very busy and waves.\r\r' + SlaveName + ' admires Irina\'s grace while she performs her job.'); } else { AddText(SlaveName + ' meets a beautiful woman, who is a bounty hunter, and she is delivering a bound slave.\r\r' + SlaveName + ' admires the bounty hunter\'s grace while performing her job'); } break; case 3: ShowAssistant(); CombatCreatures.DevilGirls._visible = false; CombatCreatures.Zombies._visible = false; CombatCreatures.Demons._visible = false; CombatCreatures.Tentacles._visible = false; Bars._x = 7; temp = int(Math.random() * (2 + TentaclesOn)); switch (temp) { case 0: CombatCreatures._visible = true; Bars._visible = true; OldNumEvent = 3.1; AddText(SlaveName + ' sees in a strong cage a demonic figure '); temp = int(Math.random() * 2) + 1; CombatCreatures.Demons.gotoAndStop(temp); CombatCreatures.Demons._visible = true; if (temp == 1) { AddText('very male, a large cock hanging. A woman is standing next to the cage and ' + SlaveName + ' says demons have the largest cocks of humanoids. Their cum is thick, voluminous and very hot, but they prefer ass fucking if given the chance. ' + SlaveName + ' looks and sees the woman is flushed and smiling.'); } else { AddText('male looking, but with no genitals. A woman is standing next to the cage and ' + SlaveName + ' says when aroused it\'s cock appears from within his groin. It is huge and he fucks for a long time before cumming hot, hot cum. They will ass fuck you if given the chance. ' + SlaveName + ' looks and sees the woman is flushed and smiling.'); } AddText(' She speaks so certainly as if from personal experience, '); MeetNarana(1); AddText(', but is focused on the demon.\r\r' + SlaveName + ' is a little embarrassed but also quite aroused and leaves Narana staring at the demon, slipping her hands inside her dress, moving, caressing, rubbing...'); DocksSlavePens.SetBitFlag(30); break; case 1: WalkSlavePens.gotoAndStop(12); WalkSlavePens._visible = true; OldNumEvent = 3.2; AddText(SlaveName + ' sees in a light cage a slender faerie girl, quite naked, but then many of the faerie folk disdain clothing. The bars of her cage are cold iron to limit any arcane powers she has.\r\rShe begs ' + SlaveName + ' to free her back to the wild, joyous forest. ' + SlaveName + ' explains that she is a slave too and expresses her sadness at the faeries captivity. The faerie perks up a bit, telling her not to worry, she will escape sometime, but until then she will get plenty of sex!\r\r' + SlaveName + ' can see this faerie is not really distressed, just missing her home in the forest, but she does seem to be looking forward to being a sex toy...'); break; case 2: CombatCreatures._visible = true; Bars._visible = true; OldNumEvent = 3.3; CombatCreatures.Tentacles.gotoAndStop(int(Math.random() * 3) + 1); CombatCreatures.Tentacles._visible = true; AddText(SlaveName + ' sees in a strong cage a tentacle monster. '); if (TotalTentacle > 0) { AddText(' She remembers her assault'); if (TotalTentacle > 1) { AddText('s'); } AddText(' by such a creature and her incredible orgasms. '); if (TotalTentacle > 4) { AddText('The creature writhes and reaches for ' + SlaveName + ' who quickly retreats.'); } } AddText('\r\r' + SlaveName + ' leaves the thing but feels a strong wave of arousal.'); } Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0); break; case 4: StartMoaning(1); StartFucking(2); temp = int(Math.random() * (1 + TentaclesOn)); Bars._x = 300; Bars._visible = true; if (temp == 0) { WalkSlavePens.gotoAndStop(11); WalkSlavePens._visible = true; OldNumEvent = 4.1; AddText(SlaveName + ' sees a group near a cage. It is a small group, all bearing the crests of a noble house.\r\rShe moves near and sees '); AddText('a noblewoman in a cage with several beings, humanlike but not human. Guards are leering at the scene, ' + SlaveName + ' looks closer and sees why. The beings are fucking the woman who is moaning. Cum coats her so it seems this is not her first fucking. Everything from the scene shows she is in control and here to enjoy these beings lusts.'); AddText('\r\r' + SlaveName + ' turns to leave and hears the noblewoman cry out another orgasm. ' + SlaveName + ' cannot help but feel aroused.'); } else { OldNumEvent = 4.2; Tentacles.NobleWomanTentacleSex(); } Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 0, 0, 0, 0); break; case 5: ShowAssistant(); StartMoaning(1); StartFucking(1); HideBackgrounds(); WalkSlavePens._visible = true; DocksSlavePens.SetBitFlag(29); AddText(SlaveName + ' hears a commotion and sees a shattered door on a cage. Guards are lying unconscious or dead.\r\rTo one side she hears screaming and sees a large '); temp = int(Math.random() * 2); WalkSlavePens.gotoAndStop(13 + temp); if (temp == 0 || TentaclesOn == 0) { AddText('deformed figure fucking a woman dressed in high status clothing. The woman is struggling to be free but the figure is hugely strong.'); } else { AddText('tentacled creature urgently fucking a woman dressed in high status clothing. The woman is struggling to be free but the creature has bound her in some sort of webbing and is almost violently fucking her pussy and ass.'); } AskHerQuestions(4030 + temp, 4032 + temp, 0, 0, 'Run for help', 'Try to help the woman', '', '', 'What does ' + SlaveName + ' do?'); } SlaveGirl.AfterWalk(6.3); } function DoSlavePensGeneralEventRandom(NumEvent) { Backgrounds.ShowSlavePens(); if (EvilMineFlag > 0) { DoEvilMineEvent(4102); return undefined; } if (NumEvent == 0) { if (temp < 25) { NumEvent = 1; } else { if (temp < 50) { NumEvent = 2; } else { if (temp < 75) { NumEvent = 3; } else { NumEvent = 4; } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkDocksSlavePens(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case 1: ShowMovie(PeopleMerchant, false, 1); WalkSlavePens.gotoAndStop(8); WalkSlavePens._visible = true; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0); AddText(SlaveName + ' sees a merchant walking along with a slave girl. The girl seems perfectly happy and is very attentive of her master, looking at him with apparent love. ' + SlaveName + ' can see how contentment is possible as a slave.'); break; case 2: if (!PonygirlsOn) { HideBackgrounds(); MeetBountyHunter(6); } else { WalkSlavePens.gotoAndStop(5); WalkSlavePens._visible = true; ShowAssistant(); DifficultyBondage -= 1; if (DonePonygirl == 1) { AddText(SlaveName + ' sees a fellow'); } else { AddText(SlaveName + ' sees a'); } if (PonygirlAware > 0) { AddText(' ponygirl'); } else { AddText(' slave'); } AddText(' being trained in an odd structure. She is bound, gagged, blindfolded with a plug in her ass.\r\rShe seems to be being trained to walk in an odd, high stepping way. Her trainer whips her everytime she miss-steps. It looks like it should be torture, but somehow ' + SlaveName + ' realises she is enjoying it. Her pussy seems very wet and she moans often in apparent passion.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 1, 3, 0, 0, 0, 0, 0); } break; case 3: MeetNun(' meets a nun preaching to the slaves and slavers. She is comforting the slaves and criticizing the slavers.'); break; case 4: ShowAssistant(); AddText(SlaveName + ' wanders around the Slave Pens and observes the activities there but otherwise has an uneventful time.'); Points(0, 0, 0, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } } function DoWalkFarm() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 20, 20); } Backgrounds.ShowFarm(); if (EvilMineFlag > 0) { DoEvilMineEvent(4104); return undefined; } ++TotalWalkFarm; if (FairyMeeting == 3 || FairyMeeting == 63) { NumEvent = 7; } else { if (!CheckBitFlag1(11) && Milkable && VarConstitutionRounded > 29) { NumEvent = 6; } } if (NumEvent == 0) { if (temp < 20 && CheckBitFlag1(1)) { NumEvent = (MilkInfluence < 0 || CheckBitFlag1(26) || PonygirlsOn && int(Math.random() * 2) == 1) ? 1 : 1.5; } else { if (temp < 35) { NumEvent = 2; } else { if (temp < 40) { NumEvent = 3; } else { if (temp < 50) { NumEvent = VarReputationRounded > 40 + Difficulty ? 4 : 4.5; } else { if (temp < 65) { NumEvent = 5; } else { if (temp < 85) { NumEvent = (Milkable && VarConstitutionRounded > 29 && int(Math.random() * 2) == 1 || MilkInfluence > 0) ? 6 : 6.5; } else { NumEvent = 7; } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkFarm(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case 1: ShowAssistant(); EventPonygirlMeeting.gotoAndStop(3); EventPonygirlMeeting._visible = true; if (PonygirlAware == 1) { AddText(SlaveName + ' sees a ponygirl happily pulling a plough in a field, being controlled by a naked woman. ' + SlaveName + ' supposes this is <i>one</i> way to use a ponygirl.'); } else { AddText(SlaveName + ' sees a strangely attired slave pulling a plough in a field, being controlled by a naked woman. ' + SlaveName + ' wonders why they both seem happy.'); } AddText('\r\rThe woman controlling the plough talks to ' + SlaveName + ' for a bit and she seems highly aroused.\r\rAs ' + SlaveName + ' leaves she sees her lowering the harnessed girl\'s head towards her crotch...'); Points(0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); break; case 1.5: SetBitFlag1(0); if (CheckBitFlag1(6)) { Milked(); } else { ShowAssistant(); WalkCowgirl.gotoAndStop(int(Math.random() * 4) + 1); WalkCowgirl._visible = true; AddText(SlaveName + ' visits a small barn and sees a strangely dressed girl with tubes attached to her breasts. She appears to be being milked!\r\rThe girl is very distracted but they talk for a little, maybe oddly about milk.\r\rThe girl sometimes makes mooing noises apparently unconsciously. She is very aroused and the talk ends when she seems to have a strong orgasm, crying out a loud \'Mooo!\' and faints.'); Points(0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); return undefined; } break; case 2: SetBitFlag1(1); AddText(SlaveName + ' meets a farmer and they talk about farming techniques. She helps with a few chores and he pays her a small amount to thank her.\r\rAs they leave he says he must <i>attend</i> to his cows.'); if (!CheckBitFlag1(0)) { AddText(' ' + SlaveName + ' wonders why he emphasises the word \'attend\'.'); } Money(20); Points(0, 0, -1, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0); ShowMovie(PeopleFarmer, false, 0); break; case 3: ShowAssistant(); temp = int(Math.random() * 2); if (Naked) { temp = 0; } switch (temp) { case 0: OldNumEvent = 3.1; AddText(SlaveName + ' sees some dairy products for sale and asks ' + ServantName + ' to buy some for dinner. A little reluctantly ' + ServantName + ' does but is surprised by the high price.'); break; case 1: OldNumEvent = 3.2; UseGeneric = false; if (SlaveGirl.ShowNakedApron() != true) { Generic.ShowNakedApron(); } AddText(SlaveName + ' falls and gets covered head to toe in mud and ' + ServantName + ' takes her into a farm building and asks a woman there to wash the dress as quickly as possible. ' + ServantName + ' pays a small fee for the cleaning.\r\rWhile waiting ' + SlaveName + ' is given an apron to cover herself. She wonders why <i>only</i> an apron is available. Her dress is returned clean by the woman, who is smiling broadly.'); if (!SlaveLikeServant) { AddText('\r\rAs they leave ' + ServantName + ' scolds ' + SlaveName + ' for her clumsiness.'); } } Money(-50); break; case 4: case 4.5: ShowAssistant(); ShowMovie(PeopleCount, true, 1); if (NumEvent == 4) { SetBitFlag1(25); Points(0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' met the Count who was visiting this farm on business. He is the owner of this farm and is here to review some operations. He sounded a little odd when he said \'operations\'.\r\rThey discuss importance of rural life and farming to the Mioya\'s culture.'); if (NobleLoveType == 2) { NobleLoveEvent(); } } else { AddText(SlaveName + ' met the Count who was visiting this farm on some business.\r\rHe didn\'t pay any attention to ' + SlaveName + '.'); } break; case 5: ShowMovie(PeopleCook, false, 0); Points(0, 0, -1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a Chef who is here to buy stock for his restaurant and they discuss recipes.'); if (MilkInfluence > 0) { AddText('\r\rDuring their talk ' + SlaveName + ' feels her breasts swell and milk leaks from her nipples.'); } break; case 6: if (!CheckBitFlag1(6)) { SetBitFlag1(11); WalkCowgirl.gotoAndStop(5); WalkCowgirl._visible = true; Points(0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' is walking near the farm and by chance briefly loses ' + ServantName + '.\r\rShe meets a man, a farm hand, and she asks directions and they talk a little. The man offers her a snack in the form of an odd looking sweet. He seems a little intense...\r\rDoes she eat it?'); DoYesNoEvent(4080); } else { if (MilkInfluence > 0) { Milked(); } else { ShowAssistant(); Points(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0); AddText(ServantName + ' carefully makes sure ' + SlaveName + ' avoids the barn and most of the rest of the buildings, but ' + SlaveName + ' clearly remembers her experiences there.\r\rUnconsciously she briefly caresses her breasts.'); } } break; case 6.5: ShowAssistant(); Points(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' wanders through the farm, studying how the buildings are laid out and their functions.\r\rSome of the buildings are oddly of tight security.'); break; case 7: RumourFaerieHuntingDone = 1; ShowAssistant(); temp = FairyMeeting; if (temp > 59) { temp -= 60; } else { if (temp > 49) { temp -= 50; } } if (temp < 4 && FairyMeeting != 53 && FairyMeeting != 64) { FairyMeeting += 1; temp += 1; ClipFairyMeeting.gotoAndStop(temp + 1); ClipFairyMeeting._visible = true; if (temp < 4) { NextVisit._visible = false; AddText('While approaching the farm and passing though a small wood ' + SlaveName + ' finds a faerie girl who has been trapped and bound and is struggling to get free. She can hear the captors in the distance. She also hears rustling in the trees.'); if (FairyMeeting < 3) { AskHerQuestions(4200, 4201, 4202, 0, 'Free Her', 'Leave hoping her friends help', 'Rebind her to help her captors', '', 'What does ' + SlaveName + ' do?'); } else { AskHerQuestions(4203, 4201, 4202, 0, 'Free Her', 'Leave hoping her friends help', 'Rebind her to help her captors', '', 'What does ' + SlaveName + ' do?'); } } else { if (FairyMeeting == 64) { ClipFairyMeeting.gotoAndStop(13); ClipFairyMeeting._visible = true; AddText(SlaveName + ' sees two faeries, one tied up with her pussy being teased by the other. They both seem to be waiting for ' + SlaveName + '\r\r'); PersonSpeak('Dominant Faerie', 'If you wanted to tie us up we would of been happy to play. We like our freedom so being slaves is not what I want.', true); AddText('\r\r'); PersonSpeak('Submissive Faerie', 'We would love... I mean hate being bound and fucked and made to cum against our will. To utterly obey every perverted wish of our owner...', true); AddText('\r\rWith these words the submissive one gasps and orgasms. The other releases <i>some</i> of her binding and they fly off, saying \'We will not \'cum\' here again\'.\r\r' + SlaveName + ' had forgotten how, ummm, kinky these faeries are. She leaves a bit distracted by thoughts of ropes, butterfly wings and her aroused feelings.'); DifficultyBondage -= 2; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0); } else { HideBackgrounds(); NextVisit._visible = false; ClipFairyMeeting.gotoAndStop(5); ClipFairyMeeting._visible = true; AddText(SlaveName + ' arrives at the request of the faerie she rescued and is met by a faerie girl who thanks her for all her help freeing her fellow faeries. The faerie assures her they will avoid this place now but they wanted to thank ' + SlaveName + '. She gives ' + SlaveName + ' a small gem and says it can be sold for money or will have a magical effect if swallowed.'); AskHerQuestions(4204, 4205, 0, 0, 'Sell the gem', 'Eat it', '', '', 'What does ' + SlaveName + ' do?'); } } } else { ShowAssistant(); AddText(SlaveName + ' has a pleasant walk around the fields and streams. '); if (!CheckBitFlag1(26)) { temp = int(Math.random() * (2 + DickgirlOn)) + 6; WalkCowgirl.gotoAndStop(temp); WalkCowgirl._visible = true; AddText('In the distance she sees a girl walking, dressed a bit oddly. The girl seems rather distracted, often fondling her breasts'); if (temp == 8) { AddText(' and cock'); } if (MilkInfluence > 0) { AddText('.\r\r' + SlaveName + ' unconsciously massages her own breasts.'); } else { AddText('.'); } } Points(0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0); } } } function DoWalkForest() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 20, 300); } Backgrounds.ShowForest(); if (EvilMineFlag > 0) { if (NumEvent == -1) { DoEvilMineEvent(4113); } else { DoEvilMineEvent(4105); } return undefined; } ++TotalWalkForest; if (TentacleHaunt % 10 == 1) { if (TentacleHaunt == 11) { AddText(SlaveName + ' is walking and notices the forest is very quiet. A noise behind her makes her turn and she sees mass of bloody tentacles fall from a tree. Terrible burns and claw marks cover the flesh and the tentacles are ripped from the bloody body. She looks away in fright and hurries on.\r\r'); TentacleHaunt = -1; } else { if (TentacleHaunt == 21) { DemonHelpAndRape(' is passing between several large trees'); return undefined; } else { NumEvent = -2; } } } if (NumEvent == 0) { if (DickgirlXF != -1 && MaxAstrid > 0) { var v1 = MaxAstrid; if (DickgirlOn != 1) { v1 = 10; } tempvar = (5 + GameDate - LastVisitDickgirl) * 3; if (MaxAstrid > 11) { if (DickgirlXF == 2 || CheckBitFlag1(10)) { if (tempvar > 10) { tempvar = 10; } } else { if (tempvar > MaxAstrid) { tempvar = MaxAstrid; } } } else { if (tempvar > MaxAstrid) { tempvar = MaxAstrid; } } if (temp < tempvar) { NumEvent = -1; } } if (NumEvent == 0) { if (CheckBitFlag1(20) && !Lake.CheckBitFlag(33)) { if (temp < 70) { NumEvent = -1; } else { NumEvent = 2; } } else { if (temp < 20) { NumEvent = VarRefinementRounded > 30 ? 1 : 1.5; } else { if (temp < 35) { NumEvent = VarSensibilityRounded >= 30 ? 2 : 2.5; } else { if (temp < 50 + Difficulty) { NumEvent = 3; } else { if (temp < 60) { NumEvent = 4; } else { if (temp < 75) { NumEvent = 5; } else { if (temp < 90) { if (FaeriesRingOK != 0) { NumEvent = 6; } else { NumEvent = (VarSensibilityRounded < 35 || FairyMeeting > 10) ? 6.2 : 6.5; } } else { NumEvent = 7; } } } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkForest(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case -2: if (AssistantTentacleSex) { ShowAssistant(2); } else { ShowAssistant(4); } TentacleChoice = int(Math.random() * 2); Tentacles.TentacleSex(1); break; case -1: HideBackgrounds(); Backgrounds.ShowHouseOutside(5); ++TotalVisitAstrid; if (TotalVisitAstrid > 2) { Forest.SetBitFlag(34); } ShowMovie(PeopleDickgirl, false, 6); if (SlaveGirl.VisitAstrid() == true) { MeetAstrid(); LastVisitDickgirl = GameDate; } else { if (DickgirlOn != 1) { if (LastVisitDickgirl >= TrainingStart) { AddText(SlaveName + ' again meets Astrid at her out of the way cottage.'); } else { AddText(SlaveName + ' meets a woman named Astrid in an out of the way cottage. She mentions she is running a small alchemical business but will not go into details.'); } AddText(' To ' + ServantName + '\'s annoyance ' + ServantHeShe + ' is asked to wait outside and they enter the cottage.\r\rAstrid has her maid serve drinks.\r\r'); if (!MeetAstrid()) { AddText('They have a pleasant talk about the forest and gossip a little about people in the city.'); } AddText('The maid is shy and stays out of sight. Once ' + SlaveName + ' hears her sigh, or moan a little, but Astrid says she is fine, just doing her duties.\r\r' + SlaveName + ' leaves and rejoins ' + ServantName); Points(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { NumEvent = 200; if (DickgirlXF == 0) { if (PotionsUsed[0] == 0) { if (LastVisitDickgirl >= TrainingStart) { AddText(SlaveName + ' again meets'); } else { AddText(SlaveName + ' meets a woman named'); } AddText(' Astrid in an out of the way cottage and she invites them in.\r\r'); MeetAstrid(); AddText('Astrid offers to ' + SlaveName + ' to drink a potion called the \'Priapus Draft\' promising a transcendent experience. She refuses with a smile to explain more but reassures her it is perfectly safe.'); } else { AddText(SlaveName + ' comes to Astrid\'s cottage, remembering her last experience with a cock.\r\r'); MeetAstrid(); AddText('Astrid offers ' + SlaveName + ' another dose of the \'Priapus Draft\'.\r\r'); if (PotionsUsed[0] > 1 && CheckBitFlag1(10)) { AddText(ServantName + ' says that it is not appropriate to take the draft again as ' + SlaveName + ' is undergoing training as a lesbian slave.\r\rAstrid argues that having a cock makes her the perfect lesbian but ' + ServantName + ' refuses.'); NumEvent = 0; } else { AddText(SlaveName); SlaveGirl.DickgirlPotionOffer(); } } } if (DickgirlXF > 0) { if (DickgirlXF == 1) { if (LastVisitDickgirl < 0) { StartFucking(1); EventAstridFuck._visible = true; if (LastVisitDickgirl > 0) { AddText(SlaveName + ' again meets'); } else { AddText(SlaveName + ' meets a woman named'); } AddText(' Astrid in an out of the way cottage.'); MeetAstrid(); if (PotionsUsed[0] == 0) { AddText('Astrid offers ' + SlaveName + ' to drink a potion called the \'Priapus Draft\' promising a transcendent experience.'); } else { AddText('Astrid offers ' + SlaveName + ' another dose of the \'Priapus Draft\'.'); } AddText('\r\rShe then notices ' + SlaveName + ' has a large erection and they talk. ' + SlaveName + ' explains how it spontaneously appeared and how her Slave Maker wants an antidote for it, despite being a hermaphrodite herself! Astrid promises to locate the antidote but says it will take some time.\r\rShe suggests she can do something about ' + SlaveName + '\'s erection though and proceeds to give her an expert blowjob. When ' + SlaveName + ' cums she collapses gasping. '); if (Naked) { AddText('She'); } else { AddText('She feels her lower clothes moved aside and'); } AddText(' sees Astrid has removed her clothes and also has a large cock. Before ' + SlaveName + ' can comment Astrid thrusts in, whispering \'payment\'.\r\rAstrid fucks her many times, in pussy, ass and mouth, but she happily allows ' + SlaveName + ' to fuck her too.'); AntidoteDays = 15 + int(Math.random() * 3); } else { if (AntidoteDays > 0) { AddText('Astrid welcomes ' + SlaveName + ' but the antidote is not ready.'); MeetAstrid(); } else { MeetAstrid(); AddText('Astrid sadly says the antidote is ready, if she takes it her cock will be lost and she will only be a woman again.\r\rShall ' + SlaveName + ' take it?\r'); DoYesNoEventXY(220); } } } else { Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0); StartFucking(1); EventAstridFuck._visible = true; AddText(SlaveName + ' and Astrid reunite and have passionate sex.'); MeetAstrid(); } } else { if (NumEvent > 0 && NumEvent != 210 && NumEvent != 201) { AddText('\r\rWill ' + SlaveName + ' drink it?\r'); DoYesNoEventXY(NumEvent); } } } LastVisitDickgirl = GameDate; break; case 1: ShowMovie(PeopleKnight, true, 1, int(Math.random() * 2) + 1); switch (int(Math.random() * 2)) { case 0: OldNumEvent = 1.1; AddText(SlaveName + ' meets a Knight and they talk briefly about forest battles and then about nature.'); Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break; case 1: OldNumEvent = 1.2; if (SoundsOn) { Sounds.SoundClang.gotoAndPlay(2); } AddText(SlaveName + ' meets a Knight who is practicing sword techniques. He explains to her the forest helps him to focus on his training. He offers to show her a few moves and they practice for a time.'); Points(0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } MeetKnight(); if (NobleLoveType == 3) { NobleLoveEvent(); } break; case 1.5: ShowMovie(PeopleKnight, true, 1, int(Math.random() * 2) + 1); AddText(SlaveName + ' meets a Knight but he didn\'t want to talk with such a lowly person.'); break; case 2: if (DickgirlOn == 1) { ShowMovie(PeopleMaid, true, 1, 2); ShowAssistant(); } else { ShowMovie(PeopleMaid, false, 5, 2); } if (Forest.CheckBitFlag(32)) { AddText(SlaveName + ' meets the shy maid'); } else { AddText(SlaveName + ' meets a maid, who seems very shy,'); } switch (int(Math.random() * 2)) { case 0: OldNumEvent = 2.1; AddText(' taking a walk in the forest and they walk together while discussing the beauty of nature. The maid walks slowly as if encumbered or restricted in some way.'); Points(0, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break; case 1: OldNumEvent = 2.2; AddText(' looking for herbs in the forest. ' + SlaveName + ' helps her look and they discuss herbs, seasonings and the such-like. The maid is awkward in her searching and only bends down with some difficulty.'); Points(0, 0, -2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } AddText('\r\rThe maid says she must return to her Mistress Astrid soon.'); if (CheckBitFlag1(20) && !Lake.CheckBitFlag(33)) { AddText('\r\r' + SlaveName + ' asks if her Mistress makes a potion called \'Nymph\'s Tears\' and the maid blushes and says yes.'); } AddText('\r\rAs she leaves ' + SlaveName + ' sees the maid has raised her skirt and is '); if (DickgirlOn == 1) { AddText('slowly stroking her large cock, saying how her Mistress requires her cock to be erect at all times, ready to cum into her Mistress\'s mouth whenever she desires!'); } else { AddText('working a dildo that is strapped into her pussy, explaining how her Mistress wants her to be aroused at all times!'); } Forest.SetBitFlag(32); break; case 2.5: ShowMovie(PeopleMaid, false, 6, 2); if (Forest.CheckBitFlag(32)) { AddText(SlaveName + ' meets the shy maid again but she avoids ' + SlaveName + ' after looking at her a little timidly.'); } else { AddText(SlaveName + ' meets a maid, who seems very shy, and they start talking. The maid is somewhat timid, but when ' + SlaveName + ' asks a personal question of the maid, the maid looks a little surprised and excuses herself and leaves.'); } Forest.SetBitFlag(32); break; case 3: ShowAssistant(); switch (int(Math.random() * 2)) { case 0: OldNumEvent = 3.1; AddText(SlaveName + ' stumbles over a tree root and breaks the heel of a shoe.\r\r' + ServantName + ' scolds her and takes her to a cobbler and gets the shoe repaired.'); Money(-50); break; case 1: OldNumEvent = 3.2; ClipFortuneTelling._visible = true; AddText(SlaveName + ' and ' + ServantName + ' meet a wandering fortune teller and for fun get their fortunes told.\r\rThe so-called fortune teller obviously had no talent and they leave unsatisfied.'); Money(-100); } break; case 4: ShowMovie(PeopleRefinementTeacher, false, 0); Points(0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (SlaveGirl.MeetRefinementSchoolTeacher() != true) { AddText(SlaveName + ' meets the teacher of the Refinement School and they talk about elegance and the elegance in nature.'); } break; case 5: MeetNun(' meets a nun who was taking a walk. They talk a bit about faith and the gods.'); break; case 6: if (FaeriesRingOK == 10) { ShowMovie(PeopleDancer, false, 0); if (Forest.CheckBitFlag(30)) { if (Forest.CheckBitFlag(31)) { AddText(SlaveName + ' meets the faerie dancer who conceals her nature in the city.\r\rShe looks at ' + SlaveName + ' in a rather sad way, saying \'they\' probably like it, but I do not approve of what you have done. She turns and leaves.'); } else { AddText(SlaveName + ' meets the faerie dancer who conceals her nature in the city.\r\rShe looks at ' + SlaveName + ' in a rather sad way and walks away.'); } } else { AddText(SlaveName + ' meets a dancer who performs in the city and at court.\r\rShe looks at ' + SlaveName + ' in a rather sad way, saying \'they\' probably like it, but I do not approve of what you have done. She turns and leaves.'); } Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { ShowAssistant(); ClipFairyMeeting.gotoAndStop(12); ClipFairyMeeting._visible = true; AddText(SlaveName + ' meets the faerie dancer who conceals her nature in the city.\r\rThey talk for a time, but the dancer avoids any talk of the faerie folk and her subterfuge. They talk about court and performing. The faerie seems very happy to be out here in the forest, dancing and almost embracing the trees.'); if (FairyMeeting > 0 && FairyMeeting < 4) { AddText('\r\rShe thanks ' + SlaveName + ' for rescuing a faerie recently. She says that the band of faeries has not yet moved on, so hunters are still seeking them. Then again \'those\' faeries probably don\'t mind being grabbed and controlled.'); } else { if (FairyMeeting == 4 && !Forest.CheckBitFlag(33)) { Forest.SetBitFlag(33); AddText('\r\rShe thanks ' + SlaveName + ' for rescuing a faerie recently. She says that the band of faeries has mostly moved on, though some may remain in careful secrecy.'); } } Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } Forest.SetBitFlag(31); break; case 6.2: MeetDancer('and had a little talk with her.\r\rThe dancer talks about performing at court and is very pleasant but very flighty, moving around at all times.'); Points(0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Forest.SetBitFlag(30); break; case 6.5: ClipFairyMeeting.gotoAndStop(1); ClipFairyMeeting._visible = true; if (Forest.CheckBitFlag(39)) { AddText(SlaveName + ' sees the dancer she has met before'); } else { AddText(SlaveName + ' sees a dancer'); } AddText(', she is in some dark shadows and seems to be in some distress. ' + SlaveName + ' moves to help and sees she has wings visibly growing from her back! It appears that she is one of the faerie folk, that secretive and rare folk.\r\rSlowly, the dancer says she will be fine, her new wings are growing well. She then begs ' + SlaveName + ' to not tell anyone of her true nature. She offers a faerie ring in payment.\r\r' + SlaveName + ' agrees, but says payment is not needed. The dancer insists and gives her the Faeries Ring.'); FaeriesRingOK = 1; ShowItem(ObjectFaeriesRing, false); break; case 7: ShowAssistant(); if (CheckBitFlag1(8)) { ClearBitFlag1(8); AddText(SlaveName + ' wanders in the quiet forest, seeing no-one at all. The ambiance improves her mood and the walk allows her time to think about many things.'); } else { CheckBitFlag1(8); ShowMovie(WalkCatgirlMeeting, true, 0, 2); if (Catgirl) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); AddText(SlaveName + ' sees an odd girl in a tree, maybe she is a cat slave too. She waves and leaps down silently and licks ' + SlaveName + '\'s face. She leaps back up and nimbly leaps away through the branches.'); } else { AddText(SlaveName + ' sees an odd girl in a tree, maybe she is a cat slave. She waves and silently, nimbly leaps away through the branches.'); } } Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0); } } } function DoWalkLake() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 20, 260); } if (EvilMineFlag > 0) { Backgrounds.ShowLake(); DoEvilMineEvent(4106); return undefined; } ++TotalWalkLake; if (NumEvent == 0) { if (CheckBitFlag1(20) && Lake.CheckBitFlag(33) && temp < 40) { NumEvent = 4; } else { if (temp < 25) { NumEvent = (VarCookingRounded < 30 + Difficulty || ApronOK == 1) ? 1 : 1.5; } else { if (temp < 30) { NumEvent = (int(Math.random() * 2) == 0) ? 2 : 2.5; } else { if (temp < 55) { NumEvent = 3; } else { if (temp < 70) { NumEvent = VarIntelligenceRounded > 30 + Difficulty ? 4 : 4.5; } else { if (temp < 80) { NumEvent = (AngelsTearWorn == 1 || HaloWorn == 1) ? 5 : 5.5; } else { NumEvent = VarReputationRounded > 40 + Difficulty ? 6 : 6.5; } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkLake(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; Backgrounds.ShowLake(); switch (NumEvent) { case 1: ShowMovie(PeopleMaid, false, 1, 1); Points(0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); UseGeneric = false; if (SlaveGirl.ShowNakedApron() != true) { Generic.ShowNakedApron(); } if (ApronOK == 1) { AddText(SlaveName + ' fell into the lake and muddies her dress. The kind and gentle maid who gifted her the apron is walking nearby and takes ' + SlaveName + ' to her nearby home and helps her to wash her dress. She does insist ' + SlaveName + ' wear her apron while helping, ' + SlaveName + ' wears <i>only</i> the apron, claiming she has nothing else to wear.'); } else { AddText(SlaveName + ' slips in a puddle and muddies her dress. '); if (Lake.CheckBitFlag(30)) { AddText('The kind and gentle maid that she has met before'); } else { AddText('A kind and gentle maid'); } AddText(' is walking nearby and takes ' + SlaveName + ' to her nearby home and helps her to wash her dress.\r\rShe loans ' + SlaveName + ' an apron to wear while helping, ' + SlaveName + ' wears <i>only</i> the apron, claiming she has nothing else to wear.'); } Lake.SetBitFlag(30); Lake.SetBitFlag(31); break; case 1.5: ShowMovie(PeopleMaid, false, 1, 1); if (Lake.CheckBitFlag(30)) { AddText(SlaveName + ' meets the kind and gentle maid that she has met before'); } else { AddText(SlaveName + ' meets a kind and gentle maid'); } AddText(' and had a talk with her. The maid is impressed with ' + SlaveName + '\'s knowledge of housekeeping and congratulates her and gives ' + SlaveName + ' her an apron'); if (Lake.CheckBitFlag(31)) { AddText(', the same apron ' + SlaveName + ' has worn before. The maid comments a little embarrassed that she should wear other protective clothing too'); } AddText('.\r\rThe maid talks about how ' + SlaveName + ' now has the true badge of a maid that she may wish to <b>visit</b> sometime and they could talk about maid work and the such. ' + SlaveName + ' understands that she is a gentle woman and would be reluctant to talk much with someone who is not also caring and considerate.'); ApronOK = 1; VarMaid = 0.01; ShowItem(ObjectApron, true); Lake.SetBitFlag(30); break; case 2: ShowAssistant(); if (IsDressSwimsuit() || SwimsuitOK) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0); Money(-50); AddText(SlaveName + ' and ' + ServantName + ' go for a swim in the lake. The water is wonderfully pure and a delight to swim in.\r\rWhen they emerge they see a young boy rummaging in their clothes, looking for valuables. He starts to run but ' + ServantName + ' leaps and grabs him. He claims to be from a poor family in the slums and was hungry. ' + SlaveName + ' asks ' + ServantName + ' to give him a little money and ' + ServantHeShe + ' agrees.'); } else { Points(0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0); AddText(SlaveName + ' and ' + ServantName + ' talk about going for a swim, but ' + SlaveName + ' does not have a swimsuit. Instead they rent a boat and row for a time around the lake shore. ' + SlaveName + ' gets some exercise, but also is quite tired.'); Money(-75); } break; case 2.5: ShowAssistant(); Money(-100 - Difficulty * 25, false, true); AddText(SlaveName + ' and ' + ServantName + ' were ambushed and robbed.\r\r' + ServantName + ' is angry, at the robbers not at ' + SlaveName); break; case 3: ShowMovie(PeopleDancer, false, 0); if (Forest.CheckBitFlag(30)) { AddText(SlaveName + ' meets the faerie dancer who conceals her nature in the city.\r\rThey discuss beauty and some uses for the pure lake waters in cosmetics and certain muds.'); } else { AddText(SlaveName + ' meets a dancer who gives her some beauty tips.'); } AddText('\r\rThe dancer is very pleasant and cheerful, but very active, moving and dancing occasionally.'); Points(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break; case 4: Points(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0); MeetOddTeacher(2, 'and they talked about the flowers of this area.\r\rThe teacher seemed very sensual and a little stimulated.'); break; case 4.5: var v1; if (Lake.CheckBitFlag(32)) { v1 = 'who gives her another dose of the powerful natural aphrodisiac called \'Nymph\'s Tears\'. The Tutor says the sexual rush is unsurpassable.\r\rDo you want her to drink it?'; } else { v1 = 'who gives her a natural potion called \'Nymph\'s Tears\'. The Tutor seemed flushed and excited when she gives it, promising a wonderful experience.\r\rDo you want her to drink it?'; } if (MeetOddTeacher(2, v1)) { } else { DoYesNoEvent(7); ClipRumours.gotoAndStop(1); ClipRumours._visible = true; Lake.SetBitFlag(33); break; case 5: ShowAssistant(); ShowMovie(PeopleAngel, true, 0, int(Math.random() * 2) + 1); AddText(SlaveName + ' meets an Angel near the lake who notices ' + SlaveName + '\'s heavenly items. The Angel blesses her and she collapses to the ground in ecstasy.\r\rLater she recovers and the Angel is gone.'); Points(0, 4, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0, -1, 0, -5, 0, 4, 1, 0, 0); break; case 5.5: ShowAssistant(); ShowMovie(PeopleAngel, true, 0, int(Math.random() * 2) + 1); AddText(SlaveName + ' sees an angelic figure floating above the lake. The sight fills her with peace and contentment.'); Points(0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -2, 0, 0, 0); break; case 6: ShowAssistant(); ShowMovie(PeopleCount, true, 1); Points(0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets the Count who was taking a walk. They discuss the beauty of the lake.\r\rOnce or twice ' + SlaveName + ' thinks she sees him looking at her breasts.'); if (NobleLoveType == 2) { NobleLoveEvent(); } break; case 6.5: ShowAssistant(); ShowMovie(PeopleCount, true, 1); AddText(SlaveName + ' meets the Count but he didn\'t even pay attention to her.'); } } } function DoWalkPalace() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 220, 120); } Backgrounds.ShowPalace(); if (EvilMineFlag > 0) { DoEvilMineEvent(4107); return undefined; } ++TotalWalkPalace; if (NumEvent == 0) { if (temp > 44 && temp < 55 || CheckBitFlag1(20) && Lake.CheckBitFlag(33) && temp < 35) { if (PonygirlAware == 1) { if (PonyTailOK == 0) { NumEvent = 5; } else { if (PonyTailWorn == 1) { NumEvent = 5.1; } else { NumEvent = 5.2; } } } else { NumEvent = 5.3; } } else { if (temp < 12) { NumEvent = VarRefinementRounded > 50 ? 1.5 : 1; } else { if (temp < 24) { NumEvent = 2; } else { if (temp < 40) { NumEvent = (VarTemperamentRounded < 20 || DragonRingOK == 1) ? 3 : 3.5; } else { if (temp < 45) { NumEvent = 4; } else { if (temp < 67) { NumEvent = 6; } else { if (temp < 80) { NumEvent = 7; } else { if (temp < 90) { NumEvent = 8; } else { NumEvent = 9; } } } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkPalace(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case 1: case 1.5: ShowAssistant(); ShowMovie(PeopleLord, true, 1); if (NumEvent == 1) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 0, 0); AddText(SlaveName + ' meets the Lord of the kingdom and he talks briefly with her.'); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0); AddText(SlaveName + ' meets the Lord of the kingdom and he even salutes her. It\'s good for her reputation.'); } if (NobleLoveType == 1) { NobleLoveEvent(true); } break; case 2: ShowAssistant(); ShowMovie(PeopleCount, true, 1); Points(0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets the Count who gives her a piece of advice about the court.'); if (NobleLoveType == 2) { NobleLoveEvent(true); } break; case 3: case 3.5: if (NumEvent == 3) { ShowMovie(PeopleKnight, true, 1, int(Math.random() * 2) + 1); Points(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a Knight who lectures her on valour and tries to make her walk the honourable path.'); } else { ShowMovie(PeopleKnight, false, 1, int(Math.random() * 2) + 1); AddText(SlaveName + ' meets a Knight who liked her personality and gave her a strange ring that he says will temper her determination.'); DragonRingOK = 1; ShowItem(ObjectDragonRing, true); } if (NobleLoveType == 3) { NobleLoveEvent(); MeetKnight(); } break; case 4: ShowAssistant(); ShowMovie(PeopleHighClassProstitute, true, 1); Points(0, 0, 2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a High Class Prostitute at the Palace, gracefully and sensuously walking somewhere. They talk and she gives ' + SlaveName + ' a piece of advice on dealing with the aristocracy.\r\r'); if (SlaveAttitude == 1 || VarNymphomania > 79) { AddText(SlaveName + ' understands her presence here, after all everyone wants sex.'); } else { AddText(SlaveName + ' seemed astonished to see a prostitute here.'); } break; case 5: HideBackgrounds(); DifficultyBondage -= 5; PonyTailOK = 1; ShowItem(ObjectPonyTail, true, 4, 2); Points(0, 0, -1, 0, -1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); UpdateEquipment(); MeetOddTeacher(5, 'who talks of the joys of bondage and gives ' + SlaveName + ' a tail for ponygirls.\r\rShe tells ' + SlaveName + ' about a certain stable in the upper-class part of the city. This stable is reserved for ponygirls and the stable-hand sells some specialty items, but only for ponygirls and their owners.\r\r' + ServantName + ' wonders what she teaches...'); ShowMovie(PeopleOddTeacher, true, 2); break; case 5.1: Points(0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1, 0, -5, 0, 2, 0, 0, 0); MeetOddTeacher(5, 'who pats ' + SlaveName + ' on the behind. She then slowly twists and pulls ' + SlaveName + '\'s pony tail, caressing her until she explosively orgasms.\r\rShe says \'Did you enjoy the lesson?\''); break; case 5.2: MeetOddTeacher(5, 'who looks at her a little disappointed.'); break; case 5.3: Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); MeetOddTeacher(5, 'who pats her on the behind.'); break; case 6: MeetNun(' meets a nun with whom she discusses faith.'); break; case 7: ShowMovie(PeopleRefinementTeacher, false, 0); Points(0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (SlaveGirl.MeetRefinementSchoolTeacher() != true) { AddText(SlaveName + ' meets the teacher of the Refinement School. She gives her some hints on how to behave better in society.'); } break; case 8: Points(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0); MeetDancer('who gives her some advice about beauty.'); break; case 9: MeetXXXSchoolOwner(); } } function RuinsEeerieEvent() { AddText('\r\r'); switch (int(Math.random() * 6)) { case 0: AddText(SlaveName + ' notices during the walk that it is completely silent, no animals, insects, not even the sound of the wind. She pauses for a moment and feels a little frightened. They move on and a few minutes later hear a cat in the distance and all the noises of nature return...'); break; case 1: AddText(SlaveName + ' sees a strange pattern drawn in the soil. An intricate diagram written in some strange language, but blurred by the wind. Staring at it she feels a odd sensation, almost like a hand lightly tracing it\'s fingers over her bottom. She starts and they quickly move on...'); break; case 2: AddText(SlaveName + ' sees a hole in the ground, as if a large creature had dug down quickly, hiding. They walk quickly away...'); break; case 3: AddText(SlaveName + ' feels the wind pick up, and feels it blowing her hair around. The wind almost feels like fingers running over her skin, lightly caressing her bottom, her breasts...'); break; case 4: AddText('For a time the sun seems to go behind a heavy cloud. ' + SlaveName + ' looks up and the sun is clear, not a cloud near. The darkness passes...'); break; case 5: AddText(SlaveName + ' feels an incredible wash of passion run through her. Looking she sees ' + ServantName + ' seems affected too. Equally suddenly the feeling passes and they both look surprised and maybe disappointed...'); } AddText('\r\r'); } function DoWalkRuins() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 300, 20); } Backgrounds.ShowRuinedTemple(1); if (EvilMineFlag > 0) { DoEvilMineEvent(4120); return undefined; } if (EvilMineFlag != -10 && !RuinedTemple.CheckBitFlag(31) && DocksSlavePens.GetEventCount() > 2 && !DocksSlavePens.CheckBitFlag(30)) { DoEvilMine(); return undefined; } ++TotalWalkRuins; if (TentacleHaunt % 10 == 8) { if (TentacleHaunt == 18) { AddText('While ' + SlaveName + ' starts walking around the ruins she smells a foul odour. Between some shattered stones she sees a horribly slain thing. She sees torn tentacles and ripped apart flesh. Terrible burns and claw marks cover the flesh. She looks away in fright and hurries on.\r\r'); TentacleHaunt = -1; } else { if (TentacleHaunt == 28) { DemonHelpAndRape(' is walking by a shattered wall'); return undefined; } else { NumEvent = -1; } } } if (NumEvent == 0) { NumEvent = RuinedTemple.GetEvent(); } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkRuins(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case -1: if (AssistantTentacleSex) { ShowAssistant(2); } else { ShowAssistant(4); } TentacleChoice = int(Math.random() * 2); Tentacles.TentacleSex(8); break; case 0: AddText(SlaveName + ' walks for a time though the grounds of the ruined temple. The main temple building is on a small steep sided hill, almost a plateau. There is signs of an access path that was long ago destroyed. She can see no way to access the temple, short of climbing gear.'); RuinsEeerieEvent(); AddText('Despite the tales of danger she has a pleasant walk.'); Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0.5, 0, 0); break; case 1: RuinedTemple.EventDone(1); RuinedTemple.NoRepeatEvent(1); RuinedTemple.SetEventCount(2); ShowAssistant(); Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0.5, 0, 0); AddText(SlaveName + ' and ' + ServantName + ' start walking around the grounds of the ruined temple. The grounds are large with the main temple building on a small steep sided hill, almost a plateau. There are signs of an access path that was long ago destroyed. ' + SlaveName + ' can see no way to access the temple, short of climbing gear.'); RuinsEeerieEvent(); AddText('They start walking around the hill but have to stop after a time and return. They will have to finish the walk another day.'); break; case 2: RuinedTemple.EventDone(2); RuinedTemple.NoRepeatEvent(2); RuinedTemple.SetEventCount(3); AddText(SlaveName + ' continues around the outer grounds from the point she left off last time. After a time she reaches '); Backgrounds.ShowCave(1); if (EvilMineFlag == -10) { AddText('that horrible mine, she had forgot exactly where it was. With regret for the girls she moves on.'); } else { if (RuinedTemple.CheckBitFlag(31)) { AddText('that horrible mine, she had forgot exactly where it was. She smiles remembering the freeing of the girls, but has some strange thoughts about their imprisonment. She puts aside her arousal and moves on.'); } else { AddText('a cave, maybe a small mine. It has a large gate over the entrance and a foul odour coming from inside. Wrinkling her nose she moves on.'); } } RuinsEeerieEvent(); AddText(ServantName + ' ends the walk and they still have not circled the temple completely, or found a way into the main temple.\r\rAs they are leaving a small patrol of the guard challenge their presence and ' + ServantName + ' shows them a pass.'); ShowAssistant(); Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0.5, 0, 0); break; case 3: RuinedTemple.EventDone(3); RuinedTemple.NoRepeatEvent(3); ShowAssistant(); Points(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0.5, 0, 0); AddText(ServantName + ' and ' + ServantName + ' continue walking around the grounds of the ruined temple. At one point they see a narrow crack in the cliff wall, very tight, almost impossible to squeeze through. ' + SlaveName + ' starts to try and is assailed by a horrible stench and staggers back. ' + ServantName + ' insists they continue on.'); RuinsEeerieEvent(); AddText('After a long walk they reach the point they originally started, they have circled the temple.'); } } function DoWalkSlums() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 400, 290); } ++TotalWalkSlums; Backgrounds.ShowSlums(2); if (EvilMineFlag > 0) { DoEvilMineEvent(4109); return undefined; } if (DrugAddicted == 1) { ajout = 10; } else { ajout = 0; } if (TentacleHaunt % 10 == 4) { if (TentacleHaunt == 14) { AddText('While ' + SlaveName + ' starts walking through the slums she smells a foul odour. In a small alley nearby she sees a horribly slain thing. She sees torn tentacles and ripped apart flesh. Terrible burns and claw marks cover the flesh. She looks away in fright and hurries on.\r\r'); TentacleHaunt = -1; } else { if (TentacleHaunt == 24) { DemonHelpAndRape(' is walking in an abandoned area'); return undefined; } else { NumEvent = -1; } } } if (NumEvent == 0) { if (temp < 10) { NumEvent = VarMoralityRounded > 19 ? 1 : 1.5; } else { if (temp < 20) { NumEvent = VarCharismaRounded > 30 ? 2 : 2.5; } else { if (temp < 30) { if (Talent != 4 && (TentaclesOn == 1 && (MoonPhaseDate > 14 && MoonPhaseDate < 18 && int(Math.random() * (3 - Diffculty)) == 0 || MaxTentacleHarem > 1 && int(Math.random() * (6 - Difficulty)) == 1))) { NumEvent = -1; } else { NumEvent = VarCharismaRounded > 30 ? 3 : 3.5; } } else { if (temp < 35) { NumEvent = 4; } else { if (temp < 40) { NumEvent = VarReputationRounded > 40 ? 5 : 5.5; } else { if (temp < 47) { NumEvent = VarMoralityRounded >= 10 ? 6 : 6.5; } else { if (temp < 53) { NumEvent = 7; } else { if (temp < 62) { NumEvent = 8; } else { if (temp < 70) { NumEvent = VarConversationRounded > 20 ? 9 : 9.5; } else { if (!(Talent == 3 && NumDealer > 1) && temp < 90 + ajout) { NumEvent = 10; } else { NumEvent = 11; } } } } } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkSlums(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case -1: if (AssistantTentacleSex) { ShowAssistant(2); } else { ShowAssistant(4); } TentacleChoice = int(Math.random() * 4); Tentacles.TentacleSex(4); break; case 1: case 1.5: ShowMovie(PeopleProstitute, true, 1, 2); if (NumEvent == 1) { Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a prostitute with whom she talks about her job. The prostitute is very honest and very graphic.'); } else { Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a prostitute with whom she talks about her job. The prostitute honestly talks about her work and is very graphic.\r\r' + SlaveName + ' seemed to be enjoying this conversation and asks many questions.'); } break; case 2: ShowAssistant(); ShowMovie(PeopleHighClassProstitute, true, 1); Points(0, 0, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a High Class Prostitute who is very discrete and seductive.\r\rShe gives ' + SlaveName + ' some advice about <i>acting</i> like a lady.'); break; case 2.5: ShowAssistant(); ShowMovie(PeopleHighClassProstitute, true, 1); Points(2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a High Class Prostitute who is very discrete and seductive.\r\rShe gives ' + SlaveName + ' some advice about make-up and hair styling. She comments that beauty is an essential for her gentlemen.'); break; case 3: if (RapeOn) { Points(0, 5, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 1, 0, -10, 0, 20, -15, 0, 0); AddText(SlaveName + ' has been raped!!'); if (AssistantRape) { ShowAssistant(3); AddText('\r\rShe can see ' + ServantName + ' also being violated.'); } HideBackgrounds(); Backgrounds.ShowNight(1); if (SlaveGirl.ShowRaped() == false) { Generic.ShowRaped(); } } else { HideBackgrounds(); Backgrounds.ShowAlley(1); WalkSlums.gotoAndStop(1); WalkSlums._visible = true; Points(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -5, -5, 0); if (!Slums.CheckBitFlag(31)) { AddText(SlaveName + ' sees an unhappy looking slave woman squatting in front of her Mistress. The Mistress and her slave are both naked but do not seem to care, the slave woman is looking tired. The Mistress sees ' + ServantName + ' and ' + SlaveName + ' and gestures for them to come over.\r\r'); PersonSpeak('Mistress', 'I see you are taking your slave for a walk too. My little pet here is a new slave, she just sold herself recently to me for a 1 year period. Her daughter was stolen by slavers and shipped to a far country. We all know kidnapping people into slavery is illegal but it happens often, and the law is reluctant to investigate.\r\rThis woman and her husband needed money to travel and retrieve their daughter, so she has sold herself for a limited time, but for full, unlimited slavery.\r\rShe is finding life difficult, I have a strict regime of spanking, licking my pussy, whipping, sucking my clit, humiliation and making me orgasm. I do not think she had ever licked another woman\'s pussy before, but she is learning.\r\rAs a good slave she is always naked and is gagged whenever she does not need her mouth to pleasure me, after all who cares what she thinks or wants. She is of course fitted with the largest anal-plug she can take.', true); AddText('\r\r' + SlaveName + ' is sad to hear how this woman is being treated, and more sad to hear about her daughter, and hopes her husband will save their daughter.\r\r' + SlaveName + ' reconsiders her options of slaves, masters, mistresses and Slave Makers.'); AddText('\r\rAs they leave they hear the Mistress talking softly to her slave,\r\r'); PersonSpeak('Mistress', 'I still have not decided, but there are people who will happily pay to impregnate a healthy, beautiful slave. Imagine your husband returning to see his heavily pregnant wife licking my pussy...', true); } else { AddText(SlaveName + ' again meets the Mistress and her slave walking in an alley. The Mistress ignores them but the woman looks sadly at ' + SlaveName + ' who looks back, tears forming in her eyes. She quickly leaves, wishing there was something she could do, but knowing there is nothing.'); } Slums.SetBitFlag(31); } break; case 3.5: if (!Slums.CheckBitFlag(30) && !RapeOn) { HideBackgrounds(); Backgrounds.ShowAlley(1); WalkSlums.gotoAndStop(2); WalkSlums._visible = true; AddText(SlaveName + ' sees some sad looking slave-girls being led toward a very seedy looking brothel. She is unsure if they are being forced to work there by an uncaring Master or if they are owned by the brothel.\r\rEither way ' + SlaveName + ' feels a little unhappy at their sadness.'); if (Slutiness > 5) { AddText(' ' + SlaveName + ' is at least happy they will be getting plenty of sex.'); } Slums.SetBitFlag(30); Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0); } else { ShowAssistant(); AddText('A strange guy was following ' + SlaveName + ' but he stopped after a while.'); } break; case 4: ShowAssistant(); Money(-200 - Difficulty * 25, false, true); AddText(SlaveName + ' and ' + ServantName + ' have been robbed!\r\r' + ServantName + ' is annoyed but this is the slums after all.'); break; case 5: case 5.5: ShowMovie(PeopleKnight, true, 1, int(Math.random() * 2) + 1); if (NumEvent == 5) { var v1 = 100 - Difficulty * 10; Money(v1); AddText(SlaveName + ' meets a Knight in a not so advantageous situation. He gives her ' + v1 + 'GP to not tell this to anyone.'); if (NobleLoveType == 3) { NobleLoveEvent(); } } else { AddText(SlaveName + ' meets a Knight in a not so advantageous situation. As his reputation is far higher than the reputation of ' + SlaveName + ', he doesn\'t pay attention to her.'); } break; case 6: case 6.5: ShowMovie(PeoplePimp, false, 0); if (NumEvent == 6) { DifficultyBrothel -= 5; Points(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (TestObedience(DifficultyBrothel, 113)) { AddText(SlaveName + ' has been complimented by a pimp, who said how sexy she is. She called back \'I\'ll look forward to working for you sometime!\''); } else { AddText(SlaveName + ' has been complimented by a pimp, who said how sexy she is. The work at the brothel does not seem so bad now.'); } } else { Money(150 - Difficulty * 25); if (Slutiness < 6) { Points(0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 2, 0, 5, 0, 0, 0, 0, -5, 0, 0); } else { Points(0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 2, 0, 5, 0, 0, 0, 0, 1, 0, 0); } AddText('A pimp convinced your pupil to let him test her. He gave her ' + (150 - Difficulty * 25) + 'GP afterward to convince her to come work in his brothel.'); DifficultyBrothel -= 5; } break; case 7: MeetSleazyBarOwner(); break; case 8: MeetXXXSchoolOwner(); break; case 9: case 9.5: ShowMovie(PeopleBarMaid, true, 1, int(Math.random() * 2) + 1); if (NumEvent == 9) { MaxBlowJob += 1; AddText(SlaveName + ' talks with a barmaid of a sleazy bar who gives her some advice about making customers enjoy the bar.'); MeetBarmaid(); Points(0, 0, 0, 0, -1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { AddText(SlaveName + ' meets a barmaid of a sleazy bar but after a clumsy opening by ' + SlaveName + ' the barmaid didn\'t want to talk with her.'); } break; case 10: AddText('While your pupil is gone, a strange man comes to sell you some drugs to help you train you pupil. These drugs are illegal but no-one enforces the laws for them.\r\rThe drugs also overtly bypass her free-will so you know ' + SlaveName + ' will not willingly take them. You will have to slip the drugs into her food or drink. If she finds out she will be upset and angry.'); if (Talent == 3 && NumDealer == 0) { AddText('\r\rAs fellow businessman you talk a bit and he tells you where his home is and invites you to visit anytime.'); } HideBackgrounds(); PlaceHouse._visible = true; Dealer._visible = true; NextVisit._visible = false; Quitter._visible = true; MorningButton._visible = false; PlanningButton._visible = false; NumDealer += 1; if (Talent == 3 && NumDealer == 1) { TakeAWalkMenu.DealerHome._visible = true; } break; case 11: MeetNun(' meets a nun who is there to save the helpless souls. ' + SlaveName + ' listens to the nun sermons.'); } } function DoWalkTownCenter() { if (ZoomOn) { StartZoomImage(WalkZoom, 20, 8, 400, 200, 200); } Backgrounds.ShowTownCenter(); if (EvilMineFlag > 0) { DoEvilMineEvent(4108); return undefined; } ++TotalWalkTownCenter; if (NumEvent == 0) { if (temp < 10) { NumEvent = VarGold > 1000 ? 1 : 1.5; } else { if (temp < 22) { if (StrapOnOK == 0) { NumEvent = 2; } else { if (int(Math.random() * 3) == 1 && ImprovedDildoOK == 0) { NumEvent = 2.1; } else { NumEvent = 2.2; } } } else { if (temp < 30 + Difficulty) { NumEvent = 3; } else { if (temp < 40) { NumEvent = 4; } else { if (temp < 50) { NumEvent = 5; } else { if (temp < 60) { NumEvent = 6; } else { if (temp < 70) { NumEvent = CheckBitFlag1(8) ? 7 : 7.5; } else { if (temp < 80) { NumEvent = 8; } else { if (temp < 90) { NumEvent = 9; } else { NumEvent = 10; } } } } } } } } } } OldNumEvent = NumEvent; if (SlaveGirl.DoWalkTownCenter(NumEvent) == true) { return undefined; } OldNumEvent = NumEvent; switch (NumEvent) { case 1: case 1.5: ShowMovie(PeopleMerchant, true, 1); if (NumEvent == 1) { Points(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a shop owner who gives her some advice about earning money.'); } else { AddText(SlaveName + ' meets a shop owner but he was very busy.'); } break; case 2: ShowMovie(PeopleLesbian, true, 3); Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a cute girl who flirts with her and gives her a strap-on and graphic instructions of its use. She darts in and kisses ' + SlaveName + ' on her cheek and runs off, waving.\r\rShe is now more interested in lesbian sex (so she can try it out).'); StrapOnOK = 1; DifficultyLesbian -= 5; ShowItem(ObjectStrapOn, false, 0); break; case 2.1: ShowMovie(PeopleLesbian, true, 3); ImprovedDildoOK = 1; Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); AddText(SlaveName + ' again meets the cute lesbian girl who flirts with her. They talk about sex and she gives ' + SlaveName + ' a realistic but large cock shaped dildo saying it is the best dildo she had ever used.'); DifficultyLesbian -= 2; break; case 2.2: ShowMovie(PeopleLesbian, true, 3); Points(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); if (CheckBitFlag1(10)) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } if (TestObedience(DifficultyLesbian, 11)) { AddText(SlaveName + ' again meets the cute lesbian girl who flirts with her. The girl gives ' + SlaveName + ' suggestions and ideas for having sex with a woman.'); } else { AddText(SlaveName + ' again meets the cute lesbian girl who flirts with her.\r\rShe is now more open to the idea of lesbian sex.'); } DifficultyLesbian -= 2; break; case 3: ShowAssistant(); Money(-200 - Difficulty * 25); if (VarCharismaRounded > 49) { AddText('A passing nobleman seems ' + SlaveName + ' and takes an instant fancy to her'); } else { AddText('A passing nobleman sees ' + SlaveName + ' and says that she has potential'); } AddText(' and orders ' + ServantName + ' to hand her over to his possession.\r\r' + ServantName + ' is taken aback but cannot refuse and reluctantly agrees. ' + SlaveName + ' looks distressed but the noble has her placed into his carriage and then enters into a shop.\r\r' + ServantName + ' speaks to a servant on the carriage and bribes them to allow ' + SlaveName + ' to escape. Quickly, ' + SlaveName + ' lightly hits the servant and ' + ServantName + ' and she run away into the city, hoping the noble does not know who they actually are.'); break; case 4: ShowMovie(PeopleBarOwner, false, 0); Points(0, 0, 0, -1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); AddText(SlaveName + ' meets a barman and talk with him about working in a bar.'); break; case 5: MeetSleazyBarOwner(); break; case 6: MeetNun(' talks about faith with a nun.'); break; case 7: case 7.5: if (NumEvent == 7) { ClearBitFlag1(8); AddText(SlaveName + ' meets a cook who gives her some advice.'); } else { SetBitFlag1(8); ShowMovie(WalkCatgirlMeeting, true, 2, 1); if (Catgirl) { AddText(SlaveName + ' meets a cook who gives her some advice.\r\rWhile leaving sees an odd girl nearby, maybe she is a cat slave too. She nods and disappears for a moment returning with two large fresh fish, smiling. She gives ' + SlaveName + ' one and quickly leaves.'); } else { AddText(SlaveName + ' meet a cook who give her some cooking tips.\r\rWhile leaving sees an odd girl nearby, maybe she is a cat slave. She nods and disappears for a moment returning with a large fresh fish, smiling. She quickly leaves.'); } } ShowMovie(PeopleCook, false, 0); Points(0, 0, -1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break; case 8: MeetPuppyGirl(); break; case 9: MeetXXXSchoolOwner(); break; case 10: MeetIdol(); } } function DemonGirlCum(target_mc, origx) { clearInterval(intervalId); var v4 = target_mc._x; if (target_mc._x > origx) { target_mc._x = origx - 30; } else { target_mc._x += 30; } if (target_mc._x != origx) { intervalId = setInterval(this, 'DemonGirlCum', 60, target_mc, origx); } else { PeopleDemon.gotoAndStop(5); if (DemonicBraWorn == 1 || DemonicPendantWorn == 1) { if (CheckBitFlag1(5)) { AddText('\r\rThere is a rush of heat in the ' + itemstr + SlaveName + ' is wearing and immediately she is filled with lust and visions of being fucked by large demonic girl cocks. She is aware the demon girl is masturbating again and feels uncontrollably drawn to her again. She reluctantly staggers over, kneels down and opens her mouth wide.'); AddText('The demon girl is close to cumming when a woman grabs her hand and pulls it away. The demon girl screams a curse and the woman re-binds her hand. She walks over to ' + SlaveName + ' and gently shakes her and she snaps to her senses. The woman explains how these girls gain power through orgasm and by leeching power from others.\r\rShe walks over and places a tight ring around the base of the demon girl\'s cock, explaining that it will prevent her cumming. She then fits the girl with a ball-gag and a set of vibrator panties to stimulate her, mainly for punishment, and she sets them at maximum. The demon girl moans and thrusts her cock trying to cum but failing.\r\r'); if (VibratorPantiesOK == 0) { AddText('The woman offers ' + SlaveName + ' a set of vibrator panties for her personal enjoyment. ' + SlaveName + ' can see the demon girl is not particularly enjoying hers though.\r\r'); VibratorPantiesOK = 1; } AddText('As ' + SlaveName + ' leaves she sees the woman slowly lowering herself onto the demon girl\'s cock...'); } else { AddText(' She looks passionately at ' + SlaveName + ' and cums a huge spray of cum.\r\rThere is a rush of heat in the ' + itemstr + SlaveName + ' is wearing and immediately she is filled with lust and visions of being fucked by large demonic girl cocks. She is aware the demon girl is masturbating again and feels uncontrollably drawn to her. She staggers over, kneels down and opens her mouth wide. ' + SlaveName + ' feels waves of lust that seem to match the demon girl\'s strokes of her cock.'); AddText('The demon girl screams out and cums again, the chain on her wrist snaps, and she pours her spurting cum into ' + SlaveName + '\'s mouth, who automatically tries to swallow all of it. As she swallows she feels an enormous pleasure and orgasms intensely.\r\rWhen she recovers she feels very tired, has cum over her face and the demonic girl is gone.'); } } else { if (CheckBitFlag1(5)) { AddText('\r\rThe girl talks about power and dominance and then starts masturbating again, quickly. ' + SlaveName + ' grabs her hand to stop her, remembering what happened last time.'); AddText('They struggle for a bit and another hand reaches in and helps pull the demon girl\'s hand free. The demon girl screams a curse and ' + SlaveName + ' sees a woman helping who re-binds the demon girl\'s hand. The woman thanks ' + SlaveName + ' and explains how these girls gain power through orgasm and by leeching power from others.\r\rShe then places several tight rings around the base of the demon girl\'s cock, explaining that it will prevent her cumming, no matter what. She then fits the girl with a ball-gag and a set of vibrator panties to stimulate her, mainly for punishment, and she sets them at maximum. The demon girl moans and thrusts her cock trying to cum but failing.\r\r'); if (VibratorPantiesOK == 0) { AddText('In thanks the woman offers ' + SlaveName + ' a set of vibrator panties for her personal enjoyment. ' + SlaveName + ' can see the demon girl is not particularly enjoying hers though.\r\r'); VibratorPantiesOK = 1; } else { AddText('In thanks the woman pays ' + SlaveName + ' an amount of gold.'); Money(100 - Difficulty * 10); } AddText('As ' + SlaveName + ' leaves she sees the woman slowly lowering herself onto the demon girl\'s cock...'); } else { AddText('\r\rThe demon girl slowly speeds up and with a shout cums a large spray of cum. The chain on her wrist snaps and when she stops cumming smiles and looks at ' + SlaveName + ' and gestures. ' + SlaveName + ' feels a wash of confusion and feels vague for a while. When she recovers, she is bent over a wall, her ass feels a bit sore and she tastes cum. She can feel cum leaking from pussy and ass. The demonic girl is gone.'); } y; } Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0); } } function Milked() { Backgrounds.ShowSlums(1); if (TentacleHaunt > 0) { if (TentaclePregnancy == 0) { TentaclePregnancy = 28 + int(Math.random() * 5); } TotalTentacle += 1; SetText(SlaveName + ' seems to hear voices and acts oddly. She darts into the woods and loses ' + ServantName + '. In a daze she makes her way towards the barn, unaware of a rustling noise in the bushes. She takes her place in a stall, the farm-hand attaches the suction cups to her breasts and inserts her dildos. Her breasts swell and her milking starts.\r\rLost in the pleasure from her breasts and from the slow pulsing in the dildos she is only dimly aware of the farm-hand crying out and collapsing. She feels the dildo in her pussy roughly pulled out. She is a little confused, accustomed to the one in her ass being removed. She moans as a large cock thrusts into her pussy. She hears another girl cry out and looks over. She sees the girl entwined in tentacular forms, and as she watches a tentacle pushes into the girl\'s moist pussy. The girl looks as surprised, but then looks almost reassured as a large tentacle slides into her mouth.\r\r' + SlaveName + ' gasps as she feels the tentacle in her quiver, it\'s cum flooding into her. She cries out and shakes with her own orgasm. The other girl lets out a muffled groan as she also orgasms, then coughs as cum sprays into her mouth.'); AddText('\r\rAnother tentacle sinks into ' + SlaveName + '\'s pussy as she watches a gout of cum erupt around the tentacle in the other girl\'s pussy.\r\rSometime later the things withdraw and ' + SlaveName + ' gets out of her stall, leaves the barn and joins an angry ' + ServantName + '.'); UseGeneric = true; } else { AddText(SlaveName + ' seems to hear voices and acts oddly. She darts into the woods and loses ' + ServantName + '. She makes her way to the barn and takes her place in a stall. A farm-hand attaches the suction cups to her breasts and inserts her dildos '); if (DickgirlXF > 0) { AddText('and a larger suction device is placed over her cock. Her breasts swell, milk spurting from her nipples and her milking starts. The device on her cock sucks gently, enough to arouse but not enough to make her cum.\r\rThe farmer arrives to supervise, feeds her a sweet-like drug, whispering in her ear. As the drug takes effect she explodes in orgasm, cum pouring from her cock into the device. She barely feels the farmer\'s cock enter her ass as her orgasm goes on and on. When she recovers the farmer is fucking her ass and a farm-hand has his cock in her mouth.\r\rSometime later she leaves and joins an angry ' + ServantName + '.'); } else { AddText('. Her breasts swell, milk spurting from her nipples and her milking starts.\r\rThe farmer arrives to supervise, feeds her a sweet-like drug and drops his pants and unceremoniously ass fucks her. The farm-hand simultaneously places his cock to her lips.\r\rSometime later she leaves and joins an angry ' + ServantName + '.'); } } SlaveGirl.ShowMilking(); if (UseGeneric) { Generic.ShowMilking(); } TotalMilked += 1; MilkInfluence += 9; if (MilkInfluence > 16) { MilkInfluence = 16; } Points(1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 1, -1, 1, 0, -2, 0, 2, 0, 0, 0); } function DemonHelpAndRape(say) { ShowAssistant(4); StartMoaning(1); if (SlaveGirl.ShowDemonRape() != true) { Generic.ShowDemonRape(); } Points(0, 5, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 1, 0, -5, 0, 10, -5, 0, 0); AddText(SlaveName + say + ' and a large thing grabs her, tentacles winding around her body. '); switch (int(Math.random() * 3)) { case 0: AddText('A tentacle probes her mouth trying to force it\'s way in, while another pulls at her panties.'); break; case 1: if (Naked) { AddText('A tentacle slides over her bare skin winding around her breasts, another sliding towards her groin.'); } else { AddText('A tentacle slides into her dress winding around her breasts, another slipping into her panties.'); } break; case 2: if (Naked) { AddText('A slimy tentacle slides along her bare skin, and rubs along the slit of her pussy.'); } else { AddText('A slimy tentacle slides under her dress and panties, and rubs along the slit of her pussy.'); } } AddText('\r\rShe hears an inhuman shriek and the tentacle is pulled away by an impossibly black shape. She hears a sickening tearing and a spraying of blood and fluids. All the time she can barely see a large black shape between her and the tentacled thing.\r\rThe light dims and she hears the dark shape softly whispering \'mine\'. Afraid she gets up to run but feels strong hands grab her, holding her immobile. Quickly the pitch black hands strip her naked while holding her firm against it\'s incredibly muscled body. As she is stripped she is aware of a large maleness growing from <b>his</b> groin.\r\r'); switch (int(Math.random() * 3)) { case 0: StartFucking(1); AddText('The figure bends her, kneeling face down and she feels the large cock sliding along the crease of her ass. She cries out as the large cock, slick with pre-cum or something else, plunges into her ass. The cock seems to enter impossibly deep until she feel the slap of his large testicles. Making no noise he fucks her, paying no care for her comfort or pleasure. He fucks fast, hard, deep, and she feels little arousal.\r\rHe fucks for many minutes until she feels slapping his testicles swell larger and larger. She hears a soft whisper and he thrusts in and cums, and she suddenly, impossibly orgasms, screaming her passion, as his cum pours into her bowels.'); break; case 1: StartFucking(1); AddText('The figure leans her over and she feels a large cock sliding along the crease of her ass. She moans as he plunges into her pussy, his cock already slick. He fucks hard, fast, deep paying no attention to her needs or comfort. His large testicles slap against her clit and her arousal grows despite the terrible situation.\r\rHe fucks for minute after minute, silently and quickly. She whimpers and orgasms after a time, but he ignores her and continues fucking. Minutes later she feels his testicles swell and she hears an indistinct whisper and he thrusts in and cums, and she orgasms again, screaming her passion, as his cum floods and pours into her womb.'); break; case 2: StartFucking(2); AddText('The figure bends her over, a large cock sliding along the crease of her ass. She then feels another presence, he has two cocks! She cries out as he plunges slick cocks into both pussy and ass. He fucks hard and fast, paying no attention to her needs or comfort. His large testicles slap against her clit and her arousal grows despite the pain in her ass.\r\rHe fucks for minute after minute, silently and quickly. She whimpers and orgasms after a time, but he ignores her and continues fucking. Minutes later she feels his testicles swell huge and she hears a soft whisper and he thrusts both cocks in and cums. She also orgasms screaming and crying, as his cum floods and pours into her womb and bowels.'); } AddText('\r\rThe thing drops her to the ground, cum dribbling out of her. She sees the shape fade into the darkness. Moments later the darkness lifts and she can see her surroundings. She gets to her feet and walks painfully home.'); } function WalkShortcuts(key) { switch (key) { case 65: if (Forest.CheckBitFlag(34)) { DoWalk(1, -1); } return undefined; case 68: if (TakeAWalkMenu.DealerHome._visible) { DoVisitDealer(); } return undefined; case 69: if (CheckBitFlag1(14)) { DoVisitSeer(true); } return undefined; case 70: DoWalk(1); return undefined; case 72: DoWalkHome(); return undefined; case 75: DoVisitSlaveMarket(); return undefined; case 76: DoWalk(2); return undefined; case 77: if (TakeAWalkMenu.SalesmanHome._visible) { DoVisitSalesman(); } return undefined; case 79: DoWalk(6); return undefined; case 80: DoWalk(5); return undefined; case 82: DoWalk(7); return undefined; case 83: DoWalk(4); return undefined; case 84: DoWalk(3); return undefined; case 85: if (TakeAWalkMenu.Ruins._visible) { DoWalk(8); } return undefined; } } function DoVisitNext() { ShowMainButtons(); HideEndings(); HideSlaveActions(); HidePeople(); HideStatChangeIcons(); NextVisit._visible = false; SetText(''); ShowRobes(); Beep(); } function DoVisitMenu() { if (DoneVisit) { ServantSpeak('There is not enough time to take her to visit another person today.'); } else { ServantSpeak('You will take ' + SlaveName + ' to visit a noted person in the city. This could improve her reputation and can educate her.\r\rThe people are ones you know or she has met and is willing to meet her.'); VisitMenu._visible = true; HideMainButtons(); Quitter._visible = true; ActionsMenu._visible = false; } Beep(); } function DoVisit(person) { HideRobes(); SetText(''); HideStatChangeIcons(); Quitter._visible = false; VisitMenu._visible = false; NextVisit._visible = true; ShowSlaveMaker(false); Beep(); if (SlaveGirl.DoVisit(person) == true) { return undefined; } switch (person) { case 1: DoVisitShop(); break; case 2: DoVisitBarmaid(); break; case 3: DoVisitProstitute(); break; case 4: DoVisitHighClassProstitute(); break; case 5: DoVisitMaid(); break; case 6: DoVisitKnight(); break; case 7: DoVisitCount(); break; case 8: DoVisitLord(); break; case 9: DoVisitLadyFarun(); } DoneVisit = 1; } function VisitVar(vv, inc, max) { if (vv == 0.01 || vv == 0.02) { vv = 0; } if (vv + inc > max) { inc = max + 1 - vv; } if (vv == 0) { if (inc > max) { inc = max - 1; } } vv += inc; if (vv == 0) { return 0.01; } return vv; } function DoVisitShop() { ShowMovie(PeopleMerchant, true, 1); Backgrounds.ShowShop(); if (VarMerchant == 0) { VarMerchant = 0.01; if (!CheckBitFlag1(28)) { AddText('You take ' + SlaveName + ' to visit a renowned store for items to aid slave training. It is a small store in the town centre, very cramped and with a large range of odd things.'); } else { AddText('You take ' + SlaveName + ' to visit merchant\'s shop of training items.'); } AddText('\r\rYou have a working relationship with the shop owner who is always very busy. He always welcomes assistants and you have arranged for your slaves to help a bit while being tutored in business practices.\r\r'); } if (Naked) { PersonSpeak('Shop Owner', 'Put some clothes on, I am not running a brothel. Come back another time.', true); } else { if (VarCharismaRounded >= 30 && VarConversationRounded >= 30) { if (SlaveGirl.DoVisitShop() != true) { if (VarMerchant < 10) { AddText(SlaveName + ' talks with the shop owner who explains to her how to earn money while she helps out. She flirts and charms the customers while he does the sale. He gets customers from a wide range of social classes and professions.\r\rHe gives her some gold to thank her for her assistance.'); Money(50); var v1 = int(VarCharismaRounded / 20) + int(VarConversationRounded / 20); VarMerchant = VisitVar(VarMerchant, v1, 10); Points(0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, v1, 0, 0, 0, 0); } else { PersonSpeak('Shop Owner', 'It was great to talk with you but I don\'t have the time anymore.'); } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(40)) { AddText('\r\r' + SlaveName + ' asks the Merchant if he has heard of a place called the ruins. He mentions he once sold some mining gear to a odd, disgusting person who muttered to himself as he left \'ruins, mine, mine, heartstone, dead\'.'); RuinedTemple.SetBitFlag(40); } } } else { PersonSpeak('Shop Owner', SlaveName + ', go away, I need pretty assistants to draw in the customers and charm them into purchasing, you are not good enough!', true); } } } function DoVisitBarmaid() { Backgrounds.ShowBar(); if (VarBarmaid == 0.01) { ShowMovie(PeopleBarMaid, true, 1, 1); VarBarmaid = 0.02; AddText('You take ' + SlaveName + ' to visit the barmaid she had met. You have heard that she is working in a respectable bar in the town center. When you arrive ' + SlaveName + ' points out the girl. She is dressed in a bunny-suit, an unusual dress for a \'normal\' bar. The girl is very energetic and also very skilled as a waitress, flirting with customers, male and female.\r\rYou sit and leave ' + SlaveName + ' to talk to her.\r\r'); } else { ShowMovie(PeopleBarMaid, true, 1, int(Math.random() * 2) + 1); } if (Naked) { PersonSpeak('Barmaid', 'You should at least wear a costume, we are not in a sleazy bar. Come back with something on.', true); } else { if (VarConversationRounded >= 30) { if (SlaveGirl.DoVisitBarmaid() != true) { var v1 = false; if (VarBarmaid < 5) { var v2 = int(VarConversationRounded / 10); VarBarmaid = VisitVar(VarBarmaid, v2, 5); Points(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v2, 0, 0, 0, 0); AddText('The barmaid takes a break and talks with ' + SlaveName + ' about how to be more charming and entertaining. She make references to \'other\' forms of entertainment.'); v1 = true; } else { PersonSpeak('Barmaid', 'I enjoyed talking with you but you should see someone else now.'); } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(39)) { AddText('\r\r' + SlaveName + ' asks the Barmaid if she has heard of a place called the ruins. She thinks a bit and says no.'); RuinedTemple.SetBitFlag(39); } if (v1) { AskHerQuestions(8000, 8001, 8002, 8499, 'Tell me about yourself', '\'Other\' entertainments', 'Gossip', 'Nothing', 'What will ' + SlaveName + ' ask her about?'); } } } else { PersonSpeak('Barmaid', SlaveName + ', come back another time, I don\'t have the time to talk with a girl who can\'t say three sentences without mistakes.', true); } } } function DoVisitProstitute() { ShowMovie(PeopleProstitute, true, 1, int(Math.random() * 2) + 1); if (VarProstitute == 0) { VarProstitute = 0.01; AddText('You take ' + SlaveName + ' to visit a renowned prostitute who works in a variety of places, not through any one brothel. She is very skilled and is a most enthusiastic lover, willing to do anything for a price. She never talks about her past, even to the extent that she has never told anyone her name. People unofficially call her <b>Miss N</b> for Miss No-name, but she does not reply to that name.\r\rYou have occasionally used her services, for training slaves of course, due to her considerable skills. Over the time you have developed a friendship with her and she is happy to talk to your slaves about her business, sex, gossip in general. She is who she is so she still <i>charges, a token 1GP</i> for the visit.\r\r'); } if (VarGold < 1) { AddText('You do not have enough money for her token charge, you will have to visit her another time.'); return undefined; } Money(-1); if (SlaveGirl.DoVisitProstitute() != true) { NumEvent = 8020; if (VarProstitute > 0 && VarProstitute < 5) { var v2 = int(VarBlowJobRounded / 5); VarProstitute = VisitVar(VarProstitute, v2, 5); AddText(SlaveName + ' talks with the prostitute about her work. This discussion seems to make ' + SlaveName + ' horny.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, v2, 0, 0, 0, 0); if (Naked) { AddText('The prostitute comments how a lack of modesty is an advantage in her job. She also says how beautiful ' + SlaveName + '\'s body is. ' + SlaveName + ' blushes but seems pleased.'); Points(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0); } NumEvent = 0; } else { if (VarProstitute == -1000) { var v1 = int(Math.random() * 2) + 3; PersonSpeak('Prostitute', 'I am sorry you missed the cocks, I mean party. There is another in ' + v1 + ' more days, come back then.', true); VarProstitute = 1000 + 100 * v1; } else { if (VarProstitute == 1000) { Backgrounds.ShowBedRoom(16); ShowMovie(PeopleProstitute, true, 1, 11); SetText('You arrive at your friend, the prostitutes home, she is preparing for the party, trying on lingerie,\r\r'); PersonSpeak('Prostitute', 'Well, Hi, ' + SlaveMakerName + ' and especially ' + SlaveName + ', the party is on tonight. Instead of her usual evening \'activities\' I will pick her up and escort her for an evening of pleasure and money.\r\rNow everyone loves money and sex, but just in case, do you still want her to \'come\' with me?', true); AddText('\r\rWill ' + SlaveName + ' attend the party?'); VarProstitute = 1001; DoYesNoEvent(8025); } else { if (VarProstitute < 1000) { if (Naked) { var v1 = int(Math.random() * 2) + 3; VarProstitute = 1000 + 100 * v1; AddText('Miss N speaks to you both, but looks admiringly at ' + SlaveName + ',\r\r'); PersonSpeakStart('Prostitute', SlaveName + ' you\'re as sexy as I thought, also good and shameless, parading your lovely naked body.', true); if (DickgirlXF > 0) { AddText(' Your cock is especially nice, large and thick, yumm!'); } PersonSpeakEnd('\r\rI have been hired for a party in a few days to \'entertain\'. I think ' + SlaveName + ' would love it too, she will \'meet\' many people, even some advantageous to you and her. Well, I do not have an invitation for you, ' + SlaveMakerName + ', so I will have to escort her for the evening.\r\rIf she wants to go to the party please bring her back in ' + v1 + ' days.'); } else { if (VarProstitute == 100) { PersonSpeak('Prostitute', 'Please, come back sometime, I would love to see your naked body.\r\rFor now we can have a chat but there is not much I can teach you, it is better to experience!', true); } else { PersonSpeak('Prostitute', SlaveName + ', you\'re a beautiful, sexy woman and I would love to see your naked body. Why don\'t you return some day when you are naked for all to see.\r\rI will have wonderful thing for you...', true); AddText('\r\rThe prostitute slowly runs her hand over her pussy. ' + SlaveName + ' is somewhat confused by the offer, she knows Miss N is female!'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); VarProstitute = 100; } } } else { var v1 = (VarProstitute - 1000) / 100; PersonSpeakStart('Prostitute', 'You\'re so eager, you\'ll love the party, but it is not today, come back ', true); if (v1 > 1) { PersonSpeakEnd('in ' + v1 + ' days.'); } else { PersonSpeakEnd('tomorrow.'); } } } } } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(33)) { AddText('\r\r' + SlaveName + ' asks the prostitute if she has heard of a place called the ruins. She thinks a bit and says she once had a customer of the old faith who mentioned a ruined temple in passing.'); RuinedTemple.SetBitFlag(33); } if (NumEvent == 8020) { NextVisit._visible = false; NextEvent._visible = true; NumEvent = 8020; } } } function AfterProstitute() { var v1; AddText('As you get up to leave, Miss N speaks to you,\r\r'); PersonSpeak('Prostitute', 'Well you have paid for my services and you are <i>both</i> very attractive...', true); if (TestObedience(DifficultyThreesome, 111)) { if (int(Math.random() * 3) < 2) { if (Gender == 2) { v1 = 6; } else { if (IsDickgirl()) { v1 = 5; } else { v1 = 7; } } } else { v1 = int(Math.random() * 3) + 8; } if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0); } Points(0, 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0.5, 0, -0.5, 0, 1, 0, 0, 0); AddText('\r\rHappily you both accept her offer...'); } else { AddText('\r\r' + SlaveName + ' is reluctant, so you refuse her offer, for now...'); v1 = int(Math.random() * 3) + 8; } if (v1 == 10) { HideBackgrounds(); } ShowMovie(PeopleProstitute, true, 1, v1); } function ProstituteParty(eventno) { HideAssistant(); switch (eventno) { case 8025: TotalProstituteParty += 1; AddText('Your friend, the prostitute, picks up ' + SlaveName + ' and takes her to the home of a wealthy family. They enter via the servants entrance and are taken to a changing area. Miss N explains, while changing into a maid uniform,\r\r'); PersonSpeak('Prostitute', 'The upper classes of Mioya are a contradictory people, they claim to follow the ways of the gods, but they keep slaves. The gods frown on prostitution, telling us sex is for love and procreation, but all of the upper class employ prostitutes for their parties. Who can blame them, we all love sex!\r\rTo keep a semblance of propriety, we have been hired a maids for the night, highly paid maids that are willing to do whatever our masters ask. Despite any issues you may have, tonight call anyone who looks like a guest, Master or Mistress.\r\rAs you see you should keep at least some of your maid\'s uniform on at all times.\r\rFor this evening you may accompany me if you like, I will introduce you to some people, and help you to enjoy yourself more. If you prefer you can stay with the other \'maids\' and meet a wider range of guests at this party and maybe even do some actual maid work!', true); var v1 = 8026; if (DickgirlOn && int(Math.random() * 3) == 0) { v1 = 8028; AddText('\r\r' + SlaveName + ' is surprised when Miss N removes her clothes to see she has a large cock. Previous times ' + SlaveName + ' had seen her naked she had been completely female. ' + SlaveName + ' asks about it,\r\r'); PersonSpeakStart('Prostitute', 'I have had a special request from a certain Lady to indulge her taste for hermaphrodites. ', true); if (DickgirlXF > 0) { PersonSpeakEnd('As you as a hermaphrodite, I would like you to accompany me, and \'assist\' with the Lady. You will receive an extra payment.'); } else { PersonSpeakEnd('If you decide to accompany me, you will have to take a potion that will briefly give you a cock, to help \'assist\' me with the Lady. A much weaker version of the \'Priapus Draft\' lasting a much shorter time, but much safer. If you do you will receive a bonus.'); } PeopleProstitute.gotoAndStop(4); } else { PeopleProstitute.gotoAndStop(3); } AskHerQuestions(v1, 8027, 0, 0, 'Accompany Miss N', 'Stay with other \'maids\'', '', '', 'What does ' + SlaveName + ' do?'); ShowMovie(PeopleProstitute, true, 1); return undefined; case 8026: SetBitFlag1(37); UseGeneric = false; SlaveGirl.ShowSexActFuck(); ShowMovie(PeopleProstitute, false, 1, 3); MaxFuck += 2; SetText('The prostitute escorts ' + SlaveName + ' and they take a serving platter of drinks each, and start circulating through the party. Miss N makes sure that their uniforms are very minimal, she actually wears nothing but stockings from the waist down.\r\rFor a time they just serve as normal, but slutily dresses maids, until they meet a noble gentleman, who calmly seats Miss N down on a table, takes out his cock and starts fucking her, there in the main room of the party! As ' + SlaveName + ' watches she feels hands pull down her panties and she is leant forward and a thankfully well lubricated cock pushes into her ass. As the cock sinks in fully she looks over and sees Miss N looking ecstatically happy as she is fucked.\r\rSometime later after having several men fuck her ass and one her pussy she sees a very happy looking Miss N watching. They gather their serving trays and while moving through the party Miss N talks a little about sexual etiquette.\r\rThey reach another group and Miss N seems to know them. She introduces ' + SlaveName + ' to the nobles there, and praises her skills and beauty. The people look a little interested, then more so as one of them adjusts his trousers and takes out his erect cock.\r\rMuch later, ' + SlaveName + ' has met and fucked many noble gentlemen...'); Points(0, 0, 4, 0, 0, 3, 2, 2, 2, 3, 3, -1, 3, 0, 0, 2, 1, 0, 0, 0); Money(75 + VarFuckRounded); NumEvent = 8039; break; case 8027: SetBitFlag1(39); PeopleProstitute._visible = false; if (int(Math.random() * 2) == 0) { temp = IncestOn ? int(Math.random() * 2) : 2; switch (temp) { case 0: AddText(SlaveName + ' spends the party with two sisters who excitedly explain they are just here for the thrill and joy of being sexual playthings.\r\rFor a while a few guests visit for a diversion, and generally simply fuck one of the sisters or ' + SlaveName + '. As one guest leaves ' + SlaveName + ' talks in passing to the sisters using the phrase \'your sister\'. The guest asks if they are sisters and nervously they answer in unison \'yes\'. The guest leaves a little excitedly.\r\rAfter that many, many guests, male and female visit, all wanting to see then fuck with each other, watching each other, doing lesbian play.\r\r' + SlaveName + ' is also overwhelmed, asked to play with them, or being fucked by guests while waiting for the sisters.\r\rBy the end of the night ' + SlaveName + ' is tired but the sisters are exhausted but look very happy...'); break; case 1: AddText(SlaveName + ' spends the party with two women, apparently mother and daughter, and they appear to be possibly noble! They seem to be here for the sexual adventure.\r\rA few guests visit for a maid\'s service, but after a while the mother makes sure to mention their relationship. After that many more guests visit, all wanting a mother/daughter threesome. They also ask to see ' + SlaveName + ' play with them, but ' + SlaveName + ' is not neglected, having many guests ask her to \'entertain\' them.\r\rBy then end of the night they are all lying tired, having many partners over the night.'); break; case 2: AddText(SlaveName + ' spends the party with two friends who excitedly explain they are just here for the thrill and joy of being sexual playthings.\r\rFor a while a few guests visit for a diversion, and generally simply fuck one of the girls or ' + SlaveName + '. As the girls are very enthusiastic, joyous even, and word of this spreads and more and more guests visit to enjoy them.\r\rBy the end of the night ' + SlaveName + ' is tired but the girls are exhausted but look very happy...'); } if (TestObedience(DifficultyBrothel, 15)) { AddText('\r\r' + SlaveName + ' loved it.'); Points(0, 6, -4, 0, -6, 5, 0, 0, 0, 5, 6, 0, 6, 4, -10, 0, 8, 2, 1, 0); } else { AddText('\r\r' + SlaveName + ' was very uncomfortable with the way she was treated.'); Points(0, 6, -4, 0, -5, 5, 0, 0, 0, 5, 6, 0, 5, -4, -10, 0, 8, 0, -1, 0); } Money(50 + VarFuckRounded); EventParties.gotoAndStop(9); } else { switch (int(Math.random() * 2)) { case 0: AddText(SlaveName + ' spends a pleasant night with two beautiful maids and they spend a lot of time just talking about society, religion and science. After a while ' + SlaveName + ' wonders why no guests are visiting and asks. The ladies act bewildered but they seem to be lying and after a while it seems that ' + SlaveName + ' is here to entertain them. They seem to have no sexual intentions, and they spend a quiet evening in talk, with plenty of food and drink provided.'); break; case 1: AddText(SlaveName + ' spends a pleasant night with two beautiful maids and they spend a lot of time just talking about society, religion and science. Occasionally a guest visits, always a noble Lady. The Lady talks with them about matters of society and such matters, but they always raise their skirts exposing their pussy for the eager tongues and lips of one of the maids or ' + SlaveName + '. One Lady arrives and has all three on them lick her to orgasm, all the while talking and chatting happily.\r\rBy then end of the evening ' + SlaveName + ' has talked to and licked many Ladies of society...'); } EventParties.gotoAndStop(11); Points(0, 3, 4, 3, 2, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, -5, 2, 0, 0); Money(100 + VarConversationRounded); } EventParties._visible = true; NumEvent = 8039; break; case 8028: SetBitFlag1(37); PersonSpeak('Prostitute', 'This lady is the High Priestess of a certain church in our city. She is very hypocritical, the gods disapprove of lesbian sex, actually any not intended for procreation. This lady though has always hired me for lesbian sex, sometimes for hermaphrodite sex. Always sex with women. Sometimes she explains how the gods occasionally allow some lesbian acts, but it is the only sex she seems to have.\r\rOh well, not that it matters to me, as long as we get to fuck her and get paid for it. Between us we will have to fuck her for as much and as long as we can. She is an insatiable slut, my kind of woman, despite being a holy person.', true); if (DickgirlXF < 1) { AddText('\r\r' + SlaveName + ' is handed a potion to drink, and a little nervously drink it. She feels a rush of warmth to her groin and a feeling of pressure. As she removes her lower clothes she sees a cock slowly grow, large but limp.'); } AddText('\r\r' + SlaveName + ' is introduced to the lady, who was sitting waiting for them, looking a little bored. She looks up and gestures for ' + SlaveName + ' to walk over...'); ShowMovie(PeopleDaruna, true, 1, 3); ShowMovie(PeopleProstitute, false, 1, 4); NumEvent = 8029; break; case 8029: PeopleDaruna._visible = false; AddText(SlaveName + ' walks over and stands before the lady, who looks her up and down. The lady reaches out and gently takes ' + SlaveName + ' \'s cock in her hands and then starts licking it and sucking in a skilled blowjob, but stops when her cock is quite erect. ' + SlaveName + ' looks around and sees Miss N stroking her now hard, erect cock. The lady gestures again, indicating that they should both fuck her.\r\rThroughout the evening ' + SlaveName + ' and Miss N fuck the lady singly or together, in her mouth, pussy and ass. Sometimes they lick her or just cuddle, but the lady is truly the insatiable slut Miss N described her as, and always wants them to fuck her more.\r\rBy the end of the night they are all very tired and drained, but very satisfied.'); ShowMovie(PeopleProstitute, true, 1, 12); MaxFuck += 2; Points(0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 5, 2, 5, 0, -5, 2, 1, 2, 0, 0); Money(100 + VarFuckRounded); NumEvent = 8039; break; case 8039: AddText('In the early hours of the morning Miss N takes ' + SlaveName + ' back to her home and invites her to spend the rest of the night, strictly sleeping only, they are both quite tired. After washing they lie down and fall asleep in each others arms. In the morning Miss N delivers her to you,\r\r'); var v2 = int(Math.random() * 2) + 3; PersonSpeak('Prostitute', 'I enjoyed \'having\' her at the party. If she wants, there is another in ' + v2 + ' more days, come back then.', true); VarProstitute = 1000 + 100 * v2; NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; ShowMovie(PeopleProstitute, true, 1, 8); NextEvent._visible = false; NextGeneral._visible = true; return undefined; } NextEvent._visible = true; } function DoVisitHighClassProstitute() { ShowMovie(PeopleHighClassProstitute, true, 1, 1); if (VarHighClassProstitute == 0) { VarHighClassProstitute = 0.01; if (House == 5) { AddText('A Lady Okyanu lives in your house, rent free, arranged by your parents for some past service. She is a'); } else { AddText('You take ' + SlaveName + ' to visit the charming Lady Okyanu,'); } AddText(' lady in name, but not in actual social class. She is a companion to esteemed and noble members of society. For her gentleman, or lady, she is a pleasant conversationalist, a charming entertainer, and a passionate lover, all for a high price that no-one begrudges.\r\rShe is very knowledgeable about high-society, about charm, entertainment and about passion.\r\r'); } if (House == 5 || VarRefinementRounded >= 25) { if (SlaveGirl.DoVisitHighClassProstitute() != true) { if (House == 5 || VarHighClassProstitute > 0 && VarHighClassProstitute < 5) { var v3 = false; AddText(SlaveName + ' talks with the High Class Prostitute, Lady Okyanu, and they discuss how to please their companions through conversations, games, but mainly sex.'); temp = int(Math.random() * 2); if (Lesbian && temp < 1) { temp = 1; } if (VarHighClassProstitute < 0 || VarHighClassProstitute >= 5) { NoTalentPoints(0, 0, 0.5, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0); v3 = true; } else { MaxConversation += 1; var v4 = int(VarFuckRounded / 10); VarHighClassProstitute = VisitVar(VarHighClassProstitute, v4, 5); NoTalentPoints(0, 0, 2, 0, 0, 0, 0, 0, 1, 0, temp, 0, 0, 0, 1, v4, 0, 0, 0, 0); } if (Lesbian) { AddText('\r\rLady Okyanu also discusses serving women companions and gives a few suggestions.'); } if (Naked) { AddText('\r\rLady Okyanu says that most of her customers would prefer ' + SlaveName + ' wearing an elegant dress. She also says how ' + SlaveName + '\'s naked body is very sexy.'); Points(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0); } if (DickgirlXF > 0) { AddText('\r\rLady Okyanu seems unconcerned about ' + SlaveName + '\'s cock, but does talk about how hermaphrodites can be popular in her profession.'); } if (House != 5) { return undefined; } if (!v3) { return undefined; } AddText('\r\r'); } if (VarHighClassProstitute == -1) { MaxConversation += 2; if (DickgirlXF > 0) { MaxFuck += 3; PersonSpeak('Lady Okyanu', 'As you are a hermaphrodite I have taken a certain potion. Today we shall discuss how to sexually please a gentleman as a hermaphrodite. You need to be careful to determine their reaction to your cock...'); PeopleHighClassProstitute.gotoAndStop(5); } else { PersonSpeak('Lady Okyanu', 'Today we shall discuss how to sexually please a gentleman...'); PeopleHighClassProstitute.gotoAndStop(4); } NoTalentPoints(0, 0, 2, 2, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0); ShowMovie(PeopleHighClassProstitute, true, 1); VarHighClassProstitute = -2; Backgrounds.ShowBedRoom(16); } else { if (VarHighClassProstitute == -2) { PersonSpeak('Lady Okyanu', 'Today we shall discuss how tease and arouse your customer...'); MaxConversation += 4; ShowMovie(PeopleHighClassProstitute, true, 1, 6); Points(2, 4, 2, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0); VarHighClassProstitute = -3; } else { if (VarHighClassProstitute == -3) { PersonSpeak('Lady Okyanu', 'Today we shall discuss refined conversation and etiquette...'); AddText('\r\rAfter the lesson Lady Okyanu congratulates ' + SlaveName + ', telling her there is little more she can teach her.'); MaxConversation = 100; ShowMovie(PeopleHighClassProstitute, true, 1, 7); VarHighClassProstitute = -4; Points(2, 2, 4, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { if (VarHighClassProstitute == -4 || VarHighClassProstitute == -5) { PersonSpeak('Lady Okyanu', 'I have nothing more to teach you, you will be a fine courtesan. We can gossip and tell stories if you like.'); AddText('\r\rThey have a pleasant but inconsequential chat.'); } else { if (VarHighClassProstitute == -1000) { var v2 = int(Math.random() * 3) + 6; PersonSpeak('Lady Okyanu', 'I am sorry but you missed the function. If you still want there is another in ' + v2 + ' more days, come back then.', true); VarHighClassProstitute = 1000 + 100 * v2; } else { if (VarHighClassProstitute == 1000) { Backgrounds.ShowBedRoom(16); ShowMovie(PeopleHighClassProstitute, true, 1, 2); SetText('You take ' + SlaveName + ' to see the courtesan, Lady Okyanu, who is dressed prettily but somewhat casually. She looks over ' + SlaveName + ' and says,\r\r'); PersonSpeakStart('Lady Okyanu', 'Good morning my dears, the function is confirmed to start this evening at nightfall. ' + SlaveName, true); var v1 = true; if (VarCharismaMod + VarRefinementMod > 25 || SlaveGirl.IsCourtDress() == true) { AddText(', you are wearing a lovely and elegant dress, and some nice jewellery. They are perfectly suited to attend the function.'); } else { v1 = false; AddText(', I am sorry, but your dress and accessories are not really of the right style. I cannot let you accompany me to the function. You need to wear a beautiful dress or one suited to the court.'); } if (VarRefinementRounded > 59) { AddText(' ' + SlaveName + ' you are well spoken and courteous, and will comport yourself well.'); } else { AddText(' I am afraid ' + SlaveName + ', you need some additional education in etiquette. I cannot allow you to attend the function, it would disgrace my reputation.'); v1 = false; } if (v1) { PersonSpeakEnd('\r\rIf you would still like ' + SlaveName + ' to attend I will pick her up this evening just before nightfall and return her at midnight, or possibly in the early morning.'); AddText('\r\rWill you have ' + SlaveName + ' attend the social function?'); VarHighClassProstitute = 1001; DoYesNoEventXY(8040); } else { PersonSpeakEnd('\r\rUnfortunately ' + SlaveName + ' cannot come with me tonight. There are similar functions almost weekly, come back another day when she is better trained.'); var v2 = int(Math.random() * 3) + 6; VarHighClassProstitute = 1000 + 100 * v2; } } else { if (VarHighClassProstitute < 1000) { if (MaxConversation < 100 && VarConversation >= MaxConversation) { var v2 = int(Math.random() * 2) + 3; VarHighClassProstitute = 1000 + 100 * v2; PersonSpeak('Lady Okyanu', SlaveName + ', you are a charming young lady and a talented conversationalist. I do see that you need some education in the fine art of high-class conversation.\r\rThere is a social function I have been invited to participate in. If you like I can escort you there and train you in the art of fine conversation. Some other, physical, skills may also be needed to help entertain...', true); if (Slutiness < 5) { AddText('\r\r' + SlaveName + ' wonders if she means dancing?'); } else { AddText('\r\r' + SlaveName + ' is sure she means sex, after all she is a prostitute, a high-class one but still a prostitute.'); } BlankLine(); PersonSpeakStart('Lady Okyanu', SlaveName + ', you will have to dress appropriately and act in an elegant and refined manner. ', true); var v1 = true; if (VarCharismaMod + VarRefinementMod > 25 || SlaveGirl.IsCourtDress() == true) { AddText('You are wearing a lovely and elegant dress, and some nice jewellery. They are perfectly suited to attend the function.'); } else { v1 = false; AddText('I am sorry, but your dress and accessories are not really of the right style. I could not let you accompany me to the function. You need to wear a beautiful dress or one suited to the court.'); } if (VarRefinementRounded > 59) { AddText(' ' + SlaveName + ' you are well spoken and courteous, and would be able to deal with the noble persons at the function.'); } else { AddText(' I am afraid ' + SlaveName + ', you need some additional education in etiquette. I could not allow you to attend the function, it would disgrace my reputation.'); v1 = false; } AddText('\r\rThe function is planned for the evening in ' + v2 + ' days time. '); if (v1) { PersonSpeakEnd('Please return then, dressed as you are.'); } else { PersonSpeakEnd('Please train and try improving your attire and accessories. You can return for the function and if you are acceptable I will accompany you.'); } SlaveGirl.HighClassPartyOffer(v2); Points(1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { PersonSpeak('Lady Okyanu', 'I have nothing more to teach you but we can gossip and tell stories.'); AddText('\r\rThey have a pleasant but inconsequential chat'); if (VarHighClassProstitute < 500) { AddText('but as ' + SlaveName + ' leaves the Lady mentions,\r\r'); PersonSpeak('Lady Okyanu', 'Sometime I can teach you more about entertaining and fine conversation, but you need more experience. Go out and talk and chat with many people.', true); VarHighClassProstitute = 500; } else { AddText('.'); } } } else { var v2 = (VarHighClassProstitute - 1000) / 100; PersonSpeakStart('Lady Okyanu', 'You\'re a bit early, the function is not today, come back ', true); if (v2 > 1) { AddText('in ' + v2 + ' days.'); } else { AddText('tomorrow.'); } if (SlaveGirl.HighClassPartyCheck() == true) { return undefined; } if (VarCharismaMod + VarRefinementMod > 25 || SlaveGirl.IsCourtDress() == true) { AddText('\r\rYou are wearing a lovely and elegant dress, and some nice jewellery. They are perfectly suited to attend the function.'); } else { AddText('\r\rI am sorry, but your dress and accessories are not really of the right style. I could not let you accompany me to the function. You need to wear a beautiful dress or one suited to the court.'); } if (VarRefinementRounded > 59) { PersonSpeakEnd('\r\r' + SlaveName + ' you are well spoken and courteous, and would be able to deal with the noble persons at the function.'); } else { PersonSpeakEnd('\r\rI am afraid ' + SlaveName + ', you need some additional education in etiquette. I could not allow you to attend the function, it would disgrace my reputation.'); } } } } } } } } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(34)) { AddText('\r\r' + SlaveName + ' asks Lady Okyanu if she has heard of a place called the ruins. She says she once heard a certain nobleman talk to a person about a business in the \'the lower ruins\'. She refuses to name the nobleman.'); RuinedTemple.SetBitFlag(34); } } } else { PersonSpeak('Lady Okyanu', SlaveName + ', please come back another time when you have learned how to not embarrass yourself in society.', true); } } function HighClassParty(eventno) { HideAssistant(); switch (eventno) { case 8040: HideBackgrounds(); MaxConversation += 2; TotalHighClassParty += 1; ShowMovie(PeopleHighClassProstitute, true, 2, 2); EventParties.gotoAndStop(1); EventParties._visible = true; AddText('Lady Okyanu, arrives with a servant to pickup ' + SlaveName + ' and takes her a very large mansion, obviously the home of a rich, noble family. At the door they are greeted by a noble lady, the host of the party. Lady Okyanu introduces ' + SlaveName + ' as a protege. The lady smiles while looking at ' + SlaveName + '\r\r'); PersonSpeak('Host', 'I hope to spend some time with you later!', true); AddText('\r\rLady Okyanu shows ' + SlaveName + ' through the party, pointing out interesting places and people. So far the party has barely started, many guests have yet to arrive...'); NumEvent = 8041; break; case 8041: EventParties.gotoAndStop(2); EventParties._visible = true; AddText('The first place they visit is a sizable ball-room.\r\r'); PersonSpeak('Lady Okyanu', 'The nobility enjoy formal dancing, and this is a skill essential in our profession.\r\rSome gentlemen and ladies also like us to do somewhat less formal dancing too, but discretion is essential, we are not common prostitutes.', true); AddText('\r\r' + SlaveName + ' notices the lady look at one of the maids....'); NumEvent = 8042; break; case 8042: EventParties.gotoAndStop(4); EventParties._visible = true; AddText('The next place is a dining area. A few people are there having an early dinner.\r\r'); PersonSpeak('Lady Okyanu', 'Polite, and flattering dinner conversation is probably our most important talent. Many customers just want to be entertained and made to feel special.\r\rOf course there are other more, energetic, talents we need to be prepared to use, even here.', true); AddText('\r\rShe gestures at a figure underneath the table, probably dressed as a maid...'); NumEvent = 8043; break; case 8043: EventParties.gotoAndStop(13); EventParties._visible = true; AddText('The next place is a secluded, dark room. A few people are there and a woman with a dark visor is running a seance.\r\r'); PersonSpeak('Lady Okyanu', 'A lot of nobles like to dabble in the occult, small seances and fortune tellers. Few want to see the real occult and most mediums and fortune tellers are little better than fellow entertainers.\r\rThere are things to be learned here but also things to be avoided. For people like us, these events are strictly on an invitation basis.', true); AddText('\r\r' + SlaveName + ' feels the medium is very convincing...'); NumEvent = 8044; break; case 8044: EventParties.gotoAndStop(6); EventParties._visible = true; AddText('She shows ' + SlaveName + ' through some general areas, all the time ' + SlaveName + ' sees very scantily clad maids. A majority have little or no clothing below the waist.\r\r'); PersonSpeak('Lady Okyanu', 'I see you looking at the maids, they are here to attend to the guests in <i>any</i> way. We are guests at this party...', true); AddText('\r\rBy now more and more guests are arriving and Lady Okyanu states\r\r'); PersonSpeak('Lady Okyanu', 'I have to attend now to my employer. If you wish you can accompany me, but please understand my employer for this evening wants more than just conversation.\r\rIf you prefer you can instead visit one of the areas I have shown you or even enjoy the company of the maids.', true); AskHerQuestions(8046, 8049, 8050, 8051, 'Accompany Lady Okyanu', 'Dancing', 'Dinner', 'Maids', 'Where does ' + SlaveName + ' go?'); return undefined; case 8046: SetBitFlag1(38); Generic.ShowChoreCooking(); MaxConversation += 5; EventParties._visible = false; ShowMovie(PeopleKnight, false, 1, int(Math.random() * 2) + 1); ShowMovie(PeopleHighClassProstitute, true, 1, 2); SetText('Lady Okyanu takes ' + SlaveName + ' and they spend the evening with a very chivalrous nobleman, a knight of the realm. They spend a long time talking and flirting with him, eating sweet foods served by maids wearing full uniforms, probably his personal staff.\r\rAfter some time Lady Okyanu speaks to ' + SlaveName + ' in private,\r\r'); PersonSpeak('Lady Okyanu', 'The noble sir is somewhat shy, he wants us but is reluctant to make advances. He needs to be seduced, why don\'t you try.', true); AddText('\r\r' + SlaveName + ' can try make subtle innuendo about her interest in him, or be forthcoming and state her sexual interest.\r'); AskHerQuestions(8047, 8048, 0, 0, 'Innuendo', 'Forthcoming', '', '', 'How will ' + SlaveName + ' seduce him?'); return undefined; case 8047: HideSlaveActions(); EventParties._visible = false; ShowMovie(PeopleHighClassProstitute, true, 0, 3); SetText('The knight seems to not be aware of ' + SlaveName + '\'s innuendo and after a while Lady Okyanu whispers that some people need us to be blunt, and slowly removes her clothes.\r\rWhen naked she leans towards the blushing knight and undoes his pants pulling his rather erect cock out. He looks embarrassed but does not stop her.\r\rShe gives him a very skilled blowjob until he cums quite powerfully over her face and breasts.\r\rHe still looks a little embarrassed and redresses, and then asks them to leave, blushing.'); Points(0, 2, 4, 2, 0, 0, 0, 0, 3, 1, 0, 0, 2, 0, 4, 2, -2, 0, 0, 0); NumEvent = 8079; break; case 8048: Backgrounds.ShowBedRoom(int(Math.random() * 11) + 6); HideSlaveActions(); EventParties._visible = false; PeopleKnight._visible = false; ShowMovie(PeopleHighClassProstitute, false, 1, 2); UseGeneric = false; Lesbian = false; var v2 = Gender; var v3 = Talent; Talent = 0; Gender = 1; switch (int(Math.random() * 3)) { case 0: SlaveGirl.ShowSexActAnal(); SetText('The knight looks almost relieved at ' + SlaveName + '\'s direct approach. He blushes and then leans in and kisses her. With little skill, or apparent experience he removes their clothing. He looks embarrassed and touches her anus and looks a question. ' + SlaveName + ' nods her head and applies some lubricant to his cock. He thrust in crudely and a little painfully and fucks her hard and fast. He cums quickly, deeply in her ass, muttering an apology. He pulls free and lies down.\r\r' + SlaveName + ' is disappointed but Lady Okyanu gently pushes her down on to her back and starts licking her sore ass and the cum dribbling from it. She moves up and licks ' + SlaveName + '\'s pussy with skill and enthusiasm until ' + SlaveName + ' orgasms with a cry.\r\rShe then suggests to the knight that he can try her ass now...\r\rSometime passes as they instruct the knight in the finer points of anal sex...'); break; case 1: SlaveGirl.ShowSexActBlowjob(); SetText('The knight looks almost relieved at ' + SlaveName + '\'s direct approach. ' + SlaveName + ' leans down and undoes his pants, taking out his rather erect cock, and gives him a skilled blowjob. He seems to enjoy it immensely, cumming powerfully.\r\rLady Okyanu suggests that she can also demonstrate a similar skill. Sometime later, the knight is lying tired after having blowjob after blowjob from ' + SlaveName + ' and Lady Okyanu until he could not get an erection...'); break; case 2: SlaveGirl.ShowSexActFuck(); SetText('The knight looks almost relieved at ' + SlaveName + '\'s direct approach. He blushes and then leans in and kisses her. With little skill, or apparent experience he removes their clothing. He looks a little embarrassed but thrusts his cock into ' + SlaveName + '\'s pussy and fucks her hard and fast. He cums quickly, deeply in her pussy, muttering an apology. He pulls free and lies down.\r\r' + SlaveName + ' is disappointed but Lady Okyanu gently pushes her down on to her back and starts licking her pussy and the cum dribbling from it. She licks ' + SlaveName + '\'s pussy with skill and enthusiasm until ' + SlaveName + ' orgasms with a cry.\r\rShe then suggests to the knight that he can try her now! Sometime passes as they instruct the knight in the finer points of sex...'); } Gender = v2; Talent = v3; Points(0, 2, 4, 2, 1, 2, 0, 0, 3, 2, 2, 0, 3, 0, -3, 2, 4, 0, 0, 0); NumEvent = 8079; break; case 8049: SetBitFlag1(40); SetText(SlaveName + ' spends the evening dancing and chatting with other guests present.\r\rA few times she notices people discretely, but publicly have sex on the dance floor. No one seems to pay any attention.'); EventParties.gotoAndStop(3); EventParties._visible = true; PeopleHighClassProstitute._visible = false; Points(3, 0, 1, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0); HighClassParty(8058); return undefined; case 8050: SetBitFlag1(40); SetText(SlaveName + ' spends part of the evening eating dinner and chatting with other guests.\r\rAfter a while she hears some muffled noise and looks up. A slave is bound near the roof, made to be some sort of odd candelabra. ' + SlaveName + ' is a bit offended by this and quietly retreats from the dining room.'); AddText('\r\rAs she glances away she sees a lady who suggests that maybe she would like something different? There is a seance underway, how about visiting it?'); EventParties.gotoAndStop(5); EventParties._visible = true; PeopleHighClassProstitute._visible = false; Points(0, 0, 3, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0); AskHerQuestions(8056, 8057, 0, 0, 'Sure, lets attend', 'No thanks, lets talk more here', '', '', 'How does she reply'); return undefined; case 8051: SetBitFlag1(40); AddText('Would ' + SlaveName + ' like to enjoy to service of a maid, or would she like to chat with them or even help them?\r'); AskHerQuestions(8052, 8055, 0, 0, 'Maid Service', 'Chat and Help', '', '', 'How does ' + SlaveName + ' wish to visit the maids?'); EventParties.gotoAndStop(11); EventParties._visible = true; PeopleHighClassProstitute._visible = false; return undefined; case 8052: SetText(SlaveName + ' attracts the attention of a cute maid and they retire to a private room.\r\rThe maid entertains ' + SlaveName + ' with skill and obvious pleasure.\r\rAfter they talk for a bit '); NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = -1; Backgrounds.ShowBedRoom(int(Math.random() * 11) + 6); PeopleHighClassProstitute._visible = false; if (DickgirlXF > 0) { EventParties.gotoAndStop(7); EventParties._visible = true; } else { EventParties._visible = false; UseGeneric = false; Lesbian = false; var v2 = Gender; var v3 = Talent; Talent = 0; Gender = 1; SlaveGirl.ShowSexActLesbian(); Gender = v2; Talent = v3; } switch (int(Math.random() * 2)) { case 1: AddText('the maid explains she is the daughter of the Lord, a true princess of the land. She loves to disguise herself and have sex with as many of her fathers nobles as she can. So far no one has recognised her!'); break; case 0: AddText('the maid seems very odd, seductive and almost mesmeric...'); NumEvent = 8053; NextEvent._visible = true; return undefined; } var v1 = 0; if (StrapOnWorn == 1) { v1 = 1; } if (Lesbian) { NoTalentPoints(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0); } Points(0, 2, 0, 0, -3, 0, 0, 0, 0, 0, v1, 0, 2, 3, -2, 3, 2, 0, 0, 0); AddText('\r\rLater in the evening Lady Okyanu\'s servant arrives to take ' + SlaveName + ' back home.'); NextEvent._visible = false; NextGeneral._visible = true; VarHighClassProstitute = -5; return undefined; case 8053: HideSlaveActions(); SetText('The maid seems to change before ' + SlaveName + '\'s eyes and starts whispering strange seductive words. '); if (DickgirlOn == 1) { AddText(SlaveName + ' is aware of the girl\'s hot, hard, large cock fucking her over and over, and taking hot loads of cum in mouth, pussy, ass, ass, and ass.\r\rWhen the \'maid\' leaves ' + SlaveName + ' follows and is a daze offers herself to anyone and everyone who wants her.\r\rBy the end of the evening she has met and fucked many and has a reputation as a slut.'); EventParties.gotoAndStop(10); } else { AddText(SlaveName + ' is aware of the girl\'s long, long tongue licking her to orgasm after orgasm.\r\rWhen the \'maid\' leaves ' + SlaveName + ' follows and is a daze offers herself to anyone and everyone who wants her.\r\rBy the end of the evening she has met and fucked many and has a reputation as a slut.'); EventParties.gotoAndStop(8); } EventParties._visible = true; PeopleHighClassProstitute._visible = false; Points(0, 0, -5, 0, 0, 2, 0, 0, 0, 4, 4, -4, 8, 0, 8, 3, 6, 0, 0, 0); AddText('\r\rLater in the evening Lady Okyanu\'s servant arrives to take the dazed ' + SlaveName + ' back home.'); NextEvent._visible = false; NextGeneral._visible = true; VarHighClassProstitute = -5; return undefined; case 8055: Backgrounds.ShowBedRoom(int(Math.random() * 11) + 6); SetText(SlaveName + ' spends the evening talking with the maids, many fellow slaves. She helps a little with their serving tasks.\r\rShe rapidly sees the main job of the maids at this party...'); EventParties.gotoAndStop(7); StartChangeImage(4000, EventParties, 12); EventParties._visible = true; PeopleHighClassProstitute._visible = false; Points(0, 2, -1, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 4, 2, -5, 1, 0, 0); AddText('\r\rLater in the evening Lady Okyanu\'s servant arrives to take ' + SlaveName + ' back home.'); NextEvent._visible = false; NextGeneral._visible = true; VarHighClassProstitute = -5; return undefined; case 8056: SetBitFlag1(40); HideBackgrounds(); SetText(SlaveName + ' walks into the seance room, the lady scream and runs. A strange thing is forming out of the air and is holding the medium, squeezing her breasts. As ' + SlaveName + ' looks the medium moans and clearly orgasms, and the figure fades and vanishes.\r\rThe medium rests, '); MeetNarana(2); AddText(', as says she was trying to summon a dem..., umm, well, umm, a spirit, but got something else. Unf...Fortunately it was poorly summoned and vanished when ' + SlaveName + ' entered the room.\r\rThey spend a while talking of strange, magical beings, but often about their sexual natures...'); EventParties._visible = false; PeopleHighClassProstitute._visible = false; SetBitFlag1(42); HighClassParty(8058); return undefined; case 8057: SetBitFlag1(40); Backgrounds.ShowBedRoom(int(Math.random() * 11) + 6); SetText(SlaveName + ' spends the rest of the evening talking with the lady, but is a little surprised and aroused when the lady summons some maids, one to lick her pussy and one to massage her back, neck and breasts.\r\rThe maids are strictly told not to make her orgasm unless she so asks. They seem to be quite expert licking her to near orgasm often then backing off. Late in the evening the lady excuses herself, saying that it is time, and ' + SlaveName + ' watches the maids concertedly lick the lady to orgasm after long delayed orgasm.'); EventParties.gotoAndStop(12); StartChangeImage(4000, EventParties, 12); EventParties._visible = true; PeopleHighClassProstitute._visible = false; Points(0, 2, -1, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 4, 2, -5, 1, 0, 0); HighClassParty(8058); return undefined; case 8058: AddText('\r\rLater in the evening Lady Okyanu\'s servant arrives to take ' + SlaveName + ' back home.'); NextEvent._visible = false; NextGeneral._visible = true; VarHighClassProstitute = -5; return undefined; case 8079: PeopleKnight._visible = false; MaxConversation += 4; AddText('In the early hours of the morning Lady Okyanu takes ' + SlaveName + ' back to her home and invites her to spend the rest of the night. They retire to the bathroom to wash and talk,\r\r'); PersonSpeak('Lady Okyanu', 'You show potential to become a skilled member of my profession. If you like I can instruct you in the finer points of being a courtesan.', true); AddText('\r\rWill ' + SlaveName + ' accept training as a courtesan?\r'); DoYesNoEventXY(8079); ShowMovie(PeopleHighClassProstitute, true, 1, 8); return undefined; } NextEvent._visible = true; } function DoVisitMaid() { Lake.SetBitFlag(30); ShowMovie(PeopleMaid, true, 1, 1); Backgrounds.ShowKitchen(2); if (Naked && ApronWorn == 0) { PersonSpeak('Maid', 'You should at least wear an apron! Come back dressed more appropriately.', true); } else { if (VarSensibilityRounded >= 30) { if (SlaveGirl.DoVisitMaid() != true) { if (VarMaid < 10) { AddText(SlaveName + ' talks with the maid about how to take care of the house.'); var v1 = int((VarCookingRounded + VarCleaningRounded) / 20); VarMaid = VisitVar(VarMaid, v1, 10); Points(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, v1, 0, 0, 0, 0); if (Naked && ApronWorn == 1) { PersonSpeak('Maid', 'I see you are wearing ONLY an apron!', true); } } else { PersonSpeak('Maid', 'You should go talk with some other people now.'); } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(35)) { AddText('\r\r' + SlaveName + ' asks the Maid if she has heard of a place called the ruins. The maid shakes her head and says no.'); RuinedTemple.SetBitFlag(35); } } } else { PersonSpeak('Maid', 'I don\'t want to talk with a girl who has a stone in place of her heart.', true); } } } function DoVisitKnight() { ShowMovie(PeopleKnight, true, 1, int(Math.random() * 2) + 1); Backgrounds.ShowPalace(); if (Naked) { PersonSpeak('Knight', 'I will not see a flagrant slut. Put some clothes on.', true); } else { if (VarRefinementRounded >= 50 && VarMoralityRounded >= 25 || NobleLoveType == 3) { if (SlaveGirl.DoVisitKnight() != true) { if (VarKnight < 15) { var v1 = int(VarSensibilityRounded / 10); VarKnight = VisitVar(VarKnight, v1, 15); AddText(SlaveName + ' talks with the Knight about righteous valour and gives her some advice about behaving in society.'); Points(0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v1, 0, 0, 0, 0); } else { PersonSpeak('Knight', 'Shouldn\'t you use my advice now?'); } } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(36)) { AddText('\r\r' + SlaveName + ' asks the Knight if he has heard of a place called the ruins. He says there is a forbidden place that the Lord has restricted access to. He refuses to talk any more.'); RuinedTemple.SetBitFlag(36); } if (NobleLoveType == 3) { NobleLoveEvent(); } } else { PersonSpeak('Knight', 'I don\'t have time to lose with a street-girl.', true); } } } function DoVisitCount() { ShowMovie(PeopleCount, true, 1); Backgrounds.ShowPalace(); if (!Palace.IsAccessible()) { PersonSpeak('Guard', 'You are not allowed into the Palace, begone!', true); } else { if (Naked) { PersonSpeak('Count', 'I will not speak to a naked whore.', true); } else { if (VarRefinementRounded >= 60 || NobleLove != 0 && NobleLoveType == 2) { if (SlaveGirl.DoVisitCount() != true) { if (VarCount < 20) { var v1 = int(VarIntelligenceRounded / 10); VarCount = VisitVar(VarCount, v1, 20); AddText(SlaveName + ' talks with the Count about stories of the heart and philosophy.'); Points(0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v1, 0, 0, 0, 0); } else { PersonSpeak('Count', 'I enjoyed talking with you but you should see someone else now.'); } } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(37)) { AddText('\r\r' + SlaveName + ' asks the Count if he has heard of a place called the ruins. He shakes his head and tells her it is best not to ask certain questions.'); RuinedTemple.SetBitFlag(37); } if (NobleLoveType == 2) { NobleLoveEvent(); } } else { PersonSpeak('Count', 'Make this girl go away! Ladies may visit not crude girls.', true); } } } } function DoVisitLord() { Backgrounds.ShowPalace(); if (!Palace.IsAccessible()) { PersonSpeak('Guard', 'You are not allowed into the Palace, begone!', true); } else { if (VarRefinementRounded >= 80 || NobleLove != 0 && NobleLoveType == 1) { if (SlaveGirl.DoVisitLord() != true) { if (VarLord < 15) { ShowMovie(PeopleLord, true, 1); AddText(SlaveName + ' talks with the Lord who gave her some advice about beauty and how to behave at the Court.'); var v1 = int(VarRefinementRounded / 10); VarLord = VisitVar(VarLord, v1, 15); Points(1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, v1, 0, 0, 0, 0); if (Naked) { AddText(' The Lord compliments ' + SlaveName + '\'s beautiful, naked body.'); } } else { ShowMovie(PeopleLord, true, 1); PersonSpeak('Lord', 'I thank you for your presence but I think you should meet someone else.', true); } if (RuinedTemple.CheckBitFlag(32) && !RuinedTemple.CheckBitFlag(38)) { AddText('\r\r' + SlaveName + ' asks the Lord if he has heard of a place called the ruins. He explains that there is an old temple for the old faith that was burned down a long time ago. Since then it has become a lair of dangerous things. He has posted patrols to limit access to it.\r\rShe asks to get access and explains why. He refuses, after all ' + SlaveName + ' is a slave, and Sareth is a legally bought slave.'); RuinedTemple.SetBitFlag(38); } } if (NobleLoveType == 1) { NobleLoveEvent(false); } } else { PersonSpeak('Guard', 'A girl from the street has nothing to do with our Lord.', true); } } } function DoVisitLadyFarun() { if (VarLadyFarun == 0.01) { VarLadyFarun = 0.02; AddText('You decide to visit Lady Farun, the beautiful court lady, and bring ' + SlaveName + ' to learn of the court from her. At least that is the reason you give yourself.\r\r'); } if (!CheckBitFlag1(15)) { SMAppearance._visible = false; Backgrounds.ShowHouseOutside(1); ShowMovie(PeopleMaid, false, 6, 3); PersonSpeak('Maid', 'My dear Lady Farun does not see strangers. Even if she did she is not here, she is a prominent lady at court and dealer in exotic slaves, and spends most of her time at court and sometimes at the docks supervising special shipments.\r\rPlease leave, you may only return with an express invitation.', true); return undefined; } if ((CheckBitFlag1(20) || CheckBitFlag1(18)) && int(Math.random() * 2) == 1) { Backgrounds.ShowBedRoom(6); ShowMovie(PeopleLadyFarun, true, 1, 3); StartChangeImage(3000, PeopleLadyFarun, 1); AddText(SlaveName + ' and you are let in to see the Lady Farun and see the Lady masturbating, '); if (CheckBitFlag1(20)) { AddText('but she stops when ' + SlaveName + ' enters, looking frustrated, whispering \'I cannot without...\'\r\r'); } else { AddText('quickly reaching a strong orgasm. She breathes heavily and looks at ' + SlaveName + '.\r\r'); } } else { if (CheckBitFlag1(18) || int(VarLadyFarun) % 2 == 1) { ShowMovie(PeopleLadyFarun, true, 0, 1); if (VarLadyFarun > 0) { AddText(SlaveName + ' enters the Lady Farun\'s chamber and sees she is flushed and one of her hands is in the front of her dress, slowly masturbating herself. It looks like she has taken another dose of her potion recently.\r\r'); } } else { ShowMovie(PeopleLadyFarun, true, 0, 2); } } if (GeneralTextField.text == '') { SetText(SlaveName + ' and you visit the Lady Farun at her mansion and are let in by a maid immediately.\r\r'); } if (SlaveGirl.DoVisitLadyFarun() != true) { if (VarLadyFarun < 0) { if (VarLadyFarun == -2 || VarLadyFarun == -2.1) { if (VarLadyFarun == -2) { AddText('The Lady Farun seems a little worried. Unusually she talks to you first,\r\r'); PersonSpeak('Lady Farun', 'I am having some difficulties with getting access to the ruins. They are a site outside the city that was once the center of worship for the old gods. I think there was something odd or shameful about how it was abandoned.\r\rSince then the ruins have been restricted and have become the haunt of demons and monsters. I sometimes send bounty hunters there to catch certain exotic slaves but this is a strictly limited access, something I cannot grant to an unlicensed person, only to bounty hunters and the like.\r\r' + SlaveMakerName + ', I did not realise the great sensitivity about the ruins at court and have been unable to get access. I could use your help, if you could attend court we could work together to convince an official to give access.', true); VarLadyFarun = -2.1; } else { PersonSpeak('Lady Farun', SlaveMakerName + ' please help me sometime.', true); } } else { if (VarLadyFarun == -1) { if (CheckBitFlag1(18)) { clearInterval(intervalId); AddText(SlaveName + ' gives the Lady Farun the potion bottles of \'Nymph\'s Tears\' and tells her how to get more. The Lady is overjoyed and drinks a potion bottle immediately.\r\rShe looks very happy and then insists ' + SlaveName + ' drinks one too. ' + SlaveName + ' starts to refuse but sees a look of panic cross the Lady\'s face and drinks it. Lust washes through her but she is able to control it.\r\rShe tells Lady Farun about the tutors warning about the potion.\r\r'); PersonSpeak('Lady Farun', 'I want to be a slut, as much as I can. There are ways I can advance at court. better than before..', true); AddText('\r\rShe then describes a way to \'influence\' some of the noblemen at court...'); if (RuinedTemple.CheckBitFlag(31) || DocksSlavePens.CheckBitFlag(30)) { VarLadyFarun = 4; if (!CheckBitFlag1(17)) { AddText('\r\rLater she offers another favour for this great service. ' + SlaveName + ' can ask anytime for this.'); SetBitFlag1(17); } } else { VarLadyFarun = 12; RuinedTemple.SetAccessible(); TakeAWalkMenu.Ruins._visible = true; RuinedTemple.ClearBitFlag(32); AddText('\r\rLater she tells ' + SlaveName + ' the ruins lie east of the city, giving exact directions. They are dangerous and are patrolled. I could only get you a one-off access to the ruins. Show this pass if challenged, and she gives a document to you.'); } Backgrounds.ShowBedRoom(6); PeopleLadyFarun.gotoAndStop(4); NumAphrodisiac += 1; MinLibido += 15; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0); UsedAphrodisiac = 1; var v2 = GeneralTextField.htmlText; var v1 = LargerTextField.htmlText; DrinkPotion(12, 0, ''); GeneralTextField.htmlText = v2; ShowLargerText(); LargerTextField.htmlText = v1; ClearBitFlag1(20); } else { if (CheckBitFlag1(20)) { AddText('The Lady seems very distracted and begs ' + SlaveName + '\r\r'); PersonSpeak('Lady Farun', 'Please find my potion, I cannot orgasm properly without it. Please...', true); } else { ShowMovie(PeopleLadyFarun, true, 0, 1); AddText('The Lady Farun says that she has a one-off permit for ' + SlaveName + ' to access the ruins, but...\r\rShe seems more aroused and sensuous than ever and looks a little embarrassed.\r\r'); PersonSpeak('Lady Farun', 'I know I promised you access as a favour but my contacts at court have been troubled by my enquiries and I am not welcome at court anymore. To be truthful, a meeting with a certain official did not go well, he had difficulties....\'talking\' with me, he had very limp topics of conversation. I made a frustrated comment and he stormed out.\r\rAside from your visits and the help of my maids, my only comfort is the \'Nymph\'s Tears\' potion. The lady at court who supplies me, the wife of the official I \'talked\' with, is refusing to see me and I do not have any more doses left!\r\rPlease, can you find a supply for me, then I will give you the access you need.', true); AddText('\r\rThe Lady seems aroused and very much in need. ' + SlaveName + ' agrees to source a supply for her.'); if (Lake.CheckBitFlag(33)) { AddText('\r\r' + SlaveName + ' remembers a private tutor who had offered her the same potion.'); } else { AddText('\r\rThe Lady also mentions she has heard of a woman named Astrid who makes the potion, but others distribute it.'); } SetBitFlag1(20); } } return undefined; } else { AddText('The Lady Farun says she is still asking around. People seem sensitive about the ruins for some reason.'); } } } else { if ((RuinedTemple.CheckBitFlag(31) || DocksSlavePens.GetEventCount() > 2 && DocksSlavePens.CheckBitFlag(30)) && VarLadyFarun > 2 && !CheckBitFlag1(18) && !CheckBitFlag1(20)) { ShowMovie(PeopleLadyFarun, true, 0, 1); AddText('The Lady Farun seems more aroused and sensuous than ever and looks a little embarrassed.\r\r'); PersonSpeak('Lady Farun', 'I have recently embarrassed myself at court. I seduced the wrong person and now my contacts at court shun me.\r\rAside from your visits and the help of my maids, my only comfort is the \'Nymph\'s Tears\' potion. The lady at court who supplies me is refusing to see me so I do not have any more.\r\rPlease can you find a supply for me?', true); AddText('\r\rThe Lady seems aroused and very much in need. ' + SlaveName + ' agrees to source a supply for her.'); if (Lake.CheckBitFlag(33)) { AddText('\r\r' + SlaveName + ' remembers a private tutor who had offered her the same potion.'); } else { AddText('\r\rThe Lady also mentions she has heard a woman named Astrid makes the potion, but others distribute it.'); } SetBitFlag1(20); VarLadyFarun = -1; return undefined; } else { AddText(SlaveName + ' talks with Lady Farun and gossips about people and events at court.'); } } if (VarLadyFarun == 0) { AddText('\r\rThe Lady seems flushed and moves a little all the time. ' + SlaveName + ' finally sees the Lady has discretely put a hand under her dress and appears to be masturbating. The Lady moans and seems to orgasm.\r\rShe looks up a little embarrassed and explains that since the \'incident\' she has been taking a potion recommended by a fellow noblewoman. It was recommended as a pleasurable way to distract herself from her troubles. The potion is called the \'Nymph\'s Tears\' a natural potion that makes her feel so wonderful and sexy for days at a time.'); } if (CheckBitFlag1(17)) { AddText('\rLady Farun again thanks ' + SlaveName + ' for her rescue from the deformed thing. She says she has influence with the contests, and with many court officials,'); if (DocksSlavePens.GetEventCount() > 2 && !DocksSlavePens.CheckBitFlag(30) && TakeAWalkMenu.Ruins._visible == false && !RunedTemple.CheckBitFlag(31)) { AskHerQuestions(4060, 4061, 4062, 4063, 'I need to go to the ruins', 'Fix a race so I win', 'Money', 'Nothing now', 'What does ' + SlaveName + ' ask for?'); } else { AskHerQuestions(4061, 4062, 4063, 0, 'Fix a race so I win', 'Money', 'Nothing now', '', 'What does ' + SlaveName + ' ask for?'); } } else { if (CheckBitFlag1(18) || int(VarLadyFarun % 2) == 1) { NextVisit._visible = false; NextEvent._visible = true; NumEvent = 8010; } } if (VarLadyFarun < 10) { if (VarLadyFarun != -2 && VarLadyFarun != -2.1) { VarLadyFarun += 1; } Points(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0); } } if (NobleLoveType == 4) { NobleLoveEvent(); } } function AfterLadyFarun() { if (CheckBitFlag1(18) || int(VarLadyFarun % 2) == 0) { clearInterval(intervalId); Backgrounds.ShowBedRoom(6); AddText('\r\rWith some reluctance you and ' + SlaveName + ' leave the Lady. You hear the Lady summon a maid and as the door closes ' + SlaveName + ' sees the maid '); if (int(Math.random() * 2) == 0) { AddText('kneeling between the Lady\'s spread legs, her head lowering toward the Lady\'s pussy...'); } else { AddText('putting on a strap-on while the Lady licks her lips...'); } ShowMovie(PeopleLadyFarun, true, 1, int(Math.random() * 3) + 5); } } function DoVisitDealer() { Backgrounds.ShowSlums(); if (EvilMineFlag > 0) { DoEvilMineEvent(4110); return undefined; } TakeAWalkMenu._visible = false; SetText('You discretely visit the strange man to buy some drugs.'); Dealer._visible = true; NextVisit._visible = false; Quitter._visible = true; } function DoVisitSeer(walk) { function EstimateStat(val, premain) { var v1 = val / premain; if (v1 > 100) { v1 = 100; } return v1; } if (VarGold < 11) { SetText('You don\'t have enough money.'); return undefined; } Money(-10); if (EvilMineFlag > 0) { DoEvilMineEvent(4111); return undefined; } ClipFortuneTelling._visible = false; TakeAWalkMenu._visible = false; NextVisit._visible = false; IntroBackground._visible = true; BackgroundGrid._visible = false; MainBackground._visible = false; StatisticsGroup._visible = false; SlaveMakerStatisticsGroup._visible = false; HideAllPeople(); Icons._visible = false; GeneralTextField._visible = false; LargerTextField._visible = false; if (walk) { Quitter._visible = true; Quitter._x = 686; } else { NextEvent._visible = true; NextEvent._x = 686; } Fin = 0; VisitFortuneTeller.SlaveMakerName.text = SlaveMakerName; VisitFortuneTeller.SlaverAppearance.gotoAndStop(Gender); var v5 = TrainingTime - Elapsed; VisitFortuneTeller.DateInfo.text = v5 + ' day'; if (v5 > 1) { VisitFortuneTeller.DateInfo.text += 's'; } VisitFortuneTeller.DateInfo.text += ' remaining'; var v2 = Elapsed / TrainingTime; ShowSlaveMaker(true); switch (Talent) { case 0: VisitFortuneTeller.Past.text = 'Since childhood you have shown skills as a Slave Maker.'; break; case 1: VisitFortuneTeller.Past.text = 'Wealth and privilege have been yours since you were born.'; break; case 2: VisitFortuneTeller.Past.text = 'You are a leader, son of a mayor and a renowned warrior. Your mother trained you in the use of the sword.'; break; case 3: VisitFortuneTeller.Past.text = 'You have lived all your life surrounded by traders and are an excellent bargainer. You are a little common.'; break; case 4: VisitFortuneTeller.Past.text = 'Your father is shrouded in mystery and you have disturbing dreams.'; break; case 5: VisitFortuneTeller.Past.text = 'Your greatest delight is the pain and domination of others. You especially like dressing in leather and love handling whips.'; break; case 6: VisitFortuneTeller.Past.text = 'You are a specialist in training lesbian slaves.'; break; case 7: VisitFortuneTeller.Past.text = 'You were raised in the old ways of the old gods. Trained in the use of potions and in the ancient ways.'; break; case 8: VisitFortuneTeller.Past.text = 'You love to fuck and have found some women react with desire to your cum.'; break; case 9: VisitFortuneTeller.Past.text = 'Your home is a land of Amazon people, dominated by hermaphrodites. Your breasts are intact so you are not as good an archer as your sisters but still excellent.'; break; case 10: VisitFortuneTeller.Past.text = 'When young you were raped by a demonic woman and have had a cock since then. Sometimes your cock seems to guide your actions.'; } VisitFortuneTeller.SlaveReadingTitle.text = SlaveName + '\'s reading'; var v3 = EstimateStat(VarCharismaRounded, v2) + EstimateStat(VarSensibilityRounded, v2) + EstimateStat(VarRefinementRounded, v2) + EstimateStat(VarIntelligenceRounded, v2) + EstimateStat(VarMoralityRounded, v2) + EstimateStat(VarConstitutionRounded, v2) + EstimateStat(VarCookingRounded, v2) + EstimateStat(VarCleaningRounded, v2) + EstimateStat(VarConversationRounded, v2) + EstimateStat(VarBlowJobRounded, v2) + EstimateStat(VarFuckRounded, v2) + EstimateStat(VarTemperamentRounded, v2) + EstimateStat(VarNymphomaniaRounded, v2) + EstimateStat(VarObedienceRounded, v2) + EstimateStat(VarLibidoRounded, v2) + EstimateStat(VarJoyRounded, v2) + EstimateStat(VarReputationRounded, v2) + EstimateStat(VarLovePoints, v2); v3 = int(v3 / 18); if (LoveAccepted == 1 || LoveAccepted == 10) { if (Talent == 2) { v3 -= 10; } else { v3 -= 20; } } var v1; if (Fin != 1 && DonePonygirl == 1 && v3 > 50 && BitGagWorn == 1 && HarnessWorn == 1 && PonyTailWorn == 1) { Fin = 1; v1 = '"I see this girl in a stable, harnessed and whinnying.'; } if (Fin != 1 && DickgirlXF == 2) { Fin = 1; v1 = '"I see this girl is staring at a cock, it is her own!'; } if (Fin != 1 && TotalBondage >= 20 && v3 > 40) { Fin = 1; v1 = '"I see this girl tied in a bed in a shameful position, loving it.'; } if (Fin != 1 && NumAphrodisiac >= 10) { Fin = 1; v1 = '"I see this girl on the floor with empty eyes, drooling, an empty vial at her side.'; } if (Fin != 1 && VarGold >= 3000 && NumDresses >= 5 && v3 > 40) { Fin = 1; v1 = '"I see this girl wearing luxurious clothes, in a big house.'; } if (Fin != 1 && v3 >= 75 && Fin != 1) { Fin = 1; v1 = '"I see the owner will like this girl, he will love her.'; } if (Fin != 1 && VarLibidoRounded >= 85 && v3 > 40) { Fin = 1; v1 = '"I see this girl alone touching herself. Her master is away and she can\'t bear it.'; } if (Fin != 1 && VarNymphomaniaRounded >= 85 && v3 > 40) { Fin = 1; v1 = '"I see this girl in the street, trying to charm a young boy.'; } if (Fin != 1 && VarObedienceRounded < 15) { Fin = 1; v1 = '"I see this girl not obeying her master, this one is not happy.'; } if (Fin != 1 && VarCookingRounded >= 60 && VarCleaningRounded >= 60 && v3 > 40) { Fin = 1; v1 = '"I see this girl doing the cooking for her master.'; } if (Fin != 1 && v3 >= 50) { Fin = 1; if (VarObedienceRounded >= 80 && VarMoralityRounded >= 55) { v1 = '"I see this girl hanging at the arm of her master, smiling.'; } else { if (VarObedienceRounded < 30) { Fin = 1; v1 = '"I see this girl forced to make her master feel good. She is not happy.'; } else { Fin = 1; v1 = '"I see this girl making love with her master. Looks like she likes this.'; } } } if (Fin != 1) { Fin = 1; v1 = '"I see this girl sad in a tiny room. She is not on the right path, change your way of training, quickly.'; } if (MaxTentacleHarem > 0) { v1 += '\r\rI see a dark thing following and lusting after her.'; if (TotalTentacle > 0) { v1 += ' I see her bearing it\'s children.'; } } else { if (TotalTentacle > 0) { v1 += '\r\rI see a dark thing following and lusting after her. I see her bearing it\'s children.'; } } if (TentacleHaunt != -1) { v1 += '\r\rPlease have her avoid the '; switch (TentacleHaunt) { case 1: case 11: case 21: v1 += 'forest'; break; case 4: case 14: case 24: v1 += 'slums'; break; case 6.1: case 16.1: case 26.1: v1 += 'port'; break; case 8: case 18: case 28: v1 += 'ruins'; } v1 += ', I see things chasing and catching her there.'; } if (MilkInfluence > 0) { v1 += '\r\rI see her breasts becoming more and more important to her.'; } if (LoveAccepted != 0 && Lesbian) { v1 += '\r\rI see her in the future loving a woman.'; } if (VarLovePoints > 50) { v1 += '\r\rI see this girl looking only at you.'; } v1 += '"'; VisitFortuneTeller.SlaveReading.text = v1; SlaveGirl.VisitSeer(v3); Fin = 0; v1 = '"'; if (v3 >= 85) { v1 = 'I see that you treasure this girl and will not release her. '; } if (LoveAccepted == 1) { v1 += 'I see you love this girl. '; } v1 += 'You are '; if (SMConstitution > 80) { v1 += 'hardy'; } else { if (SMConstitution > 50) { v1 += 'full of health'; } else { v1 += 'fit'; } } v1 += ', '; if (SMAttack > 80) { v1 += 'a weapon master'; } else { if (SMAttack > 50) { v1 += 'skilled'; } else { v1 += 'trained'; } } v1 += ', '; if (SMDefence > 80) { v1 += 'nimble as a cat'; } else { if (SMAttack > 50) { v1 += 'agile'; } else { v1 += 'of normal speed'; } } v1 += ', '; if (SMLibido > 80) { v1 += 'always needing sex'; } else { if (SMLibido > 50) { v1 += 'aroused'; } else { v1 += 'of normal sexuality'; } } v1 += ' and '; if (SMLibido > 80) { v1 += 'silver tongued'; } else { if (SMLibido > 50) { v1 += 'well spoken'; } else { v1 += 'can carry a conversation'; } } v1 += '."'; VisitFortuneTeller.SlaveMakerReading1.text = v1; v1 = '"'; if (Talent == 4) { v1 += 'A dark winged figure looms over you."\rShe asks you about your last dream. You tell her '; if (Corruption < 40) { v1 += ' of shapes struggling in the dark. She says "I see good and evil fighting and evil is being held at bay'; } else { if (Corruption < 60) { v1 += ' of visions of yourself fucking a struggling woman in a dark cavern, there is a tentacle filling her ass. She says "I see evil winning the fight in you soul. Please try to redeem yourself'; } else { v1 = v1 + ' of dreams of yourself fucking a woman\'s ass. You see another woman near, mouth, ass, pussy full of tentacles, and you see it is ' + SlaveName + '! The Seer says "I see you have abandoned the fight against evil'; } } } else { if (Talent == 10) { v1 += 'A horned woman is guiding your cock."\rThe Seer asks you about your last dream. You tell her '; if (Corruption < 40) { v1 += ' of dreams of passion and sex. She says\r"I see you following your own destiny'; } else { if (Corruption < 60) { v1 += ' of a dream of being bound and being fucked and fucking over and over. She says\r"I see Hell guiding your actions. Please try to redeem yourself'; } else { v1 += ' of dreams of wild fucking, of women begging you to stop. You dream of cumming over and over and screams of pain. The Seer says\r"I see you have lost, your cock controls you'; } } } else { v1 += 'I see you training many girls.'; } } v1 += '"'; VisitFortuneTeller.SlaveMakerReading2.text = v1; VisitFortuneTeller._visible = true; Fin = 0; } function DoVisitSalesman() { if (EvilMineFlag > 0) { DoEvilMineEvent(4112); return undefined; } ShowSlaveMaker(false); TakeAWalkMenu._visible = false; ClipTravellingMerchant._visible = true; SetText('You visit the salesman at home to purchase some items.'); UpdateEquipment(); ItemSalesman._visible = true; NextVisit._visible = false; NextEvent._visible = false; Quitter._visible = true; } function DoVisitSlaveMarket() { Backgrounds.ShowSlaveMarket(); TakeAWalkMenu._visible = false; if (EvilMineFlag > 0) { DoEvilMineEvent(4113); return undefined; } tempvar = 0; SystemMenu.BtnSaveDisabled._visible = false; SystemMenu.BtnSave._visible = true; SystemMenu._visible = true; } function DoVisitEvent(eventno) { if (eventno > 8024 && eventno < 8040) { ProstituteParty(eventno); return undefined; } if (eventno > 8039 && eventno < 8080) { HighClassParty(eventno); return undefined; } switch (eventno) { case 8000: AddText('The barmaid blushes and talks a bit about herself. She seems to be a very determined and dedicated person. She seems dedicated to being the best she can be at anything she does, be that as an entertainer, singer, dancer, ummm at \'other\' things.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0); NumEvent = 9999; NextEvent._visible = true; break; case 8001: ShowMovie(PeopleBarMaid, true, 1, 3); MaxBlowJob += 1; Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (Gender != 2) { AddText('The barmaid asks you to join them in a private booth and sit comfortably. She kneels down and gives you an amazingly good blowjob, the best you can remember. She licks and sucks until you cum with a gasp into her mouth. She swallows, and then explains to ' + SlaveName + ' some fine points of technique.'); } else { AddText('The barmaid takes ' + SlaveName + ' into a private booth, you follow at a distance. You see the barmaid kneel before a customer, take out his cock and give him what appears to be a skillful blowjob.\r\rJust before he cums she stops and describes techniques to ' + SlaveName + ' to the frustration of the man. She resumes for a bit, demonstrating, again stopping before he cums. She straightens and then finishes him by hand, the man cums quite strongly, cum spraying into the air.\r\rThey return to you, and you hear the barmaid comment how only the worthy or cute are finished by mouth.'); } NumEvent = 9999; NextEvent._visible = true; break; case 8002: AddText(SlaveName + 'and the barmaid gossip for a time about people and places, nothing of consequence but pleasant.'); Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0); NumEvent = 9999; NextEvent._visible = true; break; case 8010: SetText('You watch their friendly conversation with a little jealousy but after a while the Lady involves you in their discussion.'); AfterLadyFarun(); NumEvent = 9999; break; case 8020: AfterProstitute(); NumEvent = 9999; break; case 8499: DoVisitNext(); } } function VisitShortcuts(key) { switch (key) { case 66: DoVisit(2); return undefined; case 67: DoVisit(7); return undefined; case 70: DoVisit(9); return undefined; case 72: DoVisit(4); return undefined; case 75: DoVisit(6); return undefined; case 76: DoVisit(8); return undefined; case 77: DoVisit(5); return undefined; case 80: DoVisit(3); return undefined; case 83: DoVisit(1); return undefined; } } function PurchasePrice(price) { var v2 = 25; if (price <= 100) { v2 = 10; } var v1 = price; if (v1 > 0) { v1 += Difficulty * v2; if (Talent == 3) { return int(v1 * 0.95); } return int(v1); } v1 -= Difficulty * v2; return int(v1); } function BuyItem(person, cost) { if (VarGold >= PurchasePrice(cost)) { Money(PurchasePrice(cost) * -1); ObjectChoice = 0; return true; } else { PersonSpeak(person, 'You don\'t have enough money.'); Beep(); return false; } } function DoYesNoItem(dress, item) { YesEvent._x = 220; NoEvent._x = YesEvent._x + 200; YesEvent._y = 525; NoEvent._y = 525; YesNoFlag = 0; ShowYesNoButtons(); DressChoice = dress; ObjectChoice = item; } function PurchaseItem(item, hint) { HideLargerText(); HideQuestions(); if (hint == undefined) { hint = false; } if (SlaveGirl.PurchaseItem(item, hint) == true) { return undefined; } if (hint == true) { return undefined; } Beep(); AddText('\r\rDo you wish to buy this item?'); DoYesNoItem(0, item); } function SetJeweleryButton() { var v1; switch (NecklaceIndex) { case 0: v1 = 'Diamond\rNecklace'; PriceNecklace = 300; break; case 1: v1 = 'Silver\rBroach'; PriceNecklace = 180; break; case 2: v1 = 'Ruby Ring'; PriceNecklace = 240; break; case 4: v1 = 'Platinum\rNecklace'; PriceNecklace = 360; break; case 5: v1 = 'Amethyst\rEarrings'; PriceNecklace = 120; break; case 6: v1 = 'Jade Ring'; PriceNecklace = 240; break; case 7: v1 = 'Diamond\rEarrings'; PriceNecklace = 180; break; case 8: v1 = 'Gold Ring'; PriceNecklace = 120; } SetButtonState(ShopMenu.BtnJewelry, false, true, v1, 5, PressShopButton, PriceNecklace, RollOverShopButton, 'J'); } function GetJeweleryName() { var v1; switch (NecklaceIndex) { return v1; case 0: v1 = 'Diamond Necklace'; return v1; case 1: v1 = 'Silver Broach'; return v1; case 2: v1 = 'Ruby Ring'; return v1; case 4: v1 = 'Platinum Necklace'; return v1; case 5: v1 = 'Amethyst Earrings'; return v1; case 6: v1 = 'Jade Ring'; return v1; case 7: v1 = 'Diamond Earrings'; return v1; case 8: v1 = 'Gold Ring'; return v1; } return v1; } function SetDollButton() { var v1; switch (PriceDoll) { case 300: v1 = 'Cute <font color=\'#0000FF\'>D<font color=\'#000000\'>oll'; break; case 240: v1 = 'Te<font color=\'#0000FF\'>d<font color=\'#000000\'>dy Bear'; break; case 180: v1 = 'Assorte<font color=\'#0000FF\'>d<font color=\'#000000\'> Games'; break; case 120: v1 = 'Varie<font color=\'#0000FF\'>d<font color=\'#000000\'> Toys'; } SetButtonState(ShopMenu.BtnDoll, false, true, v1, 8, PressShopButton, PriceDoll, RollOverShopButton); } function DoTailorYes() { SetText(''); HideItems(); HideImages(); ItemSalesman._visible = false; HideStatChangeIcons(); if (SlaveGirl.DoTailorYes(DressChoice != 0) == true) { return undefined; } if (DressChoice == 1) { if (BuyDress(Robe1Price)) { Robe1OK = 1; } } else { if (DressChoice == 2) { if (BuyDress(Robe2Price)) { Robe2OK = 1; } } else { if (DressChoice == 3) { if (BuyDress(Robe3Price)) { Robe3OK = 1; } } else { if (DressChoice == 4) { if (BuyDress(Robe4Price)) { Robe4OK = 1; } } else { if (DressChoice == 5) { if (BuyDress(Robe5Price)) { Robe5OK = 1; } } else { if (DressChoice == 6) { if (BuyDress(Robe6Price)) { Robe6OK = 1; } } else { if (DressChoice == 7) { HideBackgrounds(); HideSlaveActions(); ShowRobes(); TailorMenu._visible = true; if (BuyUniform(150)) { BunnySuitOK = 1; } } else { if (DressChoice == 8) { HideBackgrounds(); HideSlaveActions(); ShowRobes(); TailorMenu._visible = true; if (BuyUniform(70)) { LingerieOK = 1; } } else { if (DressChoice == 9) { HideBackgrounds(); HideSlaveActions(); ShowRobes(); TailorMenu._visible = true; if (BuyUniform(80)) { MaidUniformOK = 1; Points(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } } else { if (DressChoice == 10) { HideBackgrounds(); HideSlaveActions(); ShowRobes(); TailorMenu._visible = true; if (BuyUniform(60)) { SwimsuitOK = 1; } } else { if (ObjectChoice == 1) { if (BuyItem('Merchant', ShopMenu.BtnUninhibitory.cost)) { NumAphrodisiac += 1; MinLibido += 1; UsedAphrodisiac = 1; if (PotionsUsed[1] > 3) { PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, -20, 0, 0, 0, -30, -50, 0); AddText('The drug seems to have the opposite effect!!!!!'); } else { if (MaxObedience < 80) { MaxObedience += 5; } else { MaxObedience += 1; } PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0); if (DrinkPotion(1, PurchasePrice(ShopMenu.BtnUninhibitory.cost), 'reluctantly drinks the brew.')) { AddText(' She comments that it tastes nice and felt a hot flush. After she seems much more focused on her training.'); } } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(9); DoEvent(9700); } } else { if (ObjectChoice == 2) { var v2 = ShopMenu.BtnAphrodisiac.cost; if (PotionsUsed[2] == -1) { v2 = int(v2 / 2); } else { if (Talent == 7) { v2 = int(v2 * 0.67); } } if (BuyItem('Merchant', v2)) { NumAphrodisiac += 1; MinLibido += 1; PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0); UsedAphrodisiac = 1; DrinkPotion(2, PurchasePrice(v2), 'comments on how aroused she is feeling.'); if (!ShopMenu._visible) { return undefined; } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(10); DoEvent(9700); } } else { if (ObjectChoice == 3) { var v2 = ShopMenu.BtnSoothingDraft.cost; if (PotionsUsed[3] == -1) { v2 = int(v2 / 2); } else { if (Talent == 7) { v2 = int(v2 * 0.67); } } if (BuyItem('Merchant', v2)) { MinLibido -= 5; PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, -5, 0, -10, 0, 0, 0); DrinkPotion(3, PurchasePrice(v2), 'feels much calmer and rested.'); if (!ShopMenu._visible) { return undefined; } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(10); DoEvent(9700); } } else { if (ObjectChoice == 4) { var v2 = ShopMenu.BtnEnergyDrink.cost; if (PotionsUsed[4] == -1) { v2 = int(v2 / 2); } else { if (Talent == 7) { v2 = int(v2 * 0.67); } } if (BuyItem('Merchant', v2)) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0); DrinkPotion(4, PurchasePrice(v2), 'feels revitalised and any rest actions have been removed from planning.'); var v1 = 6; while (v1 >= 0) { ClearAction(v1, 17); --v1; } TotalAction = 0; if (!ShopMenu._visible) { return undefined; } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(8); DoEvent(9700); } } else { if (ObjectChoice == 5) { if (BuyItem('Merchant', PriceNecklace)) { AddText('She adds the ' + (GetJeweleryName()).toLowerCase() + ' to her jewellery box.\r\r'); ++TotalJewelry; if (TotalJewelry > 4) { SlaveSpeak('I have a good variety of jewellery and can match them to the situation well. More would be nice but would not really help me socially.'); } if (TotalJewelry > 5) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0); PointsMod(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0); PointsMod(0, 0, PriceNecklace / 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } NecklaceIndex = int(Math.random() * 9); SetJeweleryButton(); } } else { if (ObjectChoice == 6) { if (BuyItem('Merchant', ShopMenu.BtnPoetryBook.cost)) { ServantSpeak(ServantPronoun + ' will read the poems with her when we give her the time.\r\rThis book is long enough to take two sessions to read.'); ++TotalPoetry; ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(2); DoEvent(9700); } } else { if (ObjectChoice == 7) { if (BuyItem('Merchant', ShopMenu.BtnBook.cost)) { ServantSpeak(ServantPronoun + ' will have her study the text and broaden her education when she is given the time.\r\rThis book is long enough to take two sessions to read.'); ++TotalBooks; ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(2); DoEvent(9700); } } else { if (ObjectChoice == 8) { if (BuyItem('Merchant', PriceDoll)) { SlaveSpeakStart('Thank you for the ' + ShopMenu.BtnDoll.ActLabel.text.toLowerCase() + '.'); if (ShopMenu.BtnDoll.ActLabel.text == 'Cute Doll') { ++TotalDoll; } else { if (ShopMenu.BtnDoll.ActLabel.text == 'Teddy Bear') { ++TotalTeddyBear; } else { ++TotalGames; } } if (TotalDoll + TotalTeddyBear > 3) { PersonSpeakEnd('\r\rI do have enough playthings. It is nice to have a variety but please do not waste your money.'); } else { PersonSpeakEnd(); } if (TotalDoll + TotalTeddyBear > 4) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0.5, 0); } else { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, PriceDoll / 30, 1, 0); } temp = int(Math.random() * 4); if (TotalTeddyBear == 0) { temp = 1; } switch (temp) { case 0: PriceDoll = 300; break; case 1: PriceDoll = 240; break; case 2: PriceDoll = 180; break; case 3: PriceDoll = 120; } SetDollButton(); } } else { if (ObjectChoice == 9) { if (BuyItem('Skuld', 100)) { AddText('A beautician working for Skuld applies ' + SlaveName + '\'s make-up and gives instructions for her to reapply and maintain.'); DurationMakeupCare = 4; ++TotalMakeupCare; } } else { if (ObjectChoice == 10) { if (BuyItem('Trader', 500)) { LeashOK = 1; ShowAssistant(); ItemSalesman._visible = false; Quitter._visible = false; ShowMainButtons(); } else { HideRobes(); ItemSalesman._visible = true; ClipTravellingMerchant._visible = true; SMAppearance._visible = true; } } else { if (ObjectChoice == 11) { if (BuyItem('Trader', 700)) { HandcuffBraceletOK = 1; ShowAssistant(); ItemSalesman._visible = false; Quitter._visible = false; ShowMainButtons(); } else { HideRobes(); ItemSalesman._visible = true; ClipTravellingMerchant._visible = true; SMAppearance._visible = true; } } else { if (ObjectChoice == 12) { if (BuyItem('Trader', 1000)) { HaloOK = 1; ShowAssistant(); ItemSalesman._visible = false; Quitter._visible = false; ShowMainButtons(); } else { HideRobes(); ItemSalesman._visible = true; ClipTravellingMerchant._visible = true; SMAppearance._visible = true; } } else { if (ObjectChoice == 13) { if (BuyItem('Trader', 500)) { NymphsTiaraOK = 1; ShowAssistant(); ItemSalesman._visible = false; Quitter._visible = false; ShowMainButtons(); } else { HideRobes(); ItemSalesman._visible = true; ClipTravellingMerchant._visible = true; SMAppearance._visible = true; } } else { if (ObjectChoice == 14) { if (BuyItem('Trader', 500)) { SpikedBraceletOK = 1; ShowAssistant(); ItemSalesman._visible = false; Quitter._visible = false; ShowMainButtons(); } else { HideRobes(); ItemSalesman._visible = true; ClipTravellingMerchant._visible = true; SMAppearance._visible = true; } } else { if (ObjectChoice == 15) { if (DoreiEffecting == 1) { AddText('The man refuses to sell the drug \'Dorei\' to you. He says he can tell she is already under its effects and another dose would harm or even kill her.'); return undefined; } if (BuyItem('Dealer', PriceDorei)) { DoreiEffecting = 1; DrugDuration = 7; OldMorality = VarMorality; PointsExact(0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, -10, 0); AddictionLevel += 50; DrugAddicted = 0; NumAphrodisiac += 1; UsedAphrodisiac = 1; DrinkPotion(5, PurchasePrice(PriceDorei), ''); PriceDorei += int(PriceDorei / 5); Quitter._visible = false; NextEvent._visible = false; if (!Dealer._visible) { return undefined; } Dealer._visible = false; ShowMainButtons(); ShowRobes(); ShowAssistant(); } } else { if (ObjectChoice == 16) { if (BuyItem('Dealer', PriceZodai)) { if (ZodaiEffecting == 0) { ZodaiEffecting = 1; DrugDuration = 1; } PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0); AddictionLevel += 10; DrugAddicted = 0; NumAphrodisiac += 1; UsedAphrodisiac = 1; DrinkPotion(6, PurchasePrice(PriceZodai), ''); PriceZodai += int(PriceZodai / 5); Quitter._visible = false; if (!Dealer._visible) { return undefined; } NextEvent._visible = false; Dealer._visible = false; ShowMainButtons(); ShowRobes(); ShowAssistant(); } } else { if (ObjectChoice == 17) { if (GamanEffecting == 1) { AddText('The man refuses to sell the drug \'Gaman\' to you. He says he can tell she is already under its effects and another dose would harm or even kill her.'); return undefined; } if (BuyItem('Dealer', PriceGaman)) { GamanEffecting = 1; DrugDuration = 3; PointsExact(0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0); AddictionLevel += 10; DrugAddicted = 0; NumAphrodisiac += 1; UsedAphrodisiac = 1; DrinkPotion(7, PurchasePrice(PriceGaman), ''); PriceGaman += int(PriceGaman / 5); Quitter._visible = false; if (!Dealer._visible) { return undefined; } NextEvent._visible = false; Dealer._visible = false; ShowMainButtons(); ShowRobes(); ShowAssistant(); } } else { if (ObjectChoice == 18) { if (BiyakuEffecting == 1) { AddText('The man refuses to sell the drug \'Biyaku\' to you. He says he can tell she is already under its effects and another dose would harm or even kill her.'); return undefined; } if (BuyItem('Dealer', PriceBiyaku)) { BiyakuEffecting = 1; DrugDuration = 3; PointsExact(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 20, 0, 0, 0, -10, 0); AddictionLevel += 20; DrugAddicted = 0; NumAphrodisiac += 1; UsedAphrodisiac = 1; DrinkPotion(8, PurchasePrice(PriceBiyaku), ''); PriceBiyaku += int(PriceBiyaku / 5); Quitter._visible = false; if (!Dealer._visible) { return undefined; } NextEvent._visible = false; Dealer._visible = false; ShowMainButtons(); ShowRobes(); ShowAssistant(); } } else { if (ObjectChoice == 19) { if (IshinaiEffecting == 1) { AddText('The man refuses to sell the drug \'Ishinai\' to you. He says he can tell she is already under its effects and another dose would harm or even kill her.'); return undefined; } if (BuyItem('Dealer', PriceIshinai)) { IshinaiEffecting = 1; DrugDuration = 3; OldObedience = VarObedience; OldMorality = VarMorality; OldIntelligence = VarIntelligence; OldVarTemperament = VarTemperament; AddictionLevel += 50; PointsExact(0, 0, 0, -100, -100, 0, 0, 0, 0, 0, 0, -100, 100, 100, 100, 0, 0, 0, -10, 0); VarLovePoints -= 10; DrugAddicted = 0; NumAphrodisiac += 1; UsedAphrodisiac = 1; DrinkPotion(9, PurchasePrice(PriceIshinai), ''); PriceIshinai += int(PriceIshinai / 5); Quitter._visible = false; if (!Dealer._visible) { return undefined; } NextEvent._visible = false; Dealer._visible = false; ShowMainButtons(); ShowRobes(); ShowAssistant(); } } else { if (ObjectChoice == 20) { if (BuyItem('Trader', 200)) { HarnessOK = 1; ShowAssistant(); Quitter._visible = false; ShowMainButtons(); } else { HideRobes(); ItemSalesman._visible = true; ClipTravellingMerchant._visible = true; SMAppearance._visible = true; } } else { if (ObjectChoice == 21) { var v2 = ShopMenu.BtnLustDraft.cost; if (PotionsUsed[10] == -1) { v2 = int(v2 / 2); } else { if (Talent == 7) { v2 = int(v2 * 0.67); } } if (BuyItem('Merchant', v2)) { Points(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0); NumAphrodisiac += 1; MinLibido += 2; UsedAphrodisiac = 1; if (DrinkPotion(10, PurchasePrice(v2), 'feels an immediate rush of lust and ')) { if (int(Math.random() * 2) == 1) { if (Gender == 2) { AddText('asks you to lick her and make her cum.'); } else { AddText('asks you to fuck her.'); } } else { AddText('starts to rub her pussy and suddenly stops when she remembers you are present.'); } } if (!ShopMenu._visible) { return undefined; } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(7); DoEvent(9700); } } else { if (ObjectChoice == 22) { if (BuyItem('Skuld', 200)) { NippleRingsOK = 1; ShowMovie(ObjectNippleRings, true, 2); DoEvent(9702); AddText('She now has a set of rings to wear in her nipple piercings.'); } } else { if (ObjectChoice == 23) { if (BuyItem('Skuld', 200)) { NippleChainOK = 1; ShowMovie(ObjectNippleChain, true, 3); DoEvent(9703); AddText('She now has a chain that connects her nipple piercings.'); } } else { if (ObjectChoice == 24) { if (BuyItem('Merchant', 50)) { DildoOK = 1; ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(1); ServantSpeak('You may now try to order her to fuck herself with a dildo.'); DoEvent(9700); } } else { if (ObjectChoice == 25) { if (BuyItem('Merchant', 50)) { PlugOK = 1; ServantSpeak('You may now try to order her to wear the anal plug for the day.'); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(6); DoEvent(9700); } } else { if (ObjectChoice == 26) { if (BuyItem('Merchant', 50)) { RopesOK = 1; ServantSpeak('You may now tie her up in bondage.'); } } else { if (ObjectChoice == 27) { if (BuyItem('Skuld', 150)) { ServantSpeak('You may now have her practice her makeup.'); VanityCaseOK = 1; Points(5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(3); DoEvent(9702); } } else { if (ObjectChoice == 28) { if (BuyItem('Skuld', 70)) { if (PiercingsType == 0) { ServantSpeak('She can now wear nipple rings.'); PointsExact(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0); PiercingsType = 1; } else { ServantSpeak('She is thoroughly pierced.'); PointsExact(2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0); PiercingsType = 2; } } } else { if (ObjectChoice == 29) { if (BuyItem('Skuld', 100)) { AddText('A stylist working for Skuld styles ' + SlaveName + '\'s hair.'); ++TotalHairCare; DurationHairCare = 6; } } else { if (ObjectChoice == 30) { if (BuyItem('Skuld', 100)) { AddText('An expert of skin care working for Skuld cleanses and treats ' + SlaveName + '\'s skin.'); DurationFacialCare = 6; ++TotalSkinCare; } } else { if (ObjectChoice == 31) { if (BuyItem('Stable-hand', 100)) { AddText('A light-weight cart is brought out and the stable-hand shows you how to rig her. He describes two methods of control, either using reins connected to her nipple piercings, or connected to her bit-gag. ' + SlaveName + ' moans through her gag.'); PonyCartOK = 1; HideBackgrounds(); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(19); DoEvent(9703); } } else { if (ObjectChoice == 32) { if (BuyItem('Stable-hand', 50)) { AddText('She is fitted with the boots, complete even to small horseshoes. ' + SlaveName + ' finds walking in them difficult to start with, and will need some practice.'); PonyBootsOK = 1; ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(20); DoEvent(9703); } } else { if (ObjectChoice == 33) { if (BuyItem('Stable-hand', 50)) { AddText('The stable-hand carefully selects the largest phallus ' + SlaveName + ' can take, inserting it into her, and the rest of the panties. He locks it securely and hands you the key.'); VibratorPantiesOK = 1; WearItem(6); ShowItem(ObjectVibratorPanties, true, 0); DoEvent(9703); } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } UpdateEquipment(); UpdateSlave(); } function ShoppingEvent(eventno) { switch (eventno) { case 2000: Quitter._visible = true; if (ArmourType == 1) { ServantSpeak('You already own this armour.'); } else { if (BuyItem('Merchant', 100)) { ArmourType = 1; if (Gender == 1) { AddText('The armour is light and reasonably protective.'); } else { AddText('The armour is tight and form fitting. You feel the need to pick up a whip...'); } Backgrounds.ShowArmoury(2); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop((Gender == 1) ? 14 : 13); DoEvent(9700); } } return undefined; case 2001: Quitter._visible = true; if (ArmourType == 2) { ServantSpeak('You already own this armour.'); } else { if (BuyItem('Merchant', 200)) { ArmourType = 2; HideBackgrounds(); AddText('You wonder if this armour covers enough of your body, but it does feel good.'); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(12); DoEvent(9700); } } return undefined; case 2002: Quitter._visible = true; if (ArmourType == 3) { ServantSpeak('You already own this armour.'); } else { if (BuyItem('Merchant', 200)) { Backgrounds.ShowArmoury(2); ArmourType = 3; AddText('The armour is made of overlapping plates of metal. Flexible but a little noisy.'); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop((Gender == 1) ? 18 : 21); DoEvent(9700); } } return undefined; case 2003: Quitter._visible = true; if (ArmourType == 4) { ServantSpeak('You already own this armour.'); } else { if (BuyItem('Merchant', 300)) { Backgrounds.ShowArmoury(2); ArmourType = 4; AddText('The best form of protection but very heavy.'); if (Gender != 1) { AddText(' It has been custom shaped to match your figure.'); } HideBackgrounds(); Backgrounds.ShowArmoury(2); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop((Gender == 1) ? 17 : 16); DoEvent(9700); } } return undefined; case 2004: Quitter._visible = true; if (WeaponType == 1) { ServantSpeak('You already own this weapon.'); } else { if (BuyItem('Merchant', 250)) { WeaponType = 1; AddText('A beautifully balanced sword, imported from a distant country.'); if (Talent == 5) { PlanningNightSex.SpankText.htmlText = 'Hurt Her <font color=\'#0000FF\' size=\'-4\'>S</font>'; } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(4); DoEvent(9700); } } return undefined; case 2005: Quitter._visible = true; if (WeaponType == 2) { ServantSpeak('You already own this weapon.'); } else { if (BuyItem('Merchant', 150)) { WeaponType = 2; AddText('A compact composite bow.'); ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(11); DoEvent(9700); } } return undefined; case 2006: Quitter._visible = true; if (WeaponType == 3) { ServantSpeak('You already own this weapon.'); } else { if (BuyItem('Merchant', 100)) { WeaponType = 3; AddText('A whip designed to cause pain, but difficult to use in combat. It also has uses for discipline...'); if (Talent == 5) { PlanningNightSex.SpankText.htmlText = 'Whip Her <font color=\'#0000FF\' size=\'-4\'>S</font>'; } ObjectsLarge._visible = true; ObjectsLarge.gotoAndStop(5); HideBackgrounds(); DoEvent(9700); } } } } function PurchaseDrug(dnum, hint) { if (SlaveGirl.PurchaseItem(dnum, hint) == true) { return undefined; } var v4; var v1; var v2; if (dnum == 15) { v4 = 'This drug is often used during the training of slaves. They will obey almost any order and increase their will for sex.'; v1 = PriceDorei; v2 = 5; } else { if (dnum == 19) { v4 = 'This drug is very powerful. Your future slave will lose all will. She will do anything you tell her. Anything.'; v1 = PriceIshinai; v2 = 9; } else { if (dnum == 18) { v4 = 'This drug is a powerful aphrodisiac, your future slave will lose her inhibitions after she takes this.'; v1 = PriceBiyaku; v2 = 8; } else { if (dnum == 17) { v4 = 'This drug is used by some prostitutes so they can keep up longer during the night and have more customers.'; v1 = PriceGaman; v2 = 7; } else { if (dnum == 16) { v4 = 'This drug increases the sensations. If your future slave takes some, she will feel everything better during the night.'; v1 = PriceZodai; v2 = 6; } } } } } var v5 = v1; if (PotionsUsed[v2] == -1) { v5 = v1 / 2; } else { if (Talent == 7) { v5 = int(v1 * 0.67); } } PersonSpeak('Dealer', v4 + '\rPrice ' + PurchasePrice(v5) + 'GP'); if (hint != true) { AddText('\r\rDo you wish to buy this drug?'); DoYesNoItem(0, dnum); } } function DealerShortcuts(key) { switch (key) { case 66: PurchaseDrug(18); return undefined; case 68: PurchaseDrug(15); return undefined; case 71: PurchaseDrug(17); return undefined; case 73: PurchaseDrug(19); return undefined; case 90: PurchaseDrug(16); return undefined; } } function DoStables() { HideMainButtons(); Quitter._visible = true; HideRobes(); Backgrounds.ShowStables(); ShowAssistant(); ActionsMenu._visible = false; if (DonePonygirl == 0) { SetText('You take ' + SlaveName + ' to the stables the tutor had told her about. As you approach a stable-hand stops you.\r\r'); PersonSpeak('Stable-hand', 'I am sorry, we have been told to only allow pony slaves and their owners here, you must leave.'); AddText('\r\rThe hand is insistent so you leave.'); return undefined; } if (!CheckBitFlag1(35)) { SetText('You take ' + SlaveName + ' to the stables the tutor had told her about. It is situated at the rear of a large mansion. As you enter you see a stable-hand inserting a rather large anal plug into a ponygirl\'s ass. The girl is groaning in some discomfort,\r\r'); PersonSpeak('Stable-hand', 'That will do, she needs to get used to large things there!\r\rHow can I help you?', true); AddText('\r\rYou explain about your new ponygirl and he tells you\r\r'); PersonSpeak('Stable-hand', 'I have a few items here to help training your ponygirl.\r\rA cart that she can pull you in when you go for a ride. It will also allow her to compete in Ponygirl Races.\r\rWe also have boots that make her trot correctly and nipple chains to guide her with. I also have vibrator panties with ample phalluses to allow you to completely control her sexuality, to arouse her and to ensure she will only fuck you or whoever you order her to.', true); } else { PersonSpeak('Stable-hand', 'Having a good ride?'); } StopHints(); StablesMenu._visible = true; SlaveGirl.DoStables(); SetBitFlag1(35); if (SoundsOn) { Sounds.SoundDoorBell.gotoAndPlay(2); } } function PurchasePonyCart(hint) { if (PonyCartOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You have already bought a pony cart.'); } else { PersonSpeak('Stable-hand', 'A small cart designed for your ponygirl to take you for a ride.\r\rAllows you to enter her in ponygirl races\r' + PurchasePrice(100) + 'GP'); PurchaseItem(31, hint); } } function PurchasePonyBoots(hint) { if (PonyBootsOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You have already bought her pony boots.'); } else { PersonSpeak('Stable-hand', 'A set of high-hell boots to shape her stance and make her walk and feel more like a pony.\r\rRiding and Prancing is more effective. She runs better in ponygirl races\r' + PurchasePrice(50) + 'GP'); PurchaseItem(32, hint); } } function PurchaseVibratorPanties(hint) { if (VibratorPantiesOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('She already has some vibrator panties.'); } else { PersonSpeak('Stable-hand', 'A large phallus securely locked into her pussy inside leather panties. Arcane means cause it to vibrate and arouse.\r\rSensibility + 2\rMore accustomed to dildos\rLust + 7 each day without being fucked.\r\r' + PurchasePrice(50) + 'GP'); PurchaseItem(33, hint); } } function StablesShortcuts(key) { switch (key) { case 67: PurchasePonyCart(false); return undefined; case 78: PurchaseNippleChain(false); return undefined; case 80: PurchasePonyBoots(false); return undefined; case 89: PurchasePonyCart(false); return undefined; } } function DoTailor() { HideAllPeople(); ShowMovie(PeopleTailor, false, 2); if (SellDress1 == 1) { TailorMenu.Dress1._visible = true; TailorMenu.Dress1SC._visible = true; TailorMenu.BtnDress1._visible = true; } else { TailorMenu.Dress1._visible = false; TailorMenu.Dress1SC._visible = false; TailorMenu.BtnDress1._visible = false; } if (SellDress2 == 1) { TailorMenu.Dress2._visible = true; TailorMenu.Dress2SC._visible = true; TailorMenu.BtnDress2._visible = true; } else { TailorMenu.Dress2._visible = false; TailorMenu.Dress2SC._visible = false; TailorMenu.BtnDress2._visible = false; } if (SellDress3 == 1) { TailorMenu.Dress3._visible = true; TailorMenu.Dress3SC._visible = true; TailorMenu.BtnDress3._visible = true; } else { TailorMenu.Dress3._visible = false; TailorMenu.Dress3SC._visible = false; TailorMenu.BtnDress3._visible = false; } if (SellDress4 == 1) { TailorMenu.Dress4._visible = true; TailorMenu.Dress4SC._visible = true; TailorMenu.BtnDress4._visible = true; } else { TailorMenu.Dress4._visible = false; TailorMenu.Dress4SC._visible = false; TailorMenu.BtnDress4._visible = false; } if (SellDress5 == 1) { TailorMenu.Dress5._visible = true; TailorMenu.Dress5SC._visible = true; TailorMenu.BtnDress5._visible = true; } else { TailorMenu.Dress5._visible = false; TailorMenu.Dress5SC._visible = false; TailorMenu.BtnDress5._visible = false; } if (SellDress6 == 1) { TailorMenu.Dress6._visible = true; TailorMenu.Dress6SC._visible = true; TailorMenu.BtnDress6._visible = true; } else { TailorMenu.Dress6._visible = false; TailorMenu.Dress6SC._visible = false; TailorMenu.BtnDress6._visible = false; } if (SellBunnySuit == 1) { TailorMenu.BunnySuit._visible = true; TailorMenu.BunnySuitText._visible = true; } else { TailorMenu.BunnySuit._visible = false; TailorMenu.BunnySuitText._visible = false; TailorMenu.BunnySuitTick._visible = false; } if (SellLingerie == 1) { TailorMenu.Lingerie._visible = true; TailorMenu.LingerieText._visible = true; } else { TailorMenu.Lingerie._visible = false; TailorMenu.LingerieText._visible = false; TailorMenu.LingerieTick._visible = false; } if (SellMaidUniform == 1) { TailorMenu.MaidUniform._visible = true; TailorMenu.MaidUniformText._visible = true; } else { TailorMenu.MaidUniform._visible = false; TailorMenu.MaidUniformText._visible = false; TailorMenu.MaidUniformTick._visible = false; } if (SellSwimsuit == 1) { TailorMenu.Swimsuit._visible = true; TailorMenu.SwimsuitText._visible = true; } else { TailorMenu.Swimsuit._visible = false; TailorMenu.SwimsuitText._visible = false; TailorMenu.SwimsuitTick._visible = false; } HideMainButtons(); Quitter._visible = true; ActionsMenu._visible = false; if (!CheckBitFlag1(30)) { SetText('You visit a tailor to purchase a dress for ' + SlaveName + '. They can change the characteristics of ' + SlaveName + ' and have other effects...\r\r'); PersonSpeak('Tailor', 'Welcome my boutique. Your girl here is promising and I have a number of dresses appropriate for her. I also have one rather special one, a master work made by a renowned tailor. It is perfectly suited to the young lady.', true); } else { PersonSpeak('Tailor', 'How may I help you?'); } StopHints(); TailorMenu._visible = true; SlaveGirl.DoTailor(); SetBitFlag1(30); if (SoundsOn) { Sounds.SoundDoorBell.gotoAndPlay(2); } } function AddDesc(desc) { if (addedone) { AddText(' ,'); } AddText(desc); addedone = true; } function DescribeDress(dress) { if (DressAttributes[dress] != 0) { AddText('\rThis dress is '); addedone = false; if (IsDressCourtly(dress)) { AddDesc('courtly'); } if (IsDressEasy(dress)) { AddDesc('easy to move in'); } if (IsDressSwimsuit(dress)) { AddDesc('a swimsuit'); } if (IsDressSleazyBar(dress)) { AddDesc('a Sleazy Bar costume'); } if (IsDressSlutty(dress)) { AddDesc('slutty'); } if (IsDressDancing(dress)) { AddDesc('a dance dress'); } if (IsDressMaid(dress)) { AddDesc('a maid uniform'); } if (IsDressLingerie(dress)) { AddDesc('lingerie'); } AddText('.'); } } function PurchaseDress(dress, owned, dname, desc, price, hint) { if (!hint && owned == 1) { HideYesNoButtons(); ServantSpeak('You already own this article of clothing.'); } else { SetText(''); if (hint != true) { if (dress > 6) { HideRobes(); TailorMenu._visible = false; Backgrounds.ShowTailors(); switch (dress) { case 7: if (SlaveGirl.ShowBunnySuit() != true) { Generic.ShowBunnySuit(); } else { AddText(SlaveName + ' tries on the Bunny Suit.\r\r'); } break; case 8: if (SlaveGirl.ShowLingerie() != true) { Generic.ShowLingerie(); } else { AddText(SlaveName + ' tries on some lingerie.\r\r'); } break; case 9: if (SlaveGirl.ShowMaidUniform() != true) { Generic.ShowMaidUniform(); } else { AddText(SlaveName + ' tries on a maid uniform.\r\r'); } break; case 10: if (SlaveGirl.ShowSwimsuit() != true) { Generic.ShowSwimsuit(); } else { AddText(SlaveName + ' tries on a swimsuit.\r\r'); } } } else { AddText(SlaveName + ' tries on the dress.\r\r'); HideRobes(); var v3 = DressWorn; DressWorn = dress; ShowRobes(); DressWorn = v3; } } PersonSpeakStart('Tailor', dname + '\r\r' + desc, true); DescribeDress(dress); PersonSpeakEnd('\r' + PurchasePrice(price) + 'GP'); if (hint != true) { AddText('\r\rDo you wish to buy this article of clothing?'); DoYesNoItem(dress, 0); } } if (hint != true) { Beep(); } } function BuyDress(cost) { var v1 = SlaveGirl.BuyDress(cost); if (v1 != undefined) { return v1; } if (BuyItem('Tailor', cost)) { HideRobes(); ShowRobes(); SlaveSpeak('Thank you for the lovely clothing.'); NumDresses += 1; VarLovePoints += 2; return true; } else { return false; } } function BuyUniform(cost) { var v1 = SlaveGirl.BuyUniform(cost); if (v1 != undefined) { return v1; } if (BuyItem('Tailor', cost)) { SlaveSpeak('Thank you for the costume.'); VarLovePoints += 1; return true; } else { return false; } } function TailorShortcuts(key) { switch (key) { case 49: TailorMenu.BtnDress1.onPress(); return undefined; case 50: TailorMenu.BtnDress2.onPress(); return undefined; case 51: TailorMenu.BtnDress3.onPress(); return undefined; case 52: TailorMenu.BtnDress4.onPress(); return undefined; case 53: TailorMenu.BtnDress5.onPress(); return undefined; case 54: TailorMenu.BtnDress6.onPress(); return undefined; case 66: TailorMenu.BunnySuit.onPress(); return undefined; case 76: TailorMenu.Lingerie.onPress(); return undefined; case 77: TailorMenu.MaidUniform.onPress(); return undefined; case 83: TailorMenu.Swimsuit.onPress(); return undefined; } } function DoSalon() { HideMainButtons(); Quitter._visible = true; HideRobes(); Backgrounds.ShowSalon(); ShowAssistant(); ActionsMenu._visible = false; PeopleSalonOwner._visible = true; SalonMenu.PiercingsLabel.htmlText = '<font color=\'#0000FF\'>P</font>iercings'; if (PiercingsType > 0) { SalonMenu.PiercingsLabel.htmlText = '<font color=\'#0000FF\'>P</font>iercings+'; } if (!CheckBitFlag1(29)) { SetText('You take ' + SlaveName + ' to visit a beauty salon. It is rather odd, arcane symbols and potions every where. There is a small painting of a beautiful faerie woman on one wall. A young girl speaks to you,\r\r'); PersonSpeakStart('Salon Owner?', 'Welcome to my mother\'s beauty salon, I am Skuld. Mother has left it to me to run this shop while she is <i>away</i>. We have all the latest products and potions to enhance a ladies beauty. I have expert staff to do a range of treatments.\r\rWe also sell some products,', true); AddText('\r</font>she blushes\r'); PersonSpeakEnd(FontText + 'and we have some items of a naughty nature for sale...'); AddText('\r\rYou notice while talking that she looks interested in ' + SlaveName + ' but looks a bit disappointed after a moment. You feel a little offended at her implied criticism of your slave and ask. She looks apologetic and explains\r\r'); PersonSpeak('Skuld', 'Sorry, ' + SlaveName + ' I thought for a second you were someone I was looking for.', true); } else { PersonSpeak('Skuld', 'Welcome back!'); } StopHints(); SalonMenu._visible = true; SlaveGirl.DoSalon(); SetBitFlag1(29); if (SoundsOn) { Sounds.SoundDoorBell.gotoAndPlay(2); } } function PurchaseNippleRings(hint) { if (PiercingsType == 0) { Beep(); HideYesNoButtons(); ServantSpeak('She does not have any nipple piercings.'); } else { if (NippleRingsOK == 1) { Beep(); HideYesNoButtons(); ServantSpeak('She already has a set of nipple rings.'); } else { PersonSpeak('Skuld', 'Nipple Rings.\r\rLust + 1 per day\rHer breasts are more sensitive.\r' + PurchasePrice(200) + 'GP'); ObjectChoice = 22; PurchaseItem(22, hint); } } } function PurchaseNippleChain(hint) { if (PiercingsType == 0) { Beep(); HideYesNoButtons(); ServantSpeak('She does not have any nipple piercings.'); } else { if (NipplechainOK == 1) { Beep(); HideYesNoButtons(); ServantSpeak('She already has a nipple chain.'); } else { PersonSpeak('Skuld', 'Nipple Chain.\r\rLust + 1 per day\rOften worn by ponygirls, her breasts are more sensitive.\r' + PurchasePrice(200) + 'GP'); ObjectChoice = 23; PurchaseItem(23, hint); } } } function PurchaseMakeUp(hint) { PersonSpeakStart('Skuld', 'Her make-up is done by a professional.\r\rCharisma + ' + int(5 * dmod) + ', ' + PurchasePrice(100) + 'GP\rOf course she will have to return periodically to have it re-done.'); if (DurationFacialCare > 0) { AddText('She does not really need her make-up done now, she only had one recently but my beautician will see her again.'); } if (VanityCaseOK == 0) { AddText('\r\rShe has not bought a vanity case so she cannot maintain her make-up properly and will need to return more often. '); } PersonSpeakEnd(); PurchaseItem(9, hint); } function PurchaseVanityCase(hint) { if (VanityCaseOK == 1) { Beep(); HideYesNoButtons(); ServantSpeak('You have already bought a vanity case.'); } else { PersonSpeak('Skuld', 'Vanity Case of makeup and accessories.\r\rCharisma + ' + int(5 * dmod) + '\r' + PurchasePrice(150) + 'GP'); PurchaseItem(27, hint); } } function PurchasePiercings(hint) { if (PiercingsType > 1) { Beep(); HideYesNoButtons(); ServantSpeak('She is already fully pierced.'); } else { if (PiercingsType == 0) { PersonSpeakStart('Skuld', 'Piercings of her nipples and clitoris.\r\rCharisma + 2, Lust + 1'); } else { PersonSpeakStart('Skuld', 'Vaginal and belly-button piercings.\r\rCharisma + 2, Lust + 1'); } PersonSpeakEnd('\r' + PurchasePrice(70) + 'GP'); PurchaseItem(28, hint); } } function PurchaseHairStyling(hint) { PersonSpeakStart('Skuld', 'Professional hairstyling.\r\rCharisma + ' + int(5 * dmod) + ', ' + PurchasePrice(100) + 'GP\rOf course she will have to return periodically for a trim and other touch ups. '); if (DurationHairCare > 0) { AddText('She does not really need a trim now, she only had one recently but my stylist will adjust her hair. '); } if (VanityCaseOK == 0) { AddText('\r\rShe has not bought a vanity case so she cannot maintain her hair properly and will need to return more often. '); } PersonSpeakEnd(); PurchaseItem(29, hint); } function PurchaseSkinCare(hint) { PersonSpeakStart('Skuld', 'Facial and skin-care in a boutique.\r\rCharisma + ' + int(5 * dmod) + ', ' + PurchasePrice(100) + 'GP\rOf course she will have to return periodically for more treatments.'); if (DurationFacialCare > 0) { AddText('She does not really need another treatment now, she only had one recently but my expert will treat her again.'); } if (VanityCaseOK == 0) { AddText('\r\rShe has not bought a vanity case so she cannot maintain her skin properly and will need to return more often. '); } PersonSpeakEnd(); PurchaseItem(30, hint); } function SalonShortcuts(key) { switch (key) { case 67: PurchaseVanityCase(false); return undefined; case 72: PurchaseHairStyling(false); return undefined; case 77: PurchaseMakeUp(false); return undefined; case 80: PurchasePiercings(false); return undefined; case 82: PurchaseNippleRings(false); return undefined; case 83: PurchaseSkinCare(false); return undefined; } } function PurchaseHalo(hint) { HideItems(); ObjectHalo._visible = true; SMAppearance._visible = false; if (SMFaith == 2) { HideYesNoButtons(); SetText('This is an item of the new gods, not of your faith. You cannot use this item.'); } else { if (HaloOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { SetText(HaloDescription + '\r' + PurchasePrice(1000) + 'GP'); PurchaseItem(12, hint); } } } function PurchaseOroborusCandle(hint) { HideItems(); ObjectOroborusCandle._visible = true; SMAppearance._visible = false; if (SMFaith != 2) { HideYesNoButtons(); SetText('This is an item of old gods, not of the true gods. You cannot use this item.'); } else { if (HaloOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { SetText(OroborusCandleDescription + '\r' + PurchasePrice(1000) + 'GP'); PurchaseItem(12, hint); } } } function PurchaseHarness(hint) { HideItems(); ObjectHarness._visible = true; SMAppearance._visible = false; if (HarnessOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { SetText(HarnessDescription + '\r' + PurchasePrice(200) + 'GP'); PurchaseItem(20, hint); } } function PurchaseNymphsTiara(hint) { HideItems(); ObjectTiara._visible = true; SMAppearance._visible = false; if (NymphsTiaraOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { SetText(NymphsTiaraDescription + '\r' + PurchasePrice(500) + 'GP'); PurchaseItem(13, hint); } } function PurchaseLeash(hint) { HideItems(); ObjectLeash._visible = true; SMAppearance._visible = false; if (LeashOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { if (PonygirlAware == 1) { SetText(LeashPonyDescription); } else { SetText(LeashDescription); } AddText('\r' + PurchasePrice(500) + 'GP'); PurchaseItem(10, hint); } } function PurchaseSpikedBracelet(hint) { HideItems(); ObjectSpikedBracelet._visible = true; SMAppearance._visible = false; if (SpikedBraceletOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { SetText(SpikedBraceletDesciption + '\r' + PurchasePrice(500) + 'GP'); PurchaseItem(14, hint); } } function PurchaseHandcuffBracelet(hint) { HideItems(); ObjectHandcuffBracelet._visible = true; SMAppearance._visible = false; if (HandcuffBraceletOK == 1) { if (!hint) { Beep(); } HideYesNoButtons(); ServantSpeak('You already own this item.'); } else { SetText(HandcuffBraceletDescription + '\r' + PurchasePrice(700) + 'GP'); PurchaseItem(11, hint); } } function ItemSalesManRollOut() { if (IsHints()) { HideItems(); ShowSlaveMaker(false); } } function SalesmanShortcuts(key) { switch (key) { case 72: PurchaseHalo(); return undefined; case 76: PurchaseLeash(); return undefined; case 78: PurchaseNymphsTiara(); return undefined; case 79: PurchaseOroborusCandle(); return undefined; case 82: PurchaseHarness(); return undefined; case 83: PurchaseSpikedBracelet(); return undefined; case 85: PurchaseHandcuffBracelet(); return undefined; } } function DoShop() { HideMainButtons(); Quitter._visible = true; HideRobes(); Backgrounds.ShowShop(); HideAssistant(); ShowMovie(PeopleMerchant, false, 1); ActionsMenu._visible = false; if (!CheckBitFlag1(28)) { SetText('You visit a renowned store for items to aid your training of ' + SlaveName + '. It is a small store in the town centre, very cramped and with a large range of odd things.\r\r'); PersonSpeak('Merchant', 'Welcome to my general store. I sell many items, potions, arms and armour. I even have some items from a certain ummm school.', true); } else { PersonSpeak('Merchant', 'Welcome!'); } StopHints(); ShopMenu._visible = true; SlaveGirl.DoShop(); SetBitFlag1(28); if (SoundsOn) { Sounds.SoundDoorBell.gotoAndPlay(2); } } function PurchaseBook(hint) { PersonSpeak('Merchant', 'Assorted books of general knowledge.\r\rIntelligence + ' + int(6 * dmod) + '\r' + PurchasePrice(ShopMenu.BtnBook.cost) + 'GP'); PurchaseItem(7, hint); } function PurchasePoetryBook(hint) { PersonSpeak('Merchant', 'Poetry Book.\r\rSensibility + ' + int(6 * dmod) + '\r' + PurchasePrice(ShopMenu.BtnPoetryBook.cost) + 'GP'); PurchaseItem(6, hint); } function PurchaseEnergyDrink(hint) { var v1 = ShopMenu.BtnEnergyDrink.cost; if (PotionsUsed[4] == -1) { v1 = int(v1 / 2); } else { if (Talent == 7) { v1 = int(v1 * 0.67); } } PersonSpeak('Merchant', 'A revitalising potion.\r\rTiredness - ' + int(20 * dmod) + '\r' + PurchasePrice(v1) + 'GP'); PurchaseItem(4, hint); } function PurchaseLustDraft(hint) { var v1 = ShopMenu.BtnLustDraft.cost; if (PotionsUsed[10] == -1) { v1 = int(v1 / 2); } else { if (Talent == 7) { v1 = int(v1 * 0.67); } } PersonSpeak('Merchant', 'Potent aphrodisiac that intensifies her orgasms.\r\rLust + 7\r' + PurchasePrice(v1) + 'GP\rWill have lasting effects.'); PurchaseItem(21, hint); } function PurchaseSoothingDraft(hint) { var v1 = ShopMenu.BtnSoothingDraft.cost; if (PotionsUsed[3] == -1) { v1 = int(v1 / 2); } else { if (Talent == 7) { v1 = int(v1 * 0.67); } } PersonSpeak('Merchant', 'Soothing Potion.\r\rNymphomania - 10\rTiredness -10\rLust -5\r' + PurchasePrice(v1) + 'GP'); PurchaseItem(3, hint); } function PurchaseAphrodisiac(hint) { var v1 = ShopMenu.BtnAphrodisiac.cost; if (PotionsUsed[2] == -1) { v1 = int(v1 / 2); } else { if (Talent == 7) { v1 = int(v1 * 0.67); } } PersonSpeak('Merchant', 'Various stimulating aphrodisiacs.\r\rLust + 3\r' + PurchasePrice(v1) + 'GP\rCan have lasting effects if used too often.'); PurchaseItem(2, hint); } function PurchaseUninhibitory(hint) { PersonSpeak('Merchant', 'A mind-control potion of unknown, possibly hellish origin.\r\rObedience + 5\r' + PurchasePrice(ShopMenu.BtnUninhibitory.cost) + 'GP\rBe careful, doesn\'t work if used too often.'); PurchaseItem(1, hint); } function PurchaseDildo(hint) { if (DildoOK == 1 || ImprovedDildoOK == 1) { Beep(); HideYesNoButtons(); ServantSpeak('She already has a dildo to use.'); } else { PersonSpeak('Merchant', 'Dildo - a plain dildo.\r\rAllows you to order her to fuck herself with a dildo.\r' + PurchasePrice(ShopMenu.BtnDildo.cost) + 'GP'); PurchaseItem(24, hint); } } function PurchasePlug(hint) { PersonSpeak('Merchant', 'Anal Plug - a plug designed to be inserted in the ass and stay there indefinitely.\r\r' + PurchasePrice(ShopMenu.BtnPlug.cost) + 'GP'); PurchaseItem(25, hint); } function PurchaseBondageGear(hint) { PersonSpeak('Merchant', 'Bondage Gear - Ropes and cuffs for Bondage.\r\r' + PurchasePrice(ShopMenu.BtnBondage.cost) + 'GP'); PurchaseItem(26, hint); } function PurchaseArmour(hint) { HideLargerText(); PersonSpeakStart('Merchant', 'Armour - Bodily defence. We sell:'); if (!hint) { Beep(); if (Gender == 1 || Talent == 9) { AskHerQuestions(2000, 2002, 2003, 9700, 'Leather', 'Scale', 'Plate', 'None', 'What type of armour do you want'); } else { AskHerQuestions(2000, 2001, 2003, 9700, 'Leather', 'Chain', 'Plate', 'None', 'What type of armour do you want'); } Quitter._visible = true; } ClearFont(); ShowLargerText(); SetFont('<font color=\'#660000\'>'); if (Gender == 1 || Talent == 9) { AddText('<b>Leather</b> - Form fitting, fast with reasonable protection.\r' + PurchasePrice(100) + 'GP\r\r<b>Scale</b> - Made from many overlapping plates of metal, quite flexible. Medium weight and protection.\r' + PurchasePrice(200) + 'GP\r\r<b>Plate</b> - heavy weight and protection, but slow.\r' + PurchasePrice(300) + 'GP'); } else { AddText('<b>Leather</b> - Form fitting, fast and sensuous, useful for \'other\' activities. You really feel you deserve the title \'Mistress\'.\r' + PurchasePrice(100) + 'GP\r\r<b>Chain</b> - Tight, protective and accentuates your figure. Some bonuses dealing with others.\r' + PurchasePrice(200) + 'GP\r\r<b>Plate</b> - heavy weight and protection, molded to your figure, but slow.\r' + PurchasePrice(300) + 'GP'); } PersonSpeakEnd(); } function PurchaseWeapon(hint) { HideLargerText(); PersonSpeakStart('Merchant', 'Weapons - Dealing death or pain.'); if (SlaveGirl.PurchaseWeapon(hint) == true) { return undefined; } AddText(' We sell:\r\r'); if (Gender == 1 || Talent == 9) { AddText('<b>Sword</b> - Powerful Attack, close range ' + PurchasePrice(250) + 'GP'); } else { AddText('<b>Whip</b> - Light Attack, but can stun. Also useful for other \'activities\'. ' + PurchasePrice(100) + 'GP'); } AddText('\r\r<b>Bow</b> - Medium Attack, long range. ' + PurchasePrice(150) + 'GP'); PersonSpeakEnd(); if (!hint) { Beep(); if (Gender == 1 || Talent == 9) { AskHerQuestions(2004, 2005, 9700, 0, 'Sword', 'Bow', 'None', '', 'What type of weapon do you want'); } else { AskHerQuestions(2006, 2005, 9700, 0, 'Whip', 'Bow', 'None', '', 'What type of weapon do you want'); } Quitter._visible = true; } } function PurchaseDoll(hint) { PersonSpeak('Merchant', ShopMenu.BtnDoll.ActLabel.text + '.\r\rJoy + ' + int(dmod * PriceDoll / 30) + '\r' + PurchasePrice(PriceDoll) + 'GP'); PurchaseItem(8, hint); } function PurchaseJewelry(hint) { PersonSpeak('Merchant', 'An elegant ' + (GetJeweleryName()).toLowerCase() + '.\r\rRefinement + ' + int((PriceNecklace / 60) * dmod) + '\r' + PurchasePrice(PriceNecklace) + 'GP'); PurchaseItem(5, hint); } function PressShopButton(hint, act) { if (act == undefined) { act = this._parent.curract; } if (hint == undefined) { hint = false; } switch (act) { case 1: PurchaseUninhibitory(hint); break; case 2: PurchaseAphrodisiac(hint); break; case 3: PurchaseSoothingDraft(hint); break; case 4: PurchaseEnergyDrink(hint); break; case 5: PurchaseJewelry(hint); break; case 6: PurchasePoetryBook(hint); break; case 7: PurchaseBook(hint); break; case 8: PurchaseDoll(hint); break; case 21: PurchaseLustDraft(hint); break; case 24: PurchaseDildo(hint); break; case 25: PurchasePlug(hint); break; case 26: PurchaseBondageGear(hint); break; case 100: PurchaseWeapon(hint); break; case 101: PurchaseArmour(hint); } } function RollOverShopButton() { if (IsHints()) { PressShopButton(true, this._parent.curract); } } function ShopShortcuts(key) { switch (key) { case 65: PurchaseAphrodisiac(false); return undefined; case 66: PurchaseBook(false); return undefined; case 69: PurchaseEnergyDrink(false); return undefined; case 71: if (ShopMenu.BtnBondage._visible) { PurchaseBondageGear(false); } return undefined; case 73: if (ShopMenu.BtnDildo._visible) { PurchaseDildo(false); } return undefined; case 74: PurchaseJewelry(false); return undefined; case 76: PurchaseLustDraft(false); return undefined; case 77: PurchaseArmour(false); return undefined; case 78: if (ShopMenu.BtnPlug._visible) { PurchasePlug(false); } return undefined; case 80: PurchasePoetryBook(false); return undefined; case 83: PurchaseSoothingDraft(false); return undefined; case 85: PurchaseUninhibitory(false); return undefined; case 87: PurchaseWeapon(false); return undefined; } } function DoNewGame() { LoadSaveGames._visible = false; ShowIntroNextButton(); Introduction = 0; DoIntroNext(); SlaveChoice = ''; } function DoCredits() { IntroCredits.gotoAndStop(1); IntroCredits._visible = true; IntroTitle._visible = false; ChoosePupil._visible = false; Beep(); } function HowToPlay() { IntroHowToPlay.HowToNext._visible = true; IntroHowToPlay.gotoAndStop(1); IntroHowToPlay._visible = true; IntroTitle._visible = false; IntroBackground._visible = true; Beep(); } function DoRestart(retire) { GameOverText._visible = false; HideRobes(); Beep(); Icons._visible = false; IntroTitle._visible = false; BackgroundGrid._visible = false; StatisticsGroup._visible = false; MainBackground._visible = false; ResetImages(); if (retire) { Introduction = 5; DoIntroNext(); } else { if (NumFin == -1) { SMReputation -= 5; Money(-500, true); GameDate += 7; } var v2 = CheckBitFlag1(14); var v1 = Forest.CheckBitFlag(34); if (VarKnight != 0) { VarKnight = 0.01; } if (VarLadyFarun != 0) { VarLadyFarun = 0.01; } if (VarProstitute != 0) { VarProstitute = 0.01; } if (VarHighClassProstitute != 0) { VarHighClassProstitute = 0.01; } if (VarMerchant != 0) { VarMerchant = 0.01; } Introduction = 11; ResetSlave(); if (v1) { Forest.SetBitFlag(34); } if (v2) { SetBitFlag1(14); } if (IntroOptionsMenu.NewAssistant.text != '') { ServantFilename = 'Slave-' + IntroOptionsMenu.NewAssistant.text + '.swf'; } SlaveNumber = 1; DoIntroMore(false); SlaveInformation._visible = true; SlaveInformation.text = ''; SlaveSelection._visible = true; } IntroLoadButton._visible = true; IntroBackground._visible = true; } function DoIntroNext() { Beep(); IntroCredits._visible = false; SlaveInformation.text = ''; if (Introduction == 0) { Introduction = 1; IntroTitle._visible = false; IntroBackground._visible = true; Intro1._visible = true; } else { if (Introduction == 1) { Introduction = 2; Intro1._visible = false; Intro2._visible = true; } else { if (Introduction == 2) { Introduction = 3; Intro2._visible = false; IntroBackground._visible = false; Intro3._visible = true; } else { if (Introduction == 3) { Introduction = 4; Intro3._visible = false; Intro4._visible = true; } else { if (Introduction == 4) { Introduction = 5; Intro4._visible = false; Intro5._visible = true; } else { if (Introduction == 5) { IntroBackground._visible = true; Intro5._visible = false; HideIntroNextButton(); IntroLoadButton._visible = true; ResetSlaveMaker(); ResetSlave(); ShowSlaveMaker(true); Introduction = 6; SlaveMakerSelection._visible = true; } else { if (Introduction == 6) { Introduction = (Talent == 7) ? 8 : 7; ShowIntroNextButton(); LoadSaveGames._visible = false; SMAppearance._visible = false; SlaveMakerSelection._visible = false; SlaveMakerName = SlaveMakerSelection.SlaveMakerName.text; SaveGlobalData(); IntroLoadButton._visible = false; Intro7.gotoAndStop(Talent + 1); Intro7._visible = true; } else { if (Introduction == 7) { Introduction = 8; Intro7._visible = false; HideIntroNextButton(); IntroLoadButton._visible = true; SlaveMakerFaith._visible = true; } else { if (Introduction == 8) { Introduction = 9; HideIntroNextButton(); Intro7._visible = false; SlaveMakerFaith._visible = false; IntroLoadButton._visible = true; House = 1; SlaveMakerHousing.Housing.gotoAndStop(1); SlaveMakerHousing._visible = true; } else { if (Introduction == 9) { Introduction = 10; ShowIntroNextButton(); SlaveMakerHousing._visible = false; IntroLoadButton._visible = false; Intro8.gotoAndStop(House); Intro8._visible = true; } else { if (Introduction == 10) { IntroBackground._visible = true; Intro8._visible = false; DoRestart(false); DoIntroMore(false); Introduction = 11; } } } } } } } } } } } } function DoIntroMore(start) { if (!start) { Beep(); } mylv.load('SlaveGirl' + SlaveNumber + '.txt'); } function ResizeSlaveButton(mc, xoffset, yoffset) { mc._visible = true; mc.SlaveImage.forceSmoothing = true; var v2 = mc.SlaveImage._height / mc.SlaveImage._width; mc.SlaveImage._width = 414; mc.SlaveImage._height = 414 * v2; mc.SlaveButton._width = mc.SlaveImage._width; mc.SlaveButton._height = mc.SlaveImage._height; mc._width = 135; mc._height = 135 * v2; mc._x = xoffset + 67.5 - mc._width / 2; mc._y = yoffset + 97.5 - mc._height / 2; if (TentaclesOn == 0 && mc.Tentacles == 'true') { SetMovieColour(mc, -255, -255, -255); } else { SetMovieColour(mc, 0, 0, 0); } } function DataLoaded(success) { if (!success) { SlaveNumber = 1; } SlaveSelection.SlaveChoice1._visible = false; SlaveSelection.SlaveChoice2._visible = false; SlaveSelection.SlaveChoice3._visible = false; SlaveSelection.SlaveChoice4._visible = false; SlaveSelection.SlaveChoice5._visible = false; SlaveSelection.SlaveChoice6._visible = false; SlaveSelection.SlaveChoice7._visible = false; SlaveSelection.ShortCut1._visible = false; SlaveSelection.ShortCut2._visible = false; SlaveSelection.ShortCut3._visible = false; SlaveSelection.ShortCut4._visible = false; SlaveSelection.ShortCut5._visible = false; SlaveSelection.ShortCut6._visible = false; SlaveSelection.ShortCut7._visible = false; SlaveSelection.SlaveChoice1.girlname = undefined; SlaveSelection.SlaveChoice2.girlname = undefined; SlaveSelection.SlaveChoice3.girlname = undefined; SlaveSelection.SlaveChoice4.girlname = undefined; SlaveSelection.SlaveChoice5.girlname = undefined; SlaveSelection.SlaveChoice6.girlname = undefined; SlaveSelection.SlaveChoice7.girlname = undefined; SlaveSelection.SlaveChoice1.Assistant = undefined; SlaveSelection.SlaveChoice2.Assistant = undefined; SlaveSelection.SlaveChoice3.Assistant = undefined; SlaveSelection.SlaveChoice4.Assistant = undefined; SlaveSelection.SlaveChoice5.Assistant = undefined; SlaveSelection.SlaveChoice6.Assistant = undefined; SlaveSelection.SlaveChoice7.Assistant = undefined; SlaveSelection.SlaveChoice1.Tentacles = undefined; SlaveSelection.SlaveChoice2.Tentacles = undefined; SlaveSelection.SlaveChoice3.Tentacles = undefined; SlaveSelection.SlaveChoice4.Tentacles = undefined; SlaveSelection.SlaveChoice5.Tentacles = undefined; SlaveSelection.SlaveChoice6.Tentacles = undefined; SlaveSelection.SlaveChoice7.Tentacles = undefined; mcLoaderSS1.removeListener(loadListener1); mcLoaderSS2.removeListener(loadListener2); mcLoaderSS3.removeListener(loadListener3); mcLoaderSS4.removeListener(loadListener4); mcLoaderSS5.removeListener(loadListener5); mcLoaderSS6.removeListener(loadListener6); mcLoaderSS7.removeListener(loadListener7); delete mcLoaderSS1; mcLoaderSS1 = new MovieClipLoader(); delete mcLoaderSS2; mcLoaderSS2 = new MovieClipLoader(); delete mcLoaderSS3; mcLoaderSS3 = new MovieClipLoader(); delete mcLoaderSS4; mcLoaderSS4 = new MovieClipLoader(); delete mcLoaderSS5; mcLoaderSS5 = new MovieClipLoader(); delete mcLoaderSS6; mcLoaderSS6 = new MovieClipLoader(); delete mcLoaderSS7; mcLoaderSS7 = new MovieClipLoader(); SlaveSelection.SlaveChoice1.onData = function () { mcLoaderSS1.addListener(loadListener1); mcLoaderSS1.loadClip(SlaveSelection.SlaveChoice1.image, SlaveSelection.SlaveChoice1.SlaveImage); }; loadListener1.onLoadInit = function () { mcLoaderSS1.removeListener(loadListener1); SlaveSelection.ShortCut1._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice1, 0, 130); }; SlaveSelection.SlaveChoice2.onData = function () { mcLoaderSS2.addListener(loadListener2); mcLoaderSS2.loadClip(SlaveSelection.SlaveChoice2.image, SlaveSelection.SlaveChoice2.SlaveImage); }; loadListener2.onLoadInit = function () { mcLoaderSS2.removeListener(loadListener2); SlaveSelection.ShortCut2._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice2, 0, 350); }; SlaveSelection.SlaveChoice3.onData = function () { mcLoaderSS3.addListener(loadListener3); mcLoaderSS3.loadClip(SlaveSelection.SlaveChoice3.image, SlaveSelection.SlaveChoice3.SlaveImage); }; loadListener3.onLoadInit = function () { mcLoaderSS3.removeListener(loadListener3); SlaveSelection.ShortCut3._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice3, 190, 130); }; SlaveSelection.SlaveChoice4.onData = function () { mcLoaderSS4.addListener(loadListener4); mcLoaderSS4.loadClip(SlaveSelection.SlaveChoice4.image, SlaveSelection.SlaveChoice4.SlaveImage); }; loadListener4.onLoadInit = function () { mcLoaderSS4.removeListener(loadListener4); SlaveSelection.ShortCut4._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice4, 190, 350); }; SlaveSelection.SlaveChoice5.onData = function () { mcLoaderSS5.addListener(loadListener5); mcLoaderSS5.loadClip(SlaveSelection.SlaveChoice5.image, SlaveSelection.SlaveChoice5.SlaveImage); }; loadListener5.onLoadInit = function () { mcLoaderSS5.removeListener(loadListener5); SlaveSelection.ShortCut5._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice5, 380, 130); }; SlaveSelection.SlaveChoice6.onData = function () { mcLoaderSS6.addListener(loadListener6); mcLoaderSS6.loadClip(SlaveSelection.SlaveChoice6.image, SlaveSelection.SlaveChoice6.SlaveImage); }; loadListener6.onLoadInit = function () { mcLoaderSS6.removeListener(loadListener6); SlaveSelection.ShortCut6._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice6, 380, 350); }; SlaveSelection.SlaveChoice7.onData = function () { mcLoaderSS7.addListener(loadListener7); mcLoaderSS7.loadClip(SlaveSelection.SlaveChoice7.image, SlaveSelection.SlaveChoice7.SlaveImage); }; loadListener7.onLoadInit = function () { mcLoaderSS7.removeListener(loadListener7); SlaveSelection.ShortCut7._visible = true; ResizeSlaveButton(SlaveSelection.SlaveChoice7, 570, 130); }; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice1); ++SlaveNumber; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice2); ++SlaveNumber; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice3); ++SlaveNumber; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice4); ++SlaveNumber; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice5); ++SlaveNumber; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice6); ++SlaveNumber; loadVariables('SlaveGirl' + SlaveNumber + '.txt', SlaveSelection.SlaveChoice7); ++SlaveNumber; SlaveInformation.text = ''; } function SlaveChoicePress() { if (AssistantTrained || this.Assistant == 'true') { if (TentaclesOn == 0 && this.Tentacles == 'true') { SlaveInformation.htmlText = 'This girl requires tentacles to be enabled.'; } else { Beep(); if (GirlLoaded) { SlaveGirl.unloadMovie(); } SlaveFilename = this.gamefile; mclListener.onLoadInit = StartGame; mcLoader.addListener(mclListener); mcLoader.loadClip(SlaveFilename, SlaveGirl); } } } function SlaveChoiceRollover() { if (!AssistantTrained && this.Assistant != 'true') { SlaveInformation.htmlText = 'You do not have an assistant, so you cannot train this girl'; } else { if (TentaclesOn == 0 && this.Tentacles == 'true') { SlaveInformation.htmlText = 'This girl requires tentacles to be enabled.'; } else { SlaveInformation.htmlText = this.girldesc; } } } function ShowIntroNextButton() { IntroNextButton._visible = true; } function HideIntroNextButton() { if (IntroNextButton._visible) { IntroNextButton._visible = false; } } function LoadSlot(target_mc, slot) { target_mc.GameLabel.htmlText = 'Game <font color=\'#0000FF\'>' + slot + '<font color=\'#000000\'>'; var v2 = SharedObject.getLocal('sm' + slot); if (v2.data.vSlaveFilename == undefined) { target_mc.SlaveMakerText.htmlText = 'unused'; target_mc.GameDateText.htmlText = 'unused'; target_mc.SavedDateText.htmlText = 'unused'; target_mc.SlaveGirlText.htmlText = 'unused'; return undefined; } target_mc.SlaveMakerText.htmlText = '<b>' + v2.data.vSlaveMakerName + '</b>'; target_mc.SlaveGirlText.htmlText = '<b>' + v2.data.vSlaveName + '</b>'; target_mc.GameDateText.htmlText = '<b>' + (1252 + int(v2.data.vDate / 400)) + '/' + v2.data.vDate % 400 + '</b>'; var v4 = v2.data.vSavedDate; target_mc.SavedDateText.htmlText = '<b>' + v2.data.vSavedDate + '</b>'; } function DoLoadSave(loadscreen) { if (loadscreen == undefined) { loadscreen = true; } if (loadscreen == false && NumFin != 0) { SetText('You cannot save after the end of the game.'); } else { if (LoadSaveGames._visible) { LoadSaveGames._visible = false; if (loadplace > 0 && loadplace < 4) { IntroLoadButton._visible = true; } switch (loadplace) { case 0: IntroTitle._visible = true; IntroBackground._visible = false; break; case 1: SlaveMakerSelection._visible = true; SMAppearance._visible = true; break; case 2: SlaveMakerHousing._visible = true; break; case 3: SlaveSelection._visible = true; SlaveInformation._visible = true; break; case 4: case 5: IntroBackground._visible = false; HideMainButtons(); StopHints(); ShowStatistics(true); ShowAssistant(); Icons._visible = true; GeneralTextField._visible = true; if (NumFin == 0) { if (loadplace == 4) { ShowRobes(); ShowMainButtons(); MainBackground._visible = true; BackgroundGrid._visible = true; } else { Quitter._visible = true; TakeAWalkMenu._visible = true; } } else { SystemButton._visible = true; MainBackground._visible = true; BackgroundGrid._visible = true; } } } else { LoadSaveGames.ErrorMessage.text = ''; if (loadscreen) { LoadSaveGames.LoadSaveLabel.htmlText = '<b>Load Game</b>'; } else { LoadSaveGames.LoadSaveLabel.htmlText = '<b>Save Game</b>'; } if (IntroTitle._visible) { loadplace = 0; } else { if (SlaveMakerSelection._visible) { loadplace = 1; } else { if (SlaveMakerHousing._visible) { loadplace = 2; } else { if (SlaveSelection._visible) { loadplace = 3; } else { if (MorningButton._visible) { loadplace = 4; } else { loadplace = 5; } } } } } loadsc = loadscreen; LoadSaveGames._visible = true; IntroTitle._visible = false; SlaveMakerSelection._visible = false; SlaveMakerFaith._visible = false; SlaveSelection._visible = false; SlaveInformation._visible = false; SlaveMakerHousing._visible = false; NextVisit._visible = false; IntroBackground._visible = true; ShowStatistics(false); HideAllPeople(); HideRobes(); HideEndings(); HideMainButtons(); SystemMenu._visible = false; SystemMenu.gotoAndStop(1); MainBackground._visible = false; BackgroundGrid._visible = false; Quitter._visible = false; Icons._visible = false; GeneralTextField._visible = false; IntroLoadButton._visible = false; LoadSlot(LoadSaveGames.Game1Details, 1); LoadSlot(LoadSaveGames.Game2Details, 2); LoadSlot(LoadSaveGames.Game3Details, 3); LoadSlot(LoadSaveGames.Game4Details, 4); LoadSlot(LoadSaveGames.Game5Details, 5); LoadSlot(LoadSaveGames.Game6Details, 6); LoadSlot(LoadSaveGames.Game7Details, 7); LoadSlot(LoadSaveGames.Game8Details, 8); } } Beep(); } function ResetImages() { GameOverText._visible = false; Icons.LoveGauge.gotoAndStop(1); Icons._visible = false; MainBackground._visible = false; HideSlaveActions(); HideEndings(); HideAllPeople(); Assistant._visible = false; HideStatChangeIcons(); HideImages(); HideBackgrounds(); HideItems(); GeneralTextField._visible = false; SlaveInformation._visible = false; StatsTextBtn._visible = false; SetText(''); ShowStatistics(false); BackgroundGrid._visible = false; Intro8._visible = false; Intro7._visible = false; Intro6._visible = false; Intro5._visible = false; Intro4._visible = false; Intro3._visible = false; Intro2._visible = false; Intro1._visible = false; HideIntroNextButton(); SlaveSelection._visible = false; SlaveMakerSelection._visible = false; SlaveMakerFaith._visible = false; SlaveMakerHousing._visible = false; IntroLoadButton._visible = false; IntroOptionsMenu._visible = false; IntroCredits._visible = false; CombatStatistics._visible = false; CombatMonsterAttacks._visible = false; CombatHits._visible = false; RulesMenu._visible = false; Quitter._visible = false; Quitter._x = 626; Dealer._visible = false; ActionsMenu._visible = false; SystemMenu._visible = false; SystemMenu.gotoAndStop(1); SystemButton._visible = false; MorningButton._visible = false; PlanningDay._visible = false; SMPlanningDay._visible = false; PlanningNight._visible = false; PlanningNightSex._visible = false; PlanningNightOther._visible = false; HideYesNoButtons(); VisitMenu._visible = false; NextVisit._visible = false; NextEvent._visible = false; TailorMenu._visible = false; MorningButton._visible = false; PlanningButton._visible = false; DressOverlay._visible = false; NextEnding._visible = false; NextGeneral._visible = false; Contests.NextContests._visible = false; Contests.ContestsMenu._visible = false; ItemSalesman._visible = false; EquipmentMenu._visible = false; TakeAWalkMenu._visible = false; ShopMenu._visible = false; SalonMenu._visible = false; StablesMenu._visible = false; DiscussOrdinary._visible = false; DiscussCongratulate._visible = false; DiscussScold._visible = false; Cheat._visible = false; ClipSexDream._visible = false; ClipTrainingComplete._visible = false; VisitFortuneTeller._visible = false; LoadSaveGames._visible = false; } function ResetSlaveMaker() { SlaveMakerSelection.CountTrainedText.text = 'none'; PonygirlAware = PonygirlsOn ? 0 : -1; ArmourType = 0; WeaponType = 0; SMLibido = 30; SMConstitution = 50; SMAttack = 30; SMDefence = 30; SMConversation = 30; SMReputation = 10; ArousalDefence = 1; GameDate = 1; MoonPhaseDate = int(Math.random() * 15); GirlsTrained = 0; Corruption = 0; SMDebt = 0; TotalSMCourt = 0; TotalSMBar = 0; TotalSMSleazyBar = 0; TotalSMMartial = 0; TotalSMPray = 0; VarKnight = 0; VarLadyFarun = 0; VarProstitute = 0; VarHighClassProstitute = 0; VarMerchant = 0; VarGold = 0; RopesOK = 0; SilkenRopesOK = 0; TentacleFrequency = GlobalTentacleFrequency; Introduction = 0; SMFaith = 1; TheologyTraining = 0; ServantGender = 2; } function ResetSlave() { Icons.PlugIcon.gotoAndStop(1); Icons.PlugIcon._visible = false; Icons.DickgirlXFIcon._visible = false; ActionsMenu.StablesButton._visible = false; DemonicBraDescription = 'Demonic Bra: The sexy bra from a demonette.\r\rLust + 5 each day\rMorality - 5\rShe is more interested in sex.'; NumFin = 0; Day = true; SlaveDay = true; TrainingTime = 60; TrainingStart = GameDate; SlaveFilename = ''; SlaveName = ''; SuperviseYourself = -1; NumBlowjobSinceFucked = 0; NumTitsFuckSinceFucked = 0; NumLickSinceFucked = 0; NumTouchSinceFucked = 0; NumAnalSinceFucked = 0; NumMasturbateSinceFucked = 0; NumDaysWithoutFuck = 0; LastActionRefused = 0; DressWorn = 0; NumDresses = 0; Robe1OK = 0; Robe2OK = 0; Robe3OK = 0; Robe4OK = 0; Robe5OK = 0; Robe6OK = 0; SellBunnySuit = 1; SellLingerie = 1; SellMaidUniform = 1; SellSwimsuit = 1; DressToWear = 0; NakedChoice = 0; SetDressDetails(0); SetDressDetails(1); SetDressDetails(2); SetDressDetails(3); SetDressDetails(4); SetDressDetails(5); SetDressDetails(6); LingerieOK = 0; BunnySuitOK = 0; MaidUniformOK = 0; SwimsuitOK = 0; delete DressAttributes; DressAttributes = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); HarnessOK = 0; NymphsTiaraOK = 0; SpikedBraceletOK = 0; HaloOK = 0; HandcuffBraceletOK = 0; AngelsTearOK = 0; DemonicBraOK = 0; VibratorPantiesOK = 0; FaeriesRingOK = 0; DragonRingOK = 0; DemonicPendantOK = 0; ApronOK = 0; StrapOnOK = 0; BitGagOK = 0; PonyTailOK = 0; NippleChainOK = 0; NippleRingsOK = 0; SpikedBraceletWorn = 0; NymphsTiaraWorn = 0; DemonicBraWorn = 0; AngelsTearWorn = 0; VibratorPantiesWorn = 0; FaeriesRingWorn = 0; DragonRingWorn = 0; DemonicPendantWorn = 0; LeashWorn = 0; ApronWorn = 0; StrapOnWorn = 0; BitGagWorn = 0; HarnessWorn = 0; PonyTailWorn = 0; HandcuffBraceletWorn = 0; HaloWorn = 0; NippleChainWorn = 0; NippleRingsWorn = 0; PiercingsType = 0; VanityCaseOK = 0; PonyCartOK = 0; PonyBootsOK = 0; DildoOK = 0; ImprovedDildoOK = 0; PlugOK = 0; TrophyOK = 0; SmallTrophyOK = 0; LeashOK = 0; TotalAction = 0; DoneWalk = 0; TotalActionMax = 0; LevelMasturbate = -1; LevelLesbian = -1; LevelTouch = -1; LevelLick = -1; LevelThreesome = -1; Level69 = -1; LevelStripTease = -1; LevelMasturbateDG = -1; LevelLesbianDG = -1; LevelTouchDG = -1; LevelLickDG = -1; LevelThreesomeDG = -1; Level69DG = -1; LevelStripTeaseDG = -1; LevelFuck = -1; LevelAnal = -1; LevelGangBang = -1; LevelDildo = -1; LevelGroup = -1; LevelLendHer = -1; LevelTitsFuck = -1; LevelNaked = -1; LevelNothing = -1; LevelPlug = -1; LevelBlowjob = -1; LevelSpank = -1; LevelCumBath = -1; LevelKiss = -1; LevelBondage = -1; LevelPony = -1; Trust = -1; DifficultyXXXContest = 35; TotalBlowjob = 0; TotalFuck = 0; TotalAnal = 0; TotalBondage = 0; TotalMasturbate = 0; TotalLesbian = 0; TotalNaked = 0; TotalNothing = 0; TotalGangBang = 0; TotalTouch = 0; TotalLick = 0; TotalTitsFuck = 0; TotalDildo = 0; TotalPlug = 0; TotalLendHer = 0; TotalSpank = 0; TotalThreesome = 0; Total69 = 0; TotalGroup = 0; TotalCumBath = 0; TotalKiss = 0; TotalStripTease = 0; TotalBondage = 0; TotalPony = 0; TotalXXX = 0; TotalSleazyBar = 0; TotalSleazyBarService = 0; TotalExhib = 0; TotalBrothel = 0; TotalAcolyte = 0; TotalRestaurant = 0; TotalBar = 0; TotalWalk = 0; TotalCooking = 0; TotalCleaning = 0; TotalBreak = 0; TotalDance = 0; TotalSciences = 0; TotalRefinement = 0; TotalTheology = 0; TotalDiscuss = 0; TotalMakeUp = 0; TotalWalkForest = 0; TotalWalkFarm = 0; TotalWalkPalace = 0; TotalWalkSlums = 0; TotalWalkLake = 0; TotalWalkTownCenter = 0; TotalWalkDocks = 0; TotalWalkRuins = 0; TotalVisitAstrid = 0; TotalMakeupCare = 0; TotalHairCare = 0; TotalSkinCare = 0; NumMerchant = 0; NumDealer = 0; RulesTalk = 0; RulesFuck = 0; RulesGoOut = 0; RulesTouchHerself = 0; RulesWriteLetters = 0; RulesPocketMoney = 0; RulesPray = 0; RulesMenu.RuleWrite.RuleLabel.htmlText = '<font color=\'#0000FF\'>W</font>rite to her\rfamily-friends'; RulesMenu.RuleGold.RuleLabel.htmlText = '<font color=\'#0000FF\'>H</font>ave Pocket\rMoney'; RulesMenu.RuleFuck.RuleLabel.htmlText = '<font color=\'#0000FF\'>F</font>uck with\rAnyone'; RulesMenu.RuleTouch.RuleLabel.htmlText = 'T<font color=\'#0000FF\'>o</font>uch\rHerself'; RulesMenu.RuleGoOut.RuleLabel.htmlText = '<font color=\'#0000FF\'>G</font>o Out'; RulesMenu.RulePray.RuleLabel.htmlText = '<font color=\'#0000FF\'>P</font>ray'; RulesMenu.RuleTalk.RuleLabel.htmlText = '<font color=\'#0000FF\'>T</font>alk'; BiyakuEffecting = 0; IshinaiEffecting = 0; DoreiEffecting = 0; ZodaiEffecting = 0; GamanEffecting = 0; DrugDuration = 0; DrugAddicted = 0; NumAddictionLevel = 0; AddictionLevel = 0; PriceBiyaku = 100; PriceIshinai = 500; PriceDorei = 250; PriceZodai = 50; PriceGaman = 100; Action1 = 0; Action2 = 0; Action3 = 0; Action4 = 0; Action5 = 0; Action6 = 0; EvChoice1 = 0; EvChoice2 = 0; EvChoice3 = 0; LoveAccepted = 0; LastActionDoneDay = 0; NumDaysWithoutFuck = 0; NumAphrodisiac = 0; LastActionDone = 0; DoneVisit = 0; DoneEvent = 0; DoneSpank = 0; DoneMaster = 0; DoneNaked = 0; DonePonygirl = 0; DoneScold = false; DoneTentacleHarem = 0; SoldSlave = 0; VarBarmaid = 0; VarMaid = 0; VarCount = 0; VarLord = 0; VarIdol = 0; VarSchoolGirl = 0; OldLover = 0; PlugInserted = 0; BadGirl = 0; WinXXX = 0; WinHousework = 0; WinCourt = 0; WinBeauty = 0; WinPonygirl = 0; WinContest = 0; TotalContestXXX = 0; TotalContestHousework = 0; TotalContestCourt = 0; TotalContestBeauty = 0; TotalContestPonygirl = 0; DickgirlXF = 0; AntidoteDays = 0; SlaveLikeServant = true; SlaveAttitude = 0; Lectures = 0; BountyHunterFlag = 0; PuppyGirlFlag = 0; RumourMilkDone = 0; RumourTentaclesDone = 0; RumourFaerieHuntingDone = 0; VarFatigueRounded = 0; VarConversationRounded = 0; VarCharismaRounded = 0; VarObedienceRounded = 0; VarReputationRounded = 0; VarSensibilityRounded = 0; VarRefinementRounded = 0; VarIntelligenceRounded = 0; VarMoralityRounded = 0; VarConstitutionRounded = 0; VarCleaningRounded = 0; VarCookingRounded = 0; VarBlowJobRounded = 0; VarFuckRounded = 0; VarTemperamentRounded = 0; VarNymphomaniaRounded = 0; VarJoyRounded = 0; VarLibidoRounded = 0; VarSpecialRounded = 0; MaxFuck = 75; MaxBlowJob = 75; MinLibido = 0; MaxCharisma = 75; MaxRefinement = 80; MaxIntelligence = 80; MaxMorality = 80; MaxCooking = 75; MaxCleaning = 75; MaxConversation = 80; MaxSpecial = 100; VarCharismaMod = 0; VarSensibilityMod = 0; VarRefinementMod = 0; VarIntelligenceMod = 0; VarMoralityMod = 0; VarConstitutionMod = 0; VarCookingMod = 0; VarCleaningMod = 0; VarConversationMod = 0; VarBlowJobMod = 0; VarFuckMod = 0; VarTemperamentMod = 0; VarNymphomaniaMod = 0; VarObedienceMod = 0; VarLibidoMod = 0; VarReputationMod = 0; VarJoyMod = 0; VarSpecialMod = 0; VarSpecial = 0; FatigueBonus = 0; BlowjobFactor = 1; FuckFactor = 1; NymphomaniaFactor = 1; LibidoFactor = 1; CharismaFactor = 1; MoralityFactor = 1; CookingFactor = 1; CleaningFactor = 1; ConversationFactor = 1; FatigueFactor = 1; SensibilityFactor = 1; RefinementFactor = 1; IntelligenceFactor = 1; ConstitutionFactor = 1; TemperamentFactor = 1; ObedienceFactor = 1; SpecialFactor = 1; DateLastAphrodisiac = GameDate; LastVisitDickgirl = GameDate - 5; DaysUsedAphrodisiac = 0; UsedAphrodisiac = 0; PriceDoll = 300; SetDollButton(); NecklaceIndex = 0; SetJeweleryButton(); CustomFlag = -1; CustomFlag1 = -1; CustomFlag2 = -1; CustomFlag3 = -1; CustomFlag4 = -1; CustomString = ''; NobleLove = 0; Behaving = 0; DickgirlRate = 0; TotalTentacle = 0; EventBoyfriend = 0; MilkInfluence = 0; TotalMilked = 0; Milkable = false; EvilMineFlag = 0; colorTrans.rgb = 16777215; transXF.colorTransform = colorTrans; SetMovieColour(Icons.LoveGauge, 0, 0, 0); StatisticsGroup.SpecialStatLabel.text = ''; StatisticsGroup.BlowjobLabel.text = 'Blowjobs :'; StatisticsGroup.FuckLabel.text = 'Fucking :'; StatisticsGroup.MoralityLabel.text = 'Morality :'; SetButtonState(PlanningNightOther.NothingButton, false, true, 'Not<font color=\'#0000FF\'>h<font color=\'#000000\'>ing', 1); SetButtonState(PlanningNightOther.ReadButton, false, true, 'Read a\rBoo<font color=\'#0000FF\'>k<font color=\'#000000\'>', 22); SetButtonState(PlanningNightOther.NakedButton, false, true, '<font color=\'#0000FF\'>N<font color=\'#000000\'>aked', 13); SetButtonState(PlanningNightOther.PonygirlButton, false, true, 'Pon<font color=\'#0000FF\'>y<font color=\'#000000\'>girl', 17); SetButtonState(PlanningNightOther.SpankButton, false, true, '<font color=\'#0000FF\'>S<font color=\'#000000\'>pank Her', 18); SetButtonState(PlanningNightOther.MasterButton, false, true, '', 14); SetButtonState(PlanningNightOther.LendButton, false, true, 'L<font color=\'#0000FF\'>e<font color=\'#000000\'>nd Her', 16); SetButtonState(PlanningNightOther.KissButton, false, true, 'K<font color=\'#0000FF\'>i<font color=\'#000000\'>ss', 23); SetButtonState(PlanningNightOther.StripButton, false, true, 'Strip\rTease <font color=\'#0000FF\' size=\'-4\'>z</font>', 24); SetButtonState(PlanningNightOther.DildoButton, false, true, '<font color=\'#0000FF\'>D<font color=\'#000000\'>ildo', 9); SetButtonState(PlanningNightOther.PlugButton, false, true, '<font color=\'#0000FF\'>P<font color=\'#000000\'>lug', 10); SetButtonState(PlanningNightSex.LesbianButton, false, true, '', 11); SetButtonState(PlanningNightSex.BondageButton, false, true, '<font color=\'#0000FF\'>B<font color=\'#000000\'>ondage', 12); SetButtonState(PlanningNightSex.GangBangButton, false, true, '<font color=\'#0000FF\'>G<font color=\'#000000\'>ang-Bang', 15); SetButtonState(PlanningNightSex.MasturbateButton, false, true, 'Make her\rMast<font color=\'#0000FF\'>u<font color=\'#000000\'>rbate', 8); SetButtonState(PlanningNightSex.TitsFuckButton, false, true, '', 6); SetButtonState(PlanningNightSex.TouchButton, false, true, 'T<font color=\'#0000FF\'>o<font color=\'#000000\'>uch Her', 2); SetButtonState(PlanningNightSex.AssFuckButton, false, true, '<font color=\'#0000FF\'>A<font color=\'#000000\'>ss Fuck', 7); SetButtonState(PlanningNightSex.FuckButton, false, true, '', 4); SetButtonState(PlanningNightSex.S69Button, false, true, '<font color=\'#0000FF\'>6<font color=\'#000000\'>9', 20); SetButtonState(PlanningNightSex.LickButton, false, true, 'Li<font color=\'#0000FF\'>c<font color=\'#000000\'>k Her', 3); SetButtonState(PlanningNightSex.BlowjobButton, false, true, '', 5); SetButtonState(PlanningNightSex.CumBathButton, false, true, 'Cum Bath <font color=\'#0000FF\'size=\'-4\'>w</font>', 25); SetButtonState(PlanningNightSex.ThreesomeButton, false, true, 'Threesome <font color=\'#0000FF\'size=\'-4\'>3</font>', 19); SetButtonState(PlanningNightSex.OrgyButton, false, true, 'O<font color=\'#0000FF\'>r<font color=\'#000000\'>gy', 21); SetButtonState(SMPlanningDay.TrainButton, false, true, '<font color=\'#0000FF\'>M<font color=\'#000000\'>artial\rTraining', 1, PressSlaveMakerActions); SetButtonState(SMPlanningDay.PrayButton, false, true, '<font color=\'#0000FF\'>P<font color=\'#000000\'>ray at\rChurch', 2, PressSlaveMakerActions); SetButtonState(SMPlanningDay.BarButton, false, true, 'Relax in\ra <font color=\'#0000FF\'>B<font color=\'#000000\'>ar', 3, PressSlaveMakerActions); SetButtonState(SMPlanningDay.CourtButton, false, true, 'Attend\r<font color=\'#0000FF\'>C<font color=\'#000000\'>ourt', 4, PressSlaveMakerActions); SetButtonState(PlanningDay.BreakButton, false, true, 'B<font color=\'#0000FF\'>r<font color=\'#000000\'>eak', 17, PressDayActButton, 0); SetButtonState(PlanningDay.DiscussButton, false, true, '<font color=\'#0000FF\'>D<font color=\'#000000\'>iscuss', 4, PressDayActButton, 0); SetButtonState(PlanningDay.CleaningButton, false, true, 'C<font color=\'#0000FF\'>l<font color=\'#000000\'>eaning', 2, PressDayActButton, 0); SetButtonState(PlanningDay.CookingButton, false, true, '<font color=\'#0000FF\'>C<font color=\'#000000\'>ooking', 1, PressDayActButton, 0); SetButtonState(PlanningDay.ExposeButton, false, true, 'Ex<font color=\'#0000FF\'>p<font color=\'#000000\'>ose\rherself', 11, PressDayActButton, 0); SetButtonState(PlanningDay.ReadButton, false, true, 'Read a\rBoo<font color=\'#0000FF\'>k<font color=\'#000000\'>', 19, PressDayActButton, 0); SetButtonState(PlanningDay.AcolyteButton, false, true, '<font color=\'#0000FF\'>A<font color=\'#000000\'>colyte', 13, PressDayActButton, 0); SetButtonState(PlanningDay.SciencesButton, false, true, '<font color=\'#0000FF\'>S<font color=\'#000000\'>ciences', 6, PressDayActButton, 50); SetButtonState(PlanningDay.TheologyButton, false, true, '<font color=\'#0000FF\'>T<font color=\'#000000\'>heology', 7, PressDayActButton, 50); SetButtonState(PlanningDay.XXXButton, false, true, '<font color=\'#0000FF\'>X<font color=\'#000000\'>XX', 10, PressDayActButton, 50); SetButtonState(PlanningDay.RestaurantButton, false, true, 'Resta<font color=\'#0000FF\'>u<font color=\'#000000\'>rant', 12, PressDayActButton, 0); SetButtonState(PlanningDay.BarButton, false, true, '<font color=\'#0000FF\'>B<font color=\'#000000\'>ar', 14, PressDayActButton, 0); SetButtonState(PlanningDay.SleazyBarButton, false, true, 'Slea<font color=\'#0000FF\'>z<font color=\'#000000\'>y Bar', 15, PressDayActButton, 0); SetButtonState(PlanningDay.BrothelButton, false, true, 'Brot<font color=\'#0000FF\'>h<font color=\'#000000\'>el', 16, PressDayActButton, 0); SetButtonState(PlanningDay.MakeupButton, false, true, '<font color=\'#0000FF\'>M<font color=\'#000000\'>ake Up', 5, PressDayActButton, 0); SetButtonState(PlanningDay.WalkButton, false, true, '<font color=\'#0000FF\'>W<font color=\'#000000\'>alk', 3, PressDayActButton, 0); SetButtonState(PlanningDay.DanceButton, false, true, 'Da<font color=\'#0000FF\'>n<font color=\'#000000\'>ce', 9, PressDayActButton, 50); SetButtonState(PlanningDay.RefinementButton, false, true, '<font color=\'#0000FF\'>E<font color=\'#000000\'>tiquette\rschool', 8, PressDayActButton, 50); SetButtonState(PlanningDay.SlaveShop, undefined, undefined, undefined, 18, PressDayActButton, 0); SetButtonState(ShopMenu.BtnBook, false, true, '<font color=\'#0000FF\'>B<font color=\'#000000\'>ook', 7, PressShopButton, 100, RollOverShopButton); SetButtonState(ShopMenu.BtnEnergyDrink, false, true, '<font color=\'#0000FF\'>E<font color=\'#000000\'>nergy\rDrink', 4, PressShopButton, 125, RollOverShopButton); SetButtonState(ShopMenu.BtnUninhibitory, false, true, '<font color=\'#0000FF\'>U<font color=\'#000000\'>ninhibitory\rDrug', 1, PressShopButton, 250, RollOverShopButton); SetButtonState(ShopMenu.BtnAphrodisiac, false, true, '<font color=\'#0000FF\'>A<font color=\'#000000\'>phrodisiac', 2, PressShopButton, 60, RollOverShopButton); SetButtonState(ShopMenu.BtnLustDraft, false, true, '<font color=\'#0000FF\'>L<font color=\'#000000\'>ust Draft', 21, PressShopButton, 150, RollOverShopButton); SetButtonState(ShopMenu.BtnSoothingDraft, false, true, '<font color=\'#0000FF\'>S<font color=\'#000000\'>oothing\rDraft', 3, PressShopButton, 550, RollOverShopButton); SetButtonState(ShopMenu.BtnPoetryBook, false, true, '<font color=\'#0000FF\'>P<font color=\'#000000\'>oetry Book', 6, PressShopButton, 200, RollOverShopButton); SetButtonState(ShopMenu.BtnWeapon, false, true, '<font color=\'#0000FF\'>W<font color=\'#000000\'>eapon', 100, PressShopButton, 0, RollOverShopButton); SetButtonState(ShopMenu.BtnArmour, false, true, 'Ar<font color=\'#0000FF\'>m<font color=\'#000000\'>our', 101, PressShopButton, 0, RollOverShopButton); SetButtonState(ShopMenu.BtnDildo, false, true, 'D<font color=\'#0000FF\'>i<font color=\'#000000\'>ldo', 24, PressShopButton, 50, RollOverShopButton); SetButtonState(ShopMenu.BtnPlug, false, true, 'A<font color=\'#0000FF\'>n<font color=\'#000000\'>al\rPlug', 25, PressShopButton, 50, RollOverShopButton); SetButtonState(ShopMenu.BtnBondage, false, true, 'Bondage\r<font color=\'#0000FF\'>G<font color=\'#000000\'>ear', 26, PressShopButton, 50, RollOverShopButton); SetEquipmentButtonState(0, false, false, 'Plain Dress', '0'); SetEquipmentButtonState(-1, false, false, '\r', '1'); SetEquipmentButtonState(-2, false, false, '\r', '2'); SetEquipmentButtonState(-3, false, false, '\r', '3'); SetEquipmentButtonState(-4, false, false, '\r', '4'); SetEquipmentButtonState(-5, false, false, '\r', '5'); SetEquipmentButtonState(-6, false, false, '\r', '6'); SetEquipmentButtonState(1, false, false, 'Pon<font color=\'#0000FF\'>y<font color=\'#000000\'>\rTail'); SetEquipmentButtonState(2, false, false, 'Angelic\r<font color=\'#0000FF\'>H<font color=\'#000000\'>alo'); SetEquipmentButtonState(3, false, false, 'Demonic\r<font color=\'#0000FF\'>P<font color=\'#000000\'>endant'); SetEquipmentButtonState(4, false, false, 'Angel\'s\r<font color=\'#0000FF\'>T<font color=\'#000000\'>ear'); SetEquipmentButtonState(5, false, false, 'Demonic\r<font color=\'#0000FF\'>B<font color=\'#000000\'>ra'); SetEquipmentButtonState(6, false, false, '<font color=\'#0000FF\'>V<font color=\'#000000\'>ibrator\rPanties'); SetEquipmentButtonState(7, false, false, '<font color=\'#0000FF\'>L<font color=\'#000000\'>eash'); SetEquipmentButtonState(8, false, false, '<font color=\'#0000FF\'>N<font color=\'#000000\'>ymph\'s\rTiara'); SetEquipmentButtonState(9, false, false, '<font color=\'#0000FF\'>S<font color=\'#000000\'>piked Bracelet'); SetEquipmentButtonState(10, false, false, 'Handc<font color=\'#0000FF\'>u<font color=\'#000000\'>ff\rBracelet'); SetEquipmentButtonState(11, false, false, 'Ha<font color=\'#0000FF\'>r<font color=\'#000000\'>ness'); SetEquipmentButtonState(12, false, false, '<font color=\'#0000FF\'>D<font color=\'#000000\'>ragon\rRing'); SetEquipmentButtonState(13, false, false, '<font color=\'#0000FF\'>A<font color=\'#000000\'>pron'); SetEquipmentButtonState(14, false, false, 'Bit <font color=\'#0000FF\'>G<font color=\'#000000\'>ag'); SetEquipmentButtonState(15, false, false, 'Strap <font color=\'#0000FF\'>O<font color=\'#000000\'>n'); SetEquipmentButtonState(16, false, false, '<font color=\'#0000FF\'>F<font color=\'#000000\'>aeries\rRing'); SetEquipmentButtonState(17, false, false, 'Nipple\r<font color=\'#0000FF\'>C<font color=\'#000000\'>hain'); SetEquipmentButtonState(18, false, false, 'Nippl<font color=\'#0000FF\'>e<font color=\'#000000\'>\rRings'); MaxTentacleHarem = 1; Slutiness = 1; Loyalty = 6; NobleLoveType = 0; MaxAstrid = 10; ShowSpecial = 0; ShowSlaveShop = 0; FairyMeeting = 0; BitFlag1Low = 0; BitFlag1High = 0; BitFlag2Low = 0; BitFlag2High = 0; AssistantTentacleSex = true; AssistantRape = true; IntroPage = 1; IntroPages = 1; SlavePronoun = 'I'; delete PotionsUsed; PotionsUsed = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); intervalId = 0; intervalId2 = 0; intervalId3 = 0; intervalId4 = 0; PlanningDay.SlaveShopLabel.htmlText = ''; PlanningDay.SlaveShopLabel._visible = false; PlanningDay.SlaveShop._visible = false; TakeAWalkMenu.OnsenHouse._visible = false; TakeAWalkMenu.ForestHouse._visible = false; TakeAWalkMenu.CastleHouse._visible = false; TakeAWalkMenu.TempleHouse._visible = false; TakeAWalkMenu.MansionHouse._visible = false; TakeAWalkMenu.ApartmentHouse._visible = false; TakeAWalkMenu.FarmHouse._visible = false; TakeAWalkMenu.Ruins._visible = false; TakeAWalkMenu.DealerHome._visible = false; TakeAWalkMenu.SalesmanHome._visible = false; TakeAWalkMenu.AstridHome._visible = false; TakeAWalkMenu.SeerHome._visible = false; FreeWalkPlace = 0; LesbianTrainable = true; OwnerTesting = true; OwnerTestingUrgent = false; TentaclePregnancy = 0; delete DocksPort; DocksPort = new Scripts.Classes.Place(9); delete DocksSlavePens; DocksSlavePens = new Scripts.Classes.Place(1, false); delete TownCenter; TownCenter = new Scripts.Classes.Place(10); delete Slums; Slums = new Scripts.Classes.Place(10); delete Farm; Farm = new Scripts.Classes.Place(10); delete Palace; Palace = new Scripts.Classes.Place(10); delete Forest; Forest = new Scripts.Classes.Place(10); delete Lake; Lake = new Scripts.Classes.Place(10); delete RuinedTemple; RuinedTemple = new Scripts.Classes.Place(1, false); delete DeepForest; DeepForest = new Scripts.Classes.Place(1, false); AnySex = false; AnyNonSex = false; LastAny = -10; TotalTeddyBear = 0; TotalGames = 0; TotalJewelry = 0; TotalDoll = 0; TotalBooks = 0; TotalPoetry = 0; TotalScrolls = 0; TotalScripture = 0; TotalKamasutra = 0; DurationHairCare = 0; DurationFacialCare = 0; DurationMakeupCare = 0; TotalBooksRead = 0; TotalPoetryRead = 0; TotalScrollsRead = 0; TotalScriptureRead = 0; TotalKamasutraRead = 0; TentacleHaunt = -1; FirstTimeTodayBreak = true; FirstTimeTodayBrothel = true; FirstTimeTodayAcolyte = true; FirstTimeTodaySleazyBar = true; FirstTimeTodayDiscuss = true; FirstTimeTodayTheology = true; FirstTimeTodayRestaurant = true; FirstTimeTodayBar = true; FirstTimeTodaySciences = true; FirstTimeTodayDance = true; FirstTimeTodayRefinement = true; FirstTimeTodayWalk = true; FirstTimeTodayXXX = true; FirstTimeTodayCooking = true; FirstTimeTodayCleaning = true; FirstTimeTodayExpose = true; FirstTimeTodayMakeup = true; Path1 = 0; Path2 = 0; Path3 = 0; SlaveGirlStatsShown = true; ServantFilename = 'Slave-Shampoo.swf'; temp = int(Math.random() * 2) + 1; ObjectTiara.gotoAndStop(temp); DressNymphsTiara.gotoAndStop(temp); } function SaveGame(GameNo) { Beep(); var v1 = SharedObject.getLocal('sm' + GameNo); v1.data.vSlaveFilename = SlaveFilename; v1.data.vServantFilename = ServantFilename; v1.data.vLoveAccepted = LoveAccepted; v1.data.vDoneWalk = DoneWalk; v1.data.vDoneVisit = DoneVisit; v1.data.vEventBoyfriend = EventBoyfriend; v1.data.vSoldSlave = SoldSlave; v1.data.vDoneMaster = DoneMaster; v1.data.vLastActionRefused = LastActionRefused; v1.data.vLastActionDoneDay = LastActionDoneDay; v1.data.vBadGirl = BadGirl; v1.data.vDurationHairCare = DurationHairCare; v1.data.vDurationFacialCare = DurationFacialCare; v1.data.vDurationMakeupCare = DurationMakeupCare; v1.data.vPath1 = Path1; v1.data.vPath2 = Path2; v1.data.vPath3 = Path3; v1.data.vCurrentPath = CurrentPath; v1.data.vSuperviseYourself = SuperviseYourself; v1.data.vTotalAction = TotalAction; v1.data.vTotalActionMax = TotalActionMax; v1.data.vAction1 = Action1; v1.data.vAction2 = Action2; v1.data.vAction3 = Action3; v1.data.vAction4 = Action4; v1.data.vAction5 = Action5; v1.data.vAction6 = Action6; v1.data.vServantName = ServantName; v1.data.vBiyakuEffecting = BiyakuEffecting; v1.data.vIshinaiEffecting = IshinaiEffecting; v1.data.vDoreiEffecting = DoreiEffecting; v1.data.vZodaiEffecting = ZodaiEffecting; v1.data.vGamanEffecting = GamanEffecting; v1.data.vDrugDuration = DrugDuration; v1.data.vDrugAddicted = DrugAddicted; v1.data.vNumAddictionLevel = NumAddictionLevel; v1.data.vAddictionLevel = AddictionLevel; v1.data.vDateLastAphrodisiac = DateLastAphrodisiac; v1.data.vDaysUsedAphrodisiac = DaysUsedAphrodisiac; v1.data.vUsedAphrodisiac = UsedAphrodisiac; v1.data.vPriceBiyaku = PriceBiyaku; v1.data.vPriceIshinai = PriceIshinai; v1.data.vPriceDorei = PriceDorei; v1.data.vPriceZodai = PriceZodai; v1.data.vPriceGaman = PriceGaman; v1.data.vOldMorality = OldMorality; v1.data.vOldObedience = OldObedience; v1.data.OldIntelligence = OldIntelligence; v1.data.vOldVarTemperament = OldVarTemperament; v1.data.vNumAphrodisiac = NumAphrodisiac; v1.data.vRulesTalk = RulesTalk; v1.data.vRulesPray = RulesPray; v1.data.vRulesGoOut = RulesGoOut; v1.data.vRulesFuck = RulesFuck; v1.data.vRulesWriteLetters = RulesWriteLetters; v1.data.vRulesTouchHerself = RulesTouchHerself; v1.data.vRulesPocketMoney = RulesPocketMoney; v1.data.vLevelNothing = LevelNothing; v1.data.vLevelBlowjob = LevelBlowjob; v1.data.vLevelFuck = LevelFuck; v1.data.vLevelAnal = LevelAnal; v1.data.vLevelMasturbate = LevelMasturbate; v1.data.vLevelLesbian = LevelLesbian; v1.data.vLevelNaked = LevelNaked; v1.data.vLevelGangBang = LevelGangBang; v1.data.vLevelTouch = LevelTouch; v1.data.vLevelLick = LevelLick; v1.data.vLevelTitsFuck = LevelTitsFuck; v1.data.vLevelDildo = LevelDildo; v1.data.vLevelPlug = LevelPlug; v1.data.vLevelLendHer = LevelLendHer; v1.data.vLevelBondage = LevelBondage; v1.data.vLevelSpank = LevelSpank; v1.data.vLevelThreesome = LevelThreesome; v1.data.vLevel69 = Level69; v1.data.vLevelGroup = LevelGroup; v1.data.vLevelCumBath = LevelCumBath; v1.data.vLevelKiss = LevelKiss; v1.data.vLevelStripTease = LevelStripTease; v1.data.vLevelPony = LevelPony; v1.data.vLevelLesbianDG = LevelLesbianDG; v1.data.vLevelTouchDG = LevelTouchDG; v1.data.vLevelLickDG = LevelLickDG; v1.data.vLevelThreesomeDG = LevelThreesomeDG; v1.data.vLevel69DG = Level69DG; v1.data.vLevelStripTeaseDG = LevelStripTeaseDG; v1.data.vTotalNothing = TotalNothing; v1.data.vTotalBlowjob = TotalBlowjob; v1.data.vTotalFuck = TotalFuck; v1.data.vTotalAnal = TotalAnal; v1.data.vTotalMasturbate = TotalMasturbate; v1.data.vTotalLesbian = TotalLesbian; v1.data.vTotalNaked = TotalNaked; v1.data.vTotalGangBang = TotalGangBang; v1.data.vTotalTouch = TotalTouch; v1.data.vTotalLick = TotalLick; v1.data.vTotalTitsFuck = TotalTitsFuck; v1.data.vTotalDildo = TotalDildo; v1.data.vTotalPlug = TotalPlug; v1.data.vTotalLendHer = TotalLendHer; v1.data.vTotalBondage = TotalBondage; v1.data.vTotalSpank = TotalSpank; v1.data.vTotalThreesome = TotalThreesome; v1.data.vTotal69 = Total69; v1.data.vTotalGroup = TotalGroup; v1.data.vTotalCumBath = TotalCumBath; v1.data.vTotalKiss = TotalKiss; v1.data.vTotalStripTease = TotalStripTease; v1.data.vTotalPony = TotalPony; v1.data.vTotalXXX = TotalXXX; v1.data.vTotalSleazyBar = TotalSleazyBar; v1.data.vTotalSleazyBarService = TotalSleazyBarService; v1.data.vTotalExhib = TotalExhib; v1.data.vTotalBrothel = TotalBrothel; v1.data.vTotalTentacle = TotalTentacle; v1.data.vTotalAcolyte = TotalAcolyte; v1.data.vTotalRestaurant = TotalRestaurant; v1.data.vTotalBar = TotalBar; v1.data.vTotalWalk = TotalWalk; v1.data.vTotalCooking = TotalCooking; v1.data.vTotalCleaning = TotalCleaning; v1.data.vTotalBreak = TotalBreak; v1.data.vTotalDance = TotalDance; v1.data.vTotalSciences = TotalSciences; v1.data.vTotalRefinement = TotalRefinement; v1.data.vTotalTheology = TotalTheology; v1.data.vTotalNaked = TotalNaked; v1.data.vTotalDiscuss = TotalDiscuss; v1.data.vTotalMakeUp = TotalMakeUp; v1.data.vTotalWalkForest = TotalWalkForest; v1.data.vTotalWalkFarm = TotalWalkFarm; v1.data.vTotalWalkPalace = TotalWalkPalace; v1.data.vTotalWalkSlums = TotalWalkSlums; v1.data.vTotalWalkLake = TotalWalkLake; v1.data.vTotalWalkTownCenter = TotalWalkTownCenter; v1.data.vTotalWalkDocks = TotalWalkDocks; v1.data.vTotalWalkRuins = TotalWalkRuins; v1.data.vTotalSMCourt = TotalSMCourt; v1.data.vTotalSMBar = TotalSMBar; v1.data.vTotalSMSleazyBar = TotalSMSleazyBar; v1.data.vTotalSMMartial = TotalSMMartial; v1.data.vTotalSMPray = TotalSMPray; v1.data.vTotalProstituteParty = TotalProstituteParty; v1.data.vTotalHighClassParty = TotalHighClassParty; v1.data.vTotalVisitAstrid = TotalVisitAstrid; v1.data.vTotalMakeupCare = TotalMakeupCare; v1.data.vTotalHairCare = TotalHairCare; v1.data.vTotalSkinCare = TotalSkinCare; v1.data.vNumDaysWithoutFuck = NumDaysWithoutFuck; v1.data.vNumBlowjobSinceFucked = NumBlowjobSinceFucked; v1.data.vNumTitsFuckSinceFucked = NumTitsFuckSinceFucked; v1.data.vNumLickSinceFucked = NumLickSinceFucked; v1.data.vNumTouchSinceFucked = NumTouchSinceFucked; v1.data.vNumAnalSinceFucked = NumAnalSinceFucked; v1.data.vNumMasturbateSinceFucked = NumMasturbateSinceFucked; v1.data.vNumMerchant = NumMerchant; v1.data.vNumDealer = NumDealer; v1.data.vNymphsTiaraOK = NymphsTiaraOK; v1.data.vSpikedBraceletOK = SpikedBraceletOK; v1.data.vDemonicBraOK = DemonicBraOK; v1.data.vHaloOK = HaloOK; v1.data.vHandcuffBraceletOK = HandcuffBraceletOK; v1.data.vAngelsTearOK = AngelsTearOK; v1.data.vVibratorPantiesOK = VibratorPantiesOK; v1.data.vFaeriesRingOK = FaeriesRingOK; v1.data.vDragonRingOK = DragonRingOK; v1.data.vDemonicPendantOK = DemonicPendantOK; v1.data.vLeashOK = LeashOK; v1.data.vApronOK = ApronOK; v1.data.vStrapOnOK = StrapOnOK; v1.data.vBitGagOK = BitGagOK; v1.data.vHarnessOK = HarnessOK; v1.data.vPonyTailOK = PonyTailOK; v1.data.vRobe1OK = Robe1OK; v1.data.vRobe2OK = Robe2OK; v1.data.vRobe3OK = Robe3OK; v1.data.vRobe4OK = Robe4OK; v1.data.vRobe5OK = Robe5OK; v1.data.vRobe6OK = Robe6OK; v1.data.vSellDress1 = SellDress1; v1.data.vSellDress2 = SellDress2; v1.data.vSellDress3 = SellDress3; v1.data.vSellDress4 = SellDress4; v1.data.vSellDress5 = SellDress5; v1.data.vSellDress6 = SellDress6; v1.data.vSellBunnySuit = SellBunnySuit; v1.data.vSellLingerie = SellLingerie; v1.data.vSellMaidUniform = SellMaidUniform; v1.data.vSellSwimsuit = SellSwimsuit; v1.data.vBunnySuitOK = BunnySuitOK; v1.data.vLingerieOK = LingerieOK; v1.data.vMaidUniformOK = MaidUniformOK; v1.data.vSwimsuitOK = SwimsuitOK; v1.data.vSpikedBraceletWorn = SpikedBraceletWorn; v1.data.vNymphsTiaraWorn = NymphsTiaraWorn; v1.data.vDemonicBraWorn = DemonicBraWorn; v1.data.vAngelsTearWorn = AngelsTearWorn; v1.data.vVibratorPantiesWorn = VibratorPantiesWorn; v1.data.vFaeriesRingWorn = FaeriesRingWorn; v1.data.vDragonRingWorn = DragonRingWorn; v1.data.vDemonicPendantWorn = DemonicPendantWorn; v1.data.vLeashWorn = LeashWorn; v1.data.vApronWorn = ApronWorn; v1.data.vStrapOnWorn = StrapOnWorn; v1.data.vBitGagWorn = BitGagWorn; v1.data.vHarnessWorn = HarnessWorn; v1.data.vPonyTailWorn = PonyTailWorn; v1.data.vHandcuffBraceletWorn = HandcuffBraceletWorn; v1.data.vHaloWorn = HaloWorn; v1.data.vDressWorn = DressWorn; v1.data.vDressToWear = DressToWear; v1.data.vNippleChainOK = NippleChainOK; v1.data.vNippleRingsOK = NippleRingsOK; v1.data.vNippleChainWorn = NippleChainWorn; v1.data.vNippleRingsWorn = NippleRingsWorn; v1.data.vPlugInserted = PlugInserted; v1.data.vDildoOK = DildoOK; v1.data.vImprovedDildoOK = ImprovedDildoOK; v1.data.vPlugOK = PlugOK; v1.data.vSilkenRopesOK = SilkenRopesOK; v1.data.vRopesOK = RopesOK; v1.data.vPonyCartOK = PonyCartOK; v1.data.vPonyBootsOK = PonyBootsOK; v1.data.vTrophyOK = TrophyOK; v1.data.vSmallTrophyOK = SmallTrophyOK; v1.data.vNumDresses = NumDresses; v1.data.vNakedChoice = NakedChoice; v1.data.vVarProstitute = VarProstitute; v1.data.vVarHighClassProstitute = VarHighClassProstitute; v1.data.vVarBarmaid = VarBarmaid; v1.data.vVarMaid = VarMaid; v1.data.vVarMerchant = VarMerchant; v1.data.vVarKnight = VarKnight; v1.data.vVarCount = VarCount; v1.data.vVarLord = VarLord; v1.data.vVarLadyFarun = VarLadyFarun; v1.data.vVarIdol = VarIdol; v1.data.vBountyHunterFlag = BountyHunterFlag; v1.data.vFairyMeeting = FairyMeeting; v1.data.vNobleLove = NobleLove; v1.data.vPuppyGirlFlag = PuppyGirlFlag; v1.data.vVarSchoolGirl = VarSchoolGirl; v1.data.vVarCharisma = VarCharisma; v1.data.vVarSensibility = VarSensibility; v1.data.vVarRefinement = VarRefinement; v1.data.vVarIntelligence = VarIntelligence; v1.data.vVarMorality = VarMorality; v1.data.vVarConstitution = VarConstitution; v1.data.vVarCooking = VarCooking; v1.data.vVarCleaning = VarCleaning; v1.data.vVarConversation = VarConversation; v1.data.vVarBlowJob = VarBlowJob; v1.data.vVarFuck = VarFuck; v1.data.vVarTemperament = VarTemperament; v1.data.vVarNymphomania = VarNymphomania; v1.data.vVarObedience = VarObedience; v1.data.vVarLibido = VarLibido; v1.data.vVarReputation = VarReputation; v1.data.vVarFatigue = VarFatigue; v1.data.vVarJoy = VarJoy; v1.data.vVarSpecial = VarSpecial; v1.data.vVarCharismaMod = VarCharismaMod; v1.data.vVarSensibilityMod = VarSensibilityMod; v1.data.vVarRefinementMod = VarRefinementMod; v1.data.vVarIntelligenceMod = VarIntelligenceMod; v1.data.vVarMoralityMod = VarMoralityMod; v1.data.vVarConstitutionMod = VarConstitutionMod; v1.data.vVarCookingMod = VarCookingMod; v1.data.vVarCleaningMod = VarCleaningMod; v1.data.vVarConversationMod = VarConversationMod; v1.data.vVarBlowJobMod = VarBlowJobMod; v1.data.vVarFuckMod = VarFuckMod; v1.data.vVarTemperamentMod = VarTemperamentMod; v1.data.vVarNymphomaniaMod = VarNymphomaniaMod; v1.data.vVarObedienceMod = VarObedienceMod; v1.data.vVarLibidoMod = VarLibidoMod; v1.data.vVarReputationMod = VarReputationMod; v1.data.vVarJoyMod = VarJoyMod; v1.data.vVarSpecialMod = VarSpecialMod; v1.data.vMaxObedience = MaxObedience; v1.data.vVarLovePoints = VarLovePoints; v1.data.vMaxFuck = MaxFuck; v1.data.vMaxBlowJob = MaxBlowJob; v1.data.vMinLibido = MinLibido; v1.data.vLoyalty = Loyalty; v1.data.vBehaving = Behaving; v1.data.vSlutiness = Slutiness; v1.data.vVarOldBlowJob = VarOldBlowJob; v1.data.vVarOldFuck = VarOldFuck; v1.data.vMaxCharisma = MaxCharisma; v1.data.vMaxRefinement = MaxRefinement; v1.data.vMaxIntelligence = MaxIntelligence; v1.data.vMaxMorality = MaxMorality; v1.data.vMaxCooking = MaxCooking; v1.data.vMaxCleaning = MaxCleaning; v1.data.vMaxConversation = MaxConversation; v1.data.vMaxSpecial = MaxSpecial; v1.data.vFatigueBonus = FatigueBonus; v1.data.vDifficultyXXX = DifficultyXXX; v1.data.vDifficultyXXXContest = DifficultyXXXContest; v1.data.vDifficultyExhib = DifficultyExhib; v1.data.vDifficultySleazyBar = DifficultySleazyBar; v1.data.vDifficultyBrothel = DifficultyBrothel; v1.data.vDifficultyTouch = DifficultyTouch; v1.data.vDifficultyLick = DifficultyLick; v1.data.vDifficultyFuck = DifficultyFuck; v1.data.vDifficultyBlowjob = DifficultyBlowjob; v1.data.vDifficultyTitsFuck = DifficultyTitsFuck; v1.data.vDifficultyAnal = DifficultyAnal; v1.data.vDifficultyMasturbate = DifficultyMasturbate; v1.data.vDifficultyDildo = DifficultyDildo; v1.data.vDifficultyPlug = DifficultyPlug; v1.data.vDifficultyLesbian = DifficultyLesbian; v1.data.vDifficultyBondage = DifficultyBondage; v1.data.vDifficultyNaked = DifficultyNaked; v1.data.vDifficultyMaster = DifficultyMaster; v1.data.vDifficultyGangBang = DifficultyGangBang; v1.data.vDifficultyLendHer = DifficultyLendHer; v1.data.vDifficultySpank = DifficultySpank; v1.data.vDifficultyThreesome = DifficultyThreesome; v1.data.vDifficultyPonygirl = DifficultyPonygirl; v1.data.vWinXXX = WinXXX; v1.data.vWinHousework = WinHousework; v1.data.vWinCourt = WinCourt; v1.data.vWinBeauty = WinBeauty; v1.data.vWinPonygirl = WinPonygirl; v1.data.vWinContest = WinContest; v1.data.vTotalContestXXX = TotalContestXXX; v1.data.vTotalContestHousework = TotalContestHousework; v1.data.vTotalContestCourt = TotalContestCourt; v1.data.vTotalContestBeauty = TotalContestBeauty; v1.data.vTotalContestPonygirl = TotalContestPonygirl; v1.data.vRumourMilkDone = RumourMilkDone; v1.data.vRumourTentaclesDone = RumourTentaclesDone; v1.data.vRumourFaerieHuntingDone = RumourFaerieHuntingDone; v1.data.vPriceDoll = PriceDoll; v1.data.vPiercingsType = PiercingsType; v1.data.vVanityCaseOK = VanityCaseOK; v1.data.vNecklaceIndex = NecklaceIndex; v1.data.vCustomFlag = CustomFlag; v1.data.vCustomFlag1 = CustomFlag1; v1.data.vCustomFlag2 = CustomFlag2; v1.data.vCustomFlag3 = CustomFlag3; v1.data.vCustomFlag4 = CustomFlag4; v1.data.vCustomString = CustomString; v1.data.vShowSpecial = ShowSpecial; v1.data.vShowSlaveShop = ShowSlaveShop; v1.data.vLectures = Lectures; v1.data.vOldLover = OldLover; v1.data.vBitFlag1Low = BitFlag1Low; v1.data.vBitFlag1High = BitFlag1High; v1.data.vBitFlag2Low = BitFlag2Low; v1.data.vBitFlag2High = BitFlag2High; v1.data.vAnySex = AnySex; v1.data.vAnyNonSex = AnyNonSex; v1.data.vLastAny = LastAny; v1.data.vTotalMilked = TotalMilked; v1.data.vMilkInfluence = MilkInfluence; v1.data.vTotalTeddyBear = TotalTeddyBear; v1.data.vTotalGames = TotalGames; v1.data.vTotalJewelry = TotalJewelry; v1.data.vTotalDoll = TotalDoll; v1.data.vTotalBooks = TotalBooks; v1.data.vTotalPoetry = TotalPoetry; v1.data.vTotalBooksRead = TotalBooksRead; v1.data.vTotalPoetryRead = TotalPoetryRead; v1.data.vTotalScrolls = TotalScrolls; v1.data.vTotalScrollsRead = TotalScrollsRead; v1.data.vTotalScripture = TotalScripture; v1.data.vTotalScriptureRead = TotalScriptureRead; v1.data.vTotalKamasutra = TotalKamasutra; v1.data.vTotalKamasutraRead = TotalKamasutraRead; v1.data.DocksPort = new Object(); DocksPort.Save(v1.data.DocksPort); v1.data.DocksSlavePens = new Object(); DocksSlavePens.Save(v1.data.DocksSlavePens); v1.data.TownCenter = new Object(); TownCenter.Save(v1.data.TownCenter); v1.data.Slums = new Object(); Slums.Save(v1.data.Slums); v1.data.Farm = new Object(); Farm.Save(v1.data.Farm); v1.data.Palace = new Object(); Palace.Save(v1.data.Palace); v1.data.Forest = new Object(); Forest.Save(v1.data.Forest); v1.data.Lake = new Object(); Lake.Save(v1.data.Lake); v1.data.RuinedTemple = new Object(); RuinedTemple.Save(v1.data.RuinedTemple); v1.data.DeepForest = new Object(); DeepForest.Save(v1.data.DeepForest); v1.data.vTentacleHaunt = TentacleHaunt; v1.data.vDoneTentacleHarem = DoneTentacleHarem; v1.data.vTentaclesOn = TentaclesOn; v1.data.vTentaclePregnancy = TentaclePregnancy; v1.data.vTentacleFrequency = TentacleFrequency; v1.data.vDickgirlRate = DickgirlRate; v1.data.vDickgirlOn = DickgirlOn; v1.data.vLastVisitDickgirl = LastVisitDickgirl; v1.data.vDickgirlXF = DickgirlXF; v1.data.vAllDickgirlXFOn = AllDickgirlXFOn ? 1 : 0; v1.data.vAntidoteDays = AntidoteDays; v1.data.vRapeOn = RapeOn ? 1 : 0; v1.data.vBDSMOn = BDSMOn ? 1 : 0; v1.data.vPonygirlAware = PonygirlAware; v1.data.vDonePonygirl = DonePonygirl; v1.data.vMoonPhase = MoonPhaseDate; v1.data.vDate = GameDate; v1.data.vTrainingTime = TrainingTime; v1.data.vTrainingStart = TrainingStart; v1.data.vSavedDate = (Date(Date.UTC())).valueOf(); v1.data.vSlaveName = SlaveName; v1.data.vDifficulty = Difficulty; v1.data.vCombatDifficulty = CombatDifficulty; v1.data.vSlaveMakerName = SlaveMakerName; v1.data.vGender = Gender; v1.data.vOldGender = OldGender; v1.data.vTalent = Talent; v1.data.vHouse = House; v1.data.vCorruption = Corruption; v1.data.vArousalDefence = ArousalDefence; v1.data.vArmourType = ArmourType; v1.data.vWeaponType = WeaponType; v1.data.vSMLibido = SMLibido; v1.data.vSMConstitution = SMConstitution; v1.data.vSMAttack = SMAttack; v1.data.vSMDefence = SMDefence; v1.data.vSMConversation = SMConversation; v1.data.vSMReputation = SMReputation; v1.data.vAppearance = Appearance; v1.data.vVarGold = VarGold; v1.data.vSMDebt = SMDebt; v1.data.vTheologyTraining = TheologyTraining; v1.data.vSMFaith = SMFaith; v1.data.vGirlsTrained = GirlsTrained; v1.data.Home = new Object(); Home.Save(v1.data.Home); v1.data.vPotionsUsed00 = PotionsUsed[0]; v1.data.vPotionsUsed01 = PotionsUsed[1]; v1.data.vPotionsUsed02 = PotionsUsed[2]; v1.data.vPotionsUsed03 = PotionsUsed[3]; v1.data.vPotionsUsed04 = PotionsUsed[4]; v1.data.vPotionsUsed05 = PotionsUsed[5]; v1.data.vPotionsUsed06 = PotionsUsed[6]; v1.data.vPotionsUsed07 = PotionsUsed[7]; v1.data.vPotionsUsed08 = PotionsUsed[8]; v1.data.vPotionsUsed09 = PotionsUsed[9]; v1.data.vPotionsUsed10 = PotionsUsed[10]; v1.data.vPotionsUsed11 = PotionsUsed[11]; v1.data.vPotionsUsed12 = PotionsUsed[12]; v1.flush(); SetText('Save of game ' + GameNo + ' completed.'); MorningButton._visible = true; PlanningButton._visible = true; SystemMenu._visible = false; SystemMenu.gotoAndStop(1); LoadSaveGames._visible = false; SystemButton._visible = true; IntroBackground._visible = false; BackgroundGrid._visible = true; MainBackground._visible = true; StopHints(); ShowStatistics(true); ShowAssistant(); Icons._visible = true; GeneralTextField._visible = true; ShowRobes(); } function LoadGame(GameNo) { var v1 = SharedObject.getLocal('sm' + GameNo); if (v1.data.vSlaveFilename == undefined) { if (LoadSaveGames._visible) { LoadSaveGames.ErrorMessage.text = 'Load Failed - Save Game does not exist'; } else { SetText('Load Failed\rSave Game does not exist'); } return false; } delete oldfileServant; oldfileServant = new String(ServantFilename); var v2 = new String(SlaveFilename); ResetImages(); ResetSlaveMaker(); ResetSlave(); SlaveFilename = v1.data.vSlaveFilename; LoveAccepted = v1.data.vLoveAccepted; DoneWalk = v1.data.vDoneWalk; LastActionDoneDay = v1.data.vLastActionDoneDay; LastActionRefused = v1.data.vLastActionRefused; DoneVisit = v1.data.vDoneVisit; EventBoyfriend = v1.data.vEventBoyfriend; SoldSlave = v1.data.vSoldSlave; DoneMaster = v1.data.vDoneMaster; BadGirl = v1.data.vBadGirl; DurationHairCare = v1.data.vDurationHairCare; DurationFacialCare = v1.data.vDurationFacialCare; DurationMakeupCare = v1.data.vDurationMakeupCare; Path1 = v1.data.vPath1; Path2 = v1.data.vPath2; Path3 = v1.data.vPath3; CurrentPath = v1.data.vCurrentPath; if (CurrentPath == undefined) { CurrentPath = 0; } SuperviseYourself = v1.data.vSuperviseYourself; if (SuperviseYourself == undefined) { SuperviseYourself = -1; } ServantName = v1.data.vServantName; ServantFilename = v1.data.vServantFilename; BiyakuEffecting = v1.data.vBiyakuEffecting; IshinaiEffecting = v1.data.vIshinaiEffecting; DoreiEffecting = v1.data.vDoreiEffecting; ZodaiEffecting = v1.data.vZodaiEffecting; GamanEffecting = v1.data.vGamanEffecting; DrugDuration = v1.data.vDrugDuration; DrugAddicted = v1.data.vDrugAddicted; NumAddictionLevel = v1.data.vNumAddictionLevel; AddictionLevel = v1.data.vAddictionLevel; PriceBiyaku = v1.data.vPriceBiyaku; PriceIshinai = v1.data.vPriceIshinai; PriceDorei = v1.data.vPriceDorei; PriceZodai = v1.data.vPriceZodai; PriceGaman = v1.data.vPriceGaman; OldMorality = v1.data.vOldMorality; OldObedience = v1.data.vOldObedience; OldIntelligence = v1.data.OldIntelligence; OldVarTemperament = v1.data.vOldVarTemperament; DateLastAphrodisiac = v1.data.vDateLastAphrodisiac; DaysUsedAphrodisiac = v1.data.vDaysUsedAphrodisiac; UsedAphrodisiac = v1.data.vUsedAphrodisiac; NumAphrodisiac = v1.data.vNumAphrodisiac; RulesTalk = v1.data.vRulesTalk; RulesPray = v1.data.vRulesPray; RulesGoOut = v1.data.vRulesGoOut; RulesFuck = v1.data.vRulesFuck; RulesWriteLetters = v1.data.vRulesWriteLetters; RulesTouchHerself = v1.data.vRulesTouchHerself; RulesPocketMoney = v1.data.vRulesPocketMoney; LevelNothing = v1.data.vLevelNothing; LevelBlowjob = v1.data.vLevelBlowjob; LevelFuck = v1.data.vLevelFuck; LevelAnal = v1.data.vLevelAnal; LevelMasturbate = v1.data.vLevelMasturbate; LevelLesbian = v1.data.vLevelLesbian; LevelNaked = v1.data.vLevelNaked; LevelGangBang = v1.data.vLevelGangBang; LevelTouch = v1.data.vLevelTouch; LevelLick = v1.data.vLevelLick; LevelTitsFuck = v1.data.vLevelTitsFuck; LevelDildo = v1.data.vLevelDildo; LevelPlug = v1.data.vLevelPlug; LevelLendHer = v1.data.vLevelLendHer; LevelBondage = v1.data.vLevelBondage; LevelSpank = v1.data.vLevelSpank; LevelThreesome = v1.data.vLevelThreesome; Level69 = v1.data.vLevel69; LevelGroup = v1.data.vLevelGroup; LevelCumBath = v1.data.vLevelCumBath; LevelKiss = v1.data.vLevelKiss; LevelStripTease = v1.data.vLevelStripTease; LevelPony = v1.data.vLevelPony; LevelLesbianDG = v1.data.vLevelLesbianDG; LevelTouchDG = v1.data.vLevelTouchDG; LevelLickDG = v1.data.vLevelLickDG; LevelThreesomeDG = v1.data.vLevelThreesomeDG; Level69DG = v1.data.vLevel69DG; LevelStripTeaseDG = v1.data.vLevelStripTeaseDG; TotalNothing = v1.data.vTotalNothing; TotalBlowjob = v1.data.vTotalBlowjob; TotalFuck = v1.data.vTotalFuck; TotalAnal = v1.data.vTotalAnal; TotalMasturbate = v1.data.vTotalMasturbate; TotalLesbian = v1.data.vTotalLesbian; TotalNaked = v1.data.vTotalNaked; TotalGangBang = v1.data.vTotalGangBang; TotalTouch = v1.data.vTotalTouch; TotalLick = v1.data.vTotalLick; TotalTitsFuck = v1.data.vTotalTitsFuck; TotalDildo = v1.data.vTotalDildo; TotalPlug = v1.data.vTotalPlug; TotalLendHer = v1.data.vTotalLendHer; TotalBondage = v1.data.vTotalBondage; TotalSpank = v1.data.vTotalSpank; TotalThreesome = v1.data.vTotalThreesome; Total69 = v1.data.vTotal69; TotalGroup = v1.data.vTotalGroup; TotalCumBath = v1.data.vTotalCumBath; TotalKiss = v1.data.vTotalKiss; TotalStripTease = v1.data.vTotalStripTease; TotalXXX = v1.data.vTotalXXX; TotalSleazyBar = v1.data.vTotalSleazyBar; TotalSleazyBarService = v1.data.vTotalSleazyBarService; TotalExhib = v1.data.vTotalExhib; TotalBrothel = v1.data.vTotalBrothel; TotalTentacle = v1.data.vTotalTentacle; TotalPony = v1.data.vTotalPony; TotalAcolyte = v1.data.vTotalAcolyte; TotalRestaurant = v1.data.vTotalRestaurant; TotalBar = v1.data.vTotalBar; TotalWalk = v1.data.vTotalWalk; TotalCooking = v1.data.vTotalCooking; TotalCleaning = v1.data.vTotalCleaning; TotalBreak = v1.data.vTotalBreak; TotalDance = v1.data.vTotalDance; TotalSciences = v1.data.vTotalSciences; TotalRefinement = v1.data.vTotalRefinement; TotalTheology = v1.data.vTotalTheology; TotalNaked = v1.data.vTotalNaked; TotalDiscuss = v1.data.vTotalDiscuss; TotalMakeUp = v1.data.vTotalMakeUp; TotalWalkForest = v1.data.vTotalWalkForest; TotalWalkFarm = v1.data.vTotalWalkFarm; TotalWalkPalace = v1.data.vTotalWalkPalace; TotalWalkSlums = v1.data.vTotalWalkSlums; TotalWalkLake = v1.data.vTotalWalkLake; TotalWalkTownCenter = v1.data.vTotalWalkTownCenter; TotalWalkDocks = v1.data.vTotalWalkDocks; TotalWalkRuins = v1.data.vTotalWalkRuins; TotalSMCourt = v1.data.vTotalSMCourt; TotalSMBar = v1.data.vTotalSMBar; TotalSMSleazyBar = v1.data.vTotalSMSleazyBar; TotalSMMartial = v1.data.vTotalSMMartial; TotalSMPray = v1.data.vTotalSMPray; TotalProstituteParty = v1.data.vTotalProstituteParty; TotalHighClassParty = v1.data.vTotalHighClassParty; TotalVisitAstrid = v1.data.vTotalVisitAstrid; TotalMakeupCare = v1.data.vTotalMakeupCare; TotalHairCare = v1.data.vTotalHairCare; TotalSkinCare = v1.data.vTotalSkinCare; NumBlowjobSinceFucked = v1.data.vNumBlowjobSinceFucked; NumTitsFuckSinceFucked = v1.data.vNumTitsFuckSinceFucked; NumLickSinceFucked = v1.data.vNumLickSinceFucked; NumTouchSinceFucked = v1.data.vNumTouchSinceFucked; NumAnalSinceFucked = v1.data.vNumAnalSinceFucked; NumMasturbateSinceFucked = v1.data.vNumMasturbateSinceFucked; NumMerchant = v1.data.vNumMerchant; NumDealer = v1.data.vNumDealer; NumDaysWithoutFuck = v1.data.vNumDaysWithoutFuck; NymphsTiaraOK = v1.data.vNymphsTiaraOK; SpikedBraceletOK = v1.data.vSpikedBraceletOK; DemonicBraOK = v1.data.vDemonicBraOK; HaloOK = v1.data.vHaloOK; HandcuffBraceletOK = v1.data.vHandcuffBraceletOK; AngelsTearOK = v1.data.vAngelsTearOK; VibratorPantiesOK = v1.data.vVibratorPantiesOK; FaeriesRingOK = v1.data.vFaeriesRingOK; DragonRingOK = v1.data.vDragonRingOK; DemonicPendantOK = v1.data.vDemonicPendantOK; LeashOK = v1.data.vLeashOK; ApronOK = v1.data.vApronOK; StrapOnOK = v1.data.vStrapOnOK; BitGagOK = v1.data.vBitGagOK; HarnessOK = v1.data.vHarnessOK; PonyTailOK = v1.data.vPonyTailOK; Robe2OK = v1.data.vRobe2OK; Robe1OK = v1.data.vRobe1OK; Robe4OK = v1.data.vRobe4OK; Robe3OK = v1.data.vRobe3OK; Robe5OK = v1.data.vRobe5OK; Robe6OK = v1.data.vRobe6OK; SellDress1 = v1.data.vSellDress1; SellDress2 = v1.data.vSellDress2; SellDress3 = v1.data.vSellDress3; SellDress4 = v1.data.vSellDress4; SellDress5 = v1.data.vSellDress5; SellDress6 = v1.data.vSellDress6; SellBunnySuit = v1.data.vSellBunnySuit; SellLingerie = v1.data.vSellLingerie; SellMaidUniform = v1.data.vSellMaidUniform; if (SellMaidUniform == undefined) { SellMaidUniform = 1; } SellSwimsuit = v1.data.vSellSwimsuit; if (SellSwimsuit == undefined) { SellSwimsuit = 1; } BunnySuitOK = v1.data.vBunnySuitOK; LingerieOK = v1.data.vLingerieOK; MaidUniformOK = v1.data.vMaidUniformOK; if (MaidUniformOK == undefined) { MaidUniformOK = 0; } SwimsuitOK = v1.data.vSwimsuitOK; if (SwimsuitOK == undefined) { SwimsuitOK = 0; } SpikedBraceletWorn = v1.data.vSpikedBraceletWorn; NymphsTiaraWorn = v1.data.vNymphsTiaraWorn; DemonicBraWorn = v1.data.vDemonicBraWorn; AngelsTearWorn = v1.data.vAngelsTearWorn; VibratorPantiesWorn = v1.data.vVibratorPantiesWorn; FaeriesRingWorn = v1.data.vFaeriesRingWorn; DragonRingWorn = v1.data.vDragonRingWorn; DemonicPendantWorn = v1.data.vDemonicPendantWorn; LeashWorn = v1.data.vLeashWorn; ApronWorn = v1.data.vApronWorn; StrapOnWorn = v1.data.vStrapOnWorn; BitGagWorn = v1.data.vBitGagWorn; HarnessWorn = v1.data.vHarnessWorn; PonyTailWorn = v1.data.vPonyTailWorn; HandcuffBraceletWorn = v1.data.vHandcuffBraceletWorn; HaloWorn = v1.data.vHaloWorn; DressToWear = v1.data.vDressToWear; PlugInserted = v1.data.vPlugInserted; NippleChainOK = v1.data.vNippleChainOK; NippleRingsOK = v1.data.vNippleRingsOK; NippleChainWorn = v1.data.vNippleChainWorn; NippleRingsWorn = v1.data.vNippleRingsWorn; NumDresses = v1.data.vNumDresses; DressWorn = v1.data.vDressWorn; DildoOK = v1.data.vDildoOK; ImprovedDildoOK = v1.data.vImprovedDildoOK; PlugOK = v1.data.vPlugOK; SilkenRopesOK = v1.data.vSilkenRopesOK; RopesOK = v1.data.vRopesOK; PonyCartOK = v1.data.vPonyCartOK; PonyBootsOK = v1.data.vPonyBootsOK; TrophyOK = v1.data.vTrophyOK; SmallTrophyOK = v1.data.vSmallTrophyOK; NakedChoice = v1.data.vNakedChoice; VarProstitute = v1.data.vVarProstitute; VarHighClassProstitute = v1.data.vVarHighClassProstitute; VarBarmaid = v1.data.vVarBarmaid; VarMaid = v1.data.vVarMaid; VarMerchant = v1.data.vVarMerchant; VarKnight = v1.data.vVarKnight; VarCount = v1.data.vVarCount; VarLord = v1.data.vVarLord; VarLadyFarun = v1.data.vVarLadyFarun; BountyHunterFlag = v1.data.vBountyHunterFlag; FairyMeeting = v1.data.vFairyMeeting; VarIdol = v1.data.vVarIdol; NobleLove = v1.data.vNobleLove; PuppyGirlFlag = v1.data.vPuppyGirlFlag; if (PuppyGirlFlag == undefined) { PuppyGirlFlag = 0; } VarSchoolGirl = v1.data.vVarSchoolGirl; if (VarSchoolGirl == undefined) { VarSchoolGirl = 0; } VarCharisma = v1.data.vVarCharisma; VarSensibility = v1.data.vVarSensibility; VarRefinement = v1.data.vVarRefinement; VarIntelligence = v1.data.vVarIntelligence; VarMorality = v1.data.vVarMorality; VarConstitution = v1.data.vVarConstitution; VarCooking = v1.data.vVarCooking; VarCleaning = v1.data.vVarCleaning; VarConversation = v1.data.vVarConversation; VarBlowJob = v1.data.vVarBlowJob; VarFuck = v1.data.vVarFuck; VarTemperament = v1.data.vVarTemperament; VarNymphomania = v1.data.vVarNymphomania; VarObedience = v1.data.vVarObedience; VarReputation = v1.data.vVarReputation; VarFatigue = v1.data.vVarFatigue; VarLibido = v1.data.vVarLibido; VarJoy = v1.data.vVarJoy; VarSpecial = v1.data.vVarSpecial; VarCharismaMod = v1.data.vVarCharismaMod; VarSensibilityMod = v1.data.vVarSensibilityMod; VarRefinementMod = v1.data.vVarRefinementMod; VarIntelligenceMod = v1.data.vVarIntelligenceMod; VarMoralityMod = v1.data.vVarMoralityMod; VarConstitutionMod = v1.data.vVarConstitutionMod; VarCookingMod = v1.data.vVarCookingMod; VarCleaningMod = v1.data.vVarCleaningMod; VarConversationMod = v1.data.vVarConversationMod; VarBlowJobMod = v1.data.vVarBlowJobMod; VarFuckMod = v1.data.vVarFuckMod; VarTemperamentMod = v1.data.vVarTemperamentMod; VarNymphomaniaMod = v1.data.vVarNymphomaniaMod; VarObedienceMod = v1.data.vVarObedienceMod; VarReputationMod = v1.data.vVarReputationMod; VarLibidoMod = v1.data.vVarLibidoMod; VarJoyMod = v1.data.vVarJoyMod; VarSpecialMod = v1.data.vVarSpecialMod; MaxObedience = v1.data.vMaxObedience; VarLovePoints = v1.data.vVarLovePoints; VarOldBlowJob = v1.data.vVarOldBlowJob; VarOldFuck = v1.data.vVarOldFuck; Slutiness = v1.data.vSlutiness; Loyalty = v1.data.vLoyalty; Behaving = v1.data.vBehaving; MaxFuck = v1.data.vMaxFuck; MaxBlowJob = v1.data.vMaxBlowJob; MinLibido = v1.data.vMinLibido; MaxCharisma = v1.data.vMaxCharisma; MaxRefinement = v1.data.vMaxRefinement; MaxIntelligence = v1.data.vMaxIntelligence; MaxMorality = v1.data.vMaxMorality; MaxCooking = v1.data.vMaxCooking; MaxCleaning = v1.data.vMaxCleaning; MaxConversation = v1.data.vMaxConversation; MaxSpecial = v1.data.vMaxSpecial; if (MaxSpecial == undefined) { MaxSpecial = 100; } FatigueBonus = v1.data.vFatigueBonus; if (FatigueBonus == undefined) { FatigueBonus = 0; } DifficultyXXX = v1.data.vDifficultyXXX; DifficultyXXXContest = v1.data.vDifficultyXXXContest; if (DifficultyXXXContest == undefined) { DifficultyXXXContest = 35; } DifficultyExhib = v1.data.vDifficultyExhib; DifficultySleazyBar = v1.data.vDifficultySleazyBar; DifficultyBrothel = v1.data.vDifficultyBrothel; DifficultyTouch = v1.data.vDifficultyTouch; DifficultyLick = v1.data.vDifficultyLick; DifficultyFuck = v1.data.vDifficultyFuck; DifficultyBlowjob = v1.data.vDifficultyBlowjob; DifficultyTitsFuck = v1.data.vDifficultyTitsFuck; DifficultyAnal = v1.data.vDifficultyAnal; DifficultyMasturbate = v1.data.vDifficultyMasturbate; DifficultyDildo = v1.data.vDifficultyDildo; DifficultyPlug = v1.data.vDifficultyPlug; DifficultyLesbian = v1.data.vDifficultyLesbian; DifficultyBondage = v1.data.vDifficultyBondage; DifficultyNaked = v1.data.vDifficultyNaked; DifficultyMaster = v1.data.vDifficultyMaster; DifficultyGangBang = v1.data.vDifficultyGangBang; DifficultyLendHer = v1.data.vDifficultyLendHer; DifficultySpank = v1.data.vDifficultySpank; DifficultyThreesome = v1.data.vDifficultyThreesome; DifficultyPonygirl = v1.data.vDifficultyPonygirl; WinXXX = v1.data.vWinXXX; WinHousework = v1.data.vWinHousework; WinCourt = v1.data.vWinCourt; WinBeauty = v1.data.vWinBeauty; WinPonygirl = v1.data.vWinPonygirl; if (WinPonygirl == undefined) { WinPonygirl = 0; } WinContest = v1.data.vWinContest; if (WinContest == undefined) { WinContest = 0; } TotalContestXXX = v1.data.vTotalContestXXX; if (TotalContestXXX == undefined) { TotalContestXXX = 0; } TotalContestHousework = v1.data.vTotalContestHousework; if (TotalContestHousework == undefined) { TotalContestHousework = 0; } TotalContestCourt = v1.data.vTotalContestCourt; if (TotalContestCourt == undefined) { TotalContestCourt = 0; } TotalContestBeauty = v1.data.vTotalContestBeauty; if (TotalContestBeauty == undefined) { TotalContestBeauty = 0; } TotalContestPonygirl = v1.data.vTotalContestPonygirl; if (TotalContestPonygirl == undefined) { TotalContestPonygirl = 0; } RumourMilkDone = v1.data.vRumourMilkDone; RumourTentaclesDone = v1.data.vRumourTentaclesDone; RumourFaerieHuntingDone = v1.data.vRumourFaerieHuntingDone; PriceDoll = v1.data.vPriceDoll; SetDollButton(); PiercingsType = v1.data.vPiercingsType; NecklaceIndex = v1.data.vNecklaceIndex; SetJeweleryButton(); VanityCaseOK = v1.data.vVanityCaseOK; CustomFlag = v1.data.vCustomFlag; CustomFlag1 = v1.data.vCustomFlag1; CustomFlag2 = v1.data.vCustomFlag2; CustomFlag3 = v1.data.vCustomFlag3; CustomFlag4 = v1.data.vCustomFlag4; CustomString = v1.data.vCustomString; Lectures = v1.data.vLectures; ShowSpecial = v1.data.vShowSpecial; ShowSlaveShop = v1.data.vShowSlaveShop; OldLover = v1.data.vOldLover; BitFlag1Low = v1.data.vBitFlag1Low; BitFlag1High = v1.data.vBitFlag1High; if (v1.data.vBitFlag2Low == undefined) { BitFlag2Low = v1.data.vBitFlag2; } else { BitFlag2Low = v1.data.vBitFlag2Low; BitFlag2High = v1.data.vBitFlag2High; } LastAny = v1.data.vLastAny; AnySex = v1.data.vAnySex; AnyNonSex = v1.data.vAnyNonSex; TotalMilked = v1.data.vTotalMilked; MilkInfluence = v1.data.vMilkInfluence; TotalTeddyBear = v1.data.vTotalTeddyBear; TotalGames = v1.data.vTotalGames; TotalJewelry = v1.data.vTotalJewelry; TotalDoll = v1.data.vTotalDoll; TotalBooks = v1.data.vTotalBooks; TotalPoetry = v1.data.vTotalPoetry; TotalBooksRead = v1.data.vTotalBooksRead; TotalPoetryRead = v1.data.vTotalPoetryRead; TotalScrolls = v1.data.vTotalScrolls; if (TotalScrolls == undefined) { TotalScrolls = 0; } TotalScrollsRead = v1.data.vTotalScrollsRead; if (TotalScrollsRead == undefined) { TotalScrollsRead = 0; } TotalScripture = v1.data.vTotalScripture; if (TotalScripture == undefined) { TotalScripture = 0; } TotalScriptureRead = v1.data.vTotalScriptureRead; if (TotalScriptureRead == undefined) { TotalScriptureRead = 0; } TotalKamasutra = v1.data.vTotalKamasutra; if (TotalKamasutra == undefined) { TotalKamasutra = 0; } TotalKamasutraRead = v1.data.vTotalKamasutraRead; if (TotalKamasutraRead == undefined) { TotalKamasutraRead = 0; } DocksPort.Load(v1.data.DocksPort); DocksSlavePens.Load(v1.data.DocksSlavePens); TownCenter.Load(v1.data.TownCenter); Slums.Load(v1.data.Slums); Farm.Load(v1.data.Farm); Palace.Load(v1.data.Palace); Forest.Load(v1.data.Forest); Lake.Load(v1.data.Lake); RuinedTemple.Load(v1.data.RuinedTemple); DeepForest.Load(v1.data.DeepForest); TentaclePregnancy = v1.data.vTentaclePregnancy; TentacleHaunt = v1.data.vTentacleHaunt; DoneTentacleHarem = v1.data.vDoneTentacleHarem; TentaclesOn = v1.data.vTentaclesOn; TentacleFrequency = v1.data.vTentacleFrequency; DickgirlRate = v1.data.vDickgirlRate; DickgirlOn = v1.data.vDickgirlOn; LastVisitDickgirl = v1.data.vLastVisitDickgirl; DickgirlXF = v1.data.vDickgirlXF; AllDickgirlXFOn = v1.data.vAllDickgirlXFOn == 1; AntidoteDays = v1.data.vAntidoteDays; RapeOn = v1.data.vRapeOn != 0; BDSMOn = v1.data.vBDSMOn != 0; PonygirlAware = v1.data.vPonygirlAware; DonePonygirl = v1.data.vDonePonygirl; MoonPhaseDate = v1.data.vMoonPhase; GameDate = v1.data.vDate; TrainingTime = v1.data.vTrainingTime; TrainingStart = v1.data.vTrainingStart; Difficulty = v1.data.vDifficulty; CombatDifficulty = v1.data.vCombatDifficulty; if (CombatDifficulty == undefined) { CombatDifficulty = 0; } SlaveMakerName = v1.data.vSlaveMakerName; Gender = v1.data.vGender; OldGender = v1.data.vOldGender; if (OldGender == undefined) { OldGender = Gender; } Appearance = v1.data.vAppearance; Talent = v1.data.vTalent; Corruption = v1.data.vCorruption; ArmourType = v1.data.vArmourType; WeaponType = v1.data.vWeaponType; SMLibido = v1.data.vSMLibido; SMConstitution = v1.data.vSMConstitution; SMAttack = v1.data.vSMAttack; SMDefence = v1.data.vSMDefence; SMConversation = v1.data.vSMConversation; SMReputation = v1.data.vSMReputation; ArousalDefence = v1.data.vArousalDefence; VarGold = v1.data.vVarGold; SMDebt = v1.data.vSMDebt; TheologyTraining = v1.data.vTheologyTraining; if (TheologyTraining == undefined) { TheologyTraining = 0; } SMFaith = v1.data.vSMFaith; GirlsTrained = v1.data.vGirlsTrained; if (GirlsTrained == undefined) { GirlsTrained = 0; } House = v1.data.vHouse; Home.Load(v1.data.Home); delete PotionsUsed; PotionsUsed = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); PotionsUsed[0] = v1.data.vPotionsUsed00; PotionsUsed[1] = v1.data.vPotionsUsed01; PotionsUsed[2] = v1.data.vPotionsUsed02; PotionsUsed[3] = v1.data.vPotionsUsed03; PotionsUsed[4] = v1.data.vPotionsUsed04; PotionsUsed[5] = v1.data.vPotionsUsed05; PotionsUsed[6] = v1.data.vPotionsUsed06; PotionsUsed[7] = v1.data.vPotionsUsed07; PotionsUsed[8] = v1.data.vPotionsUsed08; PotionsUsed[9] = v1.data.vPotionsUsed09; PotionsUsed[10] = v1.data.vPotionsUsed10; PotionsUsed[11] = v1.data.vPotionsUsed11; PotionsUsed[12] = v1.data.vPotionsUsed12; TotalActionMax = v1.data.vTotalActionMax; if (TotalActionMax == undefined) { TotalActionMax = 0; } TotalAction = v1.data.vTotalAction; if (TotalAction != 0) { TotalAction = 0; AddDayNightAction(-1 * v1.data.vAction1); AddDayNightAction(-1 * v1.data.vAction2); AddDayNightAction(-1 * v1.data.vAction3); AddDayNightAction(-1 * v1.data.vAction4); AddDayNightAction(-1 * v1.data.vAction5); AddDayNightAction(-1 * v1.data.vAction6); } SetGeneralText('Load of game ' + GameNo + ' completed.'); if (v2 == SlaveFilename) { ResumeGame(false); delete oldFile; return true; } if (GirlLoaded) { SlaveGirl.unloadMovie(); } mclListener.onLoadInit = ResumeGame; mcLoader.addListener(mclListener); mcLoader.loadClip(SlaveFilename, SlaveGirl); delete oldFile; return true; } function UpdateFromGlobalData() { if (SoundsOn) { IntroOptionsMenu.SoundsOff._visible = false; IntroOptionsMenu.SoundsOn._visible = true; } else { IntroOptionsMenu.SoundsOn._visible = false; IntroOptionsMenu.SoundsOff._visible = true; } if (AssistantTrained) { IntroOptionsMenu.AllGirlsOff._visible = false; IntroOptionsMenu.AllGirlsOn._visible = true; } else { IntroOptionsMenu.AllGirlsOff._visible = true; IntroOptionsMenu.AllGirlsOn._visible = false; } if (DickgirlOn == 1) { IntroOptionsMenu.DickgirlOff._visible = false; IntroOptionsMenu.DickgirlOn._visible = true; SlaveMakerSelection.DickgirlsText.text = 'Dickgirls On'; VisitFortuneTeller.DickgirlsText.text = 'Dickgirls On'; } else { IntroOptionsMenu.DickgirlOn._visible = false; IntroOptionsMenu.DickgirlOff._visible = true; SlaveMakerSelection.DickgirlsText.text = 'Dickgirls Off'; VisitFortuneTeller.DickgirlsText.text = 'Dickgirls Off'; AllDickgirlXFOn = false; } if (AllDickgirlXFOn) { IntroOptionsMenu.AllDickgirlXFOff._visible = false; IntroOptionsMenu.AllDickgirlXFOn._visible = true; } else { IntroOptionsMenu.AllDickgirlXFOff._visible = true; IntroOptionsMenu.AllDickgirlXFOn._visible = false; } if (BDSMOn) { IntroOptionsMenu.BDSMOff._visible = false; IntroOptionsMenu.BDSMOn._visible = true; } else { IntroOptionsMenu.BDSMOff._visible = true; IntroOptionsMenu.BDSMOn._visible = false; PonygirlsOn = false; } if (PonygirlsOn) { IntroOptionsMenu.PonygirlOff._visible = false; IntroOptionsMenu.PonygirlOn._visible = true; SlaveMakerSelection.PonygirlsText.text = 'Ponygirls On'; VisitFortuneTeller.PonygirlsText.text = 'Ponygirls On'; } else { IntroOptionsMenu.PonygirlOn._visible = false; IntroOptionsMenu.PonygirlOff._visible = true; SlaveMakerSelection.PonygirlsText.text = 'Ponygirls Off'; VisitFortuneTeller.PonygirlsText.text = 'Ponygirls Off'; } switch (Difficulty) { case -1: IntroOptionsMenu.DifficultyHardOn._visible = false; IntroOptionsMenu.DifficultyHardOff._visible = true; IntroOptionsMenu.DifficultyDifficultOn._visible = false; IntroOptionsMenu.DifficultyDifficultOff._visible = true; IntroOptionsMenu.DifficultyNormalOn._visible = false; IntroOptionsMenu.DifficultyNormalOff._visible = true; IntroOptionsMenu.DifficultyEasyOn._visible = true; IntroOptionsMenu.DifficultyEasyOff._visible = false; SlaveMakerSelection.DifficultyText.text = 'Easy Difficulty'; VisitFortuneTeller.DifficultyText.text = 'Easy Difficulty'; TentaclesOn = 0; break; case 0: IntroOptionsMenu.DifficultyHardOn._visible = false; IntroOptionsMenu.DifficultyDifficultOn._visible = false; IntroOptionsMenu.DifficultyHardOff._visible = true; IntroOptionsMenu.DifficultyDifficultOff._visible = true; IntroOptionsMenu.DifficultyNormalOn._visible = true; IntroOptionsMenu.DifficultyNormalOff._visible = false; IntroOptionsMenu.DifficultyEasyOn._visible = false; IntroOptionsMenu.DifficultyEasyOff._visible = true; SlaveMakerSelection.DifficultyText.text = 'Normal Difficulty'; VisitFortuneTeller.DifficultyText.text = 'Normal Difficulty'; break; case 1: IntroOptionsMenu.DifficultyHardOn._visible = false; IntroOptionsMenu.DifficultyHardOff._visible = true; IntroOptionsMenu.DifficultyDifficultOn._visible = true; IntroOptionsMenu.DifficultyDifficultOff._visible = false; IntroOptionsMenu.DifficultyNormalOn._visible = false; IntroOptionsMenu.DifficultyNormalOff._visible = true; IntroOptionsMenu.DifficultyEasyOn._visible = false; IntroOptionsMenu.DifficultyEasyOff._visible = true; SlaveMakerSelection.DifficultyText.text = 'Difficult Difficulty'; VisitFortuneTeller.DifficultyText.text = 'Difficult Difficulty'; break; case 2: IntroOptionsMenu.DifficultyHardOn._visible = true; IntroOptionsMenu.DifficultyDifficultOn._visible = false; IntroOptionsMenu.DifficultyHardOff._visible = false; IntroOptionsMenu.DifficultyDifficultOff._visible = true; IntroOptionsMenu.DifficultyNormalOn._visible = false; IntroOptionsMenu.DifficultyNormalOff._visible = true; IntroOptionsMenu.DifficultyEasyOn._visible = false; IntroOptionsMenu.DifficultyEasyOff._visible = true; SlaveMakerSelection.DifficultyText.text = 'Hard Difficulty'; VisitFortuneTeller.DifficultyText.text = 'Hard Difficulty'; } switch (CombatDifficulty) { case -1: IntroOptionsMenu.CombatLoseOn._visible = false; IntroOptionsMenu.CombatLoseOff._visible = true; IntroOptionsMenu.CombatDifficultOn._visible = false; IntroOptionsMenu.CombatDifficultOff._visible = true; IntroOptionsMenu.CombatStandardOn._visible = false; IntroOptionsMenu.CombatStandardOff._visible = true; IntroOptionsMenu.CombatOffOn._visible = true; IntroOptionsMenu.CombatOffOff._visible = false; break; case 0: IntroOptionsMenu.CombatLoseOn._visible = false; IntroOptionsMenu.CombatLoseOff._visible = true; IntroOptionsMenu.CombatDifficultOn._visible = false; IntroOptionsMenu.CombatDifficultOff._visible = true; IntroOptionsMenu.CombatStandardOn._visible = true; IntroOptionsMenu.CombatStandardOff._visible = false; IntroOptionsMenu.CombatOffOn._visible = false; IntroOptionsMenu.CombatOffOff._visible = true; break; case 1: IntroOptionsMenu.CombatLoseOn._visible = false; IntroOptionsMenu.CombatLoseOff._visible = true; IntroOptionsMenu.CombatDifficultOn._visible = true; IntroOptionsMenu.CombatDifficultOff._visible = false; IntroOptionsMenu.CombatStandardOn._visible = false; IntroOptionsMenu.CombatStandardOff._visible = true; IntroOptionsMenu.CombatOffOn._visible = false; IntroOptionsMenu.CombatOffOff._visible = true; break; case 2: IntroOptionsMenu.CombatLoseOn._visible = true; IntroOptionsMenu.CombatLoseOff._visible = false; IntroOptionsMenu.CombatDifficultOn._visible = false; IntroOptionsMenu.CombatDifficultOff._visible = true; IntroOptionsMenu.CombatStandardOn._visible = false; IntroOptionsMenu.CombatStandardOff._visible = true; IntroOptionsMenu.CombatOffOn._visible = false; IntroOptionsMenu.CombatOffOff._visible = true; } if (TentaclesOn == 1) { IntroOptionsMenu.TentaclesOff._visible = false; IntroOptionsMenu.TentaclesOn._visible = true; SlaveMakerSelection.TentaclesText.text = 'Tentacles On'; VisitFortuneTeller.TentaclesText.text = 'Tentacles On'; } else { IntroOptionsMenu.TentaclesOn._visible = false; IntroOptionsMenu.TentaclesOff._visible = true; SlaveMakerSelection.TentaclesText.text = 'Tentacles Off'; VisitFortuneTeller.TentaclesText.text = 'Tentacles Off'; } if (GlobalTentacleFrequency < 16) { IntroOptionsMenu.TentacleUncommonOn._visible = false; IntroOptionsMenu.TentacleUncommonOff._visible = true; IntroOptionsMenu.TentacleOftenOn._visible = false; IntroOptionsMenu.TentacleOftenOff._visible = true; IntroOptionsMenu.TentacleRareOn._visible = true; IntroOptionsMenu.TentacleRareOff._visible = false; } else { if (GlobalTentacleFrequency < 34) { IntroOptionsMenu.TentacleUncommonOn._visible = true; IntroOptionsMenu.TentacleUncommonOff._visible = false; IntroOptionsMenu.TentacleOftenOn._visible = false; IntroOptionsMenu.TentacleOftenOff._visible = true; IntroOptionsMenu.TentacleRareOn._visible = false; IntroOptionsMenu.TentacleRareOff._visible = true; } else { IntroOptionsMenu.TentacleUncommonOn._visible = false; IntroOptionsMenu.TentacleUncommonOff._visible = true; IntroOptionsMenu.TentacleOftenOn._visible = true; IntroOptionsMenu.TentacleOftenOff._visible = false; IntroOptionsMenu.TentacleRareOn._visible = false; IntroOptionsMenu.TentacleRareOff._visible = true; } } if (RapeOn) { IntroOptionsMenu.RapeOff._visible = false; IntroOptionsMenu.RapeOn._visible = true; } else { IntroOptionsMenu.RapeOff._visible = true; IntroOptionsMenu.RapeOn._visible = false; } if (ColoursOn) { IntroOptionsMenu.ColoursOff._visible = false; IntroOptionsMenu.ColoursOn._visible = true; } else { IntroOptionsMenu.ColoursOff._visible = true; IntroOptionsMenu.ColoursOn._visible = false; } if (ZoomOn) { IntroOptionsMenu.ZoomOff._visible = false; IntroOptionsMenu.ZoomOn._visible = true; } else { IntroOptionsMenu.ZoomOff._visible = true; IntroOptionsMenu.ZoomOn._visible = false; } if (BadEndsOn) { IntroOptionsMenu.BadEndsOff._visible = false; IntroOptionsMenu.BadEndsOn._visible = true; } else { IntroOptionsMenu.BadEndsOff._visible = true; IntroOptionsMenu.BadEndsOn._visible = false; } if (IncestOn) { IntroOptionsMenu.IncestOff._visible = false; IntroOptionsMenu.IncestOn._visible = true; } else { IntroOptionsMenu.IncestOff._visible = true; IntroOptionsMenu.IncestOn._visible = false; } SlaveMakerSelection.SlaveMakerName.text = SlaveMakerName; VisitFortuneTeller.SlaveMakerName.text = SlaveMakerName; SlaveMakerSelection.Gender.text = Gender; VisitFortuneTeller.Gender.text = Gender; SlaveMakerSelection.SlaverAppearance.gotoAndStop(Gender); VisitFortuneTeller.SlaverAppearance.gotoAndStop(Gender); } function SaveGlobalData() { var v1 = SharedObject.getLocal('smglobal'); if (SoundsOn) { v1.data.SoundsOn = 1; } else { v1.data.SoundsOn = 0; } if (AssistantTrained) { v1.data.AssistantTrained = 1; } else { v1.data.AssistantTrained = 0; } v1.data.DickgirlOn = DickgirlOn; v1.data.TentaclesOn = TentaclesOn; v1.data.GlobalTentacleFrequency = GlobalTentacleFrequency; var v2 = PonygirlsOn ? 1 : 0; v1.data.PonygirlsOn = v2; v1.data.Difficulty = Difficulty; v1.data.CombatDifficulty = CombatDifficulty; v1.data.SlaveMakerName = SlaveMakerName; v1.data.Gender = Gender; v1.data.Appearance = Appearance; if (BDSMOn) { v1.data.BDSMOn = 1; } else { v1.data.BDSMOn = 0; } if (AllDickgirlXFOn) { v1.data.AllDickgirlXFOn = 1; } else { v1.data.AllDickgirlXFOn = 0; } if (RapeOn) { v1.data.RapeOn = 1; } else { v1.data.RapeOn = 0; } if (ColoursOn) { v1.data.ColoursOn = 1; } else { v1.data.ColoursOn = 0; } if (ZoomOn) { v1.data.ZoomOn = 1; } else { v1.data.ZoomOn = 0; } v1.data.BadEndsOn = BadEndsOn ? 1 : 0; v1.data.IncestOn = IncestOn ? 1 : 0; v1.data.AssistantName = IntroOptionsMenu.NewAssistant.text; v1.flush(1024); UpdateFromGlobalData(); } function LoadGlobalData() { var v1 = SharedObject.getLocal('smglobal'); if (v1.data.BadEndsOn != undefined) { BadEndsOn = v1.data.BadEndsOn == 1; } if (v1.data.IncestOn != undefined) { IncestOn = v1.data.IncestOn == 1; } if (v1.data.RapeOn != undefined) { RapeOn = v1.data.RapeOn == 1; } if (v1.data.ColoursOn != undefined) { ColoursOn = v1.data.ColoursOn == 1; } if (v1.data.ZoomOn != undefined) { ZoomOn = v1.data.ZoomOn == 1; } if (v1.data.BDSMOn != undefined) { BDSMOn = v1.data.BDSMOn == 1; } if (v1.data.AllDickgirlXFOn != undefined) { AllDickgirlXFOn = v1.data.AllDickgirlXFOn == 1; } if (v1.data.SoundsOn != undefined) { SoundsOn = v1.data.SoundsOn == 1; } if (v1.data.AssistantTrained != undefined) { AssistantTrained = v1.data.AssistantTrained == 1; } if (v1.data.DickgirlOn != undefined) { DickgirlOn = v1.data.DickgirlOn; } if (v1.data.TentaclesOn != undefined) { TentaclesOn = v1.data.TentaclesOn; } if (v1.data.GlobalTentacleFrequency != undefined) { GlobalTentacleFrequency = v1.data.GlobalTentacleFrequency; } if (v1.data.PonygirlsOn != undefined) { PonygirlsOn = v1.data.PonygirlsOn == 1; } if (v1.data.Difficulty != undefined) { Difficulty = v1.data.Difficulty; } if (v1.data.CombatDifficulty != undefined) { CombatDifficulty = v1.data.CombatDifficulty; } if (v1.data.SlaveMakerName != undefined) { SlaveMakerName = v1.data.SlaveMakerName; } else { SlaveMakerName = 'Slaver'; } if (v1.data.Gender != undefined) { Gender = v1.data.Gender; } if (v1.data.Appearance != undefined) { Appearance = v1.data.Appearance; } if (v1.data.AssistantName != undefined) { IntroOptionsMenu.NewAssistant.text = v1.data.AssistantName; } else { IntroOptionsMenu.NewAssistant.text = 'Shampoo'; } UpdateFromGlobalData(); false; } function ChangeRule(rule) { var v1; switch (rule) { case 0: v1 = RulesTalk == 1; break; case 1: v1 = RulesPray == 1; break; case 2: v1 = RulesGoOut == 1; break; case 3: v1 = RulesFuck == 1; break; case 4: v1 = RulesTouchHerself == 1; break; case 5: v1 = RulesWriteLetters == 1; break; case 6: v1 = RulesPocketMoney == 1; } if (v1) { ClearRule(rule); } else { SetRule(rule); } } function SetRule(rule) { if (SlaveGirl.SetRule(rule) == false) { Bloop(); return undefined; } switch (rule) { case 0: if (BitGagWorn == 1) { ServantSpeak('Not while she is wearing a bit-gag'); Bloop(); return undefined; } RulesTalk = 1; break; case 1: RulesPray = 1; break; case 2: RulesGoOut = 1; break; case 3: RulesFuck = 1; break; case 4: RulesTouchHerself = 1; break; case 5: RulesWriteLetters = 1; break; case 6: RulesPocketMoney = 1; } Beep(); UpdateRules(); } function ClearRule(rule) { if (SlaveGirl.ClearRule(rule) == false) { Bloop(); return undefined; } switch (rule) { case 0: RulesTalk = 0; break; case 1: RulesPray = 0; break; case 2: RulesGoOut = 0; break; case 3: RulesFuck = 0; break; case 4: RulesTouchHerself = 0; break; case 5: RulesWriteLetters = 0; break; case 6: RulesPocketMoney = 0; } Beep(); UpdateRules(); } function UpdateRules() { RulesMenu.RuleTalk.RuleButton.gotoAndStop(3 - RulesTalk * 2); if (RulesTalk == 1) { RulesMenu.RuleTalk.RuleDescription.htmlText = '<b>On - May talk anytime and express her opinions</b>\r<font color=\'#999999\'>Off - Only talk when spoken to</font>'; } else { RulesMenu.RuleTalk.RuleDescription.htmlText = '<font color=\'#999999\'>On - May talk anytime and express her opinions</font>\r<b>Off - Only talk when spoken to</b>'; } RulesMenu.RulePray.RuleButton.gotoAndStop(3 - RulesPray * 2); if (RulesPray == 1) { RulesMenu.RulePray.RuleDescription.htmlText = '<b>On - May pray to the gods and study scripture</b>\r<font color=\'#999999\'>Off - Cannot pray, you are all the guidance she needs</font>'; } else { RulesMenu.RulePray.RuleDescription.htmlText = '<font color=\'#999999\'>On - May pray to the gods and study scripture</font>\r<b>Off - Cannot pray, you are all the guidance she needs</b>'; } RulesMenu.RuleGoOut.RuleButton.gotoAndStop(3 - RulesGoOut * 2); if (RulesGoOut == 1) { RulesMenu.RuleGoOut.RuleDescription.htmlText = '<b>On - May go out unsupervised, even visiting friends alone</b>\r<font color=\'#999999\'>Off - Will be supervised at all times when she leaves your home</font>'; } else { RulesMenu.RuleGoOut.RuleDescription.htmlText = '<font color=\'#999999\'>On - May go out unsupervised, even visiting friends alone</font>\r<b>Off - Will be supervised at all times when she leaves your home</b>'; } RulesMenu.RuleTouch.RuleButton.gotoAndStop(3 - RulesTouchHerself * 2); if (RulesTouchHerself == 1) { RulesMenu.RuleTouch.RuleDescription.htmlText = '<b>On - May masturbate anytime she desires</b>\r<font color=\'#999999\'>Off - Can only masturbate when you so order it</font>'; } else { RulesMenu.RuleTouch.RuleDescription.htmlText = '<font color=\'#999999\'>On - May masturbate anytime she desires</font>\r<b>Off - Can only masturbate when you so order it</b>'; } RulesMenu.RuleFuck.RuleButton.gotoAndStop(3 - RulesFuck * 2); if (RulesFuck == 1) { RulesMenu.RuleFuck.RuleDescription.htmlText = '<b>On - Fuck anyone, anytime</b>\r<font color=\'#999999\'>Off - May only fuck when and with who you so order</font>'; } else { RulesMenu.RuleFuck.RuleDescription.htmlText = '<font color=\'#999999\'>On - Fuck anyone, anytime</font>\r<b>Off - May only fuck when and with who you so order</b>'; } RulesMenu.RuleGold.RuleButton.gotoAndStop(3 - RulesPocketMoney * 2); if (RulesPocketMoney == 1) { RulesMenu.RuleGold.RuleDescription.htmlText = '<b>On - Will have a little pocket money to spend as she likes</b>\r<font color=\'#999999\'>Off - Will have no money to spend</font>'; } else { RulesMenu.RuleGold.RuleDescription.htmlText = '<font color=\'#999999\'>On - Will have a little pocket money to spend as she likes</font>\r<b>Off - Will have no money to spend</b>'; } RulesMenu.RuleWrite.RuleButton.gotoAndStop(3 - RulesWriteLetters * 2); if (RulesWriteLetters == 1) { RulesMenu.RuleWrite.RuleDescription.htmlText = '<b>On - May write letters to her family & friends</b>\r<font color=\'#999999\'>Off - Cannot write or receive letters from family & friends</font>'; } else { RulesMenu.RuleWrite.RuleDescription.htmlText = '<font color=\'#999999\'>On - May write letters to her family & friends</font>\r<b>Off - Cannot write or receive letters from family & friends</b>'; } } function RulesShortcuts(key) { switch (key) { case 70: ChangeRule(3); return undefined; case 71: ChangeRule(2); return undefined; case 72: ChangeRule(6); return undefined; case 79: ChangeRule(4); return undefined; case 80: ChangeRule(1); return undefined; case 84: ChangeRule(0); return undefined; case 87: ChangeRule(5); return undefined; } } function AddSentences(nstring) { if (LargerTextField._visible == true) { LargerText += nstring; } else { var v3 = ' '; var v2 = nstring.split(v3); var v1 = 0; while (v1 < v2.length) { if (LargerTextField._visible == true) { LargerText += v2[v1]; if (v1 != v2.length - 1) { LargerText += v3; } } else { OldText = GeneralText; GeneralText += v2[v1]; if (v1 != v2.length - 1) { GeneralText += v3; } if (GeneralTextField.bottomScroll > GeneralLines) { GeneralText = OldText; GeneralText += '</font>'; ShowLargerText(); SetFont(''); if (v2[v1] != '') { if (v2[v1].charAt(0) == ' ') { LargerText += v2[v1].slice(1, v2[v1].length); } else { LargerText += v2[v1]; } if (v1 != v2.length - 1) { LargerText += v3; } } } } ++v1; } } } function AddText(nstring) { if (LargerTextField._visible == true) { LargerText += nstring; } else { var v2 = nstring.split('\r\r'); var v1 = 0; while (v1 < v2.length) { if (LargerTextField._visible == true) { } else { if (LargerText == '' && v2[v1] == '') { LargerText += v2[v1]; if (v1 != v2.length - 1) { LargerText += '\n\n'; } } else { AddSentences(v2[v1]); if (v1 != v2.length - 1) { if (LargerTextField._visible == true) { } else { if (LargerText == '' && v2[v1] == '') { LargerText += '\n\n'; } else { GeneralText += '\n\n'; } } } } } ++v1; } } } function AddTextToStart(pstring) { var v1 = pstring + GeneralTextField.htmlText + LargerTextField.htmlText; SetText(v1); } function AddTextToStartGeneral(pstring) { var v1 = pstring + GeneralTextField.htmlText; SetGeneralText(v1); } function SetFont(style) { if (style != '') { FontText = style; } AddText(FontText); } function ClearFont() { if (FontText != '') { AddText('</font>'); } FontText = ''; } function SetText(nstring) { HideLargerText(); GeneralText = ''; if (nstring != '') { AddText(nstring); } } function SetGeneralText(nstring) { GeneralText = nstring; } function PersonSpeakStart(person, say, newl) { if (newl != true) { SetText(''); } if (!LargerTextField._visible && GeneralTextField.bottomScroll >= GeneralLines) { ShowLargerText(); } AddText('<b>' + person + ':</b>\r'); SetFont('<font color=\'#660000\'>'); AddText('"' + say); } function PersonSpeakEnd(say) { if (say != undefined) { AddText(say + '"'); } else { AddText('"'); } ClearFont(); } function PersonSpeak(person, say, newl) { if (newl != true) { SetText(''); } if (!LargerTextField._visible && GeneralTextField.bottomScroll >= GeneralLines) { ShowLargerText(); } AddText('<b>' + person + ':</b>\r'); SetFont('<font color=\'#660000\'>'); AddText('"' + say + '"'); ClearFont(); } function SlaveSpeakStart(say, newl) { if (newl != true) { SetText(''); } if (BitGagWorn == 1) { AddText(ServantName + ' briefly removes ' + SlaveName + '\'s gag.\r'); } PersonSpeakStart(SlaveName, say, true); } function SlaveSpeakEnd(say) { if (say != undefined) { AddText(say); } if (Catgirl) { PersonSpeakEnd(' Meow!'); } else { if (DonePonygirl == 1) { PersonSpeakEnd(' Neigh!'); } else { PersonSpeakEnd(); } } } function SlaveSpeak(say, newl) { SlaveSpeakStart(say, newl); SlaveSpeakEnd(); } function ServantSpeak(say, newl) { PersonSpeak(ServantName, say, newl); } function ServantSpeakStart(say, newl) { PersonSpeakStart(ServantName, say, newl); } function ShowLargerText() { LargerText = ''; ShowStatistics(false); LargerTextField._visible = true; StatsTextBtn._visible = true; } function HideLargerText() { LargerText = ''; if (BackgroundGrid._visible && LargerTextField._visible) { StopHints(); } ShowStatistics(BackgroundGrid._visible); StatsTextBtn._visible = false; } function BlankLine() { AddText('\r\r'); } function ResetHints() { Hints = true; clearInterval(intervalId3); } function StopHints() { Hints = false; clearInterval(intervalId3); intervalId3 = setInterval(this, 'ResetHints', 800); } function IsHints() { return Hints && YesEvent._visible == false && AskQuestions._visible == false && ObjectsLarge._visible == false && NextEvent._visible == false && NextGeneral._visible == false && NextVisit._visible == false; } function HideHints(gen) { ResetHints(); if (IsHints()) { if (gen == true) { SetGeneralText(''); } else { SetText(''); } } } var lastmc; var count; var incdir; var fuckit_mc; var oldxscale = 0; var stepsg; ResetImages(); _quality = 'BEST'; fscommand('fullscreen', true); fscommand('showmenu', false); Icons.MoonPhase.gotoAndStop(1); ClipBuyer.gotoAndStop(1); DressBeach.gotoAndStop(1); DressLeash.gotoAndStop(1); DressTail.gotoAndStop(1); DressBitgag.gotoAndStop(1); DressNymphsTiara.gotoAndStop(1); ClipRopes.gotoAndStop(1); IntroHowToPlay.gotoAndStop(1); IntroHowToPlay._visible = false; IntroTitle._visible = true; IntroBackground._visible = false; IntroCredits.gotoAndStop(1); PeopleIdol.gotoAndStop(1); PeopleDemon.gotoAndStop(1); PeopleGirl.gotoAndStop(1); PeopleBountyHunter.gotoAndStop(1); PeopleSlut.gotoAndStop(1); PeopleAngel.gotoAndStop(1); PeopleNun.gotoAndStop(3); PeopleSleazyBarOwner.gotoAndStop(1); PeopleProstitute.gotoAndStop(1); PeopleHighClassProstitute.gotoAndStop(1); PeopleBarMaid.gotoAndStop(1); PeopleMaid.gotoAndStop(1); PeopleKnight.gotoAndStop(1); PeopleDickgirl.gotoAndStop(1); PeopleLadyFarun.gotoAndStop(1); PeopleSalonOwner.gotoAndStop(1); PeopleDaruna.gotoAndStop(1); PeopleLord.gotoAndStop(1); PeopleXXXOwner.gotoAndStop(1); ClipRescue.gotoAndStop(1); ClipKamasutra.gotoAndStop(1); GirlsStory._visible = false; EventAngelicVision.gotoAndStop(1); EventParties.gotoAndStop(1); Gods.gotoAndStop(1); SlaveMakerTraining.gotoAndStop(1); ClipTemple.gotoAndStop(1); ClipLake.gotoAndStop(1); ClipTunnel.gotoAndStop(1); ClipKitchen.gotoAndStop(1); PlaceTentacles.gotoAndStop(1); ClipBeach.gotoAndStop(1); ClipSlums.gotoAndStop(1); ClipBath.gotoAndStop(1); SystemMenu.gotoAndStop(1); SlaveMakerHousing.Housing.gotoAndStop(1); WalkSlavePens.gotoAndStop(1); WalkRuinedTemple.gotoAndStop(1); WalkSlums.gotoAndStop(1); WalkTownCenter.gotoAndStop(1); WalkCatgirlMeeting.gotoAndStop(1); EventPonygirlMeeting.gotoAndStop(1); ClipFairyMeeting.gotoAndStop(1); WalkCowgirl.gotoAndStop(1); PlaceHouse.gotoAndStop(1); DressSky.gotoAndStop(1); Intro7.gotoAndStop(1); Intro8.gotoAndStop(1); HideRobes(); var colorTrans = new flash.geom.ColorTransform(); var trans = new flash.geom.Transform(DressOverlay); trans.colorTransform = colorTrans; var transXF = new flash.geom.Transform(Icons.DickgirlXFIcon); transXF.colorTransform = colorTrans; var mclListener = new Object(); var mclListenerServant = new Object(); var GirlLoaded = false; var ServantLoaded = false; var MoonPhaseDate; var SlaveName; var TrainingTime; var temp; var DickgirlChangable; var DickgirlChanged; var CatGirl; var Naked; var Aroused; var Lesbian; var dmod; var ActionChoice; var ObjectChoice; var Day; var SlaveDay; var TotalAction; var TotalActionMax; var SexAction; var NumFin; var Action1; var Action2; var Action3; var Action4; var Action5; var Action6; var SMAction1; var Talent = 0; var GirlsTrained; var House = 0; var StandardDGText; var SlaveNumber = 1; var FairyMeeting; var UseGeneric; var mcLoader = new MovieClipLoader(); var mcLoader2 = new MovieClipLoader(); var mcLoaderServant = new MovieClipLoader(); var mcLoaderServant2 = new MovieClipLoader(); var keyListenerMenu = new Object(); var keyListenerButton = new Object(); var keyListenerMain = new Object(); var AssistantTentacleSex; var AssistantRape; var intervalId; var intervalId2; var intervalId3; var intervalId4; var TentacleChoice; var tfailedcapture; var Milkable; var DemonChoice; var Master; var Corruption; var FirstTimeTodayBrothel; var FirstTimeTodayAcolyte; var FirstTimeTodaySleazyBar; var FirstTimeTodayDiscuss; var FirstTimeTodayBreak; var FirstTimeTodayTheology; var FirstTimeTodayRestaurant; var FirstTimeTodayBar; var FirstTimeTodaySciences; var FirstTimeTodayDance; var FirstTimeTodayRefinement; var FirstTimeTodayWalk; var FirstTimeTodayXXX; var FirstTimeTodayCooking; var FirstTimeTodayCleaning; var FirstTimeTodayExpose; var FirstTimeTodayMakeup; var FreeWalkPlace; var LesbianTrainable; var YesNoFlag = 0; var OwnerTesting; var OwnerTestingUrgent; var TentaclePregnancy; var ArmourType; var WeaponType; var SMLibido; var SMConstitution; var SMAttack; var SMDefence; var SMConversation; var SMReputation; var SMDebt; var SlaveLikeServant; var SlaveAttitude; var ServantHeShe; var ServantHimHer; var ServantHisHer; var ArousalDefence; var SMFaith; var VarIdol; var SlaveMakerHeShe; var SlaveMakerHimHer; var DocksPort; var DocksSlavePens; var TownCenter; var Slums; var Farm; var Palace; var Forest; var Lake; var RuinedTemple; var DeepForest; var Home; var AnySex; var AnyNonSex; var LastAny; var TotalTeddyBear; var TotalGames; var TotalJewelry; var TotalDoll; var TotalBooks; var TotalPoetry; var DurationHairCare; var DurationFacialCare; var DurationMakeupCare; var TentacleHaunt; var TentacleFrequency; var AppendActText; var ServantGender; var SexPosition; var Path1; var Path2; var Path3; var CurrentPath; var MaxPath; var SGMasterName; var NumEvent; var OldNumEvent; var CustomString; var SlavePronoun; var AntidoteDays; var DoneEvent; var Elapsed; var SuperviseYourself; var Supervise; var Trust; var DickgirlOn = 1; var TentaclesOn = 1; var SoundsOn = true; var PonygirlAware = 0; var PonygirlsOn = true; var Difficulty = 0; var CombatDifficulty = 0; var SlaveMakerName; var AssistantTrained = false; var Gender = 1; var OldGender; var AllDickgirlXFOn = true; var BDSMOn = true; var RapeOn = true; var ColoursOn = true; var ZoomOn = true; var GlobalTentacleFrequency = 15; var BadEndsOn = false; var IncestOn = true; var SlaveDebugging = false; LoadGlobalData(); mcLoader.loadClip('GenericActions.swf', Generic); mcLoader.loadClip('Tentacles.swf', Tentacles); mcLoader.loadClip('Contests.swf', Contests); mcLoader2.loadClip('Sounds.swf', Sounds); mcLoader2.loadClip('Houses.swf', HouseEvents); mcLoader2.loadClip('Backgrounds.swf', Backgrounds); DoIntroMore(true); var BitFlag1High; var BitFlag1Low; var BitFlag2High; var BitFlag2Low; var SlaveShopDescription; PlanningDay.ChangeSupervision.onPress = function () { Beep(); if (Supervise) { SetText('You will have ' + ServantName + ' supervise all of ' + SlaveName + '\'s daily actions. You can now do personal training.'); SuperviseYourself = 0; } else { SetText('You will personally supervise all of ' + SlaveName + '\'s daily actions, but you will not be able to do any personal training.'); SuperviseYourself = 1; } UpdateSupervision(); }; DiscussOrdinary.onPress = DoOrdinaryDiscussion; DiscussCongratulate.onPress = DoCongratulate; DiscussScold.onPress = DoScold; PlanningDay.SlaveShop.onPress = function () { DoActions(18); }; var ByYou; PlanningNight.BtnActionsLeft.onPress = SexActionsButton; PlanningNight.BtnActionsRight.onPress = SexActionsButton; SlaveMakerSelection.SlaverAppearance.gotoAndStop(1); VisitFortuneTeller.SlaverAppearance.gotoAndStop(1); var Appearance = 1; var cgender = 1; var capp = 0; var AppearanceArray = new Array(); var countMale = 0; var countFemale = 0; var countDickgirl = 0; var mcLoaderAP = new MovieClipLoader(); var loadListenerAP = new Object(); loadListenerAP.onLoadInit = NextAppearance; loadListenerAP.onLoadError = AppearanceError; mcLoaderAP.addListener(loadListenerAP); NextAppearance(); Cheat.onPress = function () { SetBitFlag1(9); VarObedience += 5; VarGold += 500; SpikedBraceletOK = 1; if (SlaveDebugging) { HarnessOK = 1; NymphsTiaraOK = 1; EquipItem(8); PonyTailOK = 1; EquipItem(1); DemonicBraOK = 1; SpikedBraceletOK = 1; HaloOK = 1; BitGagOK = 1; EquipItem(14); EquipItem(2); LeashOK = 1; EquipItem(7); Robe1OK = 1; Robe2OK = 1; Robe3OK = 1; Robe4OK = 1; Robe5OK = 1; Robe6OK = 1; HideRobes(); if (DressWorn != -1) { var v1 = DressWorn; RemoveDress(); if (v1 > 14) { DressWorn = -1; NakedChoice = 1; Naked = true; } else { WearDress(v1 + 1); } } else { NakedChoice += 1; if (NakedChoice > 10) { if (DickgirlXF == 0) { DickgirlXF = 1; } else { DickgirlXF = 0; } WearDress(0); NakedChoice = 0; Naked = false; } } ShowRobes(); } UpdateSlave(); }; PlanningButton.onPress = DoPlanningButton; MorningButton.onPress = DoMorningButton; SystemButton.onPress = function () { tempvar = 0; if (SystemMenu._visible == false) { if (NumFin == 0) { SystemMenu.gotoAndStop(1); } else { SystemMenu.gotoAndStop(2); } ActionsMenu._visible = false; SystemMenu._visible = true; } else { SystemMenu._visible = false; LoadSaveGames._visible = false; } Beep(); }; Quitter.onPress = DoLeaveButton; NextEnding.onPress = DoEndingNext; NextVisit.onPress = DoVisitNext; NextEvent.onPress = DoEventNext; NextGeneral.onPress = DoGeneralNext; ActionsMenu.StablesButton.onPress = DoStables; ActionsMenu.StablesButton.onRollOut = HideHints; ActionsMenu.StablesButton.onRollOver = function () { ServantSpeak('You can buy items for your ponygirl ' + SlaveName + ' to wear or to use.'); }; ActionsMenu.TailorButton.onPress = DoTailor; ActionsMenu.TailorButton.onRollOut = HideHints; ActionsMenu.TailorButton.onRollOver = function () { ServantSpeak('You can buy dresses for ' + SlaveName + ' to wear.'); }; ActionsMenu.SalonButton.onPress = DoSalon; ActionsMenu.SalonButton.onRollOut = HideHints; ActionsMenu.SalonButton.onRollOver = function () { ServantSpeak('She will visit a beauty salon'); }; ActionsMenu.ShopButton.onPress = DoShop; ActionsMenu.ShopButton.onRollOut = HideHints; ActionsMenu.ShopButton.onRollOver = function () { ServantSpeak('You can buy items and potions to aid your pupil.'); }; ActionsMenu.TakeAWalkButton.onPress = DoTakeAWalk; ActionsMenu.TakeAWalkButton.onRollOut = HideHints; ActionsMenu.TakeAWalkButton.onRollOver = function () { if (DoneWalk == 0 || DoneWalk == FreeWalkPlace) { ServantSpeak(ServantPronoun + ' will take ' + SlaveName + ' for a walk in a part of the town and meet the locals.'); } else { ServantSpeak(SlaveName + ' has already taken a walk today.'); } }; ActionsMenu.VisitButton.onPress = DoVisitMenu; ActionsMenu.VisitButton.onRollOut = HideHints; ActionsMenu.VisitButton.onRollOver = function () { if (DoneVisit == 1) { ServantSpeak('She has already visited someone today.'); } else { ServantSpeak('You will take ' + SlaveName + ' to visit a prominent person in town.'); } }; ActionsMenu.EquipmentButton.onPress = DoEquipment; ActionsMenu.EquipmentButton.onRollOut = HideHints; ActionsMenu.EquipmentButton.onRollOver = function () { ServantSpeak('You can choose which dress or items your pupil will wear.'); }; ActionsMenu.RulesButton.onPress = DoRules; ActionsMenu.RulesButton.onRollOut = HideHints; ActionsMenu.RulesButton.onRollOver = function () { ServantSpeak('Here you define what your pupil can do. These choices can affect her pleasure at being a slave.'); }; var SMHealth; var SMCurrentAttack; var SMCurrentDefence; var SMTempDefence; var SMNextAttack; var CombatTime; var SMSpeed; var Hit; var FirstArousalHit; var CombatStartMsg; var MonsterArray; var CurrentMonster; CombatCreatures.Tentacles.gotoAndStop(1); CombatCreatures.DevilGirls.gotoAndStop(1); CombatCreatures.Zombies.gotoAndStop(1); CombatSMAttack.gotoAndStop(1); CombatMonsterAttacks.gotoAndStop(1); CombatHits.gotoAndStop(1); AskQuestions.Question1.onPress = function () { HideQuestions(); NumEvent = EvChoice1; DoEventNext(); }; AskQuestions.Question2.onPress = function () { HideQuestions(); NumEvent = EvChoice2; DoEventNext(); }; AskQuestions.Question3.onPress = function () { HideQuestions(); NumEvent = EvChoice3; DoEventNext(); }; AskQuestions.Question4.onPress = function () { HideQuestions(); NumEvent = EvChoice4; DoEventNext(); }; AskQuestions.Question5.onPress = function () { HideQuestions(); NumEvent = EvChoice5; DoEventNext(); }; var tempstr; YesEvent.onPress = DoEventYes; NoEvent.onPress = DoEventNo; var EvilMineFlag; var Robe1Price; var Robe2Price; var Robe3Price; var Robe4Price; var Robe5Price; var Robe6Price; var DressAttributes; ObjectsLarge.gotoAndStop(1); ObjectScroll.gotoAndStop(1); ObjectTiara.gotoAndStop(1); ObjectPonyTail.gotoAndStop(1); ObjectKey.gotoAndStop(1); ObjectDragonRing.gotoAndStop(1); ObjectDemonicPendant.gotoAndStop(1); var fortunem; var fortuneq; var oldAssistantName; SlaveMakerSelection.OptionsButton.onPress = DoIntroOptions; VisitFortuneTeller.OptionsButton.onPress = DoIntroOptions; IntroOptionsMenu.AllGirlsOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.AllGirlsOff.onPress = function () { AssistantTrained = true; SaveGlobalData(); }; IntroOptionsMenu.AllGirlsOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Allow any girl to be trained. Normally you must train a servant first.\rCurrently you must train a servant first.'; }; IntroOptionsMenu.AllGirlsOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.AllGirlsOn.onPress = function () { AssistantTrained = false; SaveGlobalData(); }; IntroOptionsMenu.AllGirlsOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Allow any girl to be trained. Normally you must train a servant first.\rCurrently you may train any girl.'; }; IntroOptionsMenu.SoundsOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.SoundsOn.onPress = function () { SoundsOn = false; SaveGlobalData(); }; IntroOptionsMenu.SoundsOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Sound effects for selected events.\rThis is currently on.'; }; IntroOptionsMenu.SoundsOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.SoundsOff.onPress = function () { SoundsOn = true; SaveGlobalData(); }; IntroOptionsMenu.SoundsOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Sound effects for selected events.\rThis is currently off.'; }; IntroOptionsMenu.ColoursOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.ColoursOff.onPress = function () { ColoursOn = true; SaveGlobalData(); }; IntroOptionsMenu.ColoursOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Coloured background.\rThis is currently off.'; }; IntroOptionsMenu.ColoursOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.ColoursOn.onPress = function () { ColoursOn = false; SaveGlobalData(); }; IntroOptionsMenu.ColoursOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Coloured background.\rThis is currently on.'; }; IntroOptionsMenu.ZoomOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.ZoomOff.onPress = function () { ZoomOn = true; SaveGlobalData(); }; IntroOptionsMenu.ZoomOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Zoom effect when walking.\rThis is currently off.'; }; IntroOptionsMenu.ZoomOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.ZoomOn.onPress = function () { ZoomOn = false; SaveGlobalData(); }; IntroOptionsMenu.ZoomOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Zoom effect when walking.\rThis is currently on.'; }; IntroOptionsMenu.TentaclesOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentaclesOff.onPress = function () { if (Difficulty != -1) { TentaclesOn = 1; SaveGlobalData(); } }; IntroOptionsMenu.TentaclesOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Tentacled monsters roam the world seeking to breed with human women. They can kidnap and impregnate a girl if you are not careful.\rThis is currently not in the game.'; }; IntroOptionsMenu.TentaclesOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentaclesOn.onPress = function () { TentaclesOn = 0; SaveGlobalData(); }; IntroOptionsMenu.TentaclesOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Tentacled monsters roam the world seeking to breed with human women. They can kidnap and impregnate a girl if you are not careful.\rThis is currently part of the game.'; }; IntroOptionsMenu.TentacleRareOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentacleRareOff.onPress = function () { GlobalTentacleFrequency = 15; SaveGlobalData(); }; IntroOptionsMenu.TentacleRareOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Tentacle events are rare.\r4% on normal days, 30% near new moon.'; }; IntroOptionsMenu.TentacleRareOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentacleRareOn.onRollOver = IntroOptionsMenu.TentacleRareOff.onRollOver; IntroOptionsMenu.TentacleUncommonOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentacleUncommonOff.onPress = function () { GlobalTentacleFrequency = 33; SaveGlobalData(); }; IntroOptionsMenu.TentacleUncommonOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Tentacle events are uncommon.\r8% on normal days, 66% near new moon.'; }; IntroOptionsMenu.TentacleUncommonOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentacleUncommonOn.onRollOver = IntroOptionsMenu.TentacleUncommonOff.onRollOver; IntroOptionsMenu.TentacleOftenOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentacleOftenOff.onPress = function () { GlobalTentacleFrequency = 50; SaveGlobalData(); }; IntroOptionsMenu.TentacleOftenOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Tentacle events happen often.\r20% on normal days, 100% near new moon.'; }; IntroOptionsMenu.TentacleOftenOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.TentacleOftenOn.onRollOver = IntroOptionsMenu.TentacleOftenOff.onRollOver; IntroOptionsMenu.RapeOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.RapeOn.onPress = function () { RapeOn = false; SaveGlobalData(); }; IntroOptionsMenu.RapeOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Events involving rape can happen in the game. Please note this does not include tentacle assaults.'; }; IntroOptionsMenu.RapeOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.RapeOff.onPress = function () { RapeOn = true; SaveGlobalData(); }; IntroOptionsMenu.RapeOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Events involving rape will not happen in the game. Please note this does not include tentacle assaults.'; }; IntroOptionsMenu.DickgirlOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DickgirlOff.onPress = function () { DickgirlOn = 1; SaveGlobalData(); }; IntroOptionsMenu.DickgirlOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'There are rare true hermaphrodites in the world. There are also potions capable of transforming a girl into one of these (also called a dickgirl or futanari). Some girls can become one permanently, others just briefly. This is currently not in the game.'; }; IntroOptionsMenu.DickgirlOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DickgirlOn.onPress = function () { DickgirlOn = 0; SaveGlobalData(); }; IntroOptionsMenu.DickgirlOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'There are rare true hermaphrodites in the world. There are also potions capable of transforming a girl into one of these (also called a dickgirl or futanari). Some girls can become one permanently, others just briefly. This is currently part of the game.'; }; IntroOptionsMenu.AllDickgirlXFOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.AllDickgirlXFOff.onPress = function () { AllDickgirlXFOn = true; SaveGlobalData(); }; IntroOptionsMenu.AllDickgirlXFOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Allow any girl permanently transform into a hermaphrodite. Only some girls have dedicated graphics and stories for this mode so you will get generic graphics.\rCurrently only selected girls may transform.'; }; IntroOptionsMenu.AllDickgirlXFOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.AllDickgirlXFOn.onPress = function () { AllDickgirlXFOn = false; SaveGlobalData(); }; IntroOptionsMenu.AllDickgirlXFOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Allow any girl permanently transform into a hermaphrodite. Only some girls have dedicated graphics and stories for this mode so you will get generic graphics.\rCurrently any girl may transform.'; }; IntroOptionsMenu.BDSMOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.BDSMOn.onPress = function () { BDSMOn = false; SaveGlobalData(); }; IntroOptionsMenu.BDSMOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Training will include Bondage and Sado/Masochistic training methods. Note Spanking is not included here, but whipping is. Other such events can happen meeting others.\rCurrently these are in the game.'; }; IntroOptionsMenu.BDSMOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.BDSMOff.onPress = function () { BDSMOn = true; SaveGlobalData(); }; IntroOptionsMenu.BDSMOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Training will include Bondage and Sado/Masochistic training methods. Note Spanking is not included here, but whipping is. Other such events can happen meeting others.\rCurrently these are not in the game but some events may happen.'; }; IntroOptionsMenu.PonygirlOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.PonygirlOff.onPress = function () { PonygirlsOn = true; SaveGlobalData(); }; IntroOptionsMenu.PonygirlOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'You will be able to train her as a bound, submissive ponygirl. You will also meet other such slaves.\rThis is currently not in the game.'; }; IntroOptionsMenu.PonygirlOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.PonygirlOn.onPress = function () { PonygirlsOn = false; SaveGlobalData(); }; IntroOptionsMenu.PonygirlOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'You will be able to train her as a bound, submissive ponygirl. You will also meet other such slaves.\rThis is currently part of the game.'; }; IntroOptionsMenu.DifficultyEasyOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyEasyOff.onPress = function () { Difficulty = -1; SaveGlobalData(); }; IntroOptionsMenu.DifficultyEasyOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Easy difficulty.\rTentacle events are disabled.'; }; IntroOptionsMenu.DifficultyEasyOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyEasyOn.onRollOver = IntroOptionsMenu.DifficultyEasyOff.onRollOver; IntroOptionsMenu.DifficultyNormalOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyNormalOff.onPress = function () { Difficulty = 0; SaveGlobalData(); }; IntroOptionsMenu.DifficultyNormalOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Normal difficulty.'; }; IntroOptionsMenu.DifficultyNormalOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyNormalOn.onRollOver = IntroOptionsMenu.DifficultyNormalOff.onRollOver; IntroOptionsMenu.DifficultyDifficultOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyDifficultOff.onPress = function () { Difficulty = 1; SaveGlobalData(); }; IntroOptionsMenu.DifficultyDifficultOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Difficult difficulty.'; }; IntroOptionsMenu.DifficultyDifficultOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyDifficultOn.onRollOver = IntroOptionsMenu.DifficultyDifficultOff.onRollOver; IntroOptionsMenu.DifficultyHardOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyHardOff.onPress = function () { Difficulty = 2; SaveGlobalData(); }; IntroOptionsMenu.DifficultyHardOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Hard difficulty.'; }; IntroOptionsMenu.DifficultyHardOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.DifficultyHardOn.onRollOver = IntroOptionsMenu.DifficultyHardOff.onRollOver; IntroOptionsMenu.CombatOffOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatOffOff.onPress = function () { CombatDifficulty = -1; SaveGlobalData(); }; IntroOptionsMenu.CombatOffOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Combats are not fought, you automatically win.'; }; IntroOptionsMenu.CombatOffOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatOffOn.onRollOver = IntroOptionsMenu.CombatOffOff.onRollOver; IntroOptionsMenu.CombatStandardOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatStandardOff.onPress = function () { CombatDifficulty = 0; SaveGlobalData(); }; IntroOptionsMenu.CombatStandardOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Standard combat difficulty.'; }; IntroOptionsMenu.CombatStandardOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatStandardOn.onRollOver = IntroOptionsMenu.CombatStandardOff.onRollOver; IntroOptionsMenu.CombatDifficultOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatDifficultOff.onPress = function () { CombatDifficulty = 1; SaveGlobalData(); }; IntroOptionsMenu.CombatDifficultOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Difficult combats, 50% tougher.'; }; IntroOptionsMenu.CombatDifficultOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatDifficultOn.onRollOver = IntroOptionsMenu.CombatDifficultOff.onRollOver; IntroOptionsMenu.CombatLoseOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatLoseOff.onPress = function () { CombatDifficulty = 2; SaveGlobalData(); }; IntroOptionsMenu.CombatLoseOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Monsters are impossibly tough.'; }; IntroOptionsMenu.CombatLoseOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.CombatLoseOn.onRollOver = IntroOptionsMenu.CombatLoseOff.onRollOver; IntroOptionsMenu.CloseButton.onPress = DoIntroOptions; IntroOptionsMenu.BadEndsOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.BadEndsOff.onPress = function () { BadEndsOn = true; SaveGlobalData(); }; IntroOptionsMenu.BadEndsOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Game ending bad events cannot happen.'; }; IntroOptionsMenu.BadEndsOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.BadEndsOn.onPress = function () { BadEndsOn = false; SaveGlobalData(); }; IntroOptionsMenu.BadEndsOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Game ending bad events can happen.'; }; IntroOptionsMenu.IncestOff.onRollOut = IntroOptionsRollout; IntroOptionsMenu.IncestOff.onPress = function () { IncestOn = true; SaveGlobalData(); }; IntroOptionsMenu.IncestOff.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Incestuous events are not in the game.'; }; IntroOptionsMenu.IncestOn.onRollOut = IntroOptionsRollout; IntroOptionsMenu.IncestOn.onPress = function () { IncestOn = false; SaveGlobalData(); }; IntroOptionsMenu.IncestOn.onRollOver = function () { IntroOptionsMenu.SlaveInformation.text = 'Incestuous events are in the game.'; }; var ResumeStartLoad; GirlsStory.BigButton.onPress = ResumeShow; GirlsStory.GirlsStoryNext.onPress = ResumeShow; var SlaveGirlStatsShown; var SlaveExperience = 0; var SlaveActs = 0; var SlaveActArray; StatsTextBtn.onPress = function () { if (LargerTextField._visible) { if (YesEvent._visible && YesEvent._x == 530 || AskQuestions._x >= LargerTextField._x && AskQuestions._visible) { return undefined; } } Beep(); ShowStatistics(!(StatisticsGroup._visible || SlaveMakerStatisticsGroup._visible)); }; StatisticsGroup.YourStats.onPress = function () { SlaveGirlStatsShown = false; ShowStatistics(true); }; SlaveMakerStatisticsGroup.HerStats.onPress = function () { SlaveGirlStatsShown = true; ShowStatistics(true); }; StatisticsGroup.CharismaHint.currStat = 0; StatisticsGroup.CharismaHint.onRollOver = StatHintRollover; StatisticsGroup.CharismaHint.onRollOut = StatHintRollout; StatisticsGroup.SensibilityHint.currStat = 1; StatisticsGroup.SensibilityHint.onRollOver = StatHintRollover; StatisticsGroup.SensibilityHint.onRollOut = StatHintRollout; StatisticsGroup.RefinementHint.currStat = 2; StatisticsGroup.RefinementHint.onRollOver = StatHintRollover; StatisticsGroup.RefinementHint.onRollOut = StatHintRollout; StatisticsGroup.IntelligenceHint.currStat = 3; StatisticsGroup.IntelligenceHint.onRollOver = StatHintRollover; StatisticsGroup.IntelligenceHint.onRollOut = StatHintRollout; StatisticsGroup.MoralityHint.currStat = 4; StatisticsGroup.MoralityHint.onRollOver = StatHintRollover; StatisticsGroup.MoralityHint.onRollOut = StatHintRollout; StatisticsGroup.ConstitutionHint.currStat = 5; StatisticsGroup.ConstitutionHint.onRollOver = StatHintRollover; StatisticsGroup.ConstitutionHint.onRollOut = StatHintRollout; StatisticsGroup.CookingHint.currStat = 6; StatisticsGroup.CookingHint.onRollOver = StatHintRollover; StatisticsGroup.CookingHint.onRollOut = StatHintRollout; StatisticsGroup.CleaningHint.currStat = 7; StatisticsGroup.CleaningHint.onRollOver = StatHintRollover; StatisticsGroup.CleaningHint.onRollOut = StatHintRollout; StatisticsGroup.ConversationHint.currStat = 8; StatisticsGroup.ConversationHint.onRollOver = StatHintRollover; StatisticsGroup.ConversationHint.onRollOut = StatHintRollout; StatisticsGroup.FuckHint.currStat = 9; StatisticsGroup.FuckHint.onRollOver = StatHintRollover; StatisticsGroup.FuckHint.onRollOut = StatHintRollout; StatisticsGroup.BlowjobHint.currStat = 10; StatisticsGroup.BlowjobHint.onRollOver = StatHintRollover; StatisticsGroup.BlowjobHint.onRollOut = StatHintRollout; StatisticsGroup.TemperamentHint.currStat = 11; StatisticsGroup.TemperamentHint.onRollOver = StatHintRollover; StatisticsGroup.TemperamentHint.onRollOut = StatHintRollout; StatisticsGroup.NymphomaniaHint.currStat = 12; StatisticsGroup.NymphomaniaHint.onRollOver = StatHintRollover; StatisticsGroup.NymphomaniaHint.onRollOut = StatHintRollout; StatisticsGroup.ObedienceHint.currStat = 13; StatisticsGroup.ObedienceHint.onRollOver = StatHintRollover; StatisticsGroup.ObedienceHint.onRollOut = StatHintRollout; StatisticsGroup.LibidoHint.currStat = 14; StatisticsGroup.LibidoHint.onRollOver = StatHintRollover; StatisticsGroup.LibidoHint.onRollOut = StatHintRollout; StatisticsGroup.TirednessHint.currStat = 15; StatisticsGroup.TirednessHint.onRollOver = StatHintRollover; StatisticsGroup.TirednessHint.onRollOut = StatHintRollout; StatisticsGroup.JoyHint.currStat = 16; StatisticsGroup.JoyHint.onRollOver = StatHintRollover; StatisticsGroup.JoyHint.onRollOut = StatHintRollout; StatisticsGroup.ReputationHint.currStat = 17; StatisticsGroup.ReputationHint.onRollOver = StatHintRollover; StatisticsGroup.ReputationHint.onRollOut = StatHintRollout; StatisticsGroup.SpecialHint.currStat = 18; StatisticsGroup.SpecialHint.onRollOver = StatHintRollover; StatisticsGroup.SpecialHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.ConversationHint.currStat = 0; SlaveMakerStatisticsGroup.ConversationHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.ConversationHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.ConstitutionHint.currStat = 1; SlaveMakerStatisticsGroup.ConstitutionHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.ConstitutionHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.RenownHint.currStat = 2; SlaveMakerStatisticsGroup.RenownHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.RenownHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.AttackHint.currStat = 3; SlaveMakerStatisticsGroup.AttackHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.AttackHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.DefenceHint.currStat = 4; SlaveMakerStatisticsGroup.DefenceHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.DefenceHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.LibidoHint.currStat = 5; SlaveMakerStatisticsGroup.LibidoHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.LibidoHint.onRollOut = StatHintRollout; SlaveMakerStatisticsGroup.CorruptionHint.currStat = 6; SlaveMakerStatisticsGroup.CorruptionHint.onRollOver = SMStatHintRollover; SlaveMakerStatisticsGroup.CorruptionHint.onRollOut = StatHintRollout; TakeAWalkMenu.Palace.onPress = function () { DoWalk(5); }; TakeAWalkMenu.Palace.onRollOver = function () { ServantSpeak('The palace of the Lord of the city and kingdom. Many public areas are accessible to the nobles and those on businesses for them. A certain school is based in a discrete building.'); }; TakeAWalkMenu.Palace.onRollOut = HideHints; TakeAWalkMenu.TownCenter.onPress = function () { DoWalk(3); }; TakeAWalkMenu.TownCenter.onRollOver = function () { ServantSpeak('The Town Center includes the markets and many small shops. Being near to the palace it is well patrolled by the guard.'); }; TakeAWalkMenu.TownCenter.onRollOut = HideHints; TakeAWalkMenu.Docks.onPress = function () { DoWalk(6); }; TakeAWalkMenu.Docks.onRollOver = function () { ServantSpeak('The river docks where most trade in and out of the city passes. Slaves are a major commodity of the city so there are many slave pens for slaves in transit.'); }; TakeAWalkMenu.Docks.onRollOut = HideHints; TakeAWalkMenu.Ruins.onPress = function () { DoWalk(8); }; TakeAWalkMenu.Ruins.onRollOver = function () { ServantSpeak('A wrecked temple of the Old Gods. No one visits here and some strange people and things have moved in.'); }; TakeAWalkMenu.Ruins.onRollOut = HideHints; TakeAWalkMenu.Farm.onPress = function () { DoWalk(7); }; TakeAWalkMenu.Farm.onRollOver = function () { ServantSpeak('The main farming areas for the city. Most just grow normal foodstuffs, but some have more exotic crops.'); }; TakeAWalkMenu.Farm.onRollOut = HideHints; TakeAWalkMenu.Farm.onPress = function () { DoWalk(7); }; TakeAWalkMenu.Farm.onRollOver = function () { ServantSpeak('The main farming areas for the city. Most just grow normal foodstuffs, but some have more exotic crops.'); }; TakeAWalkMenu.Farm.onRollOut = HideHints; TakeAWalkMenu.SlaveMarket.onPress = function () { DoVisitSlaveMarket(); }; TakeAWalkMenu.SlaveMarket.onRollOver = function () { ServantSpeak('Here you many choose to buy a different slave (load games, save games or restart)'); }; TakeAWalkMenu.SlaveMarket.onRollOut = HideHints; TakeAWalkMenu.Lake.onPress = function () { DoWalk(2); }; TakeAWalkMenu.Lake.onRollOver = function () { ServantSpeak('A beautiful fresh water lake, it\'s pure waters are described in holy texts.'); }; TakeAWalkMenu.Lake.onRollOut = HideHints; TakeAWalkMenu.Forest.onPress = function () { DoWalk(1); }; TakeAWalkMenu.Forest.onRollOver = function () { ServantSpeak('The forest is deep and wild. Few people enter it due to tales of inhuman creatures and wild animals. Some odd people make their homes there.'); }; TakeAWalkMenu.Forest.onRollOut = HideHints; TakeAWalkMenu.Slums.onPress = function () { DoWalk(4); }; TakeAWalkMenu.Slums.onRollOver = function () { ServantSpeak('The slums are an unregulated, uncontrolled place where the poor of the city live, outside the safety of the city walls.'); }; TakeAWalkMenu.Slums.onRollOut = HideHints; TakeAWalkMenu.DealerHome.onPress = function () { DoVisitDealer(); }; TakeAWalkMenu.AstridHome.onPress = function () { DoWalk(1, -1); }; TakeAWalkMenu.SeerHome.onPress = function () { DoVisitSeer(true); }; TakeAWalkMenu.SalesmanHome.onPress = function () { DoVisitSalesman(); }; VisitMenu.Prostitute.onPress = function () { DoVisit(3); }; VisitMenu.Barmaid.onPress = function () { DoVisit(2); }; VisitMenu.Maid.onPress = function () { DoVisit(5); }; VisitMenu.ShopOwner.onPress = function () { DoVisit(1); }; VisitMenu.LadyFarun.onPress = function () { DoVisit(9); }; VisitMenu.HighClassProstitute.onPress = function () { DoVisit(4); }; VisitMenu.Knight.onPress = function () { DoVisit(6); }; VisitMenu.Count.onPress = function () { DoVisit(7); }; VisitMenu.Lord.onPress = function () { DoVisit(8); }; var ItemPrice; Dealer.Zodai.onPress = function () { PurchaseDrug(16); }; Dealer.Zodai.onRollOver = function () { if (IsHints()) { PurchaseDrug(16, true); } }; Dealer.Gaman.onPress = function () { PurchaseDrug(17); }; Dealer.Gaman.onRollOver = function () { if (IsHints()) { PurchaseDrug(17, true); } }; Dealer.Biyaku.onPress = function () { PurchaseDrug(18); }; Dealer.Biyaku.onRollOver = function () { if (IsHints()) { PurchaseDrug(18, true); } }; Dealer.Dorei.onPress = function () { PurchaseDrug(15); }; Dealer.Dorei.onRollOver = function () { if (IsHints()) { PurchaseDrug(15, true); } }; Dealer.Ishinai.onPress = function () { PurchaseDrug(19); }; Dealer.Ishinai.onRollOver = function () { if (IsHints()) { PurchaseDrug(19, true); } }; StablesMenu.BtnCart.onPress = function () { PurchasePonyCart(false); }; StablesMenu.BtnCart.onRollOver = function () { if (IsHints()) { PurchasePonyCart(true); } }; StablesMenu.BtnCart.onRollOut = HideHints; StablesMenu.BtnVibratorPanties.onPress = function () { PurchaseVibratorPanties(false); }; StablesMenu.BtnVibratorPanties.onRollOver = function () { if (IsHints()) { PurchaseVibratorPanties(true); } }; StablesMenu.BtnVibratorPanties.onRollOut = HideHints; StablesMenu.BtnPonyBoots.onPress = function () { PurchasePonyBoots(false); }; StablesMenu.BtnPonyBoots.onRollOver = function () { if (IsHints()) { PurchasePonyBoots(true); } }; StablesMenu.BtnPonyBoots.onRollOut = HideHints; StablesMenu.BtnNippleChain.onPress = function () { PurchaseNippleChain(false); }; StablesMenu.BtnNippleChain.onRollOver = function () { if (IsHints()) { PurchaseNippleChain(true); } }; StablesMenu.BtnNippleChain.onRollOut = HideHints; var addedone; TailorMenu.BtnDress1.onPress = function () { PurchaseDress(1, Robe1OK, TailorMenu.Dress1.text, Robe1Description, Robe1Price); }; TailorMenu.BtnDress1.onRollOver = function () { if (IsHints()) { PurchaseDress(1, Robe1OK, TailorMenu.Dress1.text, Robe1Description, Robe1Price, true); } }; TailorMenu.BtnDress1.onRollOut = HideHints; TailorMenu.BtnDress2.onPress = function () { PurchaseDress(2, Robe2OK, TailorMenu.Dress2.text, Robe2Description, Robe2Price); }; TailorMenu.BtnDress2.onRollOver = function () { if (IsHints()) { PurchaseDress(2, Robe2OK, TailorMenu.Dress2.text, Robe2Description, Robe2Price, true); } }; TailorMenu.BtnDress2.onRollOut = HideHints; TailorMenu.BtnDress3.onPress = function () { PurchaseDress(3, Robe3OK, TailorMenu.Dress3.text, Robe3Description, Robe3Price); }; TailorMenu.BtnDress3.onRollOver = function () { if (IsHints()) { PurchaseDress(3, Robe3OK, TailorMenu.Dress3.text, Robe3Description, Robe3Price, true); } }; TailorMenu.BtnDress3.onRollOut = HideHints; TailorMenu.BtnDress4.onPress = function () { PurchaseDress(4, Robe4OK, TailorMenu.Dress4.text, Robe4Description, Robe4Price); }; TailorMenu.BtnDress4.onRollOver = function () { if (IsHints()) { PurchaseDress(4, Robe4OK, TailorMenu.Dress4.text, Robe4Description, Robe4Price, true); } }; TailorMenu.BtnDress4.onRollOut = HideHints; TailorMenu.BtnDress5.onPress = function () { PurchaseDress(5, Robe5OK, TailorMenu.Dress5.text, Robe5Description, Robe5Price); }; TailorMenu.BtnDress5.onRollOver = function () { if (IsHints()) { PurchaseDress(5, Robe5OK, TailorMenu.Dress5.text, Robe5Description, Robe5Price, true); } }; TailorMenu.BtnDress5.onRollOut = HideHints; TailorMenu.BtnDress6.onPress = function () { PurchaseDress(6, Robe6OK, TailorMenu.Dress6.text, 'Unknown effects', Robe6Price); }; TailorMenu.BtnDress6.onRollOver = function () { if (IsHints()) { PurchaseDress(6, Robe6OK, TailorMenu.Dress6.text, 'Unknown effects', Robe6Price, true); } }; TailorMenu.BtnDress6.onRollOut = HideHints; TailorMenu.BunnySuit.onPress = function () { PurchaseDress(7, BunnySuitOK, 'Bunny Suit', BunnySuitDescription, 150); }; TailorMenu.BunnySuit.onRollOver = function () { if (IsHints()) { PersonSpeak('Tailor', 'Bunny Suit\r\r' + BunnySuitDescription + '\r' + PurchasePrice(150) + 'GP'); } }; TailorMenu.BunnySuit.onRollOut = HideHints; TailorMenu.Lingerie.onPress = function () { PurchaseDress(8, LingerieOK, 'Lingerie', LingerieDescription, 70); }; TailorMenu.Lingerie.onRollOver = function () { if (IsHints()) { PersonSpeak('Tailor', 'Lingerie\r\r' + LingerieDescription + '\r' + PurchasePrice(70) + 'GP'); } }; TailorMenu.Lingerie.onRollOut = HideHints; TailorMenu.MaidUniform.onPress = function () { PurchaseDress(9, MaidUniformOK, 'Maid Uniform', MaidUniformDescription, 80); }; TailorMenu.MaidUniform.onRollOver = function () { if (IsHints()) { PersonSpeak('Tailor', 'Maid Uniform\r\r' + MaidUniformDescription + '\r' + PurchasePrice(80) + 'GP'); } }; TailorMenu.MaidUniform.onRollOut = HideHints; TailorMenu.Swimsuit.onPress = function () { PurchaseDress(10, SwimsuitOK, 'Swimsuit', SwimsuitDescription, 60); }; TailorMenu.Swimsuit.onRollOver = function () { if (IsHints()) { PersonSpeak('Tailor', 'Swimsuit\r\r' + SwimsuitDescription + '\r' + PurchasePrice(60) + 'GP'); } }; TailorMenu.Swimsuit.onRollOut = HideHints; SalonMenu.BtnVanityCase.onPress = function () { PurchaseVanityCase(false); }; SalonMenu.BtnVanityCase.onRollOver = function () { if (IsHints()) { PurchaseVanityCase(true); } }; SalonMenu.BtnVanityCase.onRollOut = HideHints; SalonMenu.BtnPiercings.onPress = function () { PurchasePiercings(false); }; SalonMenu.BtnPiercings.onRollOver = function () { if (IsHints()) { PurchasePiercings(true); } }; SalonMenu.BtnPiercings.onRollOut = HideHints; SalonMenu.BtnSkinCare.onPress = function () { PurchaseSkinCare(false); }; SalonMenu.BtnSkinCare.onRollOver = function () { if (IsHints()) { PurchaseSkinCare(true); } }; SalonMenu.BtnSkinCare.onRollOut = HideHints; SalonMenu.BtnMakeUp.onPress = function () { PurchaseMakeUp(false); }; SalonMenu.BtnMakeUp.onRollOver = function () { if (IsHints()) { PurchaseMakeUp(true); } }; SalonMenu.BtnMakeUp.onRollOut = HideHints; SalonMenu.BtnHairStyling.onPress = function () { PurchaseHairStyling(false); }; SalonMenu.BtnHairStyling.onRollOver = function () { if (IsHints()) { PurchaseHairStyling(true); } }; SalonMenu.BtnHairStyling.onRollOut = HideHints; SalonMenu.BtnNippleRings.onPress = function () { PurchaseNippleRings(false); }; SalonMenu.BtnNippleRings.onRollOver = function () { if (IsHints()) { PurchaseNippleRings(true); } }; SalonMenu.BtnNippleRings.onRollOut = HideHints; ItemSalesman.HaloButton.onPress = PurchaseHalo; ItemSalesman.HaloButton.onRollOut = ItemSalesManRollOut; ItemSalesman.HaloButton.onRollOver = function () { if (IsHints()) { PurchaseHalo(true); } }; ItemSalesman.HarnessButton.onPress = PurchaseHarness; ItemSalesman.HarnessButton.onRollOut = ItemSalesManRollOut; ItemSalesman.HarnessButton.onRollOver = function () { if (IsHints()) { PurchaseHarness(true); } }; ItemSalesman.SpikedButton.onPress = PurchaseSpikedBracelet; ItemSalesman.SpikedButton.onRollOut = ItemSalesManRollOut; ItemSalesman.SpikedButton.onRollOver = function () { if (IsHints()) { PurchaseSpikedBracelet(true); } }; ItemSalesman.HandcuffButton.onPress = PurchaseHandcuffBracelet; ItemSalesman.HandcuffButton.onRollOut = ItemSalesManRollOut; ItemSalesman.HandcuffButton.onRollOver = function () { if (IsHints()) { PurchaseHandcuffBracelet(true); } }; ItemSalesman.LeashButton.onPress = PurchaseLeash; ItemSalesman.LeashButton.onRollOut = ItemSalesManRollOut; ItemSalesman.LeashButton.onRollOver = function () { if (IsHints()) { PurchaseLeash(true); } }; ItemSalesman.TiaraButton.onPress = PurchaseNymphsTiara; ItemSalesman.TiaraButton.onRollOut = ItemSalesManRollOut; ItemSalesman.TiaraButton.onRollOver = function () { if (IsHints()) { PurchaseNymphsTiara(true); } }; ItemSalesman.OroborusButton.onPress = PurchaseOroborusCandle; ItemSalesman.OroborusButton.onRollOut = ItemSalesManRollOut; ItemSalesman.OroborusButton.onRollOver = function () { if (IsHints()) { PurchaseOroborusCandle(true); } }; var DemonicPendantDescription = 'Demonic Pendant: Fills her dreams with visions of fucking.\r\rCharisma + 2 each day\rFuck + 1 each day\rMorality never above 25'; var DemonicPendantDescriptionOF = 'Demonic Pendant: Fills her dreams with visions of fucking.\r\rCharisma + 2 each day\rFuck + 1 each day\rFaith never above 25'; var AngelsTearDescription = 'Angel\'s Tear: A crystallized tear of an angel that helps her understanding.\r\rSensibility + 1 each day\rMorality never below 50'; var ChaliceDescription = 'Torun\'s Chalice: A drinking chalice reputed to belong to a hero of the old faith.\r\rConstitution + 1 each day\rFaith never below 50'; var OroborusCandleDescription = 'Oroborus Candle: The eternally burning candle, a gift of the old gods. Every night it will give dreams and visions of the gods.\r\rFaith + 2, Lust + 1 each day'; var HaloDescription = 'Angelic Halo: An angelic halo that links her to divinity.\r\rMorality + 2 each day'; var VibratorPantiesDesciption = 'Vibrator Panties: Stimulates her greatly but not to orgasm.\r\rSensibility + 2\rMore accustomed to dildos\rLust + 7 each day without being fucked.'; var LeashPonyDescription = 'Leash: A collar and chain to control her. Often worn by Ponygirls.\r\rObedience + 11\rIntelligence - 5\rTemperament - 5\rShe must be more loyal.'; var LeashDescription = 'Leash: A collar and chain to control her.\r\rObedience + 11\rIntelligence - 5\rTemperament - 5\rShe must be more loyal.'; var DemonicBraDescription; var PonyTailDescription = 'Pony Tail: Anal plug in the form of a pony\'s tail.\r\rSensibility + 5, Lust + 5\rShe is more interested in bondage.'; var NymphsTiaraDescription = 'Nymph\'s Tiara: The tiara from a seductive wood nymph.\r\rCharisma + 20\rSensibility + 20\rLust & Nymphomania never below 50'; var SpikedBraceletDesciption = 'Spiked Bracelet: An aggressive bracelet.\r\rTemperament + 2 each day'; var HandcuffBraceletDescription = 'Handcuff Bracelet: A submissive bracelet.\r\rObedience + 1 each day'; var HarnessDescription = 'Harness: Tight underclothing with a crotch rope. Essential for Ponygirls.\r\rLust + 2 per day\rShe is more interested in bondage.'; var DragonRingDescription = 'Dragon Ring: Gives her the determination of a Dragon.\r\rTemperament + 20'; var ApronDesciption = 'Apron: An excellent apron to help with housework.\r\rCooking + 10\rCleaning + 10'; var BitGagDescription = 'Bit Gag: Lead her like a pony.\r\rTalk Rule Off\rPrevents Dating\rObedience + 5, Temperament - 5, Joy - 5'; var StrapOnDescription = 'Strap-On: She is now a cock-sure lesbian.\r\rTemperament + 5, + 1 Fuck & - 1 Lust during Lesbian Sex'; var FaeriesRingDescription = 'Faerie\'s Ring: Will slowly transform her into one of the faerie folk.\r\rCharisma + 1 each day\rSensibility + 1 each day'; var NippleChainDescription = 'Nipple Chain: A chain connecting her breast piercings.\r\rLust + 1 per day\rOften worn by ponygirls, her breasts are more sensitive.'; var NippleRingsDescription = 'Nipple Rings: Ring shaped nipple piercings.\r\rLust + 1 per day\rHer breasts are more sensitive.'; var LingerieDescription = 'Sexy underwear to make her feel sensual and to arouse others.\rShe can work clothed (as such) in the Sleazy Bar. Earns a little more there too, and also in the Brothel.'; var BunnySuitDescription = 'Sexy costume commonly worn in Sleazy Bars (cat costumes are also popular).\rShe can work clothed in the Sleazy Bar. Earns more there too.'; var MaidUniformDescription = 'A uniform for working as a maid, also used in some restaurants.\rSmall bonus to restaurant work and allows you to deliver her as a maid slave (allows maid ending).\r+1 Cooking, +1 Cleaning'; var SwimsuitDescription = 'A swimsuit, will allow her to play on the beach, once it opens fully, in the near future.\rShe can visit the beach, swim in the lake and allows some jobs and other actions.'; var IntroPage; var IntroPages; IntroTitle.NewGame.onPress = DoNewGame; IntroTitle.BtnCredits.onPress = DoCredits; IntroTitle.BtnHowToPlay.onPress = HowToPlay; IntroHowToPlay.Leave.onPress = function () { IntroBackground._visible = false; IntroHowToPlay._visible = false; IntroCredits._visible = false; IntroTitle._visible = true; Beep(); }; IntroHowToPlay.HowToNext.onPress = function () { IntroHowToPlay.gotoAndStop(IntroHowToPlay._currentframe + 1); if (IntroHowToPlay._currentframe == 4) { IntroHowToPlay.HowToNext._visible = false; } Beep(); }; IntroTitle.LoadGame.onPress = DoLoadSave; var mylv = new LoadVars(); mylv.onLoad = DataLoaded; SlaveSelection.SlaveChoice1.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice1.onRollOver = SlaveChoiceRollover; SlaveSelection.SlaveChoice2.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice2.onRollOver = SlaveChoiceRollover; SlaveSelection.SlaveChoice3.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice3.onRollOver = SlaveChoiceRollover; SlaveSelection.SlaveChoice4.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice4.onRollOver = SlaveChoiceRollover; SlaveSelection.SlaveChoice5.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice5.onRollOver = SlaveChoiceRollover; SlaveSelection.SlaveChoice6.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice6.onRollOver = SlaveChoiceRollover; SlaveSelection.SlaveChoice7.onPress = SlaveChoicePress; SlaveSelection.SlaveChoice7.onRollOver = SlaveChoiceRollover; var mcLoaderSS1; var mcLoaderSS2; var mcLoaderSS3; var mcLoaderSS4; var mcLoaderSS5; var mcLoaderSS6; var mcLoaderSS7; var loadListener1 = new Object(); var loadListener2 = new Object(); var loadListener3 = new Object(); var loadListener4 = new Object(); var loadListener5 = new Object(); var loadListener6 = new Object(); var loadListener7 = new Object(); IntroCredits.BtnLeave.onPress = function () { IntroCredits._visible = false; IntroTitle._visible = true; }; IntroCredits.BtnMore.onPress = function () { IntroCredits.gotoAndStop(IntroCredits._currentframe + 1); }; IntroLoadButton.onPress = function () { DoLoadSave(true); }; IntroNextButton.onPress = DoIntroNext; Intro1.BigButton.onPress = DoIntroNext; Intro2.BigButton.onPress = DoIntroNext; Intro3.BigButton.onPress = DoIntroNext; Intro4.BigButton.onPress = DoIntroNext; Intro5.BigButton.onPress = DoIntroNext; Intro7.BigButton.onPress = DoIntroNext; Intro8.BigButton.onPress = DoIntroNext; SlaveMakerSelection.Gender.onPress = function () { ++Gender; if (Gender > 3) { Gender = 1; } OldGender = Gender; ShowSlaveMaker(true); Beep(); }; SlaveMakerSelection.Appearance.onPress = function () { --Appearance; ShowSlaveMaker(true); Beep(); }; SlaveMakerSelection.Talent1.onPress = function () { Talent = Gender * 3 - 1; SlaveMakerName = SlaveMakerSelection.SlaveMakerName.text; DoIntroNext(); }; SlaveMakerSelection.Talent2.onPress = function () { Talent = 1; SlaveMakerName = SlaveMakerSelection.SlaveMakerName.text; DoIntroNext(); }; SlaveMakerSelection.Talent3.onPress = function () { Talent = Gender * 3; SlaveMakerName = SlaveMakerSelection.SlaveMakerName.text; DoIntroNext(); }; SlaveMakerSelection.Talent4.onPress = function () { Talent = Gender * 3 + 1; SlaveMakerName = SlaveMakerSelection.SlaveMakerName.text; DoIntroNext(); }; SlaveMakerSelection.Talent5.onPress = function () { Talent = 0; SlaveMakerName = SlaveMakerSelection.SlaveMakerName.text; DoIntroNext(); }; SlaveMakerFaith.FaithNew.onPress = function () { SMFaith = 1; DoIntroNext(); }; SlaveMakerFaith.FaithOld.onPress = function () { SMFaith = 2; DoIntroNext(); }; SlaveMakerFaith.FaithNone.onPress = function () { SMFaith = 3; DoIntroNext(); }; SlaveMakerHousing.House.onPress = function () { House = SlaveMakerHousing.Housing._currentframe; DoIntroNext(); }; SlaveMakerHousing.Left.onPress = function () { var v1 = SlaveMakerHousing.Housing._currentframe + 1; if (v1 == 5 && Talent != 1) { v1 += 1; } if (v1 > 7) { v1 = 1; } SlaveMakerHousing.Housing.gotoAndStop(v1); }; SlaveMakerHousing.Right.onPress = function () { var v1 = SlaveMakerHousing.Housing._currentframe - 1; if (v1 < 1) { v1 = 7; } if (v1 == 5 && Talent != 1) { v1 -= 1; } SlaveMakerHousing.Housing.gotoAndStop(v1); }; SlaveSelection.IntroMoreButton.onPress = DoIntroMore; var loadsc; var loadplace; var oldfileServant; SystemMenu.BtnNewSlave.onPress = function () { if (NumFin == 0) { NumFin = -1; } DoRestart(false); }; SystemMenu.BtnRetire.onPress = function () { DoRestart(true); }; SystemMenu.BtnLoad.onPress = function () { DoLoadSave(true); }; SystemMenu.BtnSave.onPress = function () { DoLoadSave(false); }; SystemMenu.BtnComplete.onPress = function () { if (NumFin != 0) { SetText('You are already finished training her.'); } else { SetText(''); TrainingComplete(); } }; LoadSaveGames.LeaveButton.onPress = DoLoadSave; LoadSaveGames.Game1.onPress = function () { if (loadsc) { LoadGame(1); } else { SaveGame(1); } }; LoadSaveGames.Game2.onPress = function () { if (loadsc) { LoadGame(2); } else { SaveGame(2); } }; LoadSaveGames.Game3.onPress = function () { if (loadsc) { LoadGame(3); } else { SaveGame(3); } }; LoadSaveGames.Game4.onPress = function () { if (loadsc) { LoadGame(4); } else { SaveGame(4); } }; LoadSaveGames.Game5.onPress = function () { if (loadsc) { LoadGame(5); } else { SaveGame(5); } }; LoadSaveGames.Game6.onPress = function () { if (loadsc) { LoadGame(6); } else { SaveGame(6); } }; LoadSaveGames.Game7.onPress = function () { if (loadsc) { LoadGame(7); } else { SaveGame(7); } }; LoadSaveGames.Game8.onPress = function () { if (loadsc) { LoadGame(8); } else { SaveGame(8); } }; var bControl = false; keyListenerMain.onKeyDown = function () { var v1 = Key.getCode(); var v2 = Key.getAscii(); if (v1 == 17) { bControl = true; } if (v1 == 13) { if (Quitter._visible) { DoLeaveButton(); return undefined; } if (NextEnding._visible) { DoEndingNext(); return undefined; } if (NextVisit._visible) { DoVisitNext(); return undefined; } if (NextEvent._visible) { DoEventNext(); return undefined; } if (NextGeneral._visible) { DoGeneralNext(); return undefined; } if (LoadSaveGames._visible) { DoLoadSave(true); return undefined; } if (IntroNextButton._visible) { DoIntroNext(); return undefined; } if (IntroOptionsMenu._visible) { DoIntroOptions(); return undefined; } if (IntroHowToPlay._visible) { IntroHowToPlay.HowToNext.onPress(); return undefined; } if (SlaveMakerHousing._visible) { SlaveMakerHousing.House.onPress(); return undefined; } if (GirlsStory._visible) { ResumeShow(); return undefined; } if (SlaveSelection._visible) { DoIntroMore(); return undefined; } } if (!bControl && (v1 > 111 && v1 < 120)) { LoadGame(v1 - 111); return undefined; } if (YesEvent._visible) { if (v2 == 89 || v2 == 121) { DoEventYes(); return undefined; } else { if (v2 == 78 || v2 == 110) { DoEventNo(); return undefined; } } } if (ActionsMenu._visible) { ActionShortcuts(v1); } if (MorningButton._visible) { if (bControl && (v1 > 111 && v1 < 120)) { SaveGame(v1 - 111); return undefined; } switch (v2) { case 77: case 65: case 97: case 109: DoMorningButton(); return undefined; case 80: case 112: DoPlanningButton(); return undefined; case 83: case 115: SaveGame(1); return undefined; case 76: case 108: LoadGame(1); return undefined; } } else { if (PlanningDay._visible) { if (bControl && (v1 > 111 && v1 < 120)) { SaveGame(v1 - 111); return undefined; } switch (v1) { case 65: DoActions(13); break; case 66: DoActions(14); break; case 67: DoActions(1); break; case 68: DoActions(4); break; case 69: DoActions(8); break; case 82: DoActions(17); break; case 72: DoActions(16); break; case 75: DoActions(19); break; case 76: DoActions(2); break; case 77: DoActions(5); break; case 78: DoActions(9); break; case 79: if (ShowSlaveShop == 1) { DoActions(18); } break; case 80: DoActions(11); break; case 83: DoActions(6); break; case 84: DoActions(7); break; case 85: DoActions(12); break; case 73: if (DonePonygirl == 1) { DoActions(3); } break; case 87: if (DonePonygirl == 0) { DoActions(3); } break; case 88: DoActions(10); break; case 90: DoActions(15); } } else { if (PlanningNight._visible) { switch (v1) { case 37: case 39: SexActionsButton(); break; case 51: if (AskQuestions._visible == false) { DoSexActions(19); } break; case 54: DoSexActions(20); break; case 65: DoSexActions(7); break; case 66: if (BDSMOn == 1) { DoSexActions(12); } break; case 67: DoSexActions(3); break; case 68: DoSexActions(9); break; case 69: DoSexActions(16); break; case 70: DoSexActions(4); break; case 71: DoSexActions(15); break; case 72: DoSexActions(1); break; case 73: DoSexActions(23); break; case 74: DoSexActions(5); break; case 75: DoSexActions(22); break; case 76: DoSexActions(11); break; case 77: DoSexActions(14); break; case 78: DoSexActions(13); break; case 79: DoSexActions(2); break; case 80: DoSexActions(10); break; case 82: DoSexActions(21); break; case 83: DoSexActions(18); break; case 84: DoSexActions(6); break; case 85: DoSexActions(8); break; case 87: DoSexActions(25); break; case 89: if (PonygirlAware > 0) { DoSexActions(17); } break; case 90: DoSexActions(24); } } else { if (SMPlanningDay._visible) { SlaveMakerPlanningShortcuts(v1); } else { if (DiscussOrdinary._visible) { switch (v2) { case 13: case 79: case 111: DoOrdinaryDiscussion(); break; case 67: case 99: DoCongratulate(); break; case 83: case 115: DoScold(); } } else { if (IntroTitle._visible) { switch (v2) { case 76: case 108: DoLoadSave(true); return undefined; case 13: case 78: case 110: DoNewGame(); return undefined; case 67: case 99: DoCredits(); return undefined; case 72: case 104: HowToPlay(); return undefined; } } else { if (LoadSaveGames._visible) { if (v1 > 48 && v1 < 57) { if (loadsc) { LoadGame(v1 - 48); } else { SaveGame(v1 - 48); } } } else { if (SlaveMakerSelection._visible) { if (v1 == 37) { --Gender; if (Gender < 1) { Gender = 3; } ShowSlaveMaker(true); Beep(); } else { if (v1 == 39) { SlaveMakerSelection.Gender.onPress(); } else { if (v1 == 38) { SlaveMakerSelection.Appearance.onPress(); } else { if (v1 == 40) { ++Appearance; ShowSlaveMaker(true); Beep(); } else { if (v1 > 48 && v1 < 58) { switch (v1) { case 49: SlaveMakerSelection.Talent1.onPress(); break; case 50: SlaveMakerSelection.Talent2.onPress(); break; case 51: SlaveMakerSelection.Talent3.onPress(); break; case 52: SlaveMakerSelection.Talent4.onPress(); break; case 53: SlaveMakerSelection.Talent5.onPress(); } } } } } } } else { if (SlaveMakerFaith._visible) { if (v1 > 48 && v1 < 52) { SMFaith = v1 - 48; DoIntroNext(); } } else { if (SlaveMakerHousing._visible) { if (v2 == 76 || v2 == 108) { DoLoadSave(true); } else { if (v1 == 37) { SlaveMakerHousing.Left.onPress(); } else { if (v1 == 39) { SlaveMakerHousing.Right.onPress(); } } } } else { if (SlaveSelection._visible) { switch (v1) { case 65: SlaveSelection.SlaveChoice1.onPress(); break; case 66: SlaveSelection.SlaveChoice2.onPress(); break; case 67: SlaveSelection.SlaveChoice3.onPress(); break; case 68: SlaveSelection.SlaveChoice4.onPress(); break; case 69: SlaveSelection.SlaveChoice5.onPress(); break; case 70: SlaveSelection.SlaveChoice6.onPress(); break; case 71: SlaveSelection.SlaveChoice7.onPress(); break; case 76: DoLoadSave(true); return undefined; case 37: case 39: DoIntroMore(); return undefined; } } else { if (Dealer._visible) { DealerShortcuts(v1); } else { if (RulesMenu._visible) { RulesShortcuts(v1); } else { if (StablesMenu._visible) { StablesShortcuts(v1); } else { if (TailorMenu._visible) { TailorShortcuts(v1); } else { if (SalonMenu._visible) { SalonShortcuts(v1); } else { if (ItemSalesman._visible) { SalesmanShortcuts(v1); } else { if (VisitMenu._visible) { VisitShortcuts(v1); } else { if (ShopMenu._visible) { ShopShortcuts(v1); } else { if (TakeAWalkMenu._visible) { WalkShortcuts(v1); } else { if (EquipmentMenu._visible) { EquipmentShortcuts(v1); } } } } } } } } } } } } } } } } } } } } } }; keyListenerMain.onKeyUp = function () { var v1 = Key.getCode(); if (v1 == 17) { bControl = false; } }; Key.addListener(keyListenerMain); RulesMenu.BtnTalk.onPress = function () { ChangeRule(0); }; RulesMenu.BtnPray.onPress = function () { ChangeRule(1); }; RulesMenu.BtnGoOut.onPress = function () { ChangeRule(2); }; RulesMenu.BtnTouch.onPress = function () { ChangeRule(4); }; RulesMenu.BtnFuck.onPress = function () { ChangeRule(3); }; RulesMenu.BtnGold.onPress = function () { ChangeRule(6); }; RulesMenu.BtnTouch.onPress = function () { ChangeRule(4); }; RulesMenu.BtnWrite.onPress = function () { ChangeRule(5); }; var Hints = true; var GeneralText; var LargerText; var GeneralLines = 18; var LineHeight = int(GeneralTextField._height / (GeneralLines + 3)); var FontText = ''; } movieClip 19 { } movieClip 34 { } movieClip 39 { } movieClip 42 { } movieClip 47 { } movieClip 52 { } movieClip 55 { } movieClip 58 { } movieClip 63 { } movieClip 68 { } movieClip 71 { } movieClip 74 { } movieClip 77 { } movieClip 82 { } movieClip 87 { } movieClip 90 { } movieClip 93 { } movieClip 96 { } movieClip 99 { } movieClip 106 { } movieClip 111 { } movieClip 114 { } movieClip 117 { } movieClip 119 { } movieClip 122 { } // unknown tag 88 length 148 // unknown tag 88 length 160 // unknown tag 88 length 62 movieClip 145 { } // unknown tag 88 length 153 // unknown tag 88 length 155 movieClip 157 { } // unknown tag 88 length 62 // unknown tag 88 length 84 movieClip 174 { } movieClip 176 { } movieClip 177 { } movieClip 182 { } movieClip 191 { } movieClip 194 { } movieClip 195 { } movieClip 200 { } movieClip 205 { } movieClip 206 { } movieClip 233 { } movieClip 240 { } movieClip 245 { } movieClip 256 { frame 4 { _root.Backgrounds.ShowDungeon(); } } movieClip 275 { } movieClip 306 { } movieClip 311 { } movieClip 318 { } movieClip 325 { } movieClip 352 { } movieClip 359 { } movieClip 382 { } movieClip 385 { } movieClip 388 { } movieClip 391 { } movieClip 396 { } movieClip 403 { } movieClip 406 { } movieClip 433 { } movieClip 440 { } movieClip 443 { } movieClip 452 { } movieClip 455 { } movieClip 460 { } movieClip 463 { } movieClip 468 { } movieClip 471 { } movieClip 474 { } movieClip 477 { } movieClip 482 { } movieClip 487 { } movieClip 496 { } movieClip 499 { } movieClip 502 { } movieClip 503 { } movieClip 508 { } movieClip 511 { } movieClip 516 { } movieClip 519 { } movieClip 540 { } movieClip 543 { } movieClip 546 { } movieClip 549 { } movieClip 552 { } movieClip 553 { } movieClip 560 { } movieClip 563 { } movieClip 566 { } movieClip 569 { } movieClip 572 { } movieClip 575 { } movieClip 576 { } movieClip 579 { } movieClip 582 { } movieClip 583 { } movieClip 586 { } movieClip 589 { } movieClip 592 { } movieClip 595 { } movieClip 598 { } movieClip 599 { } movieClip 608 { } movieClip 625 { } movieClip 628 { } movieClip 631 { } movieClip 634 { } movieClip 641 { } movieClip 644 { } movieClip 655 { } movieClip 658 { } movieClip 661 { } movieClip 672 { } movieClip 675 { } movieClip 678 { } movieClip 681 { } movieClip 684 { } movieClip 697 { } movieClip 700 { } movieClip 703 { } movieClip 714 { } movieClip 717 { } movieClip 720 { } movieClip 723 { } movieClip 724 { } movieClip 727 { } movieClip 730 { } movieClip 733 { } movieClip 740 { } movieClip 743 { } movieClip 746 { } movieClip 749 { } movieClip 752 { } movieClip 759 { } movieClip 762 { } movieClip 765 { } movieClip 768 { } movieClip 771 { } movieClip 776 { } movieClip 783 { } movieClip 786 { } movieClip 789 { } movieClip 792 { } movieClip 797 { } movieClip 802 { } movieClip 805 { } movieClip 808 { } movieClip 811 { } movieClip 814 { } movieClip 817 { } movieClip 822 { } movieClip 825 { } movieClip 828 { } movieClip 829 { } movieClip 832 { } movieClip 837 { } movieClip 840 { } movieClip 843 { } movieClip 846 { } movieClip 849 { } movieClip 852 { } movieClip 855 { } movieClip 898 { } movieClip 901 { } movieClip 902 { } movieClip 908 { } movieClip 915 { } movieClip 924 { } movieClip 931 { } movieClip 932 { } movieClip 935 { } movieClip 938 { } movieClip 941 { } movieClip 944 { } movieClip 947 { } movieClip 950 { } movieClip 953 { } movieClip 956 { } movieClip 959 { } movieClip 960 { frame 3 { _root.CombatHitSound(false); } frame 7 { if (_root.Hit) { _root.CombatHits._visible = true; } } frame 18 { stop(); _root.CombatEvent(3100); } } movieClip 963 { } movieClip 966 { } movieClip 969 { } movieClip 972 { } movieClip 975 { } movieClip 978 { } movieClip 979 { frame 3 { _root.CombatHitSound(true); } frame 7 { if (_root.Hit) { _root.CombatHits._visible = true; } } frame 18 { stop(); _root.CombatEvent(3100); } } movieClip 990 { } movieClip 993 { } // unknown tag 88 length 79 movieClip 998 { } movieClip 1000 { } movieClip 1122 { } movieClip 1124 { } movieClip 1126 { } movieClip 1138 { } movieClip 1139 { } // unknown tag 88 length 138 movieClip 1157 { } movieClip 1159 { } movieClip 1164 { } movieClip 1167 { } movieClip 1173 { } movieClip 1215 { } movieClip 1217 { } movieClip 1221 { } movieClip 1231 { } movieClip 1240 { } movieClip 1270 { } movieClip 1272 { } movieClip 1273 { } movieClip 1278 { } movieClip 1283 { } movieClip 1295 { } movieClip 1297 { } movieClip 1298 { } movieClip 1307 { } movieClip 1327 { } movieClip 1328 { } movieClip 1340 { } movieClip 1348 { } movieClip 1349 { } movieClip 1354 { instance RuleButton of movieClip 18 bmc { onClipEvent (construct) { rgb = 65280; } } } movieClip 1356 { } movieClip 1433 { } movieClip 1453 { } // unknown tag 88 length 197 movieClip 1462 { } // unknown tag 88 length 143 movieClip 1467 { } movieClip 1468 { } movieClip 1477 { } movieClip 1492 { } movieClip 1503 { } movieClip 1529 { } movieClip 1531 { } movieClip 1533 { } movieClip 1538 { } movieClip 1541 { } // unknown tag 88 length 79 movieClip 1553 { } movieClip 1561 { } movieClip 1567 { } movieClip 1576 { } movieClip 1587 { } movieClip 1591 { } movieClip 1594 { } movieClip 1604 { } movieClip 1644 { } movieClip 1664 { } movieClip 1671 { } movieClip 1674 { } movieClip 1686 { } movieClip 1698 { frame 1 { _parent.HouseDetails.text = 'Start with Bondage gear, increased effects for bondage actions. She cannot run away and feels imprisoned, Joy - 1 per day. Martial skills improve easier.\rLarge areas are unexplored'; } frame 2 { _parent.HouseDetails.text = 'Increased chance of faerie and friendly nonhuman events. Starting Sensibility increased because of the pretty walks. +1 Fatigue per day walking to the city and from housework. Cooking, Cleaning +0.5 per day. You know the location of Astrid\'s cottage.'; } frame 3 { _parent.HouseDetails.text = 'Start with Bondage gear and a bit-gag. You are aware of ponygirls to start with and all ponygirl actions are easier. -1 Fatigue per day due to easy transport. Starting Temperament and Refinement lower and she becomes more submissive as time passes'; } frame 4 { _parent.HouseDetails.text = 'Chance of rape, tentacle assault decreased. Starting Conversation higher. Housework skills increase slower due to cramped conditions, love increases faster. She can take an additional walk in the Town Centre once a day (first walk only).'; } frame 5 { _parent.HouseDetails.text = 'All chores in the mansion receive a bonus due to quality facilities and help. High Class Prostitute will always see you and give advice. Starting Refinement increased.\rThe attic seems very, very wrong.'; } frame 6 { _parent.HouseDetails.text = 'Starting Morality increased and her study of theology and science is more effective. Ceremonies are carried out fortnightly and she will need to help for the day.\rSome odd store areas, and those ancient statues in the forest...'; } frame 7 { _parent.HouseDetails.text = 'Relaxtion is more effective, and she is more used to nakedness and such activities are easier. You earn a small daily income. All arcane items have a reduced effect. Some negative arcane effects do not happen at home. Even some of your talents can be affected.'; } } movieClip 1706 { } movieClip 1722 { } movieClip 1728 { } movieClip 1743 { } movieClip 1753 { } movieClip 1760 { } movieClip 1765 { } movieClip 1767 { } movieClip 1772 { } movieClip 1778 { } movieClip 1793 { } movieClip 1806 { } movieClip 1807 { } movieClip 1808 __Packages.Scripts.Classes.Monster { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.Monster) { var v1 = function (attack, defence, health, speed, desc) { if (_root.CombatDifficulty == 1) { attack *= 1.5; defence *= 1.5; } else { if (_root.CombatDifficulty == 2) { attack = 500; defence = 500; } } this.MonsterAttack = attack; this.MonsterDefence = defence; this.MonsterHealth = health; if (this.MonsterHealth > 100) { this.MonsterHealth = 100; } this.MonsterSpeed = speed; this.MonsterDefence = defence; this.MonsterDefence = defence; this.MonsterDescription = desc; this.MonsterTempDefence = defence; this.MonsterNextAttack = speed; }; Scripts.Classes.Monster = v1; var v2 = v1.prototype; v2.ShowMonster = function () { _root.CombatCreatures._visible = true; }; v2.HideMonster = function () { _root.CombatCreatures._visible = false; }; v2.GetDescription = function () { return this.MonsterDescription; }; v2.GetHealth = function () { return this.MonsterHealth; }; v2.DamgeMonster = function (dmg, stun) { if (stun == true) { this.MonsterNextAttack += dmg; } else { this.MonsterHealth -= dmg; if (this.MonsterHealth < 0) { this.MonsterHealth = 0; } } }; v2.IsFighting = function () { return this.MonsterHealth > 0; }; v2.CombatHitSound = function () { if (_root.SoundsOn) { _root.Sounds.SoundGrowlPained.gotoAndPlay(2); } }; v2.MonsterDoDamage = function (damage, arousal, skill, defence, stun) { if (defence != undefined) { this.MonsterTempDefence = this.MonsterDefence * defence; } if (int(Math.random() * 100) < this.MonsterAttack * skill) { if (stun) { _root.SMNextAttack += 60; } else { var v3 = this.MonsterAttack * damage - _root.SMCurrentDefence + int(Math.random() * 5); if (v3 < 5) { v3 = int(Math.random() * 4) + 2; } if (v3 > 30) { v3 = 30; } _root.SMHealth -= v3; if (_root.SMHealth < 0) { _root.SMHealth = 0; } _root.SMLibido += this.MonsterAttack * arousal; if (arousal > 0) { _root.SMNextAttack += 10; } if (v3 > 30) { _root.CombatHits.gotoAndStop(5); } else { if (v3 > 0) { _root.CombatHits.gotoAndStop(4); } } } return true; } else { if (int(Math.random() * 2) == 1) { _root.CombatMonsterAttacks.Miss1._visible = true; return false; } _root.CombatMonsterAttacks.Miss2._visible = true; return false; } }; v2.Hit = function (weapon, attack) {}; v2.Missed = function (weapon, attack) {}; v2.Attack = function () {}; v2.RunAway = function () {}; v2.FailedToRunAway = function () {}; v2.ResetAttacks = function () {}; ASSetPropFlags(Scripts.Classes.Monster.prototype, null, 1); } #endinitclip } movieClip 1809 __Packages.Scripts.Classes.MonsterAstrid { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.MonsterAstrid) { var v1 = function (attack, defence, health, speed, desc) { super(attack, defence, health, speed, desc); _root.ShowMovie(_root.PeopleDickgirl, true, 2, 1); }; Scripts.Classes.MonsterAstrid = v1; Scripts.Classes.MonsterAstrid extends Scripts.Classes.Monster; var v2 = v1.prototype; v2.CombatHitSound = function () { if (_root.SoundsOn) { _root.Sounds.SoundClang.gotoAndPlay(2); } }; v2.ShowMonster = function () { _root.PeopleDickgirl._visible = true; }; v2.HideMonster = function () { _root.PeopleDickgirl._visible = false; }; v2.Hit = function (weapon, attack) { _root.AddText('Astrid who yells in pain. Oddly drops of cum appear at the end of her cock.'); }; v2.Missed = function (weapon, attack) { if (int(Math.random() * 2) == 1) { _root.AddText('she jumps back and you miss. Her cock bounces in a distracting way.'); } else { _root.AddText('she parries you with her sword.'); } }; v2.Attack = function () { _root.SlaveGirl.CombatAyaneAttack.Punch._visible = true; _root.SetText('Astrid swings her sword, and cock, at you '); var v4 = super.MonsterDoDamage(1, 0, 1, 1); if (v4) { _root.AddText('and she cuts you painfully.'); } else { _root.AddText('but you narrowly avoid her blow.'); } this.MonsterNextAttack = _root.CombatTime + this.MonsterSpeed; _root.SlaveGirl.CombatAstridAttack.gotoAndPlay(1); _root.SlaveGirl.CombatAstridAttack._visible = true; }; v2.FailedToRunAway = function () {}; v2.ResetAttacks = function () { _root.SlaveGirl.CombatAstridAttack._visible = false; }; ASSetPropFlags(Scripts.Classes.MonsterAstrid.prototype, null, 1); } #endinitclip } movieClip 1810 __Packages.Scripts.Classes.MonsterDevilGirl { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.MonsterDevilGirl) { var v1 = function (attack, defence, health, speed, desc, image) { super(attack, defence, health, speed, desc); if (image == undefined) { image = int(Math.random() * (3 + _root.DickgirlOn)) + 1; } _root.CombatCreatures.DevilGirls.gotoAndStop(image); _root.CombatCreatures.DevilGirls._visible = true; }; Scripts.Classes.MonsterDevilGirl = v1; Scripts.Classes.MonsterDevilGirl extends Scripts.Classes.Monster; var v2 = v1.prototype; v2.Hit = function (weapon, attack) { switch (weapon) { case 0: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText(', she laughs and shakes her ass at you and suggests a spanking.'); } else { _root.AddText(', she makes a cute, exaggerated little yelp of pain.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('who giggles and runs her hands along your leg.'); } else { _root.AddText('who curses you with a smile.'); } } break; case 1: if (attack == 0) { _root.AddText('to the girl, '); if (int(Math.random() * 2) == 1) { _root.AddText('who cries in pain, but the wound vanishes immediately.'); } else { _root.AddText('who moans and cries in apparent passion.'); } } else { _root.AddText('to the girl, '); if (int(Math.random() * 2) == 1) { _root.AddText('she yells as the blade sinks into her shoulder, but it leaves no wound.'); } else { _root.AddText('who gasps from the blow almost passionately.'); } } break; case 2: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('she cries as the arrow slices her skin.'); } else { _root.AddText('who gasps as she pulls the arrow free, leaving no apparent wound.'); } } else { _root.AddText(' at the girl '); if (int(Math.random() * 2) == 1) { _root.AddText('she cries as several arrows cut her. The wounds seem to instantly close.'); } else { _root.AddText('who gasps as two arrows hit her. She pulls the arrow free, leaving no apparent wound and comments there are \'other\' ways to double penetrate her.'); } } break; case 3: switch (attack) { case 0: _root.AddText('and the girl cries in ecstasy and says \'Mistress whip me more!\'. She drops to the ground briefly either in pain or orgasm.'); break; case 1: _root.AddText('and to your delight the girl cries in ecstasy and says \'Mistress whip me more!\'. She drops to the ground for a time either in intense pain or strong orgasm, or both.'); break; case 2: _root.AddText('and the girl cries in ecstasy and says \'Whip me more!\'. She drops to the ground briefly either in pain or orgasm.'); break; case 3: _root.AddText('and the girl cries in ecstasy and says \'Mistress whip me more!\'. She drops to the ground for a time either in intense pain or strong orgasm, or both.'); } break; case 4: _root.AddText('to the girl, who cries in pain, but dances back a little dazed. She pants, her chest heaving.'); } }; v2.Missed = function (weapon, attack) { switch (weapon) { case 0: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('miss as she dances to one side.'); } else { _root.AddText('she grabs your fist and licks it.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('miss as she dances to one side.'); } else { _root.AddText('she nimbly pushes your leg to one side.'); } } break; case 1: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('she leans to one side and the blade misses.'); } else { _root.AddText('she impossibly leaps over your head, landing behind you with a giggle.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('she seems to just push your blade to one side.'); } else { _root.AddText('you cut her dress, exposing more of her skin. She offers to remove her dress entirely!'); } } break; case 2: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText(', but she catches the arrow and drops it. She says there are \'other\' things you could penetrate me with.'); } else { _root.AddText(', but she leaps impossibly far and you miss.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText(', but she dances around and you miss with them all.'); } else { _root.AddText(', but she seems the knock them all out of the air.'); } } break; case 3: switch (attack) { case 0: _root.AddText('and the girl and to your delight cries in ecstasy and says \'Mistress whip me more!\', but she is otherwise unaffected.'); break; case 1: _root.AddText(', but the girl cries in ecstasy and says \'Mistress whip me more!\'.'); break; case 2: _root.AddText('and the girl cries in ecstasy and says \'Whip me more!\'.'); break; case 3: _root.AddText(', but the girl cries in ecstasy and says \'Mistress whip me more!\'.'); } break; case 4: if (int(Math.random() * 2) == 1) { _root.AddText('she leans to one side and the hammer misses.'); } else { _root.AddText('she impossibly leaps over your head, landing behind you with a giggle.'); } } }; v2.CombatHitSound = function () { if (_root.SoundsOn) { if (int(Math.random() * 2) == 1) { _root.Sounds.SoundGiggle.gotoAndPlay(2); } else { _root.Sounds.SoundAhhh.gotoAndPlay(2); } } }; v2.Attack = function () { if (int(Math.random() * 100) < _root.SMLibido * 0.7) { var v4; if (_root.Gender == 1) { v4 = super.MonsterDoDamage(0, 0.25, 1, 1); } else { v4 = super.MonsterDoDamage(0, 0.1, 1, 1); } _root.CombatMonsterAttacks.DevilGirlKiss._visible = true; _root.SetText('The demon girl dances in and kisses you passionately and fondles you.\r\r'); if (_root.Gender != 2 && _root.FirstArousalHit == false) { _root.AddText('Despite yourself you feel your cock become intensely erect. '); _root.FirstArousalHit = true; } if (v4) { _root.AddText('You feel a wave of arousal from the kiss and her touch. You feel a little tired and confused and are delayed as you clear your head.'); } else { _root.AddText('You focus and ignore the kiss and her touches.'); } } else { _root.CombatMonsterAttacks.DevilGirlStrike._visible = true; var v4 = super.MonsterDoDamage(0.9, 0.1, 1, 1); _root.SetText('The demon girl\'s fingernails grow to claws and she rakes you with them '); if (v4) { _root.AddText('and her nails cut you painfully.'); } else { _root.AddText('but you dodge to one side and are missed.'); } } this.MonsterNextAttack = _root.CombatTime + this.MonsterSpeed; _root.CombatMonsterAttacks.gotoAndPlay(1); _root.CombatMonsterAttacks._visible = true; }; v2.FailedToRunAway = function () { _root.AddText('hand grab your shoulder and you stumble, hitting your head and pass out.'); }; ASSetPropFlags(Scripts.Classes.MonsterDevilGirl.prototype, null, 1); } #endinitclip } movieClip 1811 __Packages.Scripts.Classes.MonsterGeneric { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.MonsterGeneric) { var v1 = function (attack, defence, health, speed, desc, imagemc) { super(attack, defence, health, speed, desc); this.mc = imagemc; }; Scripts.Classes.MonsterGeneric = v1; Scripts.Classes.MonsterGeneric extends Scripts.Classes.Monster; var v2 = v1.prototype; v2.ShowMonster = function () { this.mc._visible = true; }; v2.HideMonster = function () { this.mc._visible = false; }; v2.Hit = function (weapon, attack) { _root.AddText('and the creature roars in pain.'); }; v2.Missed = function (weapon, attack) { _root.AddText('it leaps to one side.'); }; v2.Attack = function () { _root.CombatMonsterAttacks.Zombie._visible = true; var v4 = super.MonsterDoDamage(1, 0, 1, 1); _root.SetText('The creature claws at you '); if (v4) { _root.AddText('and it rakes deep cuts into your flesh.'); } else { _root.AddText('but you dodge to one side and are missed.'); } this.MonsterNextAttack = _root.CombatTime + this.MonsterSpeed; _root.CombatMonsterAttacks.gotoAndPlay(1); _root.CombatMonsterAttacks._visible = true; }; v2.RunAway = function () { _root.AddText(', fleeing the creature'); }; v2.FailedToRunAway = function () { _root.AddText('something grabs around your leg. You fall and hit your head and pass out.'); }; ASSetPropFlags(Scripts.Classes.MonsterGeneric.prototype, null, 1); } #endinitclip } movieClip 1812 __Packages.Scripts.Classes.Place { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.Place) { var v1 = function (count, access) { this.BitFlag1 = 0; this.BitFlag2 = 0; if (access == undefined) { this.Accessible = true; } else { this.Accessible = access; } this.EventCount = count; this.Visited = false; }; Scripts.Classes.Place = v1; var v2 = v1.prototype; v2.Load = function (cookieobj) { this.BitFlag1 = cookieobj.vBitFlag1; if (this.BitFlag1 == undefined) { this.BitFlag1 = 0; } this.BitFlag2 = cookieobj.vBitFlag2; if (this.BitFlag2 == undefined) { this.BitFlag2 = 0; } this.Accessible = cookieobj.vAccessible; if (this.Accessible == undefined) { this.Accessible = true; } this.EventCount = cookieobj.vEventCount; if (this.EventCount == undefined) { this.EventCount = 0; } this.Visited = cookieobj.vVisited; if (this.Visited == undefined) { this.Visited = false; } }; v2.Save = function (cookieobj) { cookieobj.vBitFlag1 = this.BitFlag1; cookieobj.vBitFlag2 = this.BitFlag2; cookieobj.vAccessible = this.Accessible; cookieobj.vEventCount = this.EventCount; cookieobj.vVisited = this.Visited; }; v2.CheckBitFlag = function (flag) { if (flag > 31) { if ((this.BitFlag2 & 1 << flag - 32) != 0) { return true; } return false; } if ((this.BitFlag1 & 1 << flag) != 0) { return true; } return false; }; v2.SetBitFlag = function (flag) { if (flag > 31) { this.BitFlag2 |= 1 << flag - 32; } else { this.BitFlag1 |= 1 << flag; } }; v2.ClearBitFlag = function (flag) { if (flag > 31) { this.BitFlag2 &= ~(1 << flag - 32); } else { this.BitFlag1 &= ~(1 << flag); } }; v2.IsEventDone = function (evno) { return this.CheckBitFlag(evno - 1); }; v2.IsEventRepeatable = function (evno) { return this.CheckBitFlag(evno + 14); }; v2.IsAccessible = function () { return this.Accessible; }; v2.SetAccessible = function (seta) { if (seta == undefined) { seta = true; } this.Accessible = seta; }; v2.IsVisited = function () { return this.Visited; }; v2.SetVisited = function () { this.Visited = true; }; v2.NoRepeatEvent = function (evno) { this.SetBitFlag(evno + 14); }; v2.EventDone = function (evno) { this.SetBitFlag(evno - 1); }; v2.SetEventCount = function (count) { this.EventCount = count; }; v2.GetEventCount = function () { return this.EventCount; }; v2.GetEvent = function () { var v5 = 0; var v4 = 0; var v3; var v2 = 0; while (v2 < this.EventCount) { if (!this.CheckBitFlag(v2)) { ++v5; } if (!this.CheckBitFlag(v2 + 15)) { ++v4; } ++v2; } if (v5 > 0) { v3 = int(Math.random() * v5); v2 = 0; while (v2 < this.EventCount) { if (!this.CheckBitFlag(v2)) { if (v3 <= 0) { return v2 + 1; } --v3; } ++v2; } return 0; } if (v4 == 0) { return 0; return 0; } v3 = int(Math.random() * v4); v2 = 0; while (v2 < this.EventCount) { if (!this.CheckBitFlag(v2 + 15)) { if (v3 <= 0) { return v2 + 1; } --v3; } ++v2; } return 0; }; ASSetPropFlags(Scripts.Classes.Place.prototype, null, 1); } #endinitclip } movieClip 1813 __Packages.Scripts.Classes.MonsterZombie { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.MonsterZombie) { var v1 = function (attack, defence, health, speed, desc, image) { super(attack, defence, health, speed, desc); if (image == undefined) { image = int(Math.random() * 3) + 1; } _root.CombatCreatures.Zombies.gotoAndStop(image); _root.CombatCreatures.Zombies._visible = true; }; Scripts.Classes.MonsterZombie = v1; Scripts.Classes.MonsterZombie extends Scripts.Classes.Monster; var v2 = v1.prototype; v2.DamgeMonster = function (dmg, stun) { if (stun == false) { this.MonsterHealth -= dmg; if (this.MonsterHealth < 0) { this.MonsterHealth = 0; } } }; v2.Hit = function (weapon, attack) { switch (weapon) { case 0: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText(', it feels like you hit a tree.'); } else { _root.AddText('and you feel a sickening eruption of decayed flesh.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText(', you hear crunching of dry flesh.'); } else { _root.AddText('and you see dust and chunks of dry flesh fall.'); } } break; case 1: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('and the thing staggers.'); } else { _root.AddText('and you see dust and chunks of dry flesh fall.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('and the thing slumps a little.'); } else { _root.AddText('and you see dust and feel a snapping bone.'); } } break; case 2: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('and the arrow is stuck in the thing.'); } else { _root.AddText('and the arrow passes through its body.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('and all the arrow stick in the thing.'); } else { _root.AddText('and the arrow passes through its body. Chunks of its flesh fall to the ground.'); } } break; case 3: switch (attack) { case 0: _root.AddText('the zombie but to your disappointment it does not react.'); break; case 1: _root.AddText('the zombie but to your disappointment it does not react.'); break; case 2: _root.AddText('the zombie but to your disappointment it does not react.'); break; case 3: _root.AddText('the zombie but to your disappointment it does not react.'); } break; case 4: _root.AddText('and the thing staggers.'); } }; v2.Missed = function (weapon, attack) { switch (weapon) { case 0: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('miss it.'); } else { _root.AddText('hit some decayed clothes and withered flesh to no effect.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('miss it.'); } else { _root.AddText('hit some decayed clothes and withered flesh to no effect.'); } } break; case 1: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('miss.'); } else { _root.AddText('slice off some decayed flesh, the zombie does not even notice you.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('zombie.'); } else { _root.AddText('the blade passes ineffectually through dry skin.'); } } break; case 2: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('but miss.'); } else { _root.AddText('but the arrow seems to pass through dry skin and clothes.'); } } else { _root.AddText('but miss.'); } break; case 3: switch (attack) { case 0: _root.AddText('the zombie but it does not react.'); break; case 1: _root.AddText('the zombie but it does not react.'); break; case 2: _root.AddText('the zombie but it does not react.'); break; case 3: _root.AddText('the zombie but it does not react.'); } break; case 4: if (int(Math.random() * 2) == 1) { _root.AddText('miss.'); } else { _root.AddText('there is a cloud of dust, and the zombie does not even notice you.'); } } }; v2.Attack = function () { _root.CombatMonsterAttacks.Zombie._visible = true; var v4 = super.MonsterDoDamage(1, 0, 1, 1); _root.SetText('The zombie paws and grabs at you '); if (v4) { _root.AddText('and you are dealt painful blows.'); } else { _root.AddText('but you dodge to one side and are missed.'); } this.MonsterNextAttack = _root.CombatTime + this.MonsterSpeed; _root.CombatMonsterAttacks.gotoAndPlay(1); _root.CombatMonsterAttacks._visible = true; }; v2.FailedToRunAway = function () { _root.AddText('hand grab your shoulder and you stumble, hitting your head and pass out.'); }; ASSetPropFlags(Scripts.Classes.MonsterZombie.prototype, null, 1); } #endinitclip } movieClip 1814 __Packages.Scripts.Classes.MonsterTentacle { #initclip if (!_global.Scripts) { _global.Scripts = new Object(); } if (!_global.Scripts.Classes) { _global.Scripts.Classes = new Object(); } if (!_global.Scripts.Classes.MonsterTentacle) { var v1 = function (attack, defence, health, speed, desc, image) { super(attack, defence, health, speed, desc); if (image == undefined) { image = int(Math.random() * 3) + 1; } _root.CombatCreatures.Tentacles.gotoAndStop(image); _root.CombatCreatures.Tentacles._visible = true; }; Scripts.Classes.MonsterTentacle = v1; Scripts.Classes.MonsterTentacle extends Scripts.Classes.Monster; var v2 = v1.prototype; v2.Hit = function (weapon, attack) { switch (weapon) { case 0: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('a tentacle.'); _root.AddText(' You hear a girl cry out.'); } else { _root.AddText('its slimy, rubbery skin.'); } if (_root.Gender != 1) { _root.AddText(' You feel a slight sense of arousal at the touch of its skin.'); _root.SMLibido += 2; } } else { if (int(Math.random() * 2) == 1) { _root.AddText('a tentacle which coils and tries to wrap around your leg.'); } else { _root.AddText('its slimy underbelly.'); } } break; case 1: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText(' and a tentacle falls to the ground, severed.'); } else { _root.AddText(' on its slimy underbelly.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('and skewer a tentacle.'); } else { _root.AddText('and hit with a spray of ichor.'); } } break; case 2: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('and pin a tentacle to the wall.'); } else { _root.AddText('and hit, but the arrow only penetrates shallowly.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('and hit with every arrow, but only to shallow depths. It bleeds from all hits.'); } else { _root.AddText('and hit deeply with one arrow.'); } } break; case 3: switch (attack) { case 0: _root.AddText('and maybe try to pull free a tentacle '); if (int(Math.random() * 2) == 1) { _root.AddText('and cause many painful cuts, oozing ichor.'); } else { _root.AddText('and slice a tentacle the drops limp.'); } _root.AddText('/r/rYou \'accidentally\' hit one of the girls held captive too.'); break; case 1: if (int(Math.random() * 2) == 1) { _root.AddText('and to your delight it recoils in pain and quivers.'); } else { _root.AddText('and several tentacles recoil and don\'t return.'); } _root.AddText('/r/rYou \'accidentally\' hit one of the girls held captive too.'); break; case 2: _root.AddText('and maybe try to pull free a tentacle '); if (int(Math.random() * 2) == 1) { _root.AddText('and cause many painful cuts, oozing ichor.'); } else { _root.AddText('and slice a tentacle the drops limp.'); } break; case 3: if (int(Math.random() * 2) == 1) { _root.AddText('and it recoils in pain and quivers.'); } else { _root.AddText('and several tentacles recoil and don\'t return.'); } } break; case 4: if (int(Math.random() * 2) == 1) { _root.AddText('and a flatten a tentacle.'); } else { _root.AddText('on its head.'); } } }; v2.Missed = function (weapon, attack) { switch (weapon) { case 0: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('miss as it slides to one side.'); } else { _root.AddText('your fist slides between its tentacles.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('miss as it slides to one side.'); } else { _root.AddText('your foot slides off its body.'); } } break; case 1: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('you pull your strike as you almost hit '); _root.AddText('a captive girl.'); } else { _root.AddText('but the blade merely slides along its rubbery skin.'); } } else { if (int(Math.random() * 2) == 1) { _root.AddText('you miss the creature and narrowly miss a captive girl.'); } else { _root.AddText('but fail the penetrate its thick skin.'); } } break; case 2: if (attack == 0) { if (int(Math.random() * 2) == 1) { _root.AddText('thing but you miss it.'); } else { _root.AddText('thing but the arrow bounces off its rubbery skin.'); } } else { _root.AddText(', the thing is so large after all, but '); if (int(Math.random() * 2) == 1) { _root.AddText('you miss with all the arrows.'); } else { _root.AddText('the thing moves too much and you miss with some arrows and the rest bounce off its skin.'); } } break; case 3: switch (attack) { case 0: _root.AddText('and maybe try to pull free a tentacle '); if (int(Math.random() * 2) == 1) { _root.AddText('and to your delight it cries in pain but there seems to be little actual damage.'); } else { _root.AddText('but you only hit a tentacle that recoils and is immediately replaced by another.'); } _root.AddText('/r/rYou \'accidentally\' hit one of the girls held captive too.'); break; case 1: if (int(Math.random() * 2) == 1) { _root.AddText('but the hit seems to have no effect on its thick slimy skin.'); } else { _root.AddText('but you only hit some tentacles that recoils and is immediately replaced by others.'); } _root.AddText('/r/rYou \'accidentally\' hit one of the girls held captive too.'); break; case 2: _root.AddText('and maybe pull free a tentacle '); if (int(Math.random() * 2) == 1) { _root.AddText('but the hit seems to have no effect on its thick slimy skin.'); } else { _root.AddText('but you only hit a tentacle that recoils and is immediately replaced by another.'); } break; case 3: if (int(Math.random() * 2) == 1) { _root.AddText('but the hit seems to have no effect on its thick slimy skin.'); } else { _root.AddText('but you only hit some tentacles that recoils and is immediately replaced by others.'); } } break; case 4: if (int(Math.random() * 2) == 1) { _root.AddText('you pull your strike as you almost hit '); _root.AddText('a captive girl.'); } else { _root.AddText('but the hammer merely bounces off its rubbery skin.'); } } }; v2.Attack = function () { if (int(Math.random() * 100) < _root.SMLibido * 0.7) { var v4; if (_root.Gender != 1) { v4 = super.MonsterDoDamage(0, 0.2, 0.9, 1); } else { v4 = super.MonsterDoDamage(0, 0.1, 0.9, 1); } _root.CombatMonsterAttacks.Cum1._visible = true; _root.SetText('The creature pulls a tentacle from a girl\'s pussy and sprays an enormous gout of cum at you.\r\r'); if (_root.Gender != 2 && _root.FirstArousalHit == false) { _root.AddText('Despite yourself you feel your cock become intensely erect. '); _root.FirstArousalHit = true; } if (v4) { _root.AddText('You feel a wave of arousal as the cum splatters over you. Some gets on you face and in your eyes and you are delayed wiping it clear.'); } else { _root.AddText('The spray misses you completely.'); } _root.AddText(' You notice the tentacle immediately thrusts back into the girl...'); } else { _root.CombatMonsterAttacks.Tentacle1._visible = true; var v4 = super.MonsterDoDamage(1, 0.1, 1, 1); _root.SetText('The creature slices a tentacle with a sharp blade like end on it '); if (v4) { _root.AddText('and it cuts into your flesh.'); } else { _root.AddText('but you dodge to one side and are missed.'); } } this.MonsterNextAttack = _root.CombatTime + this.MonsterSpeed; _root.CombatMonsterAttacks.gotoAndPlay(1); _root.CombatMonsterAttacks._visible = true; }; v2.RunAway = function () { _root.AddText(', leaving the girls to the rough attentions of the creatures'); }; v2.FailedToRunAway = function () { _root.AddText('tentacle wrap around your leg. You fall and hit your head and pass out.'); }; ASSetPropFlags(Scripts.Classes.MonsterTentacle.prototype, null, 1); } #endinitclip }




http://swfchan.com/45/220962/info.shtml
Created: 2/7 -2019 11:06:54 Last modified: 2/7 -2019 11:06:54 Server time: 27/04 -2024 14:27:20