Browse Source

The base from julzor's repo - pulled on 02/05/2020

Netuttki 4 years ago
parent
commit
3132e7de5c
77 changed files with 29511 additions and 0 deletions
  1. BIN
      Analyser/QSP_Analyser.exe
  2. 32 0
      Analyser/QSP_Analyser.sln
  3. 1531 0
      Analyser/QSP_Analyser/Common.cs
  4. 667 0
      Analyser/QSP_Analyser/List.txt
  5. 631 0
      Analyser/QSP_Analyser/MainForm.Designer.cs
  6. 591 0
      Analyser/QSP_Analyser/MainForm.cs
  7. 123 0
      Analyser/QSP_Analyser/MainForm.resx
  8. 20 0
      Analyser/QSP_Analyser/Program.cs
  9. 36 0
      Analyser/QSP_Analyser/Properties/AssemblyInfo.cs
  10. 63 0
      Analyser/QSP_Analyser/Properties/Resources.Designer.cs
  11. 117 0
      Analyser/QSP_Analyser/Properties/Resources.resx
  12. 281 0
      Analyser/QSP_Analyser/Properties/Settings.Designer.cs
  13. 172 0
      Analyser/QSP_Analyser/Properties/Settings.settings
  14. 26 0
      Analyser/QSP_Analyser/Properties/app.manifest
  15. 2244 0
      Analyser/QSP_Analyser/QSPGameCode.cs
  16. 141 0
      Analyser/QSP_Analyser/QSP_Analyser.csproj
  17. 16 0
      Analyser/QSP_Analyser/QSP_Analyser.csproj.user
  18. 28 0
      Analyser/QSP_Analyser/Settings.cs
  19. 178 0
      Analyser/QSP_Analyser/app.config
  20. 347 0
      Changelog.txt
  21. 102 0
      MakeQSP.bat
  22. 28 0
      build.sh
  23. 391 0
      locations/mod_wlife.qsrc
  24. 87 0
      locations/mod_wlife_cheatmenu.qsrc
  25. 359 0
      locations/mod_wlife_clinic.qsrc
  26. 874 0
      locations/mod_wlife_demands.qsrc
  27. 353 0
      locations/mod_wlife_demands_sex.qsrc
  28. 827 0
      locations/mod_wlife_functions.qsrc
  29. 489 0
      locations/mod_wlife_gang.qsrc
  30. 310 0
      locations/mod_wlife_gang_sex.qsrc
  31. 596 0
      locations/mod_wlife_georgiy.qsrc
  32. 108 0
      locations/mod_wlife_georgiy_sex.qsrc
  33. 1245 0
      locations/mod_wlife_highway.qsrc
  34. 905 0
      locations/mod_wlife_highway_sex.qsrc
  35. 366 0
      locations/mod_wlife_hotelroom.qsrc
  36. 187 0
      locations/mod_wlife_iosif.qsrc
  37. 652 0
      locations/mod_wlife_iosif_sex.qsrc
  38. 518 0
      locations/mod_wlife_maxim.qsrc
  39. 312 0
      locations/mod_wlife_maxim_sex.qsrc
  40. 191 0
      locations/mod_wlife_misc.qsrc
  41. 214 0
      locations/mod_wlife_mother.qsrc
  42. 31 0
      locations/mod_wlife_nikita.qsrc
  43. 173 0
      locations/mod_wlife_npc.qsrc
  44. 142 0
      locations/mod_wlife_okoro.qsrc
  45. 148 0
      locations/mod_wlife_okoro_sex.qsrc
  46. 801 0
      locations/mod_wlife_phone.qsrc
  47. 360 0
      locations/mod_wlife_prison.qsrc
  48. 1055 0
      locations/mod_wlife_punishment.qsrc
  49. 674 0
      locations/mod_wlife_punishment_sex.qsrc
  50. 324 0
      locations/mod_wlife_readme.qsrc
  51. 298 0
      locations/mod_wlife_sacha.qsrc
  52. 51 0
      locations/mod_wlife_sacha_sex.qsrc
  53. 100 0
      locations/mod_wlife_saveupdater.qsrc
  54. 32 0
      locations/mod_wlife_setup.qsrc
  55. 1319 0
      locations/mod_wlife_shura.qsrc
  56. 355 0
      locations/mod_wlife_shura_sex.qsrc
  57. 1340 0
      locations/mod_wlife_solicitation.qsrc
  58. 739 0
      locations/mod_wlife_story.qsrc
  59. 822 0
      locations/mod_wlife_story_sex.qsrc
  60. 837 0
      locations/mod_wlife_tattoo_piercing.qsrc
  61. 354 0
      locations/mod_wlife_temp.qsrc
  62. 488 0
      locations/mod_wlife_thoughts.qsrc
  63. 57 0
      locations/mod_wlife_vadim.qsrc
  64. 1627 0
      locations/mod_wlife_volya.qsrc
  65. 427 0
      locations/mod_wlife_volya_sex.qsrc
  66. 401 0
      locations/mod_wlife_warehouse.qsrc
  67. 7 0
      locations/wlife.code-workspace
  68. BIN
      txt2gam.exe
  69. BIN
      txt2gam.linux
  70. BIN
      txt2gam.mac
  71. BIN
      txt2gam64.exe
  72. 44 0
      txtmerge.py
  73. 46 0
      txtsplit.py
  74. 46 0
      txtsplit3.py
  75. 55 0
      wlife.qproj
  76. BIN
      wlife.qsp
  77. BIN
      wlife.txt

BIN
Analyser/QSP_Analyser.exe


+ 32 - 0
Analyser/QSP_Analyser.sln

@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26430.16
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QSP_Analyser", "QSP_Analyser\QSP_Analyser.csproj", "{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}.Release|Win32.ActiveCfg = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 1531 - 0
Analyser/QSP_Analyser/Common.cs

@@ -0,0 +1,1531 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace Analyser
+{
+    public class Common
+    {
+        const int QSP_MAXSTATSNAMES = 100;
+        const int QSP_STATSLEVELS = 3;
+        const int QSP_STATMAXARGS = 10;
+	    const int QSP_OPSLEVELS = 2;
+	    const int QSP_MAXOPSNAMES = 100;
+        const int QSP_OPMAXARGS = 10;
+	    public const int QSP_STACKSIZE = 30;
+        public const int QSP_MAXITEMS = 100;
+
+        public const int INVALID_INDEX = -1;
+        static public char[] WhiteSpace = {' ', '\t', '\r', '\n'};
+        //Разделители - " \t&'\"()[]=!<>+-/*:,{}"
+        static public char[] Delimiters = " \t&'\"()[]=!<>+-/*:,{}".ToCharArray();
+        static public char[] Digits = "0123456789".ToCharArray();
+        static public char[] LatinLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqsrtuvwxyz".ToCharArray();
+        static public char[] RussianLetters = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъьэюя".ToCharArray();
+        public struct QspStatement
+        {
+            public int ExtArg;
+            public int MinArgsCount;
+            public int MaxArgsCount;
+            public int[] ArgsTypes;
+        }
+        public struct QspStatementName
+        {
+            public string Name;
+            public int NameLen;
+            public int Code;
+        }
+        public enum QspStatementType
+        {
+            Unknown,
+            Label,
+            Comment,
+            Act,
+            For,
+            Local,
+            If,
+            ElseIf,
+            Else,
+            End,
+            AddObj,
+            ClA,
+            Clear,
+            CloseAll,
+            Close,
+            ClS,
+            CmdClear,
+            CopyArr,
+            DelAct,
+            DelObj,
+            Dynamic,
+            Exec,
+            Exit,
+			KillQST,
+			DelLib,
+			FreeLib,
+            GoSub,
+            GoTo,
+            AddQST,
+			AddLib,
+			IncLib,
+			Jump,
+            KillAll,
+            KillObj,
+            KillVar,
+            MClear,
+            Menu,
+            MNL,
+            MPL,
+            MP,
+            Msg,
+            NL,
+            OpenGame,
+            OpenQst,
+            Play,
+            PL,
+            P,
+            RefInt,
+            SaveGame,
+            SetTimer,
+            Set,
+            ShowActs,
+            ShowInput,
+            ShowObjs,
+            ShowVars,
+            UnSelect,
+            View,
+            Wait,
+            XGoTo,
+
+            Last_Statement
+        };
+
+        public struct QspFunction
+        {
+		    public int Priority;
+		    public int ResType;
+		    public int MinArgsCount;
+		    public int MaxArgsCount;
+		    public int[] ArgsTypes;
+        }
+        public struct QspFunctionName
+        {
+            public string Name;
+            public int NameLen;
+            public int Code;
+        }
+        public enum QspFunctionType
+        {
+            Unknown,
+            Start,
+            End,
+            Value,
+            OpenBracket,
+            Minus,
+            Comma,
+            CloseBracket,
+            Mul,
+            Div,
+            Add,
+            Sub,
+            Mod,
+            Ne,
+            Leq,
+            Geq,
+            Eq,
+            Lt,
+            Gt,
+            And,
+            Or,
+            Append,
+
+            First_Function,
+            Not = First_Function,
+            Loc,
+            Obj,
+            Min,
+            Max,
+            Rand,
+            IIf,
+            RGB,
+            Len,
+            IsNum,
+            LCase,
+            UCase,
+            Input,
+            Str,
+            Val,
+            ArrSize,
+            IsPlay,
+            Desc,
+            Trim,
+            GetObj,
+            StrComp,
+            StrFind,
+            StrPos,
+            Mid,
+            ArrPos,
+            ArrComp,
+            Instr,
+            Replace,
+            Func,
+            DynEval,
+            Rnd,
+            CountObj,
+            MsecsCount,
+            QSPVer,
+            UserText,
+            CurLoc,
+            SelObj,
+            SelAct,
+            MainText,
+            StatText,
+            CurActs,
+
+            Last_Operation
+        };
+
+        static public QspStatement[] qspStats;
+        static QspStatementName[,] qspStatsNames;
+        static int[] qspStatsNamesCounts;
+        static int qspStatMaxLen;
+        static public QspFunction[] qspOps;
+        static QspFunctionName[,] qspOpsNames;
+        static int[] qspOpsNamesCounts;
+        static int qspOpMaxLen;
+        static bool inited = false;
+
+        public class QspVariable
+        {
+            public bool IsString;
+            public string Name;
+            public bool Assigned;
+            public bool Used;
+            public QspVariable(string name, bool assigned, bool used)
+            {
+                IsString = name.IndexOf('$') == 0;
+                Name = name;
+                Assigned = assigned;
+                Used = used;
+            }
+        }
+        public class QspLocationLink
+        {
+            public string LocationName;
+            public bool LocationExists;
+            public bool LocationCalled;
+            public QspLocationLink(string name, bool exists, bool called)
+            {
+                LocationName = name;
+                LocationExists = exists;
+                LocationCalled = called;
+            }
+        }
+        public class QspObj
+        {
+            public string Name;
+            public bool Added;
+            public bool Removed;
+            public QspObj(string name, bool added, bool removed)
+            {
+                Name = name;
+                Added = added;
+                Removed = removed;
+            }
+        }
+        public class QspAct
+        {
+            public string Name;
+            public bool Added;
+            public bool Removed;
+            public QspAct(string name, bool added, bool removed)
+            {
+                Name = name;
+                Added = added;
+                Removed = removed;
+            }
+        }
+        static public List<QspVariable> vars;
+        static public List<QspLocationLink> locationLinks;
+        static public List<QspObj> objects;
+        static public List<QspAct> acts;
+
+        static public List<string> callerVariables;
+        static public List<string> systemVariables;
+        static public bool curlyParsing;
+
+        static public string currentLocation;
+
+        public enum QuoteType
+        {
+            None,
+            Single,
+            Double
+        }
+
+        public struct QspError
+        {
+            public string locationName; //Локация, на которой встретилась ошибка
+            public string text;         //Текст сообщения об ошибке
+            public int line;            //Номер строки в локации
+            public bool isError;        //Тип ошибки, если "true" - ошибка синтаксиса, если "false" - предупреждение
+        }
+        static List<QspError> m_errors;
+        static int m_errorCounter;
+        public static int GetErrorsCount()
+        {
+            return m_errorCounter;
+        }
+        static int m_warningCounter;
+        public static int GetWarningsCount()
+        {
+            return m_warningCounter;
+        }
+
+        public Common()
+        {
+            if (!inited)
+            {
+                inited = true;
+                qspStats = new QspStatement[(int)QspStatementType.Last_Statement];
+                qspStatsNames = new QspStatementName[QSP_STATSLEVELS, QSP_MAXSTATSNAMES];
+                qspStatsNamesCounts = new int[QSP_STATSLEVELS];
+                qspOps = new QspFunction[(int)QspFunctionType.Last_Operation];
+                qspOpsNames = new QspFunctionName[QSP_OPSLEVELS, QSP_MAXOPSNAMES];
+                qspOpsNamesCounts = new int[QSP_OPSLEVELS];
+
+                m_errors = new List<QspError>();
+                InitQsp();
+                ClearErrors();
+            }
+        }
+
+        static public void ClearErrors()
+        {
+            m_errors.Clear();
+            m_errorCounter = 0;
+            m_warningCounter = 0;
+        }
+
+        static public void ClearNonGameErrors()
+        {
+            for (int index = 0; index < m_errors.Count; ++index)
+            {
+                if (m_errors[index].isError && (m_errors[index].line == INVALID_INDEX))
+                {
+
+                    m_errors.RemoveAt(index);
+                    --index;
+                    m_errorCounter--;
+                }
+            }
+        }
+
+        static public void SubmitError(string text, int line)
+        {
+            QspError e;
+            e.locationName = currentLocation;
+            e.text = text;
+            e.line = line;
+            e.isError = true;
+            m_errors.Add(e);
+            m_errorCounter++;
+        }
+
+        static public void SubmitWarning(string text, int line)
+        {
+            QspError w;
+            w.locationName = currentLocation;
+            w.text = text;
+            w.line = line;
+            w.isError = false;
+            m_errors.Add(w);
+            m_warningCounter++;
+        }
+
+        static public List<QspError> GetErrors()
+        {
+            return m_errors;
+        }
+
+        static public bool StartOfMultiWordOperator(string op)
+        {
+            return op.ToUpper().Equals("ADD") || op.ToUpper().Equals("DEL");
+        }
+
+        static public void qspAddStatement(int statCode, int extArg, /*QSP_STATEMENT func,*/ int minArgs, int maxArgs, params int[] marker)
+        {
+            int i;
+            qspStats[statCode].ExtArg = extArg;
+            //qspStats[statCode].Func = func;
+            qspStats[statCode].MinArgsCount = minArgs;
+            qspStats[statCode].MaxArgsCount = maxArgs;
+            qspStats[statCode].ArgsTypes = new int[QSP_STATMAXARGS];
+            if (maxArgs > 0)
+            {
+                for (i = 0; i < maxArgs; ++i)
+                    qspStats[statCode].ArgsTypes[i] = marker[i];
+            }
+        }
+
+        static public void qspAddStatName(int statCode, string statName, int level)
+        {
+            int len = statName.Length;
+            int count = qspStatsNamesCounts[level];
+            qspStatsNames[level, count].Name = statName;
+            qspStatsNames[level, count].NameLen = len;
+            qspStatsNames[level, count].Code = statCode;
+            qspStatsNamesCounts[level] = count + 1;
+            /* Max length */
+            if (len > qspStatMaxLen) qspStatMaxLen = len;
+        }
+
+        static public void qspAddOperation(int opCode, int priority, /*QSP_FUNCTION func,*/ int resType, int minArgs, int maxArgs, params int[] marker)
+        {
+	        int i;
+	        qspOps[opCode].Priority = priority;
+	        //qspOps[opCode].Func = func;
+	        qspOps[opCode].ResType = resType;
+	        qspOps[opCode].MinArgsCount = minArgs;
+	        qspOps[opCode].MaxArgsCount = maxArgs;
+            qspOps[opCode].ArgsTypes = new int[QSP_OPMAXARGS];
+            if (maxArgs > 0)
+	        {
+		        for (i = 0; i < maxArgs; ++i)
+			        qspOps[opCode].ArgsTypes[i] = marker[i];
+	        }
+        }
+
+        static public void qspAddOpName(int opCode, string opName, int level)
+        {
+            int len = opName.Length;
+	        int count = qspOpsNamesCounts[level];
+	        qspOpsNames[level, count].Name = opName;
+	        qspOpsNames[level, count].NameLen = len;
+	        qspOpsNames[level, count].Code = opCode;
+	        qspOpsNamesCounts[level] = count + 1;
+	        /* Max length */
+	        if (len > qspOpMaxLen) qspOpMaxLen = len;
+        }
+
+
+        static public void InitQsp()
+        {
+            qspStatMaxLen = 0;
+            // код оператора, ExtArg, минимальное кол-во аргументов, максимальное кол-во аргументов, типы аргументов
+            //                                                                                       0 - авто
+            //                                                                                       1 - строка
+            //                                                                                       2 - числовой
+            qspAddStatement((int)QspStatementType.Else, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.ElseIf, 0, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.End, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.Local, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.Set, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.If, 0, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.Act, 0, 1, 2, 1, 1);
+            qspAddStatement((int)QspStatementType.For, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.AddObj, 0, 1, 3, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.ClA, 3, 0, 0);
+            qspAddStatement((int)QspStatementType.CloseAll, 1, 0, 0);
+            qspAddStatement((int)QspStatementType.Close, 0, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.ClS, 4, 0, 0);
+            qspAddStatement((int)QspStatementType.CmdClear, 2, 0, 0);
+            qspAddStatement((int)QspStatementType.CopyArr, 0, 2, 4, 1, 1, 2, 2);
+            qspAddStatement((int)QspStatementType.DelAct, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.DelObj, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.Dynamic, 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.Exec, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.Exit, 0, 0, 0);
+			qspAddStatement((int)QspStatementType.KillQST, 6, 0, 0);
+			qspAddStatement((int)QspStatementType.DelLib, 6, 0, 0);
+			qspAddStatement((int)QspStatementType.FreeLib, 6, 0, 0);
+            qspAddStatement((int)QspStatementType.GoSub, 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.GoTo, 1, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.AddQST, 1, 1, 1, 1);
+			qspAddStatement((int)QspStatementType.AddLib, 1, 1, 1, 1);
+			qspAddStatement((int)QspStatementType.IncLib, 1, 1, 1, 1);
+			qspAddStatement((int)QspStatementType.Jump, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.KillAll, 5, 0, 0);
+            qspAddStatement((int)QspStatementType.KillObj, 1, 0, 1, 2);
+            qspAddStatement((int)QspStatementType.KillVar, 0, 0, 2, 1, 2);
+            qspAddStatement((int)QspStatementType.Menu, 0, 1, 3, 1, 2, 2);
+            qspAddStatement((int)QspStatementType.MClear, 1, 0, 0);
+            qspAddStatement((int)QspStatementType.MNL, 5, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.MPL, 3, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.MP, 1, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.Clear, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.NL, 4, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.PL, 2, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.P, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.Msg, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.OpenGame, 0, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.OpenQst, 0, 1, 1, 1);
+            qspAddStatement((int)QspStatementType.Play, 0, 1, 2, 1, 2);
+            qspAddStatement((int)QspStatementType.RefInt, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.SaveGame, 0, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.SetTimer, 0, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.ShowActs, 0, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.ShowInput, 3, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.ShowObjs, 1, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.ShowVars, 2, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.UnSelect, 0, 0, 0);
+            qspAddStatement((int)QspStatementType.View, 0, 0, 1, 1);
+            qspAddStatement((int)QspStatementType.Wait, 0, 1, 1, 2);
+            qspAddStatement((int)QspStatementType.XGoTo, 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+            /* Names */
+            qspAddStatName((int)QspStatementType.Else, "ELSE", 2);
+            qspAddStatName((int)QspStatementType.ElseIf, "ELSEIF", 1);
+            qspAddStatName((int)QspStatementType.End, "END", 2);
+            qspAddStatName((int)QspStatementType.Local, "LOCAL", 2);
+            qspAddStatName((int)QspStatementType.Set, "SET", 2);
+            qspAddStatName((int)QspStatementType.Set, "LET", 2);
+            qspAddStatName((int)QspStatementType.If, "IF", 2);
+            qspAddStatName((int)QspStatementType.Act, "ACT", 2);
+            qspAddStatName((int)QspStatementType.For, "FOR", 2);
+            qspAddStatName((int)QspStatementType.AddObj, "ADDOBJ", 2);
+            qspAddStatName((int)QspStatementType.AddObj, "ADD OBJ", 2);
+            qspAddStatName((int)QspStatementType.ClA, "CLA", 2);
+            qspAddStatName((int)QspStatementType.CloseAll, "CLOSE ALL", 1);
+            qspAddStatName((int)QspStatementType.Close, "CLOSE", 2);
+            qspAddStatName((int)QspStatementType.ClS, "CLS", 2);
+            qspAddStatName((int)QspStatementType.CmdClear, "CMDCLEAR", 2);
+            qspAddStatName((int)QspStatementType.CmdClear, "CMDCLR", 2);
+            qspAddStatName((int)QspStatementType.CopyArr, "COPYARR", 2);
+            qspAddStatName((int)QspStatementType.DelAct, "DELACT", 2);
+            qspAddStatName((int)QspStatementType.DelAct, "DEL ACT", 2);
+            qspAddStatName((int)QspStatementType.DelObj, "DELOBJ", 2);
+            qspAddStatName((int)QspStatementType.DelObj, "DEL OBJ", 2);
+            qspAddStatName((int)QspStatementType.Dynamic, "DYNAMIC", 2);
+            qspAddStatName((int)QspStatementType.Exec, "EXEC", 2);
+            qspAddStatName((int)QspStatementType.Exit, "EXIT", 2);
+			qspAddStatName((int)QspStatementType.KillQST, "KILLQST", 2);
+			qspAddStatName((int)QspStatementType.DelLib, "DELLIB", 2);
+			qspAddStatName((int)QspStatementType.FreeLib, "FREELIB", 2);
+            qspAddStatName((int)QspStatementType.GoSub, "GOSUB", 2);
+            qspAddStatName((int)QspStatementType.GoSub, "GS", 2);
+            qspAddStatName((int)QspStatementType.GoTo, "GOTO", 2);
+            qspAddStatName((int)QspStatementType.GoTo, "GT", 2);
+			qspAddStatName((int)QspStatementType.AddQST, "ADDQST", 2);
+			qspAddStatName((int)QspStatementType.AddLib, "ADDLIB", 2);
+			qspAddStatName((int)QspStatementType.IncLib, "INCLIB", 2);
+            qspAddStatName((int)QspStatementType.Jump, "JUMP", 2);
+            qspAddStatName((int)QspStatementType.KillAll, "KILLALL", 2);
+            qspAddStatName((int)QspStatementType.KillObj, "KILLOBJ", 2);
+            qspAddStatName((int)QspStatementType.KillVar, "KILLVAR", 2);
+            qspAddStatName((int)QspStatementType.Menu, "MENU", 2);
+            qspAddStatName((int)QspStatementType.MClear, "*CLEAR", 2);
+            qspAddStatName((int)QspStatementType.MClear, "*CLR", 2);
+            qspAddStatName((int)QspStatementType.MNL, "*NL", 2);
+            qspAddStatName((int)QspStatementType.MPL, "*PL", 1);
+            qspAddStatName((int)QspStatementType.MP, "*P", 2);
+            qspAddStatName((int)QspStatementType.Clear, "CLEAR", 2);
+            qspAddStatName((int)QspStatementType.Clear, "CLR", 2);
+            qspAddStatName((int)QspStatementType.NL, "NL", 2);
+            qspAddStatName((int)QspStatementType.PL, "PL", 1);
+            qspAddStatName((int)QspStatementType.P, "P", 2);
+            qspAddStatName((int)QspStatementType.Msg, "MSG", 2);
+            qspAddStatName((int)QspStatementType.OpenGame, "OPENGAME", 2);
+            qspAddStatName((int)QspStatementType.OpenQst, "OPENQST", 2);
+            qspAddStatName((int)QspStatementType.Play, "PLAY", 0);
+            qspAddStatName((int)QspStatementType.RefInt, "REFINT", 2);
+            qspAddStatName((int)QspStatementType.SaveGame, "SAVEGAME", 2);
+            qspAddStatName((int)QspStatementType.SetTimer, "SETTIMER", 1);
+            qspAddStatName((int)QspStatementType.ShowActs, "SHOWACTS", 2);
+            qspAddStatName((int)QspStatementType.ShowInput, "SHOWINPUT", 2);
+            qspAddStatName((int)QspStatementType.ShowObjs, "SHOWOBJS", 2);
+            qspAddStatName((int)QspStatementType.ShowVars, "SHOWSTAT", 2);
+            qspAddStatName((int)QspStatementType.UnSelect, "UNSELECT", 1);
+            qspAddStatName((int)QspStatementType.UnSelect, "UNSEL", 2);
+            qspAddStatName((int)QspStatementType.View, "VIEW", 2);
+            qspAddStatName((int)QspStatementType.Wait, "WAIT", 2);
+            qspAddStatName((int)QspStatementType.XGoTo, "XGOTO", 2);
+            qspAddStatName((int)QspStatementType.XGoTo, "XGT", 2);
+
+            //Математические операторы и функции
+	        int i;
+	        for (i = 0; i < QSP_OPSLEVELS; ++i) qspOpsNamesCounts[i] = 0;
+	        qspOpMaxLen = 0;
+            // код оператора, приоритет, тип результата, минимальное кол-во аргументов, максимальное кол-во аргументов, типы аргументов
+            //                                                                                       0 - авто
+            //                                                                                       1 - строка
+            //                                                                                       2 - числовой
+	        qspAddOperation((int)QspFunctionType.Value, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Start, 127, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.End, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.OpenBracket, 127, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.CloseBracket, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Minus, 18, 2, 1, 1, 2);
+	        qspAddOperation((int)QspFunctionType.Add, 14, 0, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Sub, 14, 2, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Mul, 17, 2, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Div, 17, 2, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Mod, 16, 2, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Ne, 10, 2, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Leq, 10, 2, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Geq, 10, 2, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Eq, 10, 2, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Lt, 10, 2, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Gt, 10, 2, 2, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Append, 12, 1, 2, 2, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Comma, 0, 1, 2, 2, 1, 1);
+	        qspAddOperation((int)QspFunctionType.And, 7, 2, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Or, 6, 2, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Loc, 8, 2, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Obj, 8, 2, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Not, 8, 2, 1, 1, 2);
+	        qspAddOperation((int)QspFunctionType.Min, 30, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Max, 30, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Rand, 30, 2, 1, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.IIf, 30, 0, 3, 3, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.RGB, 30, 2, 3, 4, 2, 2, 2, 2);
+	        qspAddOperation((int)QspFunctionType.Len, 30, 2, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.IsNum, 30, 2, 1, 1, 0);
+	        qspAddOperation((int)QspFunctionType.LCase, 30, 1, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.UCase, 30, 1, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Input, 30, 1, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Str, 30, 1, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Val, 30, 2, 1, 1, 0);
+	        qspAddOperation((int)QspFunctionType.ArrSize, 30, 2, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.IsPlay, 30, 2, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Desc, 30, 1, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Trim, 30, 1, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.GetObj, 30, 1, 1, 1, 2);
+	        qspAddOperation((int)QspFunctionType.StrComp, 30, 2, 2, 2, 1, 1);
+	        qspAddOperation((int)QspFunctionType.StrFind, 30, 1, 2, 3, 1, 1, 2);
+	        qspAddOperation((int)QspFunctionType.StrPos, 30, 2, 2, 3, 1, 1, 2);
+	        qspAddOperation((int)QspFunctionType.Mid, 30, 1, 2, 3, 1, 2, 2);
+	        qspAddOperation((int)QspFunctionType.ArrPos, 30, 2, 2, 3, 1, 0, 2);
+	        qspAddOperation((int)QspFunctionType.ArrComp, 30, 2, 2, 3, 1, 0, 2);
+	        qspAddOperation((int)QspFunctionType.Instr, 30, 2, 2, 3, 1, 1, 2);
+	        qspAddOperation((int)QspFunctionType.Replace, 30, 1, 2, 3, 1, 1, 1);
+	        qspAddOperation((int)QspFunctionType.Func, 30, 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.DynEval, 30, 0, 1, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+	        qspAddOperation((int)QspFunctionType.Rnd, 30, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.CountObj, 30, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.MsecsCount, 30, 2, 0, 0);
+	        qspAddOperation((int)QspFunctionType.QSPVer, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.UserText, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.CurLoc, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.SelObj, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.SelAct, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.MainText, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.StatText, 30, 1, 0, 0);
+	        qspAddOperation((int)QspFunctionType.CurActs, 30, 1, 0, 0);
+	        /* Names */
+	        qspAddOpName((int)QspFunctionType.CloseBracket, ")", 1);
+	        qspAddOpName((int)QspFunctionType.Add, "+", 1);
+	        qspAddOpName((int)QspFunctionType.Sub, "-", 1);
+	        qspAddOpName((int)QspFunctionType.Mul, "*", 1);
+	        qspAddOpName((int)QspFunctionType.Div, "/", 1);
+	        qspAddOpName((int)QspFunctionType.Mod, "MOD", 1);
+	        qspAddOpName((int)QspFunctionType.Ne, "!", 1);
+	        qspAddOpName((int)QspFunctionType.Ne, "<>", 0);
+	        qspAddOpName((int)QspFunctionType.Leq, "<=", 0);
+	        qspAddOpName((int)QspFunctionType.Leq, "=<", 0);
+	        qspAddOpName((int)QspFunctionType.Geq, ">=", 0);
+	        qspAddOpName((int)QspFunctionType.Geq, "=>", 0);
+	        qspAddOpName((int)QspFunctionType.Eq, "=", 1);
+	        qspAddOpName((int)QspFunctionType.Lt, "<", 1);
+	        qspAddOpName((int)QspFunctionType.Gt, ">", 1);
+	        qspAddOpName((int)QspFunctionType.Append, "&", 1);
+	        qspAddOpName((int)QspFunctionType.Comma, ",", 1);
+	        qspAddOpName((int)QspFunctionType.And, "AND", 1);
+	        qspAddOpName((int)QspFunctionType.Or, "OR", 1);
+	        qspAddOpName((int)QspFunctionType.Loc, "LOC", 1);
+	        qspAddOpName((int)QspFunctionType.Obj, "OBJ", 1);
+	        qspAddOpName((int)QspFunctionType.Not, "NO", 1);
+	        qspAddOpName((int)QspFunctionType.Min, "MIN", 1);
+	        qspAddOpName((int)QspFunctionType.Min, "$MIN", 1);
+	        qspAddOpName((int)QspFunctionType.Max, "MAX", 1);
+	        qspAddOpName((int)QspFunctionType.Max, "$MAX", 1);
+	        qspAddOpName((int)QspFunctionType.Rand, "RAND", 1);
+	        qspAddOpName((int)QspFunctionType.IIf, "IIF", 1);
+	        qspAddOpName((int)QspFunctionType.IIf, "$IIF", 1);
+	        qspAddOpName((int)QspFunctionType.RGB, "RGB", 1);
+	        qspAddOpName((int)QspFunctionType.Len, "LEN", 1);
+	        qspAddOpName((int)QspFunctionType.IsNum, "ISNUM", 1);
+	        qspAddOpName((int)QspFunctionType.LCase, "LCASE", 1);
+	        qspAddOpName((int)QspFunctionType.LCase, "$LCASE", 1);
+	        qspAddOpName((int)QspFunctionType.UCase, "UCASE", 1);
+	        qspAddOpName((int)QspFunctionType.UCase, "$UCASE", 1);
+	        qspAddOpName((int)QspFunctionType.Input, "INPUT", 1);
+	        qspAddOpName((int)QspFunctionType.Input, "$INPUT", 1);
+	        qspAddOpName((int)QspFunctionType.Str, "STR", 1);
+	        qspAddOpName((int)QspFunctionType.Str, "$STR", 1);
+	        qspAddOpName((int)QspFunctionType.Val, "VAL", 1);
+	        qspAddOpName((int)QspFunctionType.ArrSize, "ARRSIZE", 1);
+	        qspAddOpName((int)QspFunctionType.IsPlay, "ISPLAY", 1);
+	        qspAddOpName((int)QspFunctionType.Desc, "DESC", 1);
+	        qspAddOpName((int)QspFunctionType.Desc, "$DESC", 1);
+	        qspAddOpName((int)QspFunctionType.Trim, "TRIM", 1);
+	        qspAddOpName((int)QspFunctionType.Trim, "$TRIM", 1);
+	        qspAddOpName((int)QspFunctionType.GetObj, "GETOBJ", 1);
+	        qspAddOpName((int)QspFunctionType.GetObj, "$GETOBJ", 1);
+	        qspAddOpName((int)QspFunctionType.StrComp, "STRCOMP", 1);
+	        qspAddOpName((int)QspFunctionType.StrFind, "STRFIND", 1);
+	        qspAddOpName((int)QspFunctionType.StrFind, "$STRFIND", 1);
+	        qspAddOpName((int)QspFunctionType.StrPos, "STRPOS", 1);
+	        qspAddOpName((int)QspFunctionType.Mid, "MID", 1);
+	        qspAddOpName((int)QspFunctionType.Mid, "$MID", 1);
+	        qspAddOpName((int)QspFunctionType.ArrPos, "ARRPOS", 1);
+	        qspAddOpName((int)QspFunctionType.ArrComp, "ARRCOMP", 1);
+	        qspAddOpName((int)QspFunctionType.Instr, "INSTR", 1);
+	        qspAddOpName((int)QspFunctionType.Replace, "REPLACE", 1);
+	        qspAddOpName((int)QspFunctionType.Replace, "$REPLACE", 1);
+	        qspAddOpName((int)QspFunctionType.Func, "FUNC", 1);
+	        qspAddOpName((int)QspFunctionType.Func, "$FUNC", 1);
+	        qspAddOpName((int)QspFunctionType.DynEval, "DYNEVAL", 1);
+	        qspAddOpName((int)QspFunctionType.DynEval, "$DYNEVAL", 1);
+	        qspAddOpName((int)QspFunctionType.Rnd, "RND", 1);
+	        qspAddOpName((int)QspFunctionType.CountObj, "COUNTOBJ", 1);
+	        qspAddOpName((int)QspFunctionType.MsecsCount, "MSECSCOUNT", 1);
+	        qspAddOpName((int)QspFunctionType.QSPVer, "QSPVER", 1);
+	        qspAddOpName((int)QspFunctionType.QSPVer, "$QSPVER", 1);
+	        qspAddOpName((int)QspFunctionType.UserText, "USER_TEXT", 1);
+	        qspAddOpName((int)QspFunctionType.UserText, "$USER_TEXT", 1);
+	        qspAddOpName((int)QspFunctionType.UserText, "USRTXT", 1);
+	        qspAddOpName((int)QspFunctionType.UserText, "$USRTXT", 1);
+	        qspAddOpName((int)QspFunctionType.CurLoc, "CURLOC", 1);
+	        qspAddOpName((int)QspFunctionType.CurLoc, "$CURLOC", 1);
+	        qspAddOpName((int)QspFunctionType.SelObj, "SELOBJ", 1);
+	        qspAddOpName((int)QspFunctionType.SelObj, "$SELOBJ", 1);
+	        qspAddOpName((int)QspFunctionType.SelAct, "SELACT", 1);
+	        qspAddOpName((int)QspFunctionType.SelAct, "$SELACT", 1);
+	        qspAddOpName((int)QspFunctionType.MainText, "MAINTXT", 1);
+	        qspAddOpName((int)QspFunctionType.MainText, "$MAINTXT", 1);
+	        qspAddOpName((int)QspFunctionType.StatText, "STATTXT", 1);
+	        qspAddOpName((int)QspFunctionType.StatText, "$STATTXT", 1);
+	        qspAddOpName((int)QspFunctionType.CurActs, "CURACTS", 1);
+	        qspAddOpName((int)QspFunctionType.CurActs, "$CURACTS", 1);
+        }
+
+        static public int qspGetStatCode(string s)
+        {
+            if (s.Length == 0)
+                return (int)QspStatementType.Unknown;
+            if (s[0] == ':')
+                return (int)QspStatementType.Label;
+            if (s[0] == '!')
+                return (int)QspStatementType.Comment;
+            int len;
+            if (s.Length < qspStatMaxLen)
+                len = s.Length;
+            else
+                len = qspStatMaxLen;
+            string name = s.Substring(0, len).ToUpper().Trim(WhiteSpace);
+	        for (int i = 0; i < QSP_STATSLEVELS; ++i)
+	        {
+                for (int j = 0; j < qspStatsNamesCounts[i]; j++)
+                {
+                    if (name.Equals(qspStatsNames[i,j].Name))
+                        return qspStatsNames[i,j].Code;
+                }
+	        }
+            return (int)QspStatementType.Unknown;
+        }
+
+        static public int qspGetFunctionCode(string s, bool functionsOnly)
+        {
+            if (s.Length == 0)
+                return (int)QspFunctionType.End;
+            int len;
+            if (s.Length < qspOpMaxLen)
+                len = s.Length;
+            else
+                len = qspOpMaxLen;
+            string name = s.Substring(0, len).ToUpper().Trim(WhiteSpace);
+            for (int i = 0; i < QSP_OPSLEVELS; ++i)
+            {
+                for (int j = 0; j < qspOpsNamesCounts[i]; j++)
+                {
+                    if ((name.Equals(qspOpsNames[i, j].Name)) && 
+                        (!functionsOnly || (qspOpsNames[i, j].Code >= (int)QspFunctionType.First_Function)))
+                        return qspOpsNames[i, j].Code;
+                }
+            }
+            return (int)QspFunctionType.Unknown;
+        }
+        
+        static public QspVariable GetVar(string name)
+        {
+            foreach (QspVariable var in vars)
+            {
+                if (var.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
+                    return var;
+            }
+            return null;
+        }
+
+        static public void AddVar(string name, bool assigned, bool used)
+        {
+            QspVariable var = GetVar(name);
+            if (var == null)
+            {
+                var = new QspVariable(name, assigned, used);
+                vars.Add(var);
+            }
+            else
+            {
+                if (assigned)
+                    var.Assigned = assigned;
+                if (used)
+                    var.Used = used;
+            }
+        }
+
+        static public QspLocationLink GetLocationLink(string name)
+        {
+            foreach (QspLocationLink loc in locationLinks)
+            {
+                if (loc.LocationName.Equals(name, StringComparison.OrdinalIgnoreCase))
+                    return loc;
+            }
+            return null;
+        }
+
+        static public void AddLocationLink(string name, bool exists, bool called)
+        {
+            QspLocationLink loc = GetLocationLink(name);
+            if (loc == null)
+            {
+                loc = new QspLocationLink(name, exists, called);
+                locationLinks.Add(loc);
+            }
+            else
+            {
+                if (exists)
+                    loc.LocationExists = exists;
+                if (called)
+                    loc.LocationCalled = called;
+            }
+        }
+
+        static public QspObj GetObj(string name)
+        {
+            foreach (QspObj obj in objects)
+            {
+                if (obj.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
+                    return obj;
+            }
+            return null;
+        }
+
+        static public void AddObj(string name, bool added, bool removed)
+        {
+            QspObj obj = GetObj(name);
+            if (obj == null)
+            {
+                obj = new QspObj(name, added, removed);
+                objects.Add(obj);
+            }
+            else
+            {
+                if (added)
+                    obj.Added = added;
+                if (removed)
+                    obj.Removed = removed;
+            }
+        }
+
+        static public QspAct GetAct(string name)
+        {
+            foreach (QspAct act in acts)
+            {
+                if (act.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
+                    return act;
+            }
+            return null;
+        }
+
+        static public void AddAct(string name, bool added, bool removed)
+        {
+            QspAct act = GetAct(name);
+            if (act == null)
+            {
+                act = new QspAct(name, added, removed);
+                acts.Add(act);
+            }
+            else
+            {
+                if (added)
+                    act.Added = added;
+                if (removed)
+                    act.Removed = removed;
+            }
+        }
+
+        static public void SetConfig(List<string> callerVars, List<string> systemVars, bool EnableCurlyParsing)
+        {
+            callerVariables = callerVars;
+            systemVariables = systemVars;
+            curlyParsing = EnableCurlyParsing;
+        }
+
+        static public bool IsNumber(String s)
+        {
+            foreach (char c in s.ToCharArray())
+            {
+                if (Array.IndexOf(Digits, c) == INVALID_INDEX)
+                    return false;
+            }
+            return true;
+        }
+
+        static public bool ListContainsIgnoreCase(List<string> stringList, string value)
+        {
+            bool contains = null != stringList.Find(delegate(string str)
+            {
+                return str.Equals(value, StringComparison.OrdinalIgnoreCase);
+            });
+            return contains;
+        }
+
+        static public string GenerateCsvName(string FileName)
+        {
+            string result = FileName;
+            if (result.EndsWith(".txt"))
+                result = result.Substring(0, result.Length - 4);
+            result = result + ".csv";
+            return result;
+        }
+
+        static public bool ExportToCsv(string srcFile, string delimiter)
+        {
+            //Выгружаем исходный код в CSV
+            //4 колонки: номер+локация, оригинал, место для перевода, место для комментария
+
+            string dstFile = GenerateCsvName(srcFile);
+
+            StreamReader fi = null;
+            if (!OpenStreamForReading(ref fi, srcFile))
+            {
+                return false;
+            }
+            StreamWriter fo = null;
+            if (!OpenStreamForWriting(ref fo, dstFile))
+            {
+                fi.Close();
+                return false;
+            }
+            string line;
+            int line_counter = 0;
+            int quoted_line_counter = 0;
+            bool inside = false;
+            string locName = null;
+
+            int quote = (int)QuoteType.None;
+            string quotedText = "";
+            bool quotedTextCompleted = false;
+
+            while ((line = fi.ReadLine()) != null)
+            {
+                line_counter++;
+                line = line.Trim(WhiteSpace);
+                if ((line.Length > 0) && (line[0] == '#'))
+                {
+                    //имя локации
+                    locName = line.Substring(1).Trim(WhiteSpace);
+                    inside = true;
+                }
+                else if ((line.Length > 38) && line.StartsWith("--- ") && line.EndsWith(" ---------------------------------"))
+                {
+                    inside = false;
+                    locName = null;
+                }
+                else if (inside)
+                {
+                    //Разбираем только строки внутри локаций
+                    int pos = 0;
+
+                    //Разбор строки
+                    while (pos < line.Length)
+                    {
+                        char c = line[pos];
+                        if (c == '\'')
+                        {
+                            //Апостроф
+                            if (quote == (int)QuoteType.None)
+                            {
+                                quote = (int)QuoteType.Single;
+                                quotedText = "";
+                            }
+                            else if (quote == (int)QuoteType.Single)
+                            {
+                                if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                                {
+                                    //Экранированный апостроф
+                                    pos++;
+                                    quotedText += c;
+                                }
+                                else
+                                {
+                                    quote = (int)QuoteType.None;
+                                    quotedTextCompleted = true;
+                                }
+                            }
+                            else
+                            {
+                                quotedText += c;
+                            }
+                        }
+                        else if (c == '"')
+                        {
+                            //Кавычка
+                            if (quote == (int)QuoteType.None)
+                            {
+                                quote = (int)QuoteType.Double;
+                                quotedText = "";
+                            }
+                            else if (quote == (int)QuoteType.Double)
+                            {
+                                if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                                {
+                                    //Экранированная кавычка
+                                    pos++;
+                                    quotedText += c;
+                                }
+                                else
+                                {
+                                    quote = (int)QuoteType.None;
+                                    quotedTextCompleted = true;
+                                }
+                            }
+                            else
+                            {
+                                quotedText += c;
+                            }
+                        }
+                        else if (quote != (int)QuoteType.None)
+                        {
+                            //Строка текста внутри кавычек или апострофов
+                            quotedText += c;
+                        }
+                        else if (c == '{')
+                        {
+                            //Пропускаем содержимое фигурных скобок
+                            int curlyLevel = 1;
+                            pos++;
+                            int curlyQuote = (int)QuoteType.None;
+                            while (pos < line.Length)
+                            {
+                                char c2 = line[pos];
+
+                                if (c2 == '\'')
+                                {
+                                    //Апостроф
+                                    if (curlyQuote == (int)QuoteType.None)
+                                    {
+                                        curlyQuote = (int)QuoteType.Single;
+                                    }
+                                    else if (curlyQuote == (int)QuoteType.Single)
+                                    {
+                                        if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                                        {
+                                            //Экранированный апостроф
+                                            pos++;
+                                        }
+                                        else
+                                        {
+                                            curlyQuote = (int)QuoteType.None;
+                                        }
+                                    }
+                                }
+                                else if (c2 == '"')
+                                {
+                                    //Кавычка
+                                    if (curlyQuote == (int)QuoteType.None)
+                                    {
+                                        curlyQuote = (int)QuoteType.Double;
+                                    }
+                                    else if (curlyQuote == (int)QuoteType.Double)
+                                    {
+                                        if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                                        {
+                                            //Экранированная кавычка
+                                            pos++;
+                                        }
+                                        else
+                                        {
+                                            curlyQuote = (int)QuoteType.None;
+                                        }
+                                    }
+                                }
+                                else if (curlyQuote == (int)QuoteType.None)
+                                {
+                                    if (c2 == '{')
+                                    {
+                                        curlyLevel++;
+                                    }
+                                    else if (c2 == '}')
+                                    {
+                                        curlyLevel--;
+                                        if (curlyLevel == 0)
+                                            break;
+                                    }
+                                }
+                                pos++;
+                            }
+                        }
+
+                        if (quotedTextCompleted)
+                        {
+                            //Формируем строку для csv-файла
+                            //4 колонки: номер+локация, оригинал, место для перевода, место для комментария
+                            if (quotedText.Trim(WhiteSpace).Length > 0)
+                            {
+                                quoted_line_counter++;
+
+                                string csv_line = "";
+                                csv_line += CsvEscape(quoted_line_counter.ToString() + ":" + locName) + delimiter;
+                                csv_line += CsvEscape(quotedText) + delimiter;
+                                csv_line += CsvEscape("") + delimiter;
+                                csv_line += CsvEscape("");
+
+                                //Записываем строку в csv-файл
+                                fo.WriteLine(csv_line);
+                            }
+                            quotedTextCompleted = false;
+                        }
+                        pos++;
+                    }
+                }
+            }
+            fi.Close();
+            fo.Close();
+            return true;
+        }
+
+        static public string CsvEscape(string src)
+        {
+            //Форматируем строку для записи в csv-файл
+            string result = "\"" + src.Replace("\"", "\"\"") + "\"";
+            return result;
+        }
+
+        static public string CsvUnEscape(string src)
+        {
+            //Преобразовываем строку из csv-формата в обычный текст
+            string result = src;
+            if (src.StartsWith("\""))
+            {
+                result = result.Substring(1, result.Length - 2);
+                result = result.Replace("\"\"", "\"");
+            }
+            return result;
+        }
+
+        static public bool TranslateFromCsv(string srcFile, string suffix, bool IgnoreEmptyTranslations, string delimiter)
+        {
+            //Создаем перевод на основе загруженного файла и CSV
+            //Проверяем соответствие номера, локации, оригинального текста, в случае несовпадения выдаем ошибку и не сохраняем файл
+            //Для пустых строк заполняем текстом оригинала, либо выдаем ошибку - в зависимости от настроек.
+
+            string dstFile = srcFile;
+            if (dstFile.EndsWith(".txt"))
+                dstFile = dstFile.Substring(0, dstFile.Length - 4);
+            dstFile = dstFile + suffix + ".txt";
+
+            string csvFile = GenerateCsvName(srcFile);
+
+            StreamReader fi_src = null;
+            if (!OpenStreamForReading(ref fi_src, srcFile))
+            {
+                return false;
+            }
+            StreamReader fi_csv = null;
+            if (!OpenStreamForReading(ref fi_csv, csvFile))
+            {
+                fi_src.Close();
+                return false;
+            }
+            StreamWriter fo = null;
+            if (!OpenStreamForWriting(ref fo, dstFile))
+            {
+                fi_src.Close();
+                fi_csv.Close();
+                return false;
+            }
+            string line;
+            string line_cut;
+            int line_counter = 0;
+            int quoted_line_counter = 0;
+            bool inside = false;
+            string locName = null;
+
+            int quote = (int)QuoteType.None;
+            string quotedText = "";
+            bool quotedTextCompleted = false;
+
+            string rawText = "";
+
+            bool aborted = false;
+
+            while ((line = fi_src.ReadLine()) != null)
+            {
+                line_counter++;
+                line_cut = line.Trim(WhiteSpace);
+                if ((line_cut.Length > 0) && (line_cut[0] == '#'))
+                {
+                    //имя локации
+                    locName = line_cut.Substring(1).Trim(WhiteSpace);
+                    inside = true;
+                    fo.WriteLine(line);
+                }
+                else if ((line_cut.Length > 38) && line_cut.StartsWith("--- ") && line_cut.EndsWith(" ---------------------------------"))
+                {
+                    inside = false;
+                    locName = null;
+                    fo.WriteLine(line);
+                }
+                else if (inside)
+                {
+                    //Разбираем только строки внутри локаций
+                    int pos = 0;
+
+                    //Разбор строки
+                    while (pos < line.Length)
+                    {
+                        char c = line[pos];
+                        if (c == '\'')
+                        {
+                            //Апостроф
+                            if (quote == (int)QuoteType.None)
+                            {
+                                quote = (int)QuoteType.Single;
+                                quotedText = "";
+                                rawText += c;
+                            }
+                            else if (quote == (int)QuoteType.Single)
+                            {
+                                if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                                {
+                                    //Экранированный апостроф
+                                    pos++;
+                                    quotedText += c;
+                                }
+                                else
+                                {
+                                    quote = (int)QuoteType.None;
+                                    quotedTextCompleted = true;
+                                }
+                            }
+                            else
+                            {
+                                quotedText += c;
+                            }
+                        }
+                        else if (c == '"')
+                        {
+                            //Кавычка
+                            if (quote == (int)QuoteType.None)
+                            {
+                                quote = (int)QuoteType.Double;
+                                quotedText = "";
+                                rawText += c;
+                            }
+                            else if (quote == (int)QuoteType.Double)
+                            {
+                                if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                                {
+                                    //Экранированная кавычка
+                                    pos++;
+                                    quotedText += c;
+                                }
+                                else
+                                {
+                                    quote = (int)QuoteType.None;
+                                    quotedTextCompleted = true;
+                                }
+                            }
+                            else
+                            {
+                                quotedText += c;
+                            }
+                        }
+                        else if (quote != (int)QuoteType.None)
+                        {
+                            //Строка текста внутри кавычек или апострофов
+                            quotedText += c;
+                        }
+                        else if (c == '{')
+                        {
+                            //Пропускаем содержимое фигурных скобок
+                            int curlyLevel = 1;
+                            rawText += c;
+                            pos++;
+                            int curlyQuote = (int)QuoteType.None;
+                            while (pos < line.Length)
+                            {
+                                char c2 = line[pos];
+                                rawText += c2;
+
+                                if (c2 == '\'')
+                                {
+                                    //Апостроф
+                                    if (curlyQuote == (int)QuoteType.None)
+                                    {
+                                        curlyQuote = (int)QuoteType.Single;
+                                    }
+                                    else if (curlyQuote == (int)QuoteType.Single)
+                                    {
+                                        if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                                        {
+                                            //Экранированный апостроф
+                                            rawText += line[pos + 1];
+                                            pos++;
+                                        }
+                                        else
+                                        {
+                                            curlyQuote = (int)QuoteType.None;
+                                        }
+                                    }
+                                }
+                                else if (c2 == '"')
+                                {
+                                    //Кавычка
+                                    if (curlyQuote == (int)QuoteType.None)
+                                    {
+                                        curlyQuote = (int)QuoteType.Double;
+                                    }
+                                    else if (curlyQuote == (int)QuoteType.Double)
+                                    {
+                                        if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                                        {
+                                            //Экранированная кавычка
+                                            rawText += line[pos + 1];
+                                            pos++;
+                                        }
+                                        else
+                                        {
+                                            curlyQuote = (int)QuoteType.None;
+                                        }
+                                    }
+                                }
+                                else if (curlyQuote == (int)QuoteType.None)
+                                {
+                                    if (c2 == '{')
+                                    {
+                                        curlyLevel++;
+                                    }
+                                    else if (c2 == '}')
+                                    {
+                                        curlyLevel--;
+                                        if (curlyLevel == 0)
+                                            break;
+                                    }
+                                }
+                                pos++;
+                            }
+                        }
+                        else
+                        {
+                            rawText += c;
+                        }
+
+                        if (quotedTextCompleted)
+                        {
+                            //Читаем строку из файла перевода
+                            string translation = quotedText;
+
+                            if (quotedText.Trim(WhiteSpace).Length > 0)
+                            {
+                                translation = "";
+                                quoted_line_counter++;
+
+                                bool csvLineCompleted = false;
+                                string csv_line = null;
+                                int valuesCount = 0;
+                                string thirdValue = "";
+                                int csvQuote = (int)QuoteType.None;
+                                string csvText = "";
+                                bool csvValueCompleted = false;
+
+                                int csvLineIndex = INVALID_INDEX;
+                                string csvLocName = "";
+                                string csvOriginalLine = "";
+
+                                while (!csvLineCompleted && ((csv_line = fi_csv.ReadLine()) != null))
+                                {
+                                    int csvPos = 0;
+
+                                    //Разбор строки
+                                    while (csvPos < csv_line.Length)
+                                    {
+                                        int newValuesCount = valuesCount;
+                                        char c3 = csv_line[csvPos];
+                                        if (c3 == '"')
+                                        {
+                                            csvText += c3;
+                                            //Кавычка
+                                            if (csvQuote == (int)QuoteType.None)
+                                            {
+                                                csvQuote = (int)QuoteType.Double;
+                                            }
+                                            else if (csvQuote == (int)QuoteType.Double)
+                                            {
+                                                if ((csvPos + 1 < csv_line.Length) && (csv_line[csvPos + 1] == '"'))
+                                                {
+                                                    //Экранированная кавычка
+                                                    csvText += csv_line[csvPos + 1];
+                                                    csvPos++;
+                                                }
+                                                else
+                                                {
+                                                    csvQuote = (int)QuoteType.None;
+                                                }
+                                            }
+                                        }
+                                        else if (csvQuote != (int)QuoteType.None)
+                                        {
+                                            //Строка текста внутри кавычек
+                                            csvText += c3;
+                                        }
+                                        else if (c3.ToString() == delimiter)
+                                        {
+                                            newValuesCount++;
+                                            csvValueCompleted = true;
+                                        }
+                                        else
+                                        {
+                                            csvText += c3;
+                                        }
+
+                                        if ((csvQuote == (int)QuoteType.None) && (csvPos == csv_line.Length - 1))
+                                        {
+                                            newValuesCount++;
+                                            csvValueCompleted = true;
+                                        }
+
+                                        if (csvValueCompleted)
+                                        {
+                                            for (int iter = valuesCount + 1; iter <= newValuesCount; iter++)
+                                            {
+                                                csvText = CsvUnEscape(csvText.Trim(WhiteSpace));
+                                                if (iter == 1)   //Первая колонка - имя локации и номер строки
+                                                {
+                                                    string[] csvFirst = csvText.Split(":".ToCharArray());
+                                                    if (csvFirst.Length == 2)
+                                                    {
+                                                        csvLineIndex = Convert.ToInt32(csvFirst[0]);
+                                                        csvLocName = csvFirst[1];
+                                                    }
+                                                }
+                                                else if (iter == 2)   //Вторая колонка - оригинал
+                                                {
+                                                    csvOriginalLine = csvText;
+                                                }
+                                                else if (iter == 3)   //Третья колонка - перевод
+                                                {
+                                                    thirdValue = csvText;
+                                                }
+                                                csvText = "";
+                                            }
+                                            csvValueCompleted = false;
+                                            valuesCount = newValuesCount;
+                                        }
+                                        csvPos++;
+                                    }
+                                    if (csvQuote == (int)QuoteType.None)
+                                    {
+                                        csvLineCompleted = true;
+                                    }
+                                    else
+                                    {
+                                        csvText += Environment.NewLine;
+                                    }
+                                }
+
+                                if ((csv_line == null) || (csvLineCompleted && 
+                                    ((csvLocName != locName) || (quoted_line_counter != csvLineIndex) || (csvOriginalLine != quotedText))))
+                                {
+                                    SubmitError("CSV-file does not match the original! Generate it again.", INVALID_INDEX);
+                                    aborted = true;
+                                    break;
+                                }
+                                if (!csvLineCompleted)
+                                {
+                                    SubmitError("CSV-file damaged! Line number: " + quoted_line_counter.ToString(), INVALID_INDEX);
+                                    aborted = true;
+                                    break;
+                                }
+                                translation = thirdValue;
+
+                                if (translation.Length == 0)
+                                {
+                                    if (IgnoreEmptyTranslations)
+                                    {
+                                        translation = quotedText;
+                                    }
+                                    else
+                                    {
+                                        SubmitError("Line number " + quoted_line_counter + " is not converted!", INVALID_INDEX);
+                                        aborted = true;
+                                        break;
+                                    }
+                                }
+                            }
+                            rawText += translation;
+                            rawText += c;
+                            quotedTextCompleted = false;
+                        }
+                        pos++;
+                    }
+                    if (aborted)
+                        break;
+                    if (quote == (int)QuoteType.None)
+                    {
+                        //Записываем строку в файл перевода
+                        fo.WriteLine(rawText);
+                        rawText = "";
+                    }
+                }
+                else
+                {
+                    fo.WriteLine(line);
+                }
+            }
+            fi_src.Close();
+            fi_csv.Close();
+            fo.Close();
+            if (aborted)
+            {
+                //Убить корявый перевод
+                File.Delete(dstFile);
+            }
+            return !aborted;
+        }
+
+        static public bool OpenStreamForReading(ref StreamReader fi, string file)
+        {
+            bool result = false;
+            try
+            {
+                fi = new StreamReader(file, Encoding.Default);
+                result = true;
+            }
+            catch (Exception e)
+            {
+                SubmitError("File \"" + file + "\" cannot be opened for reading (it can be opened by another program).", INVALID_INDEX);
+                result = false;
+            }
+            return result;
+        }
+
+        static public bool OpenStreamForWriting(ref StreamWriter fo, string file)
+        {
+            bool result = false;
+            try
+            {
+                fo = new StreamWriter(file, false, Encoding.Default);
+                result = true;
+            }
+            catch (Exception e)
+            {
+                SubmitError("File \"" + file + "\" cannot be opened for writing (it can be opened by another program).", INVALID_INDEX);
+                result = false;
+            }
+            return result;
+        }
+    }
+}

+ 667 - 0
Analyser/QSP_Analyser/List.txt

@@ -0,0 +1,667 @@
+Common.cs
+Line 1430:	SubmitError("CSV-файл не соответствует исходному! Сгенерируйте его заново.", INVALID_INDEX);
+			SubmitError("CSV-file does not match the original! Generate it again.", INVALID_INDEX);
+
+			
+Line 1436:	SubmitError("CSV-файл поврежден! Номер строки: " + quoted_line_counter.ToString(), INVALID_INDEX);
+			SubmitError("CSV-file damaged! Line number: " + quoted_line_counter.ToString(), INVALID_INDEX);
+
+			
+Line 1450:	SubmitError("Не переведена строка номер " + quoted_line_counter + "!", INVALID_INDEX);
+			SubmitError("Line number " + quoted_line_counter + " is not converted!", INVALID_INDEX);
+			
+
+Line 1497:	SubmitError("Файл \"" + file + "\" недоступен для чтения (возможно, он открыт другой программой).", INVALID_INDEX);
+			SubmitError("File \"" + file + "\" cannot be opened for reading (it can be opened by another program).", INVALID_INDEX);
+			
+
+Line 1513:	SubmitError("Файл \"" + file + "\" недоступен для записи (возможно, он открыт другой программой).", INVALID_INDEX);
+			SubmitError("File \"" + file + "\" cannot be opened for writing (it can be opened by another program).", INVALID_INDEX);
+			
+
+MainForm.Designer.cs
+Line 86:             this.label1.Text = "Эта утилита анализирует код игры на языке QSP в формате TXT2GAM.";
+Line 86:             this.label1.Text = "This utility analyzes the QSP game code in form TXT2GAM.";
+
+
+Line 137:             this.btnTry1.Text = "Локации";
+Line 137:             this.btnTry1.Text = "Locations";
+
+
+Line 147:             this.btnTry2.Text = "Переменные";
+Line 147:             this.btnTry2.Text = "Variables";
+
+
+Line 157:             this.btnTry3.Text = "Предметы";
+Line 157:             this.btnTry3.Text = "Items";
+
+
+Line 199:             this.tabCheck.Text = "Анализ"
+Line 199:             this.tabCheck.Text = "Analysis";
+
+
+Line 208:             this.btnTry4.Text = "Действия";
+Line 208:             this.btnTry4.Text = "Events";
+
+
+Line 218:             this.btnReload.Text = "Перечитать";
+Line 218:             this.btnReload.Text = "Reload";
+
+
+Line 242:             this.tabOptions.Text = "Настройки";
+Line 242:             this.tabOptions.Text = "Settings";
+
+
+Line 255:             this.chkCurlyParse.Text = "Интерпретировать содержимое фигурных скобок как код";
+Line 255:             this.chkCurlyParse.Text = "Content between curly brackets take as a code";
+
+
+Line 268:             this.chkActions.Text = "Действия";
+Line 268:             this.chkActions.Text = "Actions";
+
+
+Line 305:             this.lblSystemVariables.Text = "Системные переменные(исключения из списка неиспользуемых переменных)";
+Line 305:             this.lblSystemVariables.Text = "System variables (exception from the list of unused variables)";
+
+
+Line 314:             this.lblSortHeader.Text = "Сортировать при выводе:";
+Line 314:             this.lblSortHeader.Text = "Sort by output:";
+
+
+Line 322:             this.btnReset.Text = "Сбросить настройки";
+Line 322:             this.btnReset.Text = "Reset settings";
+
+
+Line 347:             this.chkSortObjects.Text = "Предметы";
+Line 347:             this.chkSortObjects.Text = "Items";
+
+
+Line 360:             this.chkSortVariables.Text = "Переменные";
+Line 360:             this.chkSortVariables.Text = "Variables";
+
+
+Line 373:             this.chkSortLocations.Text = "Локации";
+Line 373:             this.chkSortLocations.Text = "Locations";
+
+
+Line 399:             this.chkVariableCalls.Text = "Считать присваивание переменных \r\nссылкой на локацию:";
+Line 399:             this.chkVariableCalls.Text = "Consider variable assignment \r\nby link to location:";
+
+
+Line 410:             this.tabTranslate.Text = "Конвертация";
+Line 410:             this.tabTranslate.Text = "Conversion";
+
+
+Line 423:             this.chkIgnoreEmptyTranslationsCsv.Text = "Игнорировать непереведенные строки\r\n(для \"пустых\" значений перевода будет оставлен текст оригинала)";
+Line 423:             this.chkIgnoreEmptyTranslationsCsv.Text = "Ignore unconverted strings\r\n(for \"empty\" value of conversion will be used original text)";
+
+
+Line 434:             this.lblSuffixCsv.Text = "Суффикс для файла перевода:";
+Line 433:             this.lblSuffixCsv.Text = "Extension for conversion file:";
+
+
+Line 451:             this.btnTranslateFromCsv.Text = "Сделать перевод, используя CSV";
+Line 451:             this.btnTranslateFromCsv.Text = "Make conversion, use CSV";
+
+
+Line 464:             this.grpCsvDelimiter.Text = "Разделитель CSV";
+Line 464:             this.grpCsvDelimiter.Text = "Split CSV";
+
+
+Line 475:             this.radComma.Text = "Запятая - ,";
+Line 475:             this.radComma.Text = "Comma - ,";
+
+
+Line 485:             this.radSemicolon.Text = "Точка с запятой - ;";
+Line 485:             this.radSemicolon.Text = "Semicolon - ;";
+
+
+Line 494:             this.btnExportCsv.Text = "Экспорт в CSV";
+Line 494:             this.btnExportCsv.Text = "Export to CSV";
+
+
+Line 520:             this.grpTranslateCsv.Text = "Перевод";
+Line 520:             this.grpTranslateCsv.Text = "Conversion";
+
+
+Line 528:             this.btnBeautify.Text = "Отформатировать код";
+Line 528:             this.btnBeautify.Text = "Format the code";
+
+
+Line 546:             this.Text = "Анализатор кода QSP";
+Line 546:             this.Text = "QSP Code Analyzer";
+
+MainForm.cs
+
+Line 72:             Log("Ошибок: " + Common.GetErrorsCount() + ", предупреждений: " + Common.GetWarningsCount());
+Line 72:             Log("No of errors: " + Common.GetErrorsCount() + ", warnings: " + Common.GetWarningsCount());
+
+
+Line 77:                 string errorMessage = "локация \"" + error.locationName + "\", строка #" + Convert.ToString(err_line) + " : " + error.text;
+Line 77:                 string errorMessage = "Location \"" + error.locationName + "\", Line #" + Convert.ToString(err_line) + " : " + error.text;
+
+
+Line 80:                     Log("Ошибка, " + errorMessage);
+Line 80:                     Log("Error, " + errorMessage);
+
+
+Line 84:                     Log("Предупреждение, " + errorMessage);
+Line 84:                     Log("Warning, " + errorMessage);
+
+
+Line 100:                 Log("Пытаемся прочесть файл...");
+Line 100:                 Log("Trying to read the file ...");
+
+
+Line 103:                     Log("Файл успешно прочитался.");
+Line 103:                     Log("The file was read successfully");
+
+
+Line 110:                 Log("Файл не загружен.");
+Line 110:                 Log("File was not read.");
+
+
+Line 182:                         MessageBox.Show("Исходный файл не найден!");
+Line 182:                         MessageBox.Show("Input file was not found!");
+
+
+Line 188:                     MessageBox.Show("Выберите исходный файл!");
+Line 188:                     MessageBox.Show("Select input file!");
+
+
+Line 235:             Log("Обрабатываем имена локаций...");
+Line 235:             Log("We process the names of locations ...");
+
+
+Line 236:             PrintArray(txtList1, LocationsDefined, "Существующие локации");
+Line 236:             PrintArray(txtList1, LocationsDefined, "Existing locations");
+
+
+Line 237:             Log("Добавлено локаций: " + LocationsDefined.Count.ToString());
+Line 237:             Log("Added locations: " + LocationsDefined.Count.ToString());
+
+
+Line 239:             Log("Обрабатываем ссылки на локации...");
+Line 239:             Log("We process the reference to locations...");
+
+
+Line 240:             PrintArray(txtList2, LocationsReferenced, "Ссылки на локации");
+Line 240:             PrintArray(txtList2, LocationsReferenced, "References to locations");
+
+
+Line 241:             Log("Добавлено ссылок на локации: " + LocationsReferenced.Count.ToString());
+Line 241:             Log("Added reference to location: " + LocationsReferenced.Count.ToString());
+
+
+Line 243:             Log("Начинаем поиск неправильных ссылок...");
+Line 243:             Log("We begin to search for incorrect links ...");
+
+
+Line 244:             PrintArray(txtList3, LocationsUnDefined, "Неверные ссылки");
+Line 244:             PrintArray(txtList3, LocationsUnDefined, "incorrect links");
+
+
+Line 245:             Log("Найдено неправильных ссылок: " + LocationsUnDefined.Count.ToString());
+Line 245:             Log("Found incorrect links: " + LocationsUnDefined.Count.ToString());
+
+
+Line 247:             Log("Начинаем поиск потерянных локаций - тех, на которые нет ссылок...");
+Line 247:             Log("We begin to search for lost locations - those for which there are no references ...");
+
+
+Line 248:             PrintArray(txtList3, LocationsUnReferenced, "Потерянные локации");
+Line 248:             PrintArray(txtList3, LocationsUnReferenced, "Lost locations");
+
+
+Line 249:             Log("Найдено потерянных локаций: " + LocationsUnReferenced.Count.ToString());
+Line 249:             Log("Found lost locations: " + LocationsUnReferenced.Count.ToString());
+
+
+Line 266:             Log("Выполняем поиск переменных...");
+Line 266:             Log("Search for variables ...");
+
+
+Line 293:             PrintArray(txtList1, TextVars, "Текстовые переменные");
+Line 293:             PrintArray(txtList1, TextVars, "String variables");
+
+
+Line 294:             PrintArray(txtList2, NumericVars, "Числовые переменные");
+Line 294:             PrintArray(txtList2, NumericVars, "Numeric variables");
+
+
+Line 296:             Log("Добавлено переменных: " + Common.vars.Count.ToString());
+Line 296:             Log("Added variables: " + Common.vars.Count.ToString());
+
+
+Line 300:             PrintArray(txtList3, TextVars_unassigned, "Не иниц. переменные:");
+Line 300:             PrintArray(txtList3, TextVars_unassigned, "no init variables:");
+
+
+Line 301:             Log("Найдено обращений к неинициализированным текстовым переменным: " + TextVars_unassigned.Count.ToString());
+Line 301:             Log("Found using of uninitialized text variables: " + TextVars_unassigned.Count.ToString());
+
+
+Line 305:             Log("Найдено обращений к неинициализированным числовым переменным: " + NumericVars_unassigned.Count.ToString());
+Line 305:             Log("Found using of uninitialized numeric variables: " + NumericVars_unassigned.Count.ToString());
+
+
+Line 309:             PrintArray(txtList3, TextVars_unused, "Не исп. переменные:");
+Line 309:             PrintArray(txtList3, TextVars_unused, "Unused variables:");
+
+
+Line 310:             Log("Найдено неиспользуемых текстовых переменных: " + TextVars_unused.Count.ToString());
+Line 310:             Log("Found unused string variables: " + TextVars_unused.Count.ToString());
+
+
+Line 314:             Log("Найдено неиспользуемых числовых переменных: " + NumericVars_unused.Count.ToString());
+Line 314:             Log("Found unused numeric variables: " + NumericVars_unused.Count.ToString());
+
+
+Line 349:             Log("Выполняем поиск предметов...");
+Line 349:             Log("Search of items...");
+
+
+Line 350:             PrintArray(txtList1, ObjectsAdded, "Добавление предмета");
+Line 350:             PrintArray(txtList1, ObjectsAdded, "Added items");
+
+
+Line 351:             PrintArray(txtList2, ObjectsDeleted, "Удаление предмета");
+Line 351:             PrintArray(txtList2, ObjectsDeleted, "Remove item");
+
+
+Line 352:             Log("Добавлений предметов: " + ObjectsAdded.Count.ToString());
+Line 352:             Log("Items adding: " + ObjectsAdded.Count.ToString());
+
+
+Line 353:             Log("Удалений предметов: " + ObjectsDeleted.Count.ToString());
+Line 353:             Log("Items removing: " + ObjectsDeleted.Count.ToString());
+
+
+Line 355:             Log("Начинаем поиск удаления несуществующих предметов...");
+Line 355:             Log("Search of nonexisting items...");
+
+
+Line 356:             PrintArray(txtList3, ObjectsUnDefined, "Неверное удаление");
+Line 356:             PrintArray(txtList3, ObjectsUnDefined, "Invalid deletion");
+
+
+Line 357:             Log("Найдено неправильных удалений: " + ObjectsUnDefined.Count.ToString());
+Line 357:             Log("Found invalid deletions: " + ObjectsUnDefined.Count.ToString());
+
+
+Line 359:             Log("Начинаем поиск потерянных предметов - те, которые не удаляются в процессе игры...");
+Line 359:             Log("Looking for lost items - those that are not deleted during the game ...");
+
+
+Line 360:             PrintArray(txtList3, ObjectsLost, "Потерянные предметы");
+Line 360:             PrintArray(txtList3, ObjectsLost, "Lost items");
+
+
+Line 361:             Log("Найдено потерянных предметов: " + ObjectsLost.Count.ToString());
+Line 361:             Log("Lost items found: " + ObjectsLost.Count.ToString());
+
+
+Line 392:             Log("Выполняем поиск действий...");
+Line 392:             Log("Search for actions...");
+
+
+Line 393:             PrintArray(txtList1, ActsAdded, "Добавление действия");
+Line 393:             PrintArray(txtList1, ActsAdded, "Add an action");
+
+
+Line 394:             PrintArray(txtList2, ActsDeleted, "Удаление действия");
+Line 394:             PrintArray(txtList2, ActsDeleted, "Remove an action");
+
+
+Line 395:             Log("Добавлений действий: " + ActsAdded.Count.ToString());
+Line 395:             Log("Added action: " + ActsAdded.Count.ToString());
+
+
+Line 396:             Log("Удалений действий: " + ActsDeleted.Count.ToString());
+Line 396:             Log("Removed action: " + ActsDeleted.Count.ToString());
+
+
+Line 398:             Log("Начинаем поиск удаления несуществующих действий...");
+Line 398:             Log("We begin to search for deletion of nonexistent actions...");
+
+
+Line 399:             PrintArray(txtList3, ActsUnDefined, "Неверное удаление");
+Line 399:             PrintArray(txtList3, ActsUnDefined, "Invalid deletion");
+
+
+Line 400:             Log("Найдено неправильных удалений: " + ActsUnDefined.Count.ToString());
+Line 400:             Log("Invalid deletions found: " + ActsUnDefined.Count.ToString());
+
+
+Line 450:                     MessageBox.Show("Ошибка: " + error.text);
+Line 450:                     MessageBox.Show("Error: " + error.text);
+
+
+Line 464:                     MessageBox.Show("В файле есть ошибки синтаксиса, экспорт невозможен!");
+Line 464:                     MessageBox.Show("There are syntax errors in the file, export is not possible!");
+
+
+Line 498:                     MessageBox.Show("В файле есть ошибки синтаксиса, экспорт невозможен!");
+Line 498:                     MessageBox.Show("There are syntax errors in the file, export is not possible!");
+
+
+Line 505:                     MessageBox.Show("Не обнаружен файл CSV!");
+Line 505:                     MessageBox.Show("CSV file was not found!");
+
+
+Line 510:                     MessageBox.Show("Введите суффикс для файла перевода.");
+Line 510:                     MessageBox.Show("Enter an extension of the conversion file.");
+
+
+QSPGameCode.cs
+
+Line 98:                 SubmitError("Слишком сложное выражение", currentLine);
+Line 98:                 SubmitError("Quite complicated expression", currentLine);
+
+
+Line 110:                 SubmitError("Слишком много аргументов в выражении", currentLine);
+Line 110:                 SubmitError("Quite many arguments in the expression", currentLine);
+
+
+Line 193:                                 SubmitError("Закрывающая фигурная скобка без открывающей", oldLine + 1);
+Line 193:                                 SubmitError("Closing curly brace without opening one", oldLine + 1);
+
+
+Line 229:                 SubmitError("Незакрытая строка", oldLine + 1);
+Line 229:                 SubmitError("Unclosed string", oldLine + 1);
+
+
+Line 235:                 SubmitError("Незакрытая фигурная скобка", oldLine + 1);
+Line 235:                 SubmitError("Unclosed curly bracket", oldLine + 1);
+
+
+Line 476:                             SubmitError("Внутренняя ошибка анализатора - незакрытая фигурная скобка \"{\"", currentLine);
+Line 476:                             SubmitError("Internal error of the analyzer - unclosed curly bracket \"{\"", currentLine);
+
+
+Line 505:                                     SubmitError("Пустая метка", lineNum);
+Line 505:                                     SubmitError("Empty label", lineNum);
+
+
+Line 510:                                     SubmitError("Незакрытая строка в названии метки", lineNum);
+Line 510:                                     SubmitError("Unclosed string in the label name", lineNum);
+
+
+Line 546:                                             SubmitError("ELSEIF без IF", lineNum);
+Line 546:                                             SubmitError("ELSEIF without IF", lineNum);
+
+
+Line 557:                                         SubmitError("Многострочный IF должен стоять в начале строки", lineNum);
+Line 557:                                         SubmitError("Multiline IF should be placed at the beginning of the line", lineNum);
+
+
+Line 559:                                         SubmitError("Многострочный ELSEIF должен стоять в начале строки", lineNum);
+Line 559:                                         SubmitError("Multiline ELSEIF should be placed at the beginning of the line", lineNum);
+
+
+Line 578:                                     SubmitError("ELSEIF в однострочном IF не поддерживается", lineNum);
+Line 578:                                     SubmitError("ELSEIF cannot be used in single line IF", lineNum);
+
+
+Line 584:                                 SubmitError("После знака \":\" в многострочном ELSEIF не должно быть операторов", lineNum);
+Line 584:                                 SubmitError("An operator cannot be placed after colon\":\" in multiline ELSEIF", lineNum);
+
+
+Line 609:                                     SubmitError("Многострочный ACT должен стоять в начале строки", lineNum);
+Line 609:                                     SubmitError("Multiline ACT should be placed at the beginning of the line", lineNum);
+
+
+Line 637:                                     SubmitError("Лишний \"&\": возможно, вы хотели написать \"AND\"", lineNum);
+Line 637:                                     SubmitError("Redundant \"&\": perhaps should be \"AND\"", lineNum);
+
+
+Line 643:                                     SubmitError("Лишний \"&\"", lineNum);
+Line 643:                                     SubmitError("Redundant \"&\"", lineNum);
+
+
+Line 678:                                 SubmitError("Квадратная скобка ставится только сразу за именем массива, без пробелов", lineNum);
+Line 678:                                 SubmitError("A square bracket has to be placed just behind the name of the array, with no spaces", lineNum);
+
+
+Line 692:                                         SubmitError("Лишняя скобка \")\"", lineNum);
+Line 692:                                         SubmitError("Redundant bracket \")\"", lineNum);
+
+
+Line 788:                             SubmitError("Внутренняя ошибка анализатора! Пустой блок!", lineNum);
+Line 788:                             SubmitError("Internal error of analyzer! Empty block!", lineNum);
+
+
+Line 817:                                 SubmitError("ELSEIF без IF", lineNum);
+Line 817:                                 SubmitError("ELSEIF без IF", lineNum);
+
+
+Line 839:                                         SubmitError("После многострочного ELSE не должно быть операторов", lineNum);
+Line 839:                                         SubmitError("An operator cannot be placed after multiline ELSE", lineNum);
+
+
+Line 864:                                             SubmitError("ELSE без IF", lineNum);
+Line 864:                                             SubmitError("ELSE without IF", lineNum);
+
+
+Line 870:                                         SubmitError("Неверная запись однострочного ACT", lineNum);
+Line 870:                                         SubmitError("Invalid notation of single line ACT", lineNum);
+
+
+Line 882:                                         SubmitError("Перед ELSE в однострочном IF должны быть операторы", lineNum);
+Line 882:                                         SubmitError("After single line IF has to be any operators before ELSE", lineNum);
+
+
+Line 888:                                     SubmitError("ELSE без IF", lineNum);
+Line 888:                                     SubmitError("ELSE without IF", lineNum);
+
+
+Line 923:                                 SubmitError("Лишний END", lineNum);
+Line 923:                                 SubmitError("Redundant END", lineNum);
+
+
+Line 982:                             SubmitError("Внутренняя ошибка анализатора! Пустой блок!", lineNum);
+Line 982:                             SubmitError("Internal error of the analyzer! Empty block!", lineNum);
+
+
+Line 1000:                     SubmitError("Лишняя скобка \"(\"", lineNum);
+Line 1000:                     SubmitError("Redundant bracket \"(\"", lineNum);
+
+
+Line 1005:                     SubmitError("IF без \":\"", lineNum);
+Line 1005:                     SubmitError("IF without \":\"", lineNum);
+
+
+Line 1010:                     SubmitError("ACT без \":\"", lineNum);
+Line 1010:                     SubmitError("ACT without \":\"", lineNum);
+
+
+Line 1031:                         SubmitError("Неверная запись однострочного ACT", lineNum);
+Line 1031:                         SubmitError("Invalid notation of single line ACT", lineNum);
+
+
+Line 1036:                         SubmitError("Неверная запись однострочного IF", lineNum);
+Line 1036:                         SubmitError("Invalid notation of single line IF", lineNum);
+
+
+Line 1041:                         SubmitError("После ELSE в однострочном IF должны быть операторы", lineNum);
+Line 1041:                         SubmitError("In single line IF has to be any operators after ELSE", lineNum);
+
+
+Line 1085:                     SubmitError("Многострочный IF без END", cline.line);
+Line 1085:                     SubmitError("Multi line IF without END", cline.line);
+
+
+Line 1090:                     SubmitError("Многострочный ACT без END", cline.line);
+Line 1090:                     SubmitError("Multi line ACT without END", cline.line);
+
+
+Line 1117:                     SubmitError("Не найден знак \"=\"", currentLine);
+Line 1117:                     SubmitError("Not found the char \"=\"", currentLine);
+
+
+Line 1125:                         SubmitError("Не указано имя переменной для присваивания, слева от знака \"=\"", currentLine);
+Line 1125:                         SubmitError("The name of a variable before the character \"=\" is not specified!", currentLine);
+
+
+Line 1131:                         SubmitError("После знака \"=\" должно быть значение для присваивания", currentLine);
+Line 1131:                         SubmitError("It should be a value after char \"=\"", currentLine);
+
+
+Line 1191:                         SubmitError("Оператор IF без условия", currentLine);
+Line 1191:                         SubmitError("Operator IF without condition", currentLine);
+
+
+Line 1195:                         SubmitError("Оператор ELSEIF без условия", currentLine);
+Line 1195:                         SubmitError("Operator ELSEIF without condition", currentLine);
+
+
+Line 1298:                         SubmitError("Слишком много аргументов для оператора", currentLine);
+Line 1298:                         SubmitError("Too many arguments for the operator", currentLine);
+
+
+Line 1312:                             SubmitError("Аргумент не может быть пустым", currentLine);
+Line 1312:                             SubmitError("Argument can not be empty", currentLine);
+
+
+Line 1327:                         SubmitError("Аргумент не может быть пустым", currentLine);
+Line 1327:                         SubmitError("Argument can not be empty", currentLine);
+
+
+Line 1334:                 SubmitError("Для оператора требуется больше аргументов", currentLine);
+Line 1334:                 SubmitError("The operator requires more arguments", currentLine);
+
+
+Line 1369:                         SubmitError("Неизвестное действие в выражении", currentLine);
+Line 1369:                         SubmitError("Unknown action in the expression", currentLine);
+
+
+Line 1376:                         SubmitError("Ошибка синтаксиса", currentLine);
+Line 1376:                         SubmitError("Syntax error", currentLine);
+
+
+Line 1390:                             SubmitError("Ошибка синтаксиса", currentLine);
+Line 1390:                             SubmitError("Syntax error", currentLine);
+
+
+Line 1402:                             SubmitError("Не найдена закрывающая скобка", currentLine);
+Line 1402:                             SubmitError("Closing bracket not found", currentLine);
+
+
+Line 1410:                             SubmitError("Не найдена открывающая скобка", currentLine);
+Line 1410:                             SubmitError("Opening bracket not found", currentLine);
+
+
+Line 1419:                                 SubmitError("Неверное число аргументов функции", currentLine);
+Line 1419:                                 SubmitError("Invalid number of arguments", currentLine);
+
+
+Line 1496:                                 SubmitError("Неверное число аргументов функции", currentLine);
+Line 1496:                                 SubmitError("Invalid number of arguments", currentLine);
+
+
+Line 1498:                                 SubmitError("Ошибка синтаксиса", currentLine);
+Line 1498:                                 SubmitError("Syntax error", currentLine);
+
+
+Line 1504:                             SubmitError("Ошибка синтаксиса", currentLine);
+Line 1504:                             SubmitError("Syntax error", currentLine);
+
+
+Line 1509:                             SubmitError("Неверное число аргументов функции", currentLine);
+Line 1509:                             SubmitError("Invalid number of arguments", currentLine);
+
+
+Line 1522:                             SubmitError("Внутренняя ошибка анализатора: недопустимые символы в имени переменной", currentLine);
+Line 1522:                             SubmitError("Internal error of the analyzer: Invalid characters in the variable name", currentLine);
+
+
+Line 1554:                                 SubmitError("Скобки не найдены", currentLine);
+Line 1554:                                 SubmitError("Brackets not found", currentLine);
+
+
+Line 1587:                                     SubmitError("Незакрытая скобка \"[\"", currentLine);
+Line 1587:                                     SubmitError("Unclosed parenthesis \"[\"", currentLine);
+
+
+Line 1609:                             SubmitError("Неверное число аргументов функции", currentLine);
+Line 1609:                             SubmitError("Invalid number of arguments", currentLine);
+
+
+Line 1611:                             SubmitError("Ошибка синтаксиса", currentLine);
+Line 1611:                             SubmitError("Syntax error", currentLine);
+
+
+Line 1625:                 SubmitError("Внутренняя ошибка анализатора: пустое имя переменной!", currentLine);
+Line 1625:                 SubmitError("Internal error of the analyzer: empty name of variable!", currentLine);
+
+
+Line 1634:                 SubmitError("Ключевое слово языка \"" + name + "\" не может быть использовано в качестве имени переменной", currentLine);
+Line 1634:                 SubmitError("QSP Keyword \"" + name + "\" cannot be used as a variable name", currentLine);
+
+
+Line 1647:                 SubmitError("Недопустимое имя переменной \"" + name + "\"", currentLine);
+Line 1647:                 SubmitError("Invalid variable name \"" + name + "\"", currentLine);
+
+
+Line 1653:                 SubmitError("Имя переменной \"" + name + "\" не может начинаться с цифры", currentLine);
+Line 1653:                 SubmitError("Variable name \"" + name + "\" cannot start with a digit", currentLine);
+
+
+Line 1659:                 SubmitError("Недопустимые символы в имени переменной \"" + name + "\"", currentLine);
+Line 1659:                 SubmitError("Invalid symbols in the name of the variable \"" + name + "\"", currentLine);
+
+
+Line 1666:                 SubmitWarning("В имени переменной \"" + name + "\" используются одновременно английские и русские символы, возможно опечатка", currentLine);
+Line 1666:                 SubmitWarning("English and Russian symbols are used simultaneously in the name of varible \"" + name + "\" , possibly a typo", currentLine);
+
+
+Line 1687:                     SubmitError("Недопустимое выражение", currentLine);
+Line 1687:                     SubmitError("Invalid expression", currentLine);
+
+
+Line 1708:                 SubmitError("Слева от знака \"=\" в операции присваивания должно стоять имя переменной", currentLine);
+Line 1708:                 SubmitError("Name of the variable should be before char \"=\" in the assignment operation", currentLine);
+
+
+Line 1908:                     SubmitWarning("Незакрытый апостроф внутри тега", currentLine);
+Line 1908:                     SubmitWarning("Unclosed apostrophe inside the tag", currentLine);
+
+
+Line 1913:                     SubmitWarning("Незакрытая кавычка внутри тега", currentLine);
+Line 1913:                     SubmitWarning("Unclosed quote inside the tag", currentLine);
+
+
+Line 1918:                     SubmitWarning("Незакрытый тег",currentLine);
+Line 1918:                     SubmitWarning("Unclosed tag",currentLine);
+
+
+Line 1923:                     SubmitWarning("Имя тега должно следовать сразу за открывающей угловой скобкой, без пробелов", currentLine);
+Line 1923:                     SubmitWarning("The name of the tag should follow immediately after the opening angle bracket, without spaces", currentLine);
+
+
+Line 2048:                         SubmitError("Незакрытый апостроф в подвыражении", currentLine);
+Line 2048:                         SubmitError("Unclosed apostrophe in a subexpression", currentLine);	
+	
+
+Line 2055:                         SubmitError("Незакрытая кавычка в подвыражении", currentLine);	
+Line 2055:                         SubmitError("Unclosed quote in a subexpression", currentLine);
+
+
+Line 2062:                         SubmitError("Незакрытая фигурная скобка в подвыражении", currentLine);
+Line 2062:                         SubmitError("Unclosed curly bracket in a subexpression", currentLine);
+
+
+Line 2069:                         SubmitError("Незакрытое подвыражение", currentLine);
+Line 2069:                         SubmitError("Unclosed subexpression", currentLine);
+
+
+Line 2076:                         SubmitError("Пустое подвыражение", currentLine);
+Line 2076:                         SubmitError("Empty subexpression", currentLine);
+
+
+Line 2173:                 SubmitError("Пустое имя локации", line);
+Line 2173:                 SubmitError("Empty name of location", line);
+
+
+Line 2178:                 SubmitError("Локация с именем " + name + " уже существует", line);
+Line 2178:                 SubmitError("Location named " + name + " exist already", line);

+ 631 - 0
Analyser/QSP_Analyser/MainForm.Designer.cs

@@ -0,0 +1,631 @@
+namespace Analyser
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.label1 = new System.Windows.Forms.Label();
+            this.dlgOpen = new System.Windows.Forms.OpenFileDialog();
+            this.btnBrowse = new System.Windows.Forms.Button();
+            this.txtList1 = new System.Windows.Forms.TextBox();
+            this.txtList2 = new System.Windows.Forms.TextBox();
+            this.txtList3 = new System.Windows.Forms.TextBox();
+            this.btnTry1 = new System.Windows.Forms.Button();
+            this.btnTry2 = new System.Windows.Forms.Button();
+            this.btnTry3 = new System.Windows.Forms.Button();
+            this.txtStatus = new System.Windows.Forms.TextBox();
+            this.tabControl = new System.Windows.Forms.TabControl();
+            this.tabCheck = new System.Windows.Forms.TabPage();
+            this.btnCancel = new System.Windows.Forms.Button();
+            this.btnTry4 = new System.Windows.Forms.Button();
+            this.btnReload = new System.Windows.Forms.Button();
+            this.tabOptions = new System.Windows.Forms.TabPage();
+            this.chkCurlyParse = new System.Windows.Forms.CheckBox();
+            this.chkActions = new System.Windows.Forms.CheckBox();
+            this.txtSystemAeroVars = new System.Windows.Forms.TextBox();
+            this.chkAero = new System.Windows.Forms.CheckBox();
+            this.lblSystemVariables = new System.Windows.Forms.Label();
+            this.lblSortHeader = new System.Windows.Forms.Label();
+            this.btnReset = new System.Windows.Forms.Button();
+            this.txtSystemVariables = new System.Windows.Forms.TextBox();
+            this.chkSortObjects = new System.Windows.Forms.CheckBox();
+            this.chkSortVariables = new System.Windows.Forms.CheckBox();
+            this.chkSortLocations = new System.Windows.Forms.CheckBox();
+            this.txtVariableNames = new System.Windows.Forms.TextBox();
+            this.chkVariableCalls = new System.Windows.Forms.CheckBox();
+            this.tabTranslate = new System.Windows.Forms.TabPage();
+            this.btnBeautify = new System.Windows.Forms.Button();
+            this.grpTranslateCsv = new System.Windows.Forms.GroupBox();
+            this.grpCsvDelimiter = new System.Windows.Forms.GroupBox();
+            this.radComma = new System.Windows.Forms.RadioButton();
+            this.radSemicolon = new System.Windows.Forms.RadioButton();
+            this.btnTranslateFromCsv = new System.Windows.Forms.Button();
+            this.chkIgnoreEmptyTranslationsCsv = new System.Windows.Forms.CheckBox();
+            this.lblSuffixCsv = new System.Windows.Forms.Label();
+            this.btnExportCsv = new System.Windows.Forms.Button();
+            this.edtSuffixCsv = new System.Windows.Forms.TextBox();
+            this.edtFile = new System.Windows.Forms.TextBox();
+            this.progressBar1 = new System.Windows.Forms.ProgressBar();
+            this.tabControl.SuspendLayout();
+            this.tabCheck.SuspendLayout();
+            this.tabOptions.SuspendLayout();
+            this.tabTranslate.SuspendLayout();
+            this.grpTranslateCsv.SuspendLayout();
+            this.grpCsvDelimiter.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(15, 13);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(287, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "This utility analyzes the QSP game code in form TXT2GAM.";
+            // 
+            // btnBrowse
+            // 
+            this.btnBrowse.Location = new System.Drawing.Point(591, 8);
+            this.btnBrowse.Name = "btnBrowse";
+            this.btnBrowse.Size = new System.Drawing.Size(29, 23);
+            this.btnBrowse.TabIndex = 2;
+            this.btnBrowse.Text = "...";
+            this.btnBrowse.UseVisualStyleBackColor = true;
+            this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
+            // 
+            // txtList1
+            // 
+            this.txtList1.BackColor = System.Drawing.SystemColors.Window;
+            this.txtList1.Location = new System.Drawing.Point(3, 59);
+            this.txtList1.Multiline = true;
+            this.txtList1.Name = "txtList1";
+            this.txtList1.ReadOnly = true;
+            this.txtList1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtList1.Size = new System.Drawing.Size(205, 348);
+            this.txtList1.TabIndex = 3;
+            // 
+            // txtList2
+            // 
+            this.txtList2.BackColor = System.Drawing.SystemColors.Window;
+            this.txtList2.Location = new System.Drawing.Point(214, 59);
+            this.txtList2.Multiline = true;
+            this.txtList2.Name = "txtList2";
+            this.txtList2.ReadOnly = true;
+            this.txtList2.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtList2.Size = new System.Drawing.Size(210, 348);
+            this.txtList2.TabIndex = 4;
+            // 
+            // txtList3
+            // 
+            this.txtList3.BackColor = System.Drawing.SystemColors.Window;
+            this.txtList3.Location = new System.Drawing.Point(430, 59);
+            this.txtList3.Multiline = true;
+            this.txtList3.Name = "txtList3";
+            this.txtList3.ReadOnly = true;
+            this.txtList3.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtList3.Size = new System.Drawing.Size(229, 348);
+            this.txtList3.TabIndex = 5;
+            // 
+            // btnTry1
+            // 
+            this.btnTry1.Location = new System.Drawing.Point(12, 6);
+            this.btnTry1.Name = "btnTry1";
+            this.btnTry1.Size = new System.Drawing.Size(77, 28);
+            this.btnTry1.TabIndex = 6;
+            this.btnTry1.Text = "Locations";
+            this.btnTry1.UseVisualStyleBackColor = true;
+            this.btnTry1.Click += new System.EventHandler(this.btnTry1_Click);
+            // 
+            // btnTry2
+            // 
+            this.btnTry2.Location = new System.Drawing.Point(95, 6);
+            this.btnTry2.Name = "btnTry2";
+            this.btnTry2.Size = new System.Drawing.Size(91, 28);
+            this.btnTry2.TabIndex = 7;
+            this.btnTry2.Text = "Variables";
+            this.btnTry2.UseVisualStyleBackColor = true;
+            this.btnTry2.Click += new System.EventHandler(this.btnTry2_Click);
+            // 
+            // btnTry3
+            // 
+            this.btnTry3.Location = new System.Drawing.Point(192, 6);
+            this.btnTry3.Name = "btnTry3";
+            this.btnTry3.Size = new System.Drawing.Size(80, 28);
+            this.btnTry3.TabIndex = 8;
+            this.btnTry3.Text = "Items";
+            this.btnTry3.UseVisualStyleBackColor = true;
+            this.btnTry3.Click += new System.EventHandler(this.btnTry3_Click);
+            // 
+            // txtStatus
+            // 
+            this.txtStatus.BackColor = System.Drawing.SystemColors.Window;
+            this.txtStatus.Location = new System.Drawing.Point(3, 413);
+            this.txtStatus.Multiline = true;
+            this.txtStatus.Name = "txtStatus";
+            this.txtStatus.ReadOnly = true;
+            this.txtStatus.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtStatus.Size = new System.Drawing.Size(656, 148);
+            this.txtStatus.TabIndex = 9;
+            // 
+            // tabControl
+            // 
+            this.tabControl.Controls.Add(this.tabCheck);
+            this.tabControl.Controls.Add(this.tabOptions);
+            this.tabControl.Controls.Add(this.tabTranslate);
+            this.tabControl.Location = new System.Drawing.Point(1, 37);
+            this.tabControl.Name = "tabControl";
+            this.tabControl.SelectedIndex = 0;
+            this.tabControl.Size = new System.Drawing.Size(670, 590);
+            this.tabControl.TabIndex = 12;
+            // 
+            // tabCheck
+            // 
+            this.tabCheck.Controls.Add(this.btnCancel);
+            this.tabCheck.Controls.Add(this.btnTry4);
+            this.tabCheck.Controls.Add(this.btnReload);
+            this.tabCheck.Controls.Add(this.btnTry1);
+            this.tabCheck.Controls.Add(this.txtStatus);
+            this.tabCheck.Controls.Add(this.txtList3);
+            this.tabCheck.Controls.Add(this.btnTry2);
+            this.tabCheck.Controls.Add(this.txtList2);
+            this.tabCheck.Controls.Add(this.btnTry3);
+            this.tabCheck.Controls.Add(this.txtList1);
+            this.tabCheck.Location = new System.Drawing.Point(4, 22);
+            this.tabCheck.Name = "tabCheck";
+            this.tabCheck.Padding = new System.Windows.Forms.Padding(3);
+            this.tabCheck.Size = new System.Drawing.Size(662, 564);
+            this.tabCheck.TabIndex = 0;
+            this.tabCheck.Text = "Analysis";
+            this.tabCheck.UseVisualStyleBackColor = true;
+            // 
+            // btnCancel
+            // 
+            this.btnCancel.Location = new System.Drawing.Point(455, 6);
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.Size = new System.Drawing.Size(77, 28);
+            this.btnCancel.TabIndex = 14;
+            this.btnCancel.Text = "Cancel";
+            this.btnCancel.UseVisualStyleBackColor = true;
+            this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+            // 
+            // btnTry4
+            // 
+            this.btnTry4.Location = new System.Drawing.Point(278, 6);
+            this.btnTry4.Name = "btnTry4";
+            this.btnTry4.Size = new System.Drawing.Size(75, 28);
+            this.btnTry4.TabIndex = 13;
+            this.btnTry4.Text = "Events";
+            this.btnTry4.UseVisualStyleBackColor = true;
+            this.btnTry4.Click += new System.EventHandler(this.btnTry4_Click);
+            // 
+            // btnReload
+            // 
+            this.btnReload.Location = new System.Drawing.Point(538, 6);
+            this.btnReload.Name = "btnReload";
+            this.btnReload.Size = new System.Drawing.Size(77, 28);
+            this.btnReload.TabIndex = 12;
+            this.btnReload.Text = "Reload";
+            this.btnReload.UseVisualStyleBackColor = true;
+            this.btnReload.Click += new System.EventHandler(this.btnReload_Click);
+            // 
+            // tabOptions
+            // 
+            this.tabOptions.Controls.Add(this.chkCurlyParse);
+            this.tabOptions.Controls.Add(this.chkActions);
+            this.tabOptions.Controls.Add(this.txtSystemAeroVars);
+            this.tabOptions.Controls.Add(this.chkAero);
+            this.tabOptions.Controls.Add(this.lblSystemVariables);
+            this.tabOptions.Controls.Add(this.lblSortHeader);
+            this.tabOptions.Controls.Add(this.btnReset);
+            this.tabOptions.Controls.Add(this.txtSystemVariables);
+            this.tabOptions.Controls.Add(this.chkSortObjects);
+            this.tabOptions.Controls.Add(this.chkSortVariables);
+            this.tabOptions.Controls.Add(this.chkSortLocations);
+            this.tabOptions.Controls.Add(this.txtVariableNames);
+            this.tabOptions.Controls.Add(this.chkVariableCalls);
+            this.tabOptions.Location = new System.Drawing.Point(4, 22);
+            this.tabOptions.Name = "tabOptions";
+            this.tabOptions.Padding = new System.Windows.Forms.Padding(3);
+            this.tabOptions.Size = new System.Drawing.Size(662, 564);
+            this.tabOptions.TabIndex = 1;
+            this.tabOptions.Text = "Settings";
+            this.tabOptions.UseVisualStyleBackColor = true;
+            // 
+            // chkCurlyParse
+            // 
+            this.chkCurlyParse.AutoSize = true;
+            this.chkCurlyParse.Checked = global::Analyser.Properties.Settings.Default.EnableCurlyParsing;
+            this.chkCurlyParse.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkCurlyParse.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableCurlyParsing", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkCurlyParse.Location = new System.Drawing.Point(250, 290);
+            this.chkCurlyParse.Name = "chkCurlyParse";
+            this.chkCurlyParse.Size = new System.Drawing.Size(250, 17);
+            this.chkCurlyParse.TabIndex = 23;
+            this.chkCurlyParse.Text = "Content between curly brackets take as a code";
+            this.chkCurlyParse.UseVisualStyleBackColor = true;
+            // 
+            // chkActions
+            // 
+            this.chkActions.AutoSize = true;
+            this.chkActions.Checked = global::Analyser.Properties.Settings.Default.EnableSortingActions;
+            this.chkActions.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkActions.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableSortingActions", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkActions.Location = new System.Drawing.Point(260, 112);
+            this.chkActions.Name = "chkActions";
+            this.chkActions.Size = new System.Drawing.Size(61, 17);
+            this.chkActions.TabIndex = 22;
+            this.chkActions.Text = "Actions";
+            this.chkActions.UseVisualStyleBackColor = true;
+            // 
+            // txtSystemAeroVars
+            // 
+            this.txtSystemAeroVars.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::Analyser.Properties.Settings.Default, "EnableAero", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.txtSystemAeroVars.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::Analyser.Properties.Settings.Default, "AeroSystemVars", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.txtSystemAeroVars.Enabled = global::Analyser.Properties.Settings.Default.EnableAero;
+            this.txtSystemAeroVars.Location = new System.Drawing.Point(423, 42);
+            this.txtSystemAeroVars.Multiline = true;
+            this.txtSystemAeroVars.Name = "txtSystemAeroVars";
+            this.txtSystemAeroVars.ReadOnly = true;
+            this.txtSystemAeroVars.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtSystemAeroVars.Size = new System.Drawing.Size(157, 190);
+            this.txtSystemAeroVars.TabIndex = 21;
+            this.txtSystemAeroVars.Text = global::Analyser.Properties.Settings.Default.AeroSystemVars;
+            // 
+            // chkAero
+            // 
+            this.chkAero.AutoSize = true;
+            this.chkAero.Checked = global::Analyser.Properties.Settings.Default.EnableAero;
+            this.chkAero.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkAero.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableAero", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkAero.Location = new System.Drawing.Point(423, 13);
+            this.chkAero.Name = "chkAero";
+            this.chkAero.Size = new System.Drawing.Size(70, 17);
+            this.chkAero.TabIndex = 20;
+            this.chkAero.Text = "AeroQSP";
+            this.chkAero.UseVisualStyleBackColor = true;
+            // 
+            // lblSystemVariables
+            // 
+            this.lblSystemVariables.AutoSize = true;
+            this.lblSystemVariables.Location = new System.Drawing.Point(0, 255);
+            this.lblSystemVariables.Name = "lblSystemVariables";
+            this.lblSystemVariables.Size = new System.Drawing.Size(292, 13);
+            this.lblSystemVariables.TabIndex = 19;
+            this.lblSystemVariables.Text = "System variables (exception from the list of unused variables)";
+            // 
+            // lblSortHeader
+            // 
+            this.lblSortHeader.AutoSize = true;
+            this.lblSortHeader.Location = new System.Drawing.Point(245, 14);
+            this.lblSortHeader.Name = "lblSortHeader";
+            this.lblSortHeader.Size = new System.Drawing.Size(76, 13);
+            this.lblSortHeader.TabIndex = 15;
+            this.lblSortHeader.Text = "Sort by output:";
+            // 
+            // btnReset
+            // 
+            this.btnReset.Location = new System.Drawing.Point(13, 519);
+            this.btnReset.Name = "btnReset";
+            this.btnReset.Size = new System.Drawing.Size(147, 23);
+            this.btnReset.TabIndex = 13;
+            this.btnReset.Text = "Reset settings";
+            this.btnReset.UseVisualStyleBackColor = true;
+            this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
+            // 
+            // txtSystemVariables
+            // 
+            this.txtSystemVariables.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::Analyser.Properties.Settings.Default, "SystemVariables", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.txtSystemVariables.Location = new System.Drawing.Point(0, 274);
+            this.txtSystemVariables.Multiline = true;
+            this.txtSystemVariables.Name = "txtSystemVariables";
+            this.txtSystemVariables.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtSystemVariables.Size = new System.Drawing.Size(213, 220);
+            this.txtSystemVariables.TabIndex = 18;
+            this.txtSystemVariables.Text = global::Analyser.Properties.Settings.Default.SystemVariables;
+            // 
+            // chkSortObjects
+            // 
+            this.chkSortObjects.AutoSize = true;
+            this.chkSortObjects.Checked = global::Analyser.Properties.Settings.Default.EnableSortingObjects;
+            this.chkSortObjects.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkSortObjects.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableSortingObjects", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkSortObjects.Location = new System.Drawing.Point(260, 88);
+            this.chkSortObjects.Name = "chkSortObjects";
+            this.chkSortObjects.Size = new System.Drawing.Size(51, 17);
+            this.chkSortObjects.TabIndex = 17;
+            this.chkSortObjects.Text = "Items";
+            this.chkSortObjects.UseVisualStyleBackColor = true;
+            // 
+            // chkSortVariables
+            // 
+            this.chkSortVariables.AutoSize = true;
+            this.chkSortVariables.Checked = global::Analyser.Properties.Settings.Default.EnableSortingVariables;
+            this.chkSortVariables.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkSortVariables.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableSortingVariables", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkSortVariables.Location = new System.Drawing.Point(260, 65);
+            this.chkSortVariables.Name = "chkSortVariables";
+            this.chkSortVariables.Size = new System.Drawing.Size(69, 17);
+            this.chkSortVariables.TabIndex = 16;
+            this.chkSortVariables.Text = "Variables";
+            this.chkSortVariables.UseVisualStyleBackColor = true;
+            // 
+            // chkSortLocations
+            // 
+            this.chkSortLocations.AutoSize = true;
+            this.chkSortLocations.Checked = global::Analyser.Properties.Settings.Default.EnableSortingLocations;
+            this.chkSortLocations.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkSortLocations.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableSortingLocations", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkSortLocations.Location = new System.Drawing.Point(260, 42);
+            this.chkSortLocations.Name = "chkSortLocations";
+            this.chkSortLocations.Size = new System.Drawing.Size(72, 17);
+            this.chkSortLocations.TabIndex = 14;
+            this.chkSortLocations.Text = "Locations";
+            this.chkSortLocations.UseVisualStyleBackColor = true;
+            // 
+            // txtVariableNames
+            // 
+            this.txtVariableNames.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::Analyser.Properties.Settings.Default, "VariableNames", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.txtVariableNames.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::Analyser.Properties.Settings.Default, "EnableVariableCalls", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.txtVariableNames.Enabled = global::Analyser.Properties.Settings.Default.EnableVariableCalls;
+            this.txtVariableNames.Location = new System.Drawing.Point(0, 42);
+            this.txtVariableNames.Multiline = true;
+            this.txtVariableNames.Name = "txtVariableNames";
+            this.txtVariableNames.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtVariableNames.Size = new System.Drawing.Size(213, 190);
+            this.txtVariableNames.TabIndex = 12;
+            this.txtVariableNames.Text = global::Analyser.Properties.Settings.Default.VariableNames;
+            // 
+            // chkVariableCalls
+            // 
+            this.chkVariableCalls.AutoSize = true;
+            this.chkVariableCalls.Checked = global::Analyser.Properties.Settings.Default.EnableVariableCalls;
+            this.chkVariableCalls.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkVariableCalls.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "EnableVariableCalls", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkVariableCalls.Location = new System.Drawing.Point(3, 6);
+            this.chkVariableCalls.Name = "chkVariableCalls";
+            this.chkVariableCalls.Size = new System.Drawing.Size(166, 30);
+            this.chkVariableCalls.TabIndex = 11;
+            this.chkVariableCalls.Text = "Consider variable assignment \r\nby link to location:";
+            this.chkVariableCalls.UseVisualStyleBackColor = true;
+            // 
+            // tabTranslate
+            // 
+            this.tabTranslate.Controls.Add(this.btnBeautify);
+            this.tabTranslate.Controls.Add(this.grpTranslateCsv);
+            this.tabTranslate.Location = new System.Drawing.Point(4, 22);
+            this.tabTranslate.Name = "tabTranslate";
+            this.tabTranslate.Size = new System.Drawing.Size(662, 564);
+            this.tabTranslate.TabIndex = 2;
+            this.tabTranslate.Text = "Conversion";
+            this.tabTranslate.UseVisualStyleBackColor = true;
+            // 
+            // btnBeautify
+            // 
+            this.btnBeautify.Location = new System.Drawing.Point(56, 279);
+            this.btnBeautify.Name = "btnBeautify";
+            this.btnBeautify.Size = new System.Drawing.Size(129, 23);
+            this.btnBeautify.TabIndex = 9;
+            this.btnBeautify.Text = "Format the code";
+            this.btnBeautify.UseVisualStyleBackColor = true;
+            this.btnBeautify.Click += new System.EventHandler(this.btnBeautify_Click);
+            // 
+            // grpTranslateCsv
+            // 
+            this.grpTranslateCsv.Controls.Add(this.grpCsvDelimiter);
+            this.grpTranslateCsv.Controls.Add(this.btnTranslateFromCsv);
+            this.grpTranslateCsv.Controls.Add(this.chkIgnoreEmptyTranslationsCsv);
+            this.grpTranslateCsv.Controls.Add(this.lblSuffixCsv);
+            this.grpTranslateCsv.Controls.Add(this.btnExportCsv);
+            this.grpTranslateCsv.Controls.Add(this.edtSuffixCsv);
+            this.grpTranslateCsv.Location = new System.Drawing.Point(7, 3);
+            this.grpTranslateCsv.Name = "grpTranslateCsv";
+            this.grpTranslateCsv.Size = new System.Drawing.Size(642, 168);
+            this.grpTranslateCsv.TabIndex = 8;
+            this.grpTranslateCsv.TabStop = false;
+            this.grpTranslateCsv.Text = "Conversion";
+            // 
+            // grpCsvDelimiter
+            // 
+            this.grpCsvDelimiter.Controls.Add(this.radComma);
+            this.grpCsvDelimiter.Controls.Add(this.radSemicolon);
+            this.grpCsvDelimiter.Location = new System.Drawing.Point(24, 29);
+            this.grpCsvDelimiter.Name = "grpCsvDelimiter";
+            this.grpCsvDelimiter.Size = new System.Drawing.Size(138, 72);
+            this.grpCsvDelimiter.TabIndex = 3;
+            this.grpCsvDelimiter.TabStop = false;
+            this.grpCsvDelimiter.Text = "Split CSV";
+            // 
+            // radComma
+            // 
+            this.radComma.AutoSize = true;
+            this.radComma.Checked = true;
+            this.radComma.Location = new System.Drawing.Point(6, 19);
+            this.radComma.Name = "radComma";
+            this.radComma.Size = new System.Drawing.Size(72, 17);
+            this.radComma.TabIndex = 1;
+            this.radComma.TabStop = true;
+            this.radComma.Text = "Comma - ,";
+            this.radComma.UseVisualStyleBackColor = true;
+            // 
+            // radSemicolon
+            // 
+            this.radSemicolon.AutoSize = true;
+            this.radSemicolon.Location = new System.Drawing.Point(6, 42);
+            this.radSemicolon.Name = "radSemicolon";
+            this.radSemicolon.Size = new System.Drawing.Size(86, 17);
+            this.radSemicolon.TabIndex = 2;
+            this.radSemicolon.Text = "Semicolon - ;";
+            this.radSemicolon.UseVisualStyleBackColor = true;
+            // 
+            // btnTranslateFromCsv
+            // 
+            this.btnTranslateFromCsv.Location = new System.Drawing.Point(303, 126);
+            this.btnTranslateFromCsv.Name = "btnTranslateFromCsv";
+            this.btnTranslateFromCsv.Size = new System.Drawing.Size(198, 23);
+            this.btnTranslateFromCsv.TabIndex = 4;
+            this.btnTranslateFromCsv.Text = "Make conversion, use CSV";
+            this.btnTranslateFromCsv.UseVisualStyleBackColor = true;
+            this.btnTranslateFromCsv.Click += new System.EventHandler(this.btnTranslateFromCsv_Click);
+            // 
+            // chkIgnoreEmptyTranslationsCsv
+            // 
+            this.chkIgnoreEmptyTranslationsCsv.AutoSize = true;
+            this.chkIgnoreEmptyTranslationsCsv.Checked = global::Analyser.Properties.Settings.Default.IgnoreEmptyTranslationsCsv;
+            this.chkIgnoreEmptyTranslationsCsv.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkIgnoreEmptyTranslationsCsv.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::Analyser.Properties.Settings.Default, "IgnoreEmptyTranslationsCsv", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.chkIgnoreEmptyTranslationsCsv.Location = new System.Drawing.Point(235, 55);
+            this.chkIgnoreEmptyTranslationsCsv.Name = "chkIgnoreEmptyTranslationsCsv";
+            this.chkIgnoreEmptyTranslationsCsv.Size = new System.Drawing.Size(295, 30);
+            this.chkIgnoreEmptyTranslationsCsv.TabIndex = 7;
+            this.chkIgnoreEmptyTranslationsCsv.Text = "Ignore unconverted strings\r\n(for \"empty\" value of conversion will be used origina" +
+    "l text)";
+            this.chkIgnoreEmptyTranslationsCsv.UseVisualStyleBackColor = true;
+            // 
+            // lblSuffixCsv
+            // 
+            this.lblSuffixCsv.AutoSize = true;
+            this.lblSuffixCsv.Location = new System.Drawing.Point(232, 32);
+            this.lblSuffixCsv.Name = "lblSuffixCsv";
+            this.lblSuffixCsv.Size = new System.Drawing.Size(142, 13);
+            this.lblSuffixCsv.TabIndex = 6;
+            this.lblSuffixCsv.Text = "Extension for conversion file:";
+            // 
+            // btnExportCsv
+            // 
+            this.btnExportCsv.Location = new System.Drawing.Point(41, 126);
+            this.btnExportCsv.Name = "btnExportCsv";
+            this.btnExportCsv.Size = new System.Drawing.Size(97, 23);
+            this.btnExportCsv.TabIndex = 0;
+            this.btnExportCsv.Text = "Export to CSV";
+            this.btnExportCsv.UseVisualStyleBackColor = true;
+            this.btnExportCsv.Click += new System.EventHandler(this.btnExportCsv_Click);
+            // 
+            // edtSuffixCsv
+            // 
+            this.edtSuffixCsv.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::Analyser.Properties.Settings.Default, "CsvTranslationSuffix", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.edtSuffixCsv.Location = new System.Drawing.Point(401, 29);
+            this.edtSuffixCsv.Name = "edtSuffixCsv";
+            this.edtSuffixCsv.Size = new System.Drawing.Size(100, 20);
+            this.edtSuffixCsv.TabIndex = 5;
+            this.edtSuffixCsv.Text = global::Analyser.Properties.Settings.Default.CsvTranslationSuffix;
+            // 
+            // edtFile
+            // 
+            this.edtFile.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::Analyser.Properties.Settings.Default, "filepath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+            this.edtFile.Location = new System.Drawing.Point(409, 10);
+            this.edtFile.Name = "edtFile";
+            this.edtFile.Size = new System.Drawing.Size(176, 20);
+            this.edtFile.TabIndex = 1;
+            this.edtFile.Text = global::Analyser.Properties.Settings.Default.filepath;
+            // 
+            // progressBar1
+            // 
+            this.progressBar1.Location = new System.Drawing.Point(5, 626);
+            this.progressBar1.Name = "progressBar1";
+            this.progressBar1.Size = new System.Drawing.Size(659, 23);
+            this.progressBar1.TabIndex = 13;
+            // 
+            // MainForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(668, 653);
+            this.Controls.Add(this.progressBar1);
+            this.Controls.Add(this.tabControl);
+            this.Controls.Add(this.btnBrowse);
+            this.Controls.Add(this.edtFile);
+            this.Controls.Add(this.label1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.MaximizeBox = false;
+            this.Name = "MainForm";
+            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
+            this.Text = "QSP Code Analyzer";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
+            this.Load += new System.EventHandler(this.MainForm_Load);
+            this.Shown += new System.EventHandler(this.MainForm_Shown);
+            this.tabControl.ResumeLayout(false);
+            this.tabCheck.ResumeLayout(false);
+            this.tabCheck.PerformLayout();
+            this.tabOptions.ResumeLayout(false);
+            this.tabOptions.PerformLayout();
+            this.tabTranslate.ResumeLayout(false);
+            this.grpTranslateCsv.ResumeLayout(false);
+            this.grpTranslateCsv.PerformLayout();
+            this.grpCsvDelimiter.ResumeLayout(false);
+            this.grpCsvDelimiter.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox edtFile;
+        private System.Windows.Forms.OpenFileDialog dlgOpen;
+        private System.Windows.Forms.Button btnBrowse;
+        private System.Windows.Forms.TextBox txtList1;
+        private System.Windows.Forms.TextBox txtList2;
+        private System.Windows.Forms.TextBox txtList3;
+        private System.Windows.Forms.Button btnTry1;
+        private System.Windows.Forms.Button btnTry2;
+        private System.Windows.Forms.Button btnTry3;
+        private System.Windows.Forms.TextBox txtStatus;
+        private System.Windows.Forms.TabControl tabControl;
+        private System.Windows.Forms.TabPage tabCheck;
+        private System.Windows.Forms.TabPage tabOptions;
+        private System.Windows.Forms.CheckBox chkVariableCalls;
+        private System.Windows.Forms.TextBox txtVariableNames;
+        private System.Windows.Forms.Button btnReset;
+        private System.Windows.Forms.Label lblSortHeader;
+        private System.Windows.Forms.CheckBox chkSortLocations;
+        private System.Windows.Forms.CheckBox chkSortObjects;
+        private System.Windows.Forms.CheckBox chkSortVariables;
+        private System.Windows.Forms.Button btnReload;
+        private System.Windows.Forms.Label lblSystemVariables;
+        private System.Windows.Forms.TextBox txtSystemVariables;
+        private System.Windows.Forms.CheckBox chkAero;
+        private System.Windows.Forms.TextBox txtSystemAeroVars;
+        private System.Windows.Forms.Button btnTry4;
+        private System.Windows.Forms.CheckBox chkActions;
+        private System.Windows.Forms.TabPage tabTranslate;
+        private System.Windows.Forms.GroupBox grpCsvDelimiter;
+        private System.Windows.Forms.RadioButton radComma;
+        private System.Windows.Forms.RadioButton radSemicolon;
+        private System.Windows.Forms.Button btnExportCsv;
+        private System.Windows.Forms.TextBox edtSuffixCsv;
+        private System.Windows.Forms.Button btnTranslateFromCsv;
+        private System.Windows.Forms.Label lblSuffixCsv;
+        private System.Windows.Forms.CheckBox chkIgnoreEmptyTranslationsCsv;
+        private System.Windows.Forms.CheckBox chkCurlyParse;
+        private System.Windows.Forms.GroupBox grpTranslateCsv;
+        private System.Windows.Forms.Button btnBeautify;
+        private System.Windows.Forms.ProgressBar progressBar1;
+        private System.Windows.Forms.Button btnCancel;
+    }
+}
+

+ 591 - 0
Analyser/QSP_Analyser/MainForm.cs

@@ -0,0 +1,591 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Windows.Forms;
+using System.IO;
+using System.Threading;
+
+namespace Analyser
+{
+    public partial class MainForm : Form
+    {
+        //Глобальные переменные II
+        QSPGameCode game;
+
+
+        //Глобальные переменные
+        ArrayList ObjectsAdded;
+        ArrayList ObjectsDeleted;
+
+        bool inited = false;
+        string logText = "";
+        static BackgroundWorker _bw;
+
+        public MainForm()
+        {
+            InitializeComponent();
+            _bw = new BackgroundWorker
+            {
+                WorkerReportsProgress = true,
+                WorkerSupportsCancellation = true
+            };
+            _bw.DoWork += bw_DoWork;
+            _bw.ProgressChanged += bw_ProgressChanged;
+            _bw.RunWorkerCompleted += bw_RunWorkerCompleted;
+        }
+
+        private void btnBrowse_Click(object sender, EventArgs e)
+        {
+            //выбираем файл
+            if (dlgOpen.ShowDialog() == DialogResult.OK)
+            {
+                Properties.Settings.Default.filepath = dlgOpen.FileName;
+                txtStatus.Clear();
+                logText = "";
+                ClearMains();
+                ParseFile();
+            }
+        }
+
+        private delegate void PrintErrorsDelegate();
+        private void PrintErrors()
+        {
+
+            if (this.InvokeRequired)
+            {
+                // Pass the same function to BeginInvoke,
+                // but the call would come on the correct
+                // thread and InvokeRequired will be false.
+                this.BeginInvoke(new PrintErrorsDelegate(PrintErrors));
+
+                return;
+            }
+            //Выводим ошибки и ворнинги
+            //Log("Строка #" + Convert.ToString(game.GetErrorLine()) + ": " + game.GetError());
+            Log("No of errors: " + Common.GetErrorsCount() + ", warnings: " + Common.GetWarningsCount());
+            List<Common.QspError> errors = Common.GetErrors();
+            foreach (Common.QspError error in errors)
+            {
+                int err_line = game.GetLocation(error.locationName).GetLine() + error.line;
+                string errorMessage = "Location \"" + error.locationName + "\", Line #" + Convert.ToString(err_line) + " : " + error.text;
+                if (error.isError)
+                {
+                    Log("Error, " + errorMessage);
+                }
+                else
+                {
+                    Log("Warning, " + errorMessage);
+                }
+            }
+            PrintLog();
+        }
+
+        private void bw_DoWork(object sender, DoWorkEventArgs e)
+        {
+            //Устанаваливаем настройки парсера
+            List<string> systemVars = new List<string>(txtSystemVariables.Lines);
+            if (chkAero.Checked)
+                systemVars.AddRange(txtSystemAeroVars.Lines);
+            Common.SetConfig(new List<string>(txtVariableNames.Lines), systemVars, chkCurlyParse.Checked);
+            if (CheckForFile(edtFile.Text, true))
+            {
+                game.ParseGame(edtFile.Text, sender, e);
+                if (!e.Cancel)
+                { 
+                    this.Log("The file was read successfully");
+                    this.PrintLog();
+                }
+            }
+            else
+            {
+                this.Log("File was not read.");
+                PrintLog();
+            }
+        }
+
+        private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+        {
+
+            this.PrintErrors();
+            Common.ClearNonGameErrors();
+            this.PrintLog();
+        }
+
+        private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
+        {
+            progressBar1.Value = e.ProgressPercentage;
+        }
+
+
+        private void ParseFile()
+        {
+            Log("Trying to read the file ...");
+            PrintLog();
+            _bw.RunWorkerAsync();
+
+        }
+
+        private void btnReset_Click(object sender, EventArgs e)
+        {
+            Analyser.Properties.Settings.Default.Reset();
+        }
+
+        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            Analyser.Properties.Settings.Default.Save();
+        }
+
+        private void MainForm_Load(object sender, EventArgs e)
+        {
+            this.Text += "   v " + System.Windows.Forms.Application.ProductVersion;
+        }
+
+        public void Log(string line)
+        {
+            logText += line + Environment.NewLine;
+        }
+
+        private delegate void PrintLogDelegate();
+        private void PrintLog()
+        {
+            if (this.InvokeRequired)
+            {
+                // Pass the same function to BeginInvoke,
+                // but the call would come on the correct
+                // thread and InvokeRequired will be false.
+                this.BeginInvoke(new PrintLogDelegate(PrintLog));
+
+                return;
+            }
+            txtStatus.Text = logText;
+        }
+
+        private void ClearMains()
+        {
+            txtList1.Clear();
+            txtList2.Clear();
+            txtList3.Clear();
+        }
+
+        //Выводим список значений в textbox, перед списком выводим заголовок
+        private void PrintArray(Control textbox, ArrayList val, string header)
+        {
+            if (textbox.Text.Length > 0)
+                textbox.Text += Environment.NewLine;
+            if (header.Length > 0)
+                textbox.Text += "[" + header + "]" + Environment.NewLine;
+            string s = String.Join(Environment.NewLine, (string[])val.ToArray(typeof(string)));
+            textbox.Text += s;
+        }
+
+        private ArrayList SubstractArray(ArrayList search_in, ArrayList search_for)
+        {
+            ArrayList res = new ArrayList();
+            string tosearch = Environment.NewLine + String.Join(Environment.NewLine, (string[])search_in.ToArray(typeof(string))) + Environment.NewLine;
+            tosearch = tosearch.ToUpper();
+            foreach (string titem in search_for)
+            {
+                if (!tosearch.Contains(Environment.NewLine + titem.ToUpper() + Environment.NewLine))
+                    res.Add(titem);
+            }
+            return res;
+        }
+
+        private bool CheckForFile(string filename, bool silent)
+        {
+            if (filename != "")
+            {
+                if (File.Exists(filename))
+                {
+                    return true;
+                }
+                else
+                {
+                    if (!silent)
+                        MessageBox.Show("Input file was not found!");
+                }
+            }
+            else
+            {
+                if (!silent)
+                    MessageBox.Show("Select input file!");
+            }
+            return false;
+        }
+
+        private void SortArray(ArrayList arr)
+        {
+            string[] tarr = (string[])arr.ToArray(typeof(string));
+            Array.Sort(tarr);
+            arr.Clear();
+            arr.AddRange(tarr);
+        }
+
+        //************************************************************
+        //************************************************************
+        //************************************************************
+
+//Локации
+        private void btnTry1_Click(object sender, EventArgs e)
+        {
+            ClearMains();
+
+            ArrayList LocationsDefined = new ArrayList();
+            ArrayList LocationsReferenced = new ArrayList();
+            ArrayList LocationsUnDefined = new ArrayList();
+            ArrayList LocationsUnReferenced = new ArrayList();
+
+            foreach (Common.QspLocationLink loc in Common.locationLinks)
+            {
+                if (loc.LocationExists)
+                    LocationsDefined.Add(loc.LocationName);
+                if (loc.LocationCalled)
+                    LocationsReferenced.Add(loc.LocationName);
+                if (!loc.LocationExists)
+                    LocationsUnDefined.Add(loc.LocationName);
+                if (!loc.LocationCalled)
+                    LocationsUnReferenced.Add(loc.LocationName);
+            }
+
+            if (chkSortLocations.Checked)
+            {
+                SortArray(LocationsDefined);
+                SortArray(LocationsReferenced);
+                SortArray(LocationsUnDefined);
+                SortArray(LocationsUnReferenced);
+            }
+
+            Log("We process the names of locations ...");
+            PrintArray(txtList1, LocationsDefined, "Existing locations");
+            Log("Added locations: " + LocationsDefined.Count.ToString());
+
+            Log("We process the reference to locations...");
+            PrintArray(txtList2, LocationsReferenced, "References to locations");
+            Log("Added reference to location: " + LocationsReferenced.Count.ToString());
+
+            Log("We begin to search for incorrect links ...");
+            PrintArray(txtList3, LocationsUnDefined, "Incorrect links");
+            Log("Found incorrect links: " + LocationsUnDefined.Count.ToString());
+
+            Log("We begin to search for lost locations - those for which there are no references ...");
+            PrintArray(txtList3, LocationsUnReferenced, "Lost locations");
+            Log("Found lost locations: " + LocationsUnReferenced.Count.ToString());
+            
+            PrintLog();
+        }
+
+//Переменные
+        private void btnTry2_Click(object sender, EventArgs e)
+        {
+            ClearMains();
+
+            ArrayList TextVars = new ArrayList();
+            ArrayList NumericVars = new ArrayList();
+            ArrayList TextVars_unassigned = new ArrayList();
+            ArrayList NumericVars_unassigned = new ArrayList();
+            ArrayList TextVars_unused = new ArrayList();
+            ArrayList NumericVars_unused = new ArrayList();
+
+            Log("Search for variables ...");
+
+            foreach (Common.QspVariable var in Common.vars)
+            {
+                if (var.IsString)
+                {
+                    if (!var.Assigned)
+                        TextVars_unassigned.Add(var.Name);
+                    if (!var.Used)
+                        TextVars_unused.Add(var.Name);
+                    TextVars.Add(var.Name);
+                }
+                else
+                {
+                    if (!var.Assigned)
+                        NumericVars_unassigned.Add(var.Name);
+                    if (!var.Used)
+                        NumericVars_unused.Add(var.Name);
+                    NumericVars.Add(var.Name);
+                }
+            }
+
+            if (chkSortVariables.Checked)
+            {
+                SortArray(TextVars);
+                SortArray(NumericVars);
+            }
+            PrintArray(txtList1, TextVars, "String variables");
+            PrintArray(txtList2, NumericVars, "Numeric variables");
+
+            Log("Added variables: " + Common.vars.Count.ToString());
+            
+            if (chkSortVariables.Checked)
+                SortArray(TextVars_unassigned);
+            PrintArray(txtList3, TextVars_unassigned, "no init variables:");
+            Log("Found using of uninitialized text variables: " + TextVars_unassigned.Count.ToString());
+            if (chkSortVariables.Checked)
+                SortArray(NumericVars_unassigned);
+            PrintArray(txtList3, NumericVars_unassigned, "");
+            Log("Found using of uninitialized numeric variables: " + NumericVars_unassigned.Count.ToString());
+
+            if (chkSortVariables.Checked)
+                SortArray(TextVars_unused);
+            PrintArray(txtList3, TextVars_unused, "Unused variables:");
+            Log("Found unused string variables: " + TextVars_unused.Count.ToString());
+            if (chkSortVariables.Checked)
+                SortArray(NumericVars_unused);
+            PrintArray(txtList3, NumericVars_unused, "");
+            Log("Found unused numeric variables: " + NumericVars_unused.Count.ToString());
+
+            PrintLog();
+        }
+
+//Предметы
+        private void btnTry3_Click(object sender, EventArgs e)
+        {
+            ClearMains();
+
+            ArrayList ObjectsAdded = new ArrayList();
+            ArrayList ObjectsDeleted = new ArrayList();
+            ArrayList ObjectsUnDefined = new ArrayList();
+            ArrayList ObjectsLost = new ArrayList();
+
+            foreach (Common.QspObj obj in Common.objects)
+            {
+                if (obj.Added)
+                    ObjectsAdded.Add(obj.Name);
+                if (obj.Removed)
+                    ObjectsDeleted.Add(obj.Name);
+                if (!obj.Added)
+                    ObjectsUnDefined.Add(obj.Name);
+                if (!obj.Removed)
+                    ObjectsLost.Add(obj.Name);
+            }
+
+            if (chkSortObjects.Checked)
+            {
+                SortArray(ObjectsAdded);
+                SortArray(ObjectsDeleted);
+                SortArray(ObjectsUnDefined);
+                SortArray(ObjectsLost);
+            }
+
+            Log("Search of items...");
+            PrintArray(txtList1, ObjectsAdded, "Added items");
+            PrintArray(txtList2, ObjectsDeleted, "Remove item");
+            Log("Items adding: " + ObjectsAdded.Count.ToString());
+            Log("Items removing: " + ObjectsDeleted.Count.ToString());
+
+            Log("Search of nonexisting items...");
+            PrintArray(txtList3, ObjectsUnDefined, "Invalid deletion");
+            Log("Found invalid deletions: " + ObjectsUnDefined.Count.ToString());
+
+            Log("Looking for lost items - those that are not deleted during the game ...");
+            PrintArray(txtList3, ObjectsLost, "Lost items");
+            Log("Lost items found: " + ObjectsLost.Count.ToString());
+
+            PrintLog();
+        }
+
+//Действия
+        private void btnTry4_Click(object sender, EventArgs e)
+        {
+            ClearMains();
+
+            ArrayList ActsAdded = new ArrayList();
+            ArrayList ActsDeleted = new ArrayList();
+            ArrayList ActsUnDefined = new ArrayList();
+
+            foreach (Common.QspAct act in Common.acts)
+            {
+                if (act.Added)
+                    ActsAdded.Add(act.Name);
+                if (act.Removed)
+                    ActsDeleted.Add(act.Name);
+                if (!act.Added)
+                    ActsUnDefined.Add(act.Name);
+            }
+
+            if (chkSortObjects.Checked)
+            {
+                SortArray(ActsAdded);
+                SortArray(ActsDeleted);
+                SortArray(ActsUnDefined);
+            }
+
+            Log("Search for actions...");
+            PrintArray(txtList1, ActsAdded, "Add an action");
+            PrintArray(txtList2, ActsDeleted, "Remove an action");
+            Log("Added action: " + ActsAdded.Count.ToString());
+            Log("Removed action: " + ActsDeleted.Count.ToString());
+
+            Log("We begin to search for deletion of nonexistent actions...");
+            PrintArray(txtList3, ActsUnDefined, "Invalid deletion");
+            Log("Invalid deletions found: " + ActsUnDefined.Count.ToString());
+
+            PrintLog();
+        }
+
+        //************************************************************
+        //************************************************************
+        //************************************************************
+
+        private void btnReload_Click(object sender, EventArgs e)
+        {
+            txtStatus.Clear();
+            logText = "";
+            ClearMains();
+            ParseFile();
+        }
+
+        private void setBindingContext(Control ctrl)
+        {
+            ctrl.Visible = true;
+            if (ctrl.HasChildren)
+                foreach (Control child in ctrl.Controls)
+                    setBindingContext(child);
+        }
+
+        private void MainForm_Shown(object sender, EventArgs e)
+        {
+            if (!inited)
+            {
+                setBindingContext(this);
+                btnBrowse.Select();
+
+
+                game = new QSPGameCode();
+                ParseFile();
+
+
+                ObjectsDeleted = new ArrayList();
+                ObjectsAdded = new ArrayList();
+                inited = true;
+            }
+        }
+
+        private void PrintNonGameErrors()
+        {
+            List<Common.QspError> errors = Common.GetErrors();
+            foreach (Common.QspError error in errors)
+            {
+                if (error.isError && (error.line == Common.INVALID_INDEX))
+                {
+                    MessageBox.Show("Error: " + error.text);
+                }
+            }
+            Common.ClearNonGameErrors();
+        }
+
+        private void btnExportCsv_Click(object sender, EventArgs e)
+        {
+            //Делаем экспорт текста в csv
+            string FileName = edtFile.Text;
+            if (CheckForFile(FileName, false))
+            {
+                if (Common.GetErrorsCount() > 0)
+                {
+                    MessageBox.Show("There are syntax errors in the file, export is not possible!");
+                    return;
+                }
+
+                edtFile.Enabled = false;
+                btnBrowse.Enabled = false;
+
+                bool success = false;
+                if (radComma.Checked)
+                {
+                    success = Common.ExportToCsv(FileName, ",");
+                }
+                else
+                {
+                    success = Common.ExportToCsv(FileName, ";");
+                }
+                if (!success)
+                {
+                    PrintNonGameErrors();
+                }
+
+                edtFile.Enabled = true;
+                btnBrowse.Enabled = true;
+            }
+        }
+
+        private void btnTranslateFromCsv_Click(object sender, EventArgs e)
+        {
+            //Делаем перевод текста на основе csv
+            string FileName = edtFile.Text;
+            if (CheckForFile(FileName, false))
+            {
+                if (Common.GetErrorsCount() > 0)
+                {
+                    MessageBox.Show("There are syntax errors in the file, export is not possible!");
+                    return;
+                }
+
+                string CsvFile = Common.GenerateCsvName(FileName);
+                if (!CheckForFile(FileName, true))
+                {
+                    MessageBox.Show("CSV file was not found!");
+                }
+
+                if (edtSuffixCsv.Text.Trim(Common.WhiteSpace).Length == 0)
+                {
+                    MessageBox.Show("Enter an extension of the conversion file.");
+                }
+
+                edtFile.Enabled = false;
+                btnBrowse.Enabled = false;
+
+                bool IgnoreEmptyTranslations = chkIgnoreEmptyTranslationsCsv.Checked;
+                bool success = false;
+                if (radComma.Checked)
+                {
+                    success = Common.TranslateFromCsv(FileName, edtSuffixCsv.Text, IgnoreEmptyTranslations, ",");
+                }
+                else
+                {
+                    success = Common.TranslateFromCsv(FileName, edtSuffixCsv.Text, IgnoreEmptyTranslations, ";");
+                }
+                if (!success)
+                {
+                    PrintNonGameErrors();
+                }
+
+                edtFile.Enabled = true;
+                btnBrowse.Enabled = true;
+            }
+        }
+
+        private void btnBeautify_Click(object sender, EventArgs e)
+        {
+            string FileName = edtFile.Text;
+            if (CheckForFile(FileName, false))
+            {
+                edtFile.Enabled = false;
+                btnBrowse.Enabled = false;
+
+                bool success = false;
+                success = game.Beautify(FileName);
+                if (!success)
+                {
+                    PrintNonGameErrors();
+                }
+
+                edtFile.Enabled = true;
+                btnBrowse.Enabled = true;
+            }
+        }
+
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            _bw.CancelAsync();
+            Log("Cancelled loading of file.");
+            PrintLog();
+        }
+    }
+}

+ 123 - 0
Analyser/QSP_Analyser/MainForm.resx

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="dlgOpen.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>

+ 20 - 0
Analyser/QSP_Analyser/Program.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Analyser
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new MainForm());
+        }
+    }
+}

+ 36 - 0
Analyser/QSP_Analyser/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("QSP Analyser")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Ghetto")]
+[assembly: AssemblyProduct("QSP Analyser")]
+[assembly: AssemblyCopyright("Copyright © Ghetto 2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("50a10fb9-5ab6-4d57-bbfa-ef9a0ef30b18")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.3.1.1")]

+ 63 - 0
Analyser/QSP_Analyser/Properties/Resources.Designer.cs

@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Analyser.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Analyser.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
Analyser/QSP_Analyser/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 281 - 0
Analyser/QSP_Analyser/Properties/Settings.Designer.cs

@@ -0,0 +1,281 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Analyser.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("")]
+        public string filepath {
+            get {
+                return ((string)(this["filepath"]));
+            }
+            set {
+                this["filepath"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableVariableCalls {
+            get {
+                return ((bool)(this["EnableVariableCalls"]));
+            }
+            set {
+                this["EnableVariableCalls"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("$COUNTER\r\n$ONGLOAD\r\n$ONGSAVE\r\n$ONNEWLOC\r\n$ONACTSEL\r\n$ONOBJSEL\r\n$ONOBJADD\r\n$ONOBJD" +
+            "EL\r\n$USERCOM")]
+        public string VariableNames {
+            get {
+                return ((string)(this["VariableNames"]));
+            }
+            set {
+                this["VariableNames"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableSortingLocations {
+            get {
+                return ((bool)(this["EnableSortingLocations"]));
+            }
+            set {
+                this["EnableSortingLocations"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableSortingVariables {
+            get {
+                return ((bool)(this["EnableSortingVariables"]));
+            }
+            set {
+                this["EnableSortingVariables"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableSortingObjects {
+            get {
+                return ((bool)(this["EnableSortingObjects"]));
+            }
+            set {
+                this["EnableSortingObjects"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("FSIZE\r\nFCOLOR\r\nBCOLOR\r\nLCOLOR\r\nUSEHTML\r\n$FNAME\r\n$BACKIMAGE\r\nNOSAVE\r\nDISABLESCROLL" +
+            "\r\nDISABLESUBEX\r\nDEBUG\r\n$COUNTER\r\n$ONGLOAD\r\n$ONGSAVE\r\n$ONNEWLOC\r\n$ONACTSEL\r\n$ONOB" +
+            "JSEL\r\n$ONOBJADD\r\n$ONOBJDEL\r\n$USERCOM\r\nARGS\r\n$ARGS\r\nRESULT\r\n$RESULT")]
+        public string SystemVariables {
+            get {
+                return ((string)(this["SystemVariables"]));
+            }
+            set {
+                this["SystemVariables"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableAero {
+            get {
+                return ((bool)(this["EnableAero"]));
+            }
+            set {
+                this["EnableAero"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute(@"SCROLL_SPEED
+$UP_ARROW_IMAGE
+$DOWN_ARROW_IMAGE
+HIDE_SCROLL_ARROWS
+$STYLESHEET
+DISABLESHADE
+DISABLEAUTOREF
+$NEWLOC_EFFECT
+NEWLOC_EFFECT_TIME
+NEWLOC_EFFECT_SEQ
+$TOPIMAGE
+INTEGRATED_ACTIONS
+MAINDESC_X
+MAINDESC_Y
+MAINDESC_W
+MAINDESC_H
+$MAIN_FORMAT
+$MAINDESC_BACKIMAGE
+STATDESC_X
+STATDESC_Y
+STATDESC_W
+STATDESC_H
+$STAT_FORMAT
+$STATDESC_BACKIMAGE
+ACTIONS_X
+ACTIONS_Y
+ACTIONS_W
+ACTIONS_H
+$ACTION_FORMAT
+$SEL_ACTION_FORMAT
+$ACTIONS_BACKIMAGE
+OBJECTS_X
+OBJECTS_Y
+OBJECTS_W
+OBJECTS_H
+$OBJECT_FORMAT
+$SEL_OBJECT_FORMAT
+$OBJECTS_BACKIMAGE
+USERINPUT_X
+USERINPUT_Y
+USERINPUT_W
+USERINPUT_H
+VIEW_X
+VIEW_Y
+VIEW_W
+VIEW_H
+$VIEW_EFFECT
+VIEW_EFFECT_TIME
+ALWAYS_SHOW_VIEW
+$INPUT_BACKIMAGE
+INPUT_X
+INPUT_Y
+$INPUT_FORMAT
+INPUT_TEXT_X
+INPUT_TEXT_Y
+INPUT_TEXT_W
+INPUT_TEXT_H
+INPUT_BAR_X
+INPUT_BAR_Y
+INPUT_BAR_W
+INPUT_BAR_H
+$INPUT_OK_IMAGE
+INPUT_OK_X
+INPUT_OK_Y
+$INPUT_CANCEL_IMAGE
+INPUT_CANCEL_X
+INPUT_CANCEL_Y
+$INPUT_EFFECT
+INPUT_EFFECT_TIME
+$MSG_BACKIMAGE
+MSG_X
+MSG_Y
+$MSG_FORMAT
+MSG_TEXT_X
+MSG_TEXT_Y
+MSG_TEXT_W
+MSG_TEXT_H
+$MSG_OK_IMAGE
+MSG_OK_X
+MSG_OK_Y
+$MSG_EFFECT
+MSG_EFFECT_TIME
+FIXED_SIZE_MENU
+MENU_PADDING
+MENU_BORDER
+MENU_BORDER_COLOR
+$MENU_BACKIMAGE
+MENU_X
+MENU_Y
+$MENU_FORMAT
+$SEL_MENU_FORMAT
+MENU_LIST_X
+MENU_LIST_Y
+MENU_LIST_W
+MENU_LIST_H
+$MENU_EFFECT
+MENU_EFFECT_TIME")]
+        public string AeroSystemVars {
+            get {
+                return ((string)(this["AeroSystemVars"]));
+            }
+            set {
+                this["AeroSystemVars"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableSortingActions {
+            get {
+                return ((bool)(this["EnableSortingActions"]));
+            }
+            set {
+                this["EnableSortingActions"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("_tr")]
+        public string CsvTranslationSuffix {
+            get {
+                return ((string)(this["CsvTranslationSuffix"]));
+            }
+            set {
+                this["CsvTranslationSuffix"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool IgnoreEmptyTranslationsCsv {
+            get {
+                return ((bool)(this["IgnoreEmptyTranslationsCsv"]));
+            }
+            set {
+                this["IgnoreEmptyTranslationsCsv"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool EnableCurlyParsing {
+            get {
+                return ((bool)(this["EnableCurlyParsing"]));
+            }
+            set {
+                this["EnableCurlyParsing"] = value;
+            }
+        }
+    }
+}

+ 172 - 0
Analyser/QSP_Analyser/Properties/Settings.settings

@@ -0,0 +1,172 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Analyser.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="filepath" Type="System.String" Scope="User">
+      <Value Profile="(Default)" />
+    </Setting>
+    <Setting Name="EnableVariableCalls" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="VariableNames" Type="System.String" Scope="User">
+      <Value Profile="(Default)">$COUNTER
+$ONGLOAD
+$ONGSAVE
+$ONNEWLOC
+$ONACTSEL
+$ONOBJSEL
+$ONOBJADD
+$ONOBJDEL
+$USERCOM</Value>
+    </Setting>
+    <Setting Name="EnableSortingLocations" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="EnableSortingVariables" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="EnableSortingObjects" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="SystemVariables" Type="System.String" Scope="User">
+      <Value Profile="(Default)">FSIZE
+FCOLOR
+BCOLOR
+LCOLOR
+USEHTML
+$FNAME
+$BACKIMAGE
+NOSAVE
+DISABLESCROLL
+DISABLESUBEX
+DEBUG
+$COUNTER
+$ONGLOAD
+$ONGSAVE
+$ONNEWLOC
+$ONACTSEL
+$ONOBJSEL
+$ONOBJADD
+$ONOBJDEL
+$USERCOM
+ARGS
+$ARGS
+RESULT
+$RESULT</Value>
+    </Setting>
+    <Setting Name="EnableAero" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="AeroSystemVars" Type="System.String" Scope="User">
+      <Value Profile="(Default)">SCROLL_SPEED
+$UP_ARROW_IMAGE
+$DOWN_ARROW_IMAGE
+HIDE_SCROLL_ARROWS
+$STYLESHEET
+DISABLESHADE
+DISABLEAUTOREF
+$NEWLOC_EFFECT
+NEWLOC_EFFECT_TIME
+NEWLOC_EFFECT_SEQ
+$TOPIMAGE
+INTEGRATED_ACTIONS
+MAINDESC_X
+MAINDESC_Y
+MAINDESC_W
+MAINDESC_H
+$MAIN_FORMAT
+$MAINDESC_BACKIMAGE
+STATDESC_X
+STATDESC_Y
+STATDESC_W
+STATDESC_H
+$STAT_FORMAT
+$STATDESC_BACKIMAGE
+ACTIONS_X
+ACTIONS_Y
+ACTIONS_W
+ACTIONS_H
+$ACTION_FORMAT
+$SEL_ACTION_FORMAT
+$ACTIONS_BACKIMAGE
+OBJECTS_X
+OBJECTS_Y
+OBJECTS_W
+OBJECTS_H
+$OBJECT_FORMAT
+$SEL_OBJECT_FORMAT
+$OBJECTS_BACKIMAGE
+USERINPUT_X
+USERINPUT_Y
+USERINPUT_W
+USERINPUT_H
+VIEW_X
+VIEW_Y
+VIEW_W
+VIEW_H
+$VIEW_EFFECT
+VIEW_EFFECT_TIME
+ALWAYS_SHOW_VIEW
+$INPUT_BACKIMAGE
+INPUT_X
+INPUT_Y
+$INPUT_FORMAT
+INPUT_TEXT_X
+INPUT_TEXT_Y
+INPUT_TEXT_W
+INPUT_TEXT_H
+INPUT_BAR_X
+INPUT_BAR_Y
+INPUT_BAR_W
+INPUT_BAR_H
+$INPUT_OK_IMAGE
+INPUT_OK_X
+INPUT_OK_Y
+$INPUT_CANCEL_IMAGE
+INPUT_CANCEL_X
+INPUT_CANCEL_Y
+$INPUT_EFFECT
+INPUT_EFFECT_TIME
+$MSG_BACKIMAGE
+MSG_X
+MSG_Y
+$MSG_FORMAT
+MSG_TEXT_X
+MSG_TEXT_Y
+MSG_TEXT_W
+MSG_TEXT_H
+$MSG_OK_IMAGE
+MSG_OK_X
+MSG_OK_Y
+$MSG_EFFECT
+MSG_EFFECT_TIME
+FIXED_SIZE_MENU
+MENU_PADDING
+MENU_BORDER
+MENU_BORDER_COLOR
+$MENU_BACKIMAGE
+MENU_X
+MENU_Y
+$MENU_FORMAT
+$SEL_MENU_FORMAT
+MENU_LIST_X
+MENU_LIST_Y
+MENU_LIST_W
+MENU_LIST_H
+$MENU_EFFECT
+MENU_EFFECT_TIME</Value>
+    </Setting>
+    <Setting Name="EnableSortingActions" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="CsvTranslationSuffix" Type="System.String" Scope="User">
+      <Value Profile="(Default)">_tr</Value>
+    </Setting>
+    <Setting Name="IgnoreEmptyTranslationsCsv" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="EnableCurlyParsing" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>

+ 26 - 0
Analyser/QSP_Analyser/Properties/app.manifest

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <!-- UAC Manifest Options
+            If you want to change the Windows User Account Control level replace the 
+            requestedExecutionLevel node with one of the following.
+
+        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
+        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
+        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
+
+            If you want to utilize File and Registry Virtualization for backward 
+            compatibility then delete the requestedExecutionLevel node.
+        -->
+        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+      </requestedPrivileges>
+      <applicationRequestMinimum>
+        <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
+        <defaultAssemblyRequest permissionSetReference="Custom" />
+      </applicationRequestMinimum>
+    </security>
+  </trustInfo>
+</asmv1:assembly>

+ 2244 - 0
Analyser/QSP_Analyser/QSPGameCode.cs

@@ -0,0 +1,2244 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Threading;
+using System.ComponentModel;
+
+namespace Analyser
+{
+    public class Location : Common
+    {
+        QSPGameCode m_gamecode;
+        string m_name;
+        int m_line;
+        bool m_start; //Стартовая локация
+        List<string> location_codeline_text;
+        Dictionary<int, int> location_codeline_level;
+
+        int currentLine;
+        bool currentRoot;
+
+        enum ControlBlockType
+        {
+            None,
+            SL_If,
+            SL_Else,
+            SL_Act,
+            ML_If,
+            ML_Else,
+            ML_Act,
+            IfCondition,
+            ElseIfCondition,
+            ActCondition
+        }
+        
+        struct ControlLine
+        {
+            public ControlBlockType controlBlock;
+            public int line;
+        }
+
+        public Location(QSPGameCode code, string name, int line, bool start)
+        {
+            m_gamecode = code;
+            m_name = name;
+            m_line = line;
+            m_start = start;
+            location_codeline_text = null;
+            location_codeline_level = null;
+        }
+
+        public string GetName()
+        {
+            return m_name;
+        }
+
+        public int GetLine()
+        {
+            return m_line;
+        }
+
+        public int GetCodeLinesCount()
+        {
+            return location_codeline_text.Count;
+        }
+
+        public void GetCodeLine(int lineNum, ref string text, ref int level)
+        {
+            //Нужно для утилиты форматирования
+            int realNum = lineNum + 1;
+            text = location_codeline_text[lineNum];
+            if (location_codeline_level.ContainsKey(realNum))
+                level = location_codeline_level[realNum];
+            else
+                level = INVALID_INDEX;
+            return;
+        }
+
+        new void SubmitError(string text, int line)
+        {
+            if (currentRoot)
+                Common.SubmitError(text, line);
+            else
+                Common.SubmitError(text, currentLine);
+        }
+
+        new void SubmitWarning(string text, int line)
+        {
+            if (currentRoot)
+                Common.SubmitWarning(text, line);
+            else
+                Common.SubmitWarning(text, currentLine);
+        }
+
+        bool qspCompileExprPushOpCode(ref int[] opStack, ref int opSp, ref int[] argStack, ref int argSp, int opCode)
+        {
+            if ((opSp == QSP_STACKSIZE - 1) || (argSp == QSP_STACKSIZE - 1))
+            {
+                SubmitError("Quite complicated expression", currentLine);
+                return false;
+            }
+            opStack[++opSp] = opCode;
+            argStack[++argSp] = (opCode < (int)QspFunctionType.First_Function) ? qspOps[opCode].MinArgsCount : 0;
+            return true;
+        }
+
+        bool qspAppendToCompiled(ref int itemsCount)
+        {
+            if (itemsCount == QSP_MAXITEMS)
+            {
+                SubmitError("Quite many arguments in the expression", currentLine);
+                return false;
+            }
+            ++itemsCount;
+            return true;
+        }
+
+        public bool ParseLocation(List<string> code, bool root)
+        {
+            int quote = (int)QuoteType.None;
+            if (root)
+            {
+                currentRoot = true;
+                currentLine = 0;
+                location_codeline_text = new List<string>(code);
+                location_codeline_level = new Dictionary<int, int>();
+            }
+
+            //Склеиваем строки
+            List<int> lineIndexes = new List<int>();
+            List<string> escapedLines = new List<string>();
+            int linesCount = code.Count;
+            int oldLine = 0;
+            int curLine = 0;
+            int curlyLevel = 0;
+            string extraLine = "";
+            while (curLine < linesCount)
+            {
+                string line = code.ToArray()[curLine];
+                int pos = 0;
+                while (pos < line.Length)
+                {
+                    char c = line[pos];
+                    if (c == '\'')
+                    {
+                        //Апостроф
+                        if (quote == (int)QuoteType.None)
+                        {
+                            quote = (int)QuoteType.Single;
+                        }
+                        else if (quote == (int)QuoteType.Single)
+                        {
+                            if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                            {
+                                //Экранированный апостроф
+                                pos++;
+                            }
+                            else
+                            {
+                                quote = (int)QuoteType.None;
+                            }
+                        }
+                    }
+                    else if (c == '"')
+                    {
+                        //Кавычка
+                        if (quote == (int)QuoteType.None)
+                        {
+                            quote = (int)QuoteType.Double;
+                        }
+                        else if (quote == (int)QuoteType.Double)
+                        {
+                            if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                            {
+                                //Экранированная кавычка
+                                pos++;
+                            }
+                            else
+                            {
+                                quote = (int)QuoteType.None;
+                            }
+                        }
+                    }
+                    else if (quote == (int)QuoteType.None)
+                    {
+                        if (c == '{')
+                        {
+                            curlyLevel++;
+                        }
+                        else if (c == '}')
+                        {
+                            if (curlyLevel == 0)
+                            {
+                                SubmitError("Closing curly brace without opening one", oldLine + 1);
+                                return false;
+                            }
+                            curlyLevel--;
+                        }
+                    }
+                    pos++;
+                }
+
+                if ((curlyLevel > 0) || (quote != (int)QuoteType.None) || line.EndsWith(" _"))
+                {
+                    if (line.EndsWith(" _"))
+                        line = line.Substring(0, line.Length - 2);
+                    extraLine += line;
+                    if (curlyLevel > 0)
+                        extraLine += "\n";//Вставляем разделитель для строк, потом по нему "разобьем" строки
+                    if (curLine == linesCount - 1)
+                    {
+                        lineIndexes.Add(oldLine + 1);
+                        string escaped = extraLine + line;
+                        escapedLines.Add(escaped.Trim(WhiteSpace));
+                    }
+                }
+                else
+                {
+                    lineIndexes.Add(oldLine + 1);
+                    string escaped = extraLine + line;
+                    escapedLines.Add(escaped.Trim(WhiteSpace));
+                    oldLine = curLine + 1;
+                    extraLine = "";
+                }
+                curLine++;
+            }
+            //Проверка на незакрытые в конце локации многострочные строки
+            if (quote != (int)QuoteType.None)
+            {
+                SubmitError("Unclosed string", oldLine + 1);
+                return false;
+            }
+            //Проверка на незакрытые в конце локации фигурные скобки
+            if (curlyLevel > 0)
+            {
+                SubmitError("Unclosed curly bracket", oldLine + 1);
+                return false;
+            }
+
+            //TODO
+            // FOR
+            // перечисления asd|12|ddd
+
+            //Разбираем код
+
+            int lineNum = 0;
+            int linePlainNum = 0;
+            string block = "";
+            string quotedText = "";
+            int controlBlock = (int)ControlBlockType.None;
+            Stack<ControlLine> ControlStack = new Stack<ControlLine>();
+            List<string> blockGroup = new List<string>();
+            List<bool> blockInGroupIsText = new List<bool>();
+
+            int groupInnerCounter = 0;
+
+            bool blockStarted = false;
+            bool blockCompleted = false;
+            bool blockGroupStarted = false;
+            bool blockGroupCompleted = false;
+            bool quotedTextCompleted = false;
+
+            string rawText = "";
+            string debugText = "";
+            foreach (string line in escapedLines)
+            {
+                lineNum = lineIndexes[linePlainNum];
+                linePlainNum++;
+
+                int startIndentLevel = 0;
+                int endIndentLevel = 0;
+                if (currentRoot)
+                {
+                    currentLine = lineNum;
+                    //Вычисляем уровень вложенности(для утилиты форматирования кода)
+                    int stackSize = ControlStack.Count;
+                    if (stackSize > 0)
+                        startIndentLevel = stackSize;
+                }
+
+                int pos = 0;
+                int firstSymbolPos = INVALID_INDEX;
+                int blockStartPos = INVALID_INDEX;
+                int lastIfPos = INVALID_INDEX;
+                int lastActPos = INVALID_INDEX;
+                int bracketLevel = 0;
+
+                bool comment = false;
+                bool label = false;
+                string labelText = "";
+                bool singleBlockGroup = false;
+                
+                //Разбор строки
+                while (pos < line.Length)
+                {
+                    bool appendDelimiter = false;
+                    String delimiterToAppend = "";
+                    char c = line[pos];
+                    if ((c.ToString().IndexOfAny(WhiteSpace) != 0) && (firstSymbolPos == INVALID_INDEX))
+                    {
+                        firstSymbolPos = pos;
+                    }
+                    if (c == '\'')
+                    {
+                        //Апостроф
+                        if (quote == (int)QuoteType.None)
+                        {
+                            quote = (int)QuoteType.Single;
+
+                            quotedText = "";
+                            if (blockStarted && !comment)
+                                blockCompleted = true;
+
+                            //для отладки
+                            if (rawText.Length == 0)
+                                rawText += c;
+                            else
+                                rawText += Environment.NewLine + c;
+                        }
+                        else if (quote == (int)QuoteType.Single)
+                        {
+                            if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                            {
+                                //Экранированный апостроф
+                                pos++;
+                                quotedText += c;
+                            }
+                            else
+                            {
+                                quote = (int)QuoteType.None;
+                                if (!comment && !label)
+                                    quotedTextCompleted = true;
+                            }
+
+                            //для отладки
+                            rawText += c;
+                        }
+                        else
+                        {
+                            quotedText += c;
+
+                            //для отладки
+                            rawText += c;
+                        }
+                    }
+                    else if (c == '"')
+                    {
+                        //Кавычка
+                        if (quote == (int)QuoteType.None)
+                        {
+                            quote = (int)QuoteType.Double;
+
+                            quotedText = "";
+                            if (blockStarted && !comment)
+                                blockCompleted = true;
+
+                            //для отладки
+                            if (rawText.Length == 0)
+                                rawText += c;
+                            else
+                                rawText += Environment.NewLine + c;
+                        }
+                        else if (quote == (int)QuoteType.Double)
+                        {
+                            if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                            {
+                                //Экранированная кавычка
+                                pos++;
+                                quotedText += c;
+                            }
+                            else
+                            {
+                                quote = (int)QuoteType.None;
+                                if (!comment && !label)
+                                    quotedTextCompleted = true;
+                            }
+
+                            //для отладки
+                            rawText += c;
+                        }
+                        else
+                        {
+                            quotedText += c;
+
+                            //для отладки
+                            rawText += c;
+                        }
+                    }
+                    else if (comment)
+                    {
+                        //Здесь игнорируем все до самого конца строки, но учитываем переводы строк внутри кавычек и апострофов.
+                    }
+                    else if (quote != (int)QuoteType.None)
+                    {
+                        //Строка текста внутри кавычек или апострофов
+                        quotedText += c;
+
+                        //для отладки
+                        rawText += c;
+                    }
+                    else if (c == '{')
+                    {
+                        if (blockStarted && !comment)
+                            blockCompleted = true;
+
+                        //Записываем содержимое фигурных скобок
+                        string curlyText = "";
+                        curlyLevel = 1;
+                        pos++;
+                        int curlyQuote = (int)QuoteType.None;
+                        while (pos < line.Length)
+                        {
+                            char c2 = line[pos];
+
+                            if (c2 == '\'')
+                            {
+                                //Апостроф
+                                if (curlyQuote == (int)QuoteType.None)
+                                {
+                                    curlyQuote = (int)QuoteType.Single;
+                                }
+                                else if (curlyQuote == (int)QuoteType.Single)
+                                {
+                                    if ((pos + 1 < line.Length) && (line[pos + 1] == '\''))
+                                    {
+                                        //Экранированный апостроф
+                                        curlyText += c2;
+                                        pos++;
+                                        c2 = line[pos];
+                                    }
+                                    else
+                                    {
+                                        curlyQuote = (int)QuoteType.None;
+                                    }
+                                }
+                            }
+                            else if (c2 == '"')
+                            {
+                                //Кавычка
+                                if (curlyQuote == (int)QuoteType.None)
+                                {
+                                    curlyQuote = (int)QuoteType.Double;
+                                }
+                                else if (curlyQuote == (int)QuoteType.Double)
+                                {
+                                    if ((pos + 1 < line.Length) && (line[pos + 1] == '"'))
+                                    {
+                                        //Экранированная кавычка
+                                        curlyText += c2;
+                                        pos++;
+                                        c2 = line[pos];
+                                    }
+                                    else
+                                    {
+                                        curlyQuote = (int)QuoteType.None;
+                                    }
+                                }
+                            }
+                            else if (curlyQuote == (int)QuoteType.None)
+                            {
+                                if (c2 == '{')
+                                {
+                                    curlyLevel++;
+                                }
+                                else if (c2 == '}')
+                                {
+                                    curlyLevel--;
+                                    if (curlyLevel == 0)
+                                        break;
+                                }
+                            }
+                            curlyText += c2;
+                            pos++;
+                        }
+                        if (curlyLevel > 0)
+                        {
+                            SubmitError("Internal error of the analyzer - unclosed curly bracket \"{\"", currentLine);
+                            break;
+                        }
+
+                        if (curlyParsing)
+                        {
+                            //Парсим содержимое фигурных скобок
+                            List<string> curlyLines = new List<string>(curlyText.Split('\n'));
+                            currentRoot = false;
+                            ParseLocation(curlyLines, currentRoot);
+                            currentRoot = root;
+                            //Добавляем пустую "строку в кавычках", чтобы анализатор не ругался на отсутствие параметра
+                            quotedText = "";
+                        }
+                        else
+                        {
+                            quotedText = curlyText;
+                        }
+                        quotedTextCompleted = true;
+                    }
+                    else
+                    {
+                        //Обычные символы
+                        if (label)
+                        {
+                            if (c == '&')
+                            {
+                                if (labelText.Trim(WhiteSpace).Equals(":"))
+                                {
+                                    SubmitError("Empty label", lineNum);
+                                    return false;
+                                }
+                                if (quote != (int)QuoteType.None)
+                                {
+                                    SubmitError("Unclosed string in the label name", lineNum);
+                                    return false;
+                                }
+                                label = false;
+                            }
+                            else
+                            {
+                                labelText += c;
+                            }
+                        }
+                        else if ((c == ':') && ((controlBlock == (int)ControlBlockType.IfCondition) ||
+                                           (controlBlock == (int)ControlBlockType.ElseIfCondition)))
+                        {
+                            //Разбор условия
+                            if (blockStarted)
+                                blockCompleted = true;
+                            blockGroupCompleted = true;
+
+                            //Двоеточие после условия
+                            if ((pos == line.Length - 1))
+                            {
+                                //В конце строки - многострочный IF или ELSEIF
+                                if (firstSymbolPos == lastIfPos)
+                                {
+                                    if (controlBlock == (int)ControlBlockType.IfCondition)
+                                    {
+                                        ControlLine cline;
+                                        cline.line = lineNum;
+                                        cline.controlBlock = ControlBlockType.ML_If;
+                                        ControlStack.Push(cline);
+                                    }
+                                    else
+                                    {
+                                        ControlLine cline = ControlStack.Pop();
+                                        if (cline.controlBlock != ControlBlockType.ML_If)
+                                        {
+                                            SubmitError("ELSEIF without IF", lineNum);
+                                            return false;
+                                        }
+                                        cline.line = lineNum;
+                                        ControlStack.Push(cline);
+                                    }
+                                    controlBlock = (int)ControlBlockType.ML_If;
+                                }
+                                else
+                                {
+                                    if (controlBlock == (int)ControlBlockType.IfCondition)
+                                        SubmitError("Multiline IF should be placed at the beginning of the line", lineNum);
+                                    else
+                                        SubmitError("Multiline ELSEIF should be placed at the beginning of the line", lineNum);
+                                    return false;
+                                }
+                            }
+                            else if (controlBlock == (int)ControlBlockType.IfCondition)
+                            {
+                                //Строка не заканчивается - однострочный IF
+                                if (controlBlock == (int)ControlBlockType.IfCondition)
+                                {
+                                    ControlLine cline;
+                                    cline.line = lineNum;
+                                    cline.controlBlock = ControlBlockType.SL_If;
+                                    ControlStack.Push(cline);
+
+                                    controlBlock = (int)cline.controlBlock;
+                                    groupInnerCounter = 0;
+                                }
+                                else
+                                {
+                                    SubmitError("ELSEIF cannot be used in single line IF", lineNum);
+                                    return false;
+                                }
+                            }
+                            else
+                            {
+                                SubmitError("An operator cannot be placed after colon\":\" in multiline ELSEIF", lineNum);
+                                return false;
+                            }
+                        }
+                        else if ((c == ':') && (controlBlock == (int)ControlBlockType.ActCondition))
+                        {
+                            //Разбор аргумента
+                            if (blockStarted)
+                                blockCompleted = true;
+                            blockGroupCompleted = true;
+
+                            //Двоеточие после ACT
+                            if (pos == line.Length - 1)
+                            {
+                                //В конце строки - многострочный ACT
+                                if (firstSymbolPos == lastActPos)
+                                {
+                                    controlBlock = (int)ControlBlockType.ML_Act;
+                                    ControlLine cline;
+                                    cline.line = lineNum;
+                                    cline.controlBlock = ControlBlockType.ML_Act;
+                                    ControlStack.Push(cline);
+                                }
+                                else
+                                {
+                                    SubmitError("Multiline ACT should be placed at the beginning of the line", lineNum);
+                                    return false;
+                                }
+                            }
+                            else
+                            {
+                                //Строка не заканчивается - однострочный ACT
+                                controlBlock = (int)ControlBlockType.SL_Act;
+                                groupInnerCounter = 0;
+                            }
+                        }
+                        else if (!comment && (c == '!') && !blockGroupStarted && !blockStarted)
+                        {
+                            //Начало комментария
+                            comment = true;
+                        }
+                        else if ((c == ':') && (firstSymbolPos == pos))
+                        {
+                            //Начало метки
+                            label = true;
+                        }
+                        else if (c.ToString().IndexOfAny(Delimiters) == 0)
+                        {
+                            if ((c == '&') && (bracketLevel == 0))
+                            {
+                                if (controlBlock == (int)ControlBlockType.IfCondition)
+                                {
+                                    //В условии IF недопустимо использование "&" вне скобок
+                                    SubmitError("Redundant \"&\": perhaps should be \"AND\"", lineNum);
+                                    return false;
+                                }
+                                else if (controlBlock == (int)ControlBlockType.ActCondition)
+                                {
+                                    //В названии ACT недопустимо использование "&" вне скобок
+                                    SubmitError("Redundant \"&\"", lineNum);
+                                    return false;
+                                }
+                                else
+                                {
+                                    if (blockStarted)
+                                        blockCompleted = true;
+                                    if (blockGroupStarted)
+                                        blockGroupCompleted = true;
+                                    if (blockStarted && !blockGroupStarted)
+                                        singleBlockGroup = true;
+                                }
+                            }
+                            else if (blockStarted && (c == ' ') && StartOfMultiWordOperator(block))
+                            {
+                                //Составной оператор - DEL ACT, DEL OBJ
+                                block += c;
+                            }
+                            else if (blockStarted && (c == ' ') && (qspGetStatCode(block) == (int)QspStatementType.Close) &&
+                                     (line.Length > pos + 3) && line.Substring(pos + 1, 3).Equals("ALL", StringComparison.OrdinalIgnoreCase))
+                            {
+                                //CLOSE ALL
+                                block += c;
+                            }
+                            else if (!blockStarted && (c == '*'))
+                            {
+                                //Возможно, *PL, *P, *NL
+                                blockStarted = true;
+                                blockCompleted = false;
+                                block += c;
+                                blockStartPos = pos;
+                            }
+                            else if (!blockStarted && (c == '['))
+                            {
+                                //Квадратная скобка должна идти вплотную к имени массива
+                                SubmitError("A square bracket has to be placed just behind the name of the array, with no spaces", lineNum);
+                                return false;
+                            }
+                            else
+                            {
+                                //Самостоятельные знаки
+                                if (c == '(')
+                                {
+                                    bracketLevel++;
+                                }
+                                else if (c == ')')
+                                {
+                                    if (bracketLevel == 0)
+                                    {
+                                        SubmitError("Redundant bracket \")\"", lineNum);
+                                        return false;
+                                    }
+                                    bracketLevel--;
+                                }
+                                bool whiteSpace = c.ToString().IndexOfAny(WhiteSpace) == 0;
+
+                                //Особый учет для последовательностей >=, => и т.д.
+                                bool comparer = pos + 1 < line.Length;
+                                String cmp = "";
+                                if (comparer)
+                                {
+                                    cmp = line.Substring(pos, 2);
+                                    comparer = cmp.Equals("<=") || cmp.Equals(">=") || cmp.Equals("=>") || cmp.Equals("=<") || cmp.Equals("<>") ||
+                                               cmp.Equals("+=") || cmp.Equals("-=");
+                                }
+                                if (comparer)
+                                {
+                                    //<= >= => =< <> += -=
+                                    if (blockStarted)
+                                    {
+                                        appendDelimiter = true;
+                                        delimiterToAppend = cmp;
+                                    }
+                                    else
+                                    {
+                                        blockStarted = true;
+                                        blockStartPos = pos;
+                                        block = cmp;
+                                    }
+                                    blockCompleted = true;
+                                    pos++;
+                                }
+                                else if (blockStarted)
+                                {
+                                    blockCompleted = true;
+                                    if (!whiteSpace)
+                                    {
+                                        appendDelimiter = true;
+                                        delimiterToAppend += c;
+                                    }
+                                    else
+                                    {
+                                        //Обрабатываем END IF, END ACT
+                                        int blockCode = qspGetStatCode(block);
+                                        if (blockCode == (int)QspStatementType.End)
+                                        {
+                                            int nextPos = line.LastIndexOfAny(WhiteSpace, blockStartPos + block.Length) + 1;
+                                            if (nextPos < line.Length)
+                                            {
+                                                int delimPos = line.IndexOfAny(Delimiters, nextPos);
+                                                string nextWord = "";
+                                                if (delimPos == INVALID_INDEX)
+                                                    nextWord = line.Substring(nextPos);
+                                                else
+                                                    nextWord = line.Substring(nextPos, delimPos - nextPos);
+                                                int nextCode = qspGetStatCode(nextWord);
+                                                if ((nextCode == (int)QspStatementType.If) || (nextCode == (int)QspStatementType.Act))
+                                                {
+                                                    pos = nextPos + nextWord.Length - 1;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                else if (!whiteSpace)
+                                {
+                                    blockStarted = true;
+                                    blockCompleted = true;
+                                    blockStartPos = pos;
+                                    block += c;
+                                }
+                            }
+                        }
+                        else
+                        {
+                            //Просто буквы
+                            if (!blockStarted)
+                            {
+                                blockStarted = true;
+                                blockCompleted = false;
+                                blockStartPos = pos;
+                            }
+                            block += c;
+                        }
+                    }
+                    //Последний символ в строке
+                    if (blockStarted && (pos == line.Length - 1))
+                    {
+                        blockCompleted = true;
+                    }
+
+                    if (blockCompleted || quotedTextCompleted)
+                    {
+                        if (!quotedTextCompleted && (block.Length == 0))
+                        {
+                            SubmitError("Internal error of analyzer! Empty block!", lineNum);
+                            return false;
+                        }
+                        debugText += "[" + block + "] ";
+                        bool skip = false;
+                        int blockCode = qspGetStatCode(block);
+
+                        if (blockCode == (int)QspStatementType.If)
+                        {
+                            controlBlock = (int)ControlBlockType.IfCondition;
+                            debugText += "<IfCondition> ";
+                            lastIfPos = blockStartPos;
+                        }
+                        if (blockCode == (int)QspStatementType.Act)
+                        {
+                            controlBlock = (int)ControlBlockType.ActCondition;
+                            debugText += "<ActCondition> ";
+                            lastActPos = blockStartPos;
+                        }
+                        if (blockCode == (int)QspStatementType.ElseIf)
+                        {
+                            if (controlBlock == (int)ControlBlockType.ML_If)
+                            {
+                                controlBlock = (int)ControlBlockType.ElseIfCondition;
+                                debugText += "<ElseIfCondition> ";
+                                lastIfPos = blockStartPos;
+                            }
+                            else
+                            {
+                                SubmitError("ELSEIF без IF", lineNum);
+                                return false;
+                            }
+                        }
+                        if (blockCode == (int)QspStatementType.Else)
+                        {
+                            if (controlBlock == (int)ControlBlockType.ML_If)
+                            {
+                                if (firstSymbolPos == blockStartPos)
+                                {
+                                    if ((blockStartPos + block.Length == line.Length) || (line.Substring(blockStartPos + block.Length).Trim(WhiteSpace).Equals(":")))
+                                    {
+                                        controlBlock = (int)ControlBlockType.ML_Else;
+                                        
+                                        ControlStack.Pop();
+                                        ControlLine cline;
+                                        cline.controlBlock = ControlBlockType.ML_Else;
+                                        cline.line = lineNum;
+                                        ControlStack.Push(cline);
+                                    }
+                                    else
+                                    {
+                                        SubmitError("An operator cannot be placed after multiline ELSE", lineNum);
+                                        return false;
+                                    }
+                                }
+                                else
+                                {
+                                    SubmitError("Multiline ELSE should be at the beginning of the line", lineNum);
+                                    return false;
+                                }
+                            }
+                            else
+                            {
+                                if (controlBlock == (int)ControlBlockType.SL_Act)
+                                {
+                                    if (groupInnerCounter > 0)
+                                    {
+                                        if ((ControlStack.Peek().controlBlock == ControlBlockType.SL_If) && (ControlStack.Peek().line == lineNum))
+                                        {
+                                            if (blockGroupStarted)
+                                            {
+                                                blockGroupCompleted = true;
+                                            }
+                                        }
+                                        else
+                                        {
+                                            SubmitError("ELSE without IF", lineNum);
+                                            return false;
+                                        }
+                                    }
+                                    else
+                                    {
+                                        SubmitError("Invalid notation of single line ACT", lineNum);
+                                        return false;
+                                    }
+                                }
+                                else if (controlBlock == (int)ControlBlockType.SL_If)
+                                {
+                                    if (blockGroupStarted)
+                                    {
+                                        blockGroupCompleted = true;
+                                    }
+                                    else if (groupInnerCounter == 0)
+                                    {
+                                        SubmitError("After single line IF has to be any operators before ELSE", lineNum);
+                                        return false;
+                                    }
+                                }
+                                else
+                                {
+                                    SubmitError("ELSE without IF", lineNum);
+                                    return false;
+                                }
+                                //Это правильный ELSE
+                                if (blockStartPos + block.Length < line.Length)
+                                {
+                                    string restLine = line.Substring(blockStartPos + block.Length);
+                                    if (restLine.Trim(WhiteSpace).StartsWith(":"))
+                                    {
+                                        pos += restLine.IndexOf(':') + 1;
+                                    }
+                                }
+                                ControlStack.Pop();
+                                controlBlock = (int)ControlBlockType.SL_Else;
+                                groupInnerCounter = 0;
+                            }
+                            skip = true;
+                        }
+                        if (blockCode == (int)QspStatementType.End)
+                        {
+                            if (ControlStack.Count > 0)
+                            {
+                                ControlStack.Pop();
+                                if (ControlStack.Count > 0)
+                                {
+                                    ControlLine cline = ControlStack.Peek();
+                                    controlBlock = (int)cline.controlBlock;
+                                }
+                                else
+                                {
+                                    controlBlock = (int)ControlBlockType.None;
+                                }
+                            }
+                            else
+                            {
+                                SubmitError("Redundant END", lineNum);
+                                return false;
+                            }
+                            skip = true;
+                        }
+                        if (!skip)
+                        {
+                            if (!blockGroupStarted)
+                            {
+                                blockGroupStarted = true;
+                                groupInnerCounter++;
+                                if (singleBlockGroup)
+                                {
+                                    singleBlockGroup = false;
+                                    blockGroupCompleted = true;
+                                }
+                            }
+                            if (quotedTextCompleted)
+                            {
+                                blockGroup.Add(quotedText);
+                                blockInGroupIsText.Add(true);
+                                quotedTextCompleted = false;
+                            }
+                            else
+                            {
+                                if ((blockCode == (int)QspStatementType.Unknown) && (block.Length > 1))
+                                {
+                                    //Обрабатываем попытки "склеить" некоторые последовательности символов
+                                    string first = block.Substring(0, 1);
+                                    if (first.Equals("*"))
+                                    {
+                                        //Если была неудачная попытка прочесть *NL, *P, и т.д., "разделяем" блок на части
+                                        blockGroup.Add(first);
+                                        blockInGroupIsText.Add(false);
+                                        block = block.Substring(1);
+                                    }
+                                }
+                                blockGroup.Add(block);
+                                blockInGroupIsText.Add(false);
+                            }
+                            if (appendDelimiter)
+                            {
+                                blockGroup.Add(delimiterToAppend);
+                                blockInGroupIsText.Add(false);
+                            }
+                            if (blockGroupStarted && (pos == line.Length - 1))
+                            {
+                                blockGroupCompleted = true;
+                            }
+                        }
+                        block = "";
+                        blockCompleted = false;
+                        blockStarted = false;
+                    }
+                    if (blockGroupCompleted)
+                    {
+                        //Разбор аргументов
+                        if (blockGroup.Count == 0)
+                        {
+                            SubmitError("Internal error of the analyzer! Empty block!", lineNum);
+                            return false;
+                        }
+                        if (!CheckBlockGroup(blockGroup, blockInGroupIsText))
+                            return false;
+                        blockGroup.Clear();
+                        blockInGroupIsText.Clear();
+                        blockGroupStarted = false;
+                        blockGroupCompleted = false;
+                    }
+
+                    pos++;
+                }
+                
+                //Строка закончилась
+
+                if (bracketLevel>0)
+                {
+                    SubmitError("Redundant bracket \"(\"", lineNum);
+                    return false;
+                }
+                if (controlBlock == (int)ControlBlockType.IfCondition)
+                {
+                    SubmitError("IF without \":\"", lineNum);
+                    return false;
+                }
+                if (controlBlock == (int)ControlBlockType.ActCondition)
+                {
+                    SubmitError("ACT without \":\"", lineNum);
+                    return false;
+                }
+                if ((controlBlock == (int)ControlBlockType.SL_Act) || (controlBlock == (int)ControlBlockType.SL_If) || (controlBlock == (int)ControlBlockType.SL_Else))
+                {
+                    if (groupInnerCounter > 0)
+                    {
+                        while ((ControlStack.Count > 0) && (ControlStack.Peek().controlBlock == ControlBlockType.SL_If))
+                            ControlStack.Pop();
+                        if (ControlStack.Count > 0)
+                        {
+                            ControlLine cline = ControlStack.Peek();
+                            controlBlock = (int)cline.controlBlock;
+                        }
+                        else
+                        {
+                            controlBlock = (int)ControlBlockType.None;
+                        }
+                    }
+                    else if (controlBlock == (int)ControlBlockType.SL_Act)
+                    {
+                        SubmitError("Invalid notation of single line ACT", lineNum);
+                        return false;
+                    }
+                    else if (controlBlock == (int)ControlBlockType.SL_If)
+                    {
+                        SubmitError("Invalid notation of single line IF", lineNum);
+                        return false;
+                    }
+                    else if (controlBlock == (int)ControlBlockType.SL_Else)
+                    {
+                        SubmitError("In single line IF has to be any operators after ELSE", lineNum);
+                        return false;
+                    }
+                }
+
+                //для отладки
+                if (line.Length > 0)
+                {
+                    debugText += Environment.NewLine;
+                }
+                
+                if (currentRoot)
+                {
+                    //Вычисляем уровень вложенности(для утилиты форматирования кода)
+                    int stackSize = ControlStack.Count;
+                    int level = 0;
+                    if (stackSize > 0)
+                    {
+                        endIndentLevel = stackSize;
+                        ControlLine cline = ControlStack.Peek();
+                        int b = (int)cline.controlBlock;
+                        bool openingLine = cline.line == currentLine;
+                        if (openingLine && ((b == (int)ControlBlockType.ML_Act) || (b == (int)ControlBlockType.ML_If)))
+                        {
+                            level = startIndentLevel;
+                        }
+                        else if (openingLine && (b == (int)ControlBlockType.ML_Else))
+                        {
+                            level = startIndentLevel - 1;
+                        }
+                        else
+                        {
+                            level = endIndentLevel;
+                        }
+                    }
+                    location_codeline_level.Add(currentLine, level);
+                }
+            }
+            //Проверка на незакрытые в конце локации многострочные IF и ACT
+            if (ControlStack.Count > 0)
+            {
+                ControlLine cline = ControlStack.Pop();
+                if ((cline.controlBlock == ControlBlockType.ML_If) || (cline.controlBlock == ControlBlockType.ML_Else))
+                {
+                    SubmitError("Multi line IF without END", cline.line);
+                    return false;
+                }
+                else
+                {
+                    SubmitError("Multi line ACT without END", cline.line);
+                    return false;
+                }
+            }
+
+            AddLocationLink(m_name, true, m_start);
+
+            return true;
+        }
+
+        bool CheckBlockGroup(List<string> blockGroup, List<bool> blockInGroupIsText)
+        {
+            //Разбор аргументов для операторов ACT, IF, прочих операторов и функций.
+            int blockCode = qspGetStatCode(blockGroup.ToArray()[0]);
+            if (blockInGroupIsText[0])
+                blockCode = (int)QspStatementType.Unknown;
+            bool isSetOp = blockCode == (int)QspStatementType.Set;
+            if ((blockCode == (int)QspStatementType.Unknown) || isSetOp)
+            {
+                //Это присваивание?
+                int setpos = FindInTopBracketLevel(blockGroup, blockInGroupIsText, "=");
+                if (setpos == INVALID_INDEX)
+                    setpos = FindInTopBracketLevel(blockGroup, blockInGroupIsText, "+=");
+                if (setpos == INVALID_INDEX)
+                    setpos = FindInTopBracketLevel(blockGroup, blockInGroupIsText, "-=");
+                if (isSetOp && (setpos == INVALID_INDEX))
+                {
+                    SubmitError("Not found the char \"=\"", currentLine);
+                    return false;
+                }
+                if (setpos != INVALID_INDEX)
+                {
+                    //Присваивание
+                    if ((setpos == 0) || (isSetOp && (setpos == 1)))
+                    {
+                        SubmitError("The name of a variable before the character \"=\" is not specified!", currentLine);
+                        return false;
+                    }
+                    int last = blockGroup.Count - 1;
+                    if (setpos==last)
+                    {
+                        SubmitError("It should be a value after char \"=\"", currentLine);
+                        return false;
+                    }
+
+                    //Проверяем левую часть
+                    int start = 0;
+                    if (isSetOp)
+                        start = 1;
+                    int count = setpos - start;
+                    List<string> args = new List<string>();
+                    List<bool> types = new List<bool>();
+                    args = blockGroup.GetRange(start, count);
+                    types = blockInGroupIsText.GetRange(start, count);
+                    if (!CheckLeftAssign(args, types))
+                        return false;
+
+                    string assignedVarName = args[0];
+
+                    //Проверяем правую часть
+                    start = setpos + 1;
+                    count = last - start + 1;
+                    args = blockGroup.GetRange(start, count);
+                    types = blockInGroupIsText.GetRange(start, count);
+                    if (!CheckExpression(args, types))
+                        return false;
+
+                    //Засчитываем присваивание некоторым переменным как обращение к локации
+                    if ((count == 1) && types[0] && ListContainsIgnoreCase(callerVariables, assignedVarName))
+                    {
+                        AddLocationLink(args[0], false, true);
+                    }
+                }
+                else
+                {
+                    //Если оператор неизвестен, пытаемся разобрать выражение
+                    if (!CheckExpression(blockGroup, blockInGroupIsText))
+                        return false;
+
+                    //Разбираем код в ссылках <a href="EXEC:GOTO 'loc1'">
+                    if ((blockGroup.Count == 1) && (blockInGroupIsText[0]))
+                    {
+                        ParseExecInOutputText(blockGroup[0]);
+                    }
+                }
+            }
+            else if ((blockCode == (int)QspStatementType.If) || (blockCode == (int)QspStatementType.ElseIf))
+            {
+                int start = 1;
+                int count = blockGroup.Count - 1;
+                if (count > 0)
+                {
+                    List<string> args = blockGroup.GetRange(start, count);
+                    List<bool> types = blockInGroupIsText.GetRange(start, count);
+                    if (!CheckExpression(args, types))
+                        return false;
+                }
+                else
+                {
+                    if (blockCode == (int)QspStatementType.If)
+                    {
+                        SubmitError("Operator IF without condition", currentLine);
+                    }
+                    else
+                    {
+                        SubmitError("Operator ELSEIF without condition", currentLine);
+                    }
+                    return false;
+                }
+            }
+            else
+            {
+                //Если оператор известен, проверяем его аргументы.
+                int count = blockGroup.Count - 1;
+                List<string> args = new List<string>();
+                List<bool> types = new List<bool>();
+                if (count > 0)
+                {
+                    args = blockGroup.GetRange(1, count);
+                    types = blockInGroupIsText.GetRange(1, count);
+                }
+
+                if (!CheckStatementArgs(blockCode, args, types))
+                    return false;
+            }
+
+            //Проверяем подвыражения вида <<$var>> в любых строках
+            for (int i = 0; i < blockGroup.Count; i++)
+            {
+                if (blockInGroupIsText[i])
+                {
+                    if (!ParseSubExpressions(blockGroup[i]))
+                        return false;
+                }
+            }
+            return true;
+        }
+
+        bool CheckStatementArgs(int code, List<string> argsSrc, List<bool> typesSrc)
+        {
+            int count = argsSrc.Count;
+            List<string> args = new List<string>();
+            List<bool> types = new List<bool>();
+            if (count > 0)
+            {
+                if ((count > 1) && argsSrc.ToArray()[0].Equals("(") && !typesSrc.ToArray()[0] &&
+                    argsSrc.ToArray()[count - 1].Equals(")") && !typesSrc.ToArray()[count - 1])
+                {
+                    //Игнорируем одну пару скобок по краям
+                    args = argsSrc.GetRange(1, count - 2);
+                    types = typesSrc.GetRange(1, count - 2);
+                }
+                else
+                {
+                    args = argsSrc.GetRange(0, count);
+                    types = typesSrc.GetRange(0, count);
+                }
+            }
+            count = args.Count;
+
+            if ((count == 1) && types[0])
+            {
+                //Отмечаем в списке явные ссылки на локации
+                if ((code == (int)QspStatementType.GoSub) || (code == (int)QspStatementType.GoTo) ||
+                 (code == (int)QspStatementType.XGoTo))
+                {
+                    AddLocationLink(args[0], false, true);
+                }
+                //Разбираем код в ссылках <a href="EXEC:GOTO 'loc1'">
+                else if ((code == (int)QspStatementType.P) || (code == (int)QspStatementType.PL) ||
+                    (code == (int)QspStatementType.NL) || (code == (int)QspStatementType.MP) ||
+                    (code == (int)QspStatementType.MPL) || (code == (int)QspStatementType.MNL)) 
+                {
+                    ParseExecInOutputText(args[0]);
+                }
+                //Отмечаем в списке добавленные предметы
+                else if (code == (int)QspStatementType.AddObj)
+                {
+                    AddObj(args[0], true, false);
+                }
+                //Отмечаем в списке удаленные предметы
+                else if (code == (int)QspStatementType.DelObj)
+                {
+                    AddObj(args[0], false, true);
+                }
+                //Отмечаем в списке добавленные действия
+                else if (code == (int)QspStatementType.Act)
+                {
+                    AddAct(args[0], true, false);
+                }
+                //Отмечаем в списке удаленные действия
+                else if (code == (int)QspStatementType.DelAct)
+                {
+                    AddAct(args[0], false, true);
+                }
+            }
+
+            int minArgCount = qspStats[code].MinArgsCount;
+            int maxArgCount = qspStats[code].MaxArgsCount;
+            int argCount = 0;
+            int curIndex = 0;
+            List<string> expr = new List<string>();
+            if (count > 0)
+            {
+                while (true)
+                {
+                    if (argCount == maxArgCount)
+                    {
+                        SubmitError("Too many arguments for the operator", currentLine);
+                        return false;
+                    }
+
+                    int index = FindInTopBracketLevel(args, types, ",", curIndex);
+                    if (index != INVALID_INDEX)
+                    {
+                        if (index > curIndex)
+                        {
+                            if (!CheckExpression(args.GetRange(curIndex, index - curIndex), types.GetRange(curIndex, index - curIndex)))
+                                return false;
+                        }
+                        else
+                        {
+                            SubmitError("Argument can not be empty", currentLine);
+                            return false;
+                        }
+                    }
+                    else
+                    {
+                        if (!CheckExpression(args.GetRange(curIndex, count - curIndex), types.GetRange(curIndex, count - curIndex)))
+                            return false;
+                    }
+                    argCount++;
+                    if (index == INVALID_INDEX)
+                        break;
+                    curIndex = index + 1;
+                    if (curIndex == count)
+                    {
+                        SubmitError("Argument can not be empty", currentLine);
+                        return false;
+                    }
+                }
+            }
+            if (argCount < minArgCount)
+            {
+                SubmitError("The operator requires more arguments", currentLine);
+                return false;
+            }
+            return true;
+        }
+
+        bool CheckExpression(List<string> args, List<bool> types)
+        {
+            //Проверка выражения
+            int[] opStack = new int[QSP_STACKSIZE];
+            int[] argStack = new int[QSP_STACKSIZE];
+
+	        bool waitForOperator = false;
+            int opCode, itemsCount = 0, opSp = -1, argSp = -1;
+	        if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, (int)QspFunctionType.Start))
+                return false;
+            int argIndex = 0;
+	        while (argIndex <= args.Count)
+	        {
+                String s = "";
+                if (argIndex < args.Count)
+                    s = args[argIndex];
+		        if (waitForOperator)
+		        {
+			        opCode = qspGetFunctionCode(s, false);
+                    String nextArg = "";
+                    bool nextArgIsString = false;
+                    bool hasNextArg = argIndex + 1 < args.Count;
+                    if (hasNextArg)
+                    {
+                        nextArg = args[argIndex + 1];
+                        nextArgIsString = types[argIndex + 1];
+                    }
+                    if (opCode == (int)QspFunctionType.Unknown || opCode >= (int)QspFunctionType.First_Function)
+			        {
+                        SubmitError("Unknown action in the expression", currentLine);
+				        break;
+			        }
+                    if (((opCode == (int)QspFunctionType.And) || (opCode == (int)QspFunctionType.Or) || (opCode == (int)QspFunctionType.Mod)) &&
+                        !(hasNextArg && (nextArgIsString || nextArg.Equals("(") || (nextArg.IndexOfAny(Delimiters) == INVALID_INDEX)))
+                        )
+			        {
+                        SubmitError("Syntax error", currentLine);
+				        break;
+			        }
+                    bool bError = false;
+			        while (qspOps[opCode].Priority <= qspOps[opStack[opSp]].Priority && qspOps[opStack[opSp]].Priority != 127)
+			        {
+                        if (opStack[opSp] >= (int)QspFunctionType.First_Function) ++argStack[argSp];
+                        if (!qspAppendToCompiled(ref itemsCount))
+                        {
+                            bError = true;
+                            break;
+                        }
+				        if (--opSp < 0 || --argSp < 0)
+				        {
+                            SubmitError("Syntax error", currentLine);
+                            bError = true;
+					        break;
+				        }
+			        }
+                    if (bError) 
+                        break;
+			        switch (opCode)
+			        {
+                    case (int)QspFunctionType.End:
+				        if (opSp > 0)
+				        {
+                            SubmitError("Closing bracket not found", currentLine);
+                            bError = true;
+                            break;
+				        }
+				        return itemsCount > 0;
+                    case (int)QspFunctionType.CloseBracket:
+                        if (opStack[opSp] != (int)QspFunctionType.OpenBracket)
+				        {
+                            SubmitError("Opening bracket not found", currentLine);
+                            bError = true;
+                            break;
+				        }
+				        opCode = opStack[--opSp];
+                        if (opCode >= (int)QspFunctionType.First_Function)
+				        {
+                            if (argStack[argSp] + 1 < qspOps[opCode].MinArgsCount || argStack[argSp] + 1 > qspOps[opCode].MaxArgsCount)
+                            {
+                                SubmitError("Invalid number of arguments", currentLine);
+                                bError = true;
+                            }
+				        }
+				        else
+					        --argSp;
+				        break;
+                    case (int)QspFunctionType.Comma:
+                        if ((opSp > 0) && opStack[opSp - 1] >= (int)QspFunctionType.First_Function)
+				        {
+					        if (++argStack[argSp] > qspOps[opStack[opSp - 1]].MaxArgsCount)
+					        {
+                                SubmitError("Invalid number of arguments", currentLine);
+                                bError = true;
+                                break;
+					        }
+				        }
+				        else
+				        {
+                            if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, (int)QspFunctionType.Comma))
+                            {
+                                bError = true;
+                                break;
+                            }
+				        }
+				        waitForOperator = false;
+				        break;
+			        default:
+                        if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, opCode))
+                        {
+                            bError = true;
+                            break;
+                        }
+				        waitForOperator = false;
+				        break;
+			        }
+			        if (bError)
+                        break;
+		        }
+		        else
+		        {
+                    if ((argIndex < args.Count) && !types[argIndex] && IsNumber(s))
+			        {
+                        if (opStack[opSp] == (int)QspFunctionType.Minus)
+				        {
+					        --opSp;
+					        --argSp;
+				        }
+				        if (!qspAppendToCompiled(ref itemsCount))
+				            break;
+				        waitForOperator = true;
+			        }
+                    else if ((argIndex < args.Count) && types[argIndex])
+			        {
+				        if (!qspAppendToCompiled(ref itemsCount))
+				            break;
+				        waitForOperator = true;
+			        }
+			        else if (s.Equals("+"))
+			        {
+			        }
+			        else if (s.Equals("-"))
+			        {
+                        if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, (int)QspFunctionType.Minus))
+                            break;
+			        }
+			        else if (s.Equals("("))
+			        {
+                        if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, (int)QspFunctionType.OpenBracket))
+				            break;
+			        }
+			        else if (s.Equals(")"))
+			        {
+				        opCode = opStack[opSp];
+                        if (opCode != (int)QspFunctionType.OpenBracket)
+				        {
+                            if (opCode >= (int)QspFunctionType.First_Function)
+                                SubmitError("Invalid number of arguments", currentLine);
+					        else
+                                SubmitError("Syntax error", currentLine);
+					        break;
+				        }
+				        opCode = opStack[--opSp];
+                        if (opCode < (int)QspFunctionType.First_Function)
+				        {
+                            SubmitError("Syntax error", currentLine);
+					        break;
+				        }
+				        if (qspOps[opCode].MinArgsCount > 0)
+				        {
+                            SubmitError("Invalid number of arguments", currentLine);
+					        break;
+				        }
+				        if (!qspAppendToCompiled(ref itemsCount))
+				            break;
+				        --opSp;
+				        --argSp;
+				        waitForOperator = true;
+			        }
+			        else if ((argIndex < args.Count) && s.IndexOfAny(Delimiters) != 0)
+			        {
+                        if (s.IndexOfAny(Delimiters) != INVALID_INDEX)
+                        {
+                            SubmitError("Internal error of the analyzer: Invalid characters in the variable name", currentLine);
+                            break;
+                        }
+
+                        opCode = qspGetFunctionCode(s, true);
+                        if (opCode >= (int)QspFunctionType.First_Function)
+				        {
+                            if ((args.Count - argIndex > 1) && (args[argIndex + 1].Equals("(") && !types[argIndex + 1]))
+					        {
+						        if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, opCode))
+						            break;
+                                if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, (int)QspFunctionType.OpenBracket))
+						            break;
+                                argIndex++;
+						        --argSp;
+					        }
+					        else if (qspOps[opCode].MinArgsCount < 2)
+					        {
+						        if (qspOps[opCode].MinArgsCount > 0)
+						        {
+							        if (!qspCompileExprPushOpCode(ref opStack, ref opSp, ref argStack, ref argSp, opCode))
+							            break;
+						        }
+						        else
+						        {
+				                    if (!qspAppendToCompiled(ref itemsCount))
+				                        break;
+							        waitForOperator = true;
+						        }
+					        }
+					        else
+					        {
+                                SubmitError("Brackets not found", currentLine);
+                                break;
+					        }
+				        }
+				        else
+				        {
+                            int optArgsCount = 0;
+
+                            //Проверяем выражение(индекс массива)
+                            if ((args.Count - argIndex > 1) && (args[argIndex + 1].Equals("[") && !types[argIndex + 1]))
+                            {
+                                int optIndex = argIndex + 2;
+                                int level = 1;
+                                bool bFound = false;
+                                while (optIndex < args.Count)
+                                {
+                                    if (args[optIndex].Equals("[") && !types[optIndex])
+                                    {
+                                        level++;
+                                    }
+                                    else if (args[optIndex].Equals("]") && !types[optIndex])
+                                    {
+                                        level--;
+                                        if (level == 0)
+                                        {
+                                            bFound = true;
+                                            break;
+                                        }
+                                    }
+                                    optIndex++;
+                                }
+                                if (level > 0)
+                                {
+                                    SubmitError("Unclosed parenthesis \"[\"", currentLine);
+                                    break;
+                                }
+                                if (bFound)
+                                    optArgsCount = optIndex - argIndex;
+                            }
+                            List<string> subArgs = args.GetRange(argIndex, optArgsCount + 1);
+                            List<bool> subTypes = types.GetRange(argIndex, optArgsCount + 1);
+
+                            if (!CheckVariable(subArgs, subTypes, false))
+                                break;
+                            
+                            argIndex += optArgsCount;
+
+				            if (!qspAppendToCompiled(ref itemsCount))
+				                break;
+					        waitForOperator = true;
+				        }
+			        }
+			        else
+			        {
+                        if (opStack[opSp] >= (int)QspFunctionType.First_Function)
+                            SubmitError("Invalid number of arguments", currentLine);
+                        else
+                            SubmitError("Syntax error", currentLine);
+                        break;
+			        }
+		        }
+                argIndex++;
+	        }
+            return false;
+        }
+
+        bool CheckVariable(List<string> args, List<bool> types, bool assignment)
+        {
+            //Проверка имени переменной
+            if ((args.Count == 0) || (args[0].Length == 0) || types[0])
+            {
+                SubmitError("Internal error of the analyzer: empty name of variable!", currentLine);
+                return false;
+            }
+
+            string name = args[0];
+            int code1 = qspGetStatCode(name);
+            int code2 = qspGetFunctionCode(name, true);
+            if ((code1 != (int)QspStatementType.Unknown) || (code2 != (int)QspFunctionType.Unknown))
+            {
+                SubmitError("QSP Keyword \"" + name + "\" cannot be used as a variable name", currentLine);
+                return false;
+            }
+
+            //Проверяем имя переменной на валидность
+            //В имени переменной разрешены все символы, кроме DELIMS и цифры в начале имени
+            //Перед именем переменной может находиться префикс "$"
+            string checkName = name;
+            if (checkName.StartsWith("$"))
+                checkName = checkName.Substring(1);
+            // $ =
+            if (checkName.Length == 0)
+            {
+                SubmitError("Invalid variable name \"" + name + "\"", currentLine);
+                return false;
+            }
+            // 1asd =
+            if (checkName.Substring(0, 1).IndexOfAny(Digits) != INVALID_INDEX)
+            {
+                SubmitError("Variable name \"" + name + "\" cannot start with a digit", currentLine);
+                return false;
+            }
+            // /asd =
+            if (checkName.IndexOfAny(Delimiters) != INVALID_INDEX)
+            {
+                SubmitError("Invalid symbols in the name of the variable \"" + name + "\"", currentLine);
+                return false;
+            }
+
+            //Проверяем переменную на "смешанные раскладки"
+            if ((checkName.IndexOfAny(LatinLetters) != INVALID_INDEX) && (checkName.IndexOfAny(RussianLetters) != INVALID_INDEX))
+            {
+                SubmitWarning("English and Russian symbols are used simultaneously in the name of varible \"" + name + "\" , possibly a typo", currentLine);
+            }
+
+            //Проверяем выражение(индекс массива)
+            if (args.Count > 1)
+            {
+                if (args.Count > 2 && args[1].Equals("[") && !types[1] &&
+                                        args[args.Count - 1].Equals("]") && !types[args.Count - 1])
+                {
+                    int start = 2;
+                    int count = args.Count - 3;
+                    if (count > 0)
+                    {
+                        List<string> argsCut = args.GetRange(start, count);
+                        List<bool> typesCut = types.GetRange(start, count);
+                        if (!CheckExpression(argsCut, typesCut))
+                            return false;
+                    }
+                }
+                else
+                {
+                    SubmitError("Invalid expression", currentLine);
+                    return false;
+                }
+            }
+
+            //Сохраняем имя переменной в глобальном списке
+            if (!assignment)
+            {
+                bool usedBySystem = ListContainsIgnoreCase(systemVariables, name);
+                AddVar(name, usedBySystem, true);
+            }
+
+            return true;
+        }
+        
+        bool CheckLeftAssign(List<string> args, List<bool> types)
+        {
+            //Проверка имени переменной(слева от знака "=" в операции присваивания)
+            if ((args.Count == 0) || (args[0].Length == 0) || types[0])
+            {
+                //Текстовая строка
+                SubmitError("Name of the variable should be before char \"=\" in the assignment operation", currentLine);
+                return false;
+            }
+
+            if (!CheckVariable(args, types, true))
+                return false;
+
+            //Сохраняем имя переменной в глобальном списке
+            bool usedBySystem = ListContainsIgnoreCase(systemVariables, args[0]);
+            AddVar(args[0], true, usedBySystem);
+
+            return true;
+        }
+
+        int FindInTopBracketLevel(List<string> args, List<bool> types, string what)
+        {
+            return FindInTopBracketLevel(args, types, what, 0);
+        }
+
+        int FindInTopBracketLevel(List<string> args, List<bool> types, string what, int startIndex)
+        {
+            //Ищем знак "=" или запятую вне скобок
+            int bracketLevel = 0;
+            for (int i = startIndex; i < args.Count; i++)
+            {
+                if (types[i])
+                    continue;
+                string block = args[i];
+                if (block.Equals("("))
+                {
+                    bracketLevel++;
+                }
+                else if (block.Equals(")"))
+                {
+                    bracketLevel--;
+                }
+                else if (block.Equals(what) && (bracketLevel == 0))
+                {
+                    return i;
+                }
+            }
+            return INVALID_INDEX;
+        }
+
+        void ParseExecInOutputText(string text)
+        {
+            //Разбираем код в ссылках <a href="EXEC:GOTO 'loc1'">
+            int pos = 0;
+
+            //Строим "карту" подвыражений.
+            //Если подвыражения в строке содержат ошибки, то разбирать теги нет смысла.
+            List<int> subExpMap = new List<int>();
+            if (!ParseSubExpressions(text, ref subExpMap))
+                return;
+            int subExpSkipped = 0;
+
+            while (pos < text.Length)
+            {
+                pos = text.IndexOf('<', pos);
+                if (pos == INVALID_INDEX)
+                    break;
+
+                if (subExpMap.Count / 2 > subExpSkipped)
+                {
+                    int subExpStartPos = subExpMap[subExpSkipped * 2];
+                    int subExpEndPos = subExpMap[subExpSkipped * 2 + 1];
+                    if (subExpStartPos == pos)
+                    {
+                        //Пропускаем подвыражения вне тегов
+                        subExpSkipped++;
+                        pos = subExpEndPos + 1;
+                        continue;
+                    }
+                }
+
+                //Разбираем содержимое угловых скобок
+                //Внутри HTML-тега кавычки экранируются не через дублирование, как в QSP, а через "\",
+                //причем экранирование требуется только внутри окавыченной строки.
+                List<string> blockGroup = new List<string>();
+                List<bool> blockInGroupIsText = new List<bool>();
+                int firstBlockPosition = INVALID_INDEX;
+
+                string quotedText = "";
+                string block = "";
+                bool tagClosed = false;
+                bool quotedTextCompleted = false;
+                bool blockCompleted = false;
+                pos++;
+                int startPos = pos;
+                if ((pos < text.Length) && (text[pos] == '/'))
+                    startPos++;
+                int tagQuote = (int)QuoteType.None;
+                while (!tagClosed && (pos < text.Length))
+                {
+                    if (subExpMap.Count / 2 > subExpSkipped)
+                    {
+                        int subExpStartPos = subExpMap[subExpSkipped * 2];
+                        int subExpEndPos = subExpMap[subExpSkipped * 2 + 1];
+                        if (subExpStartPos == pos)
+                        {
+                            //Пропускаем подвыражения вне тегов
+                            subExpSkipped++;
+                            string subExpText = text.Substring(pos, subExpEndPos - pos + 1);
+                            if (tagQuote == (int)QuoteType.None)
+                                block += subExpText;
+                            else
+                                quotedText += subExpText;
+                            pos = subExpEndPos + 1;
+                            continue;
+                        }
+                    }
+
+                    char c2 = text[pos];
+
+                    if (tagQuote != (int)QuoteType.None)
+                    {
+                        //Апостроф либо кавычка
+                        if (((tagQuote == (int)QuoteType.Single) && (c2 == '\'')) ||
+                            ((tagQuote == (int)QuoteType.Double) && (c2 == '"')))
+                        {
+                            if ((pos - 1 > 0) && (text[pos - 1] == '\\'))
+                            {
+                                //Экранированный апостроф либо кавычка
+                                if (!quotedTextCompleted)
+                                    quotedText = quotedText.Substring(0, quotedText.Length - 1) + c2;
+                            }
+                            else
+                            {
+                                tagQuote = (int)QuoteType.None;
+                                quotedTextCompleted = true;
+                            }
+                        }
+                        else if (!quotedTextCompleted)
+                        {
+                            quotedText += c2;
+                        }
+                    }
+                    else if (c2 == '>')
+                    {
+                        tagClosed = true;
+                    }
+                    else if ((block.Length == 0) && (c2 == '\''))
+                    {
+                        tagQuote = (int)QuoteType.Single;
+                    }
+                    else if ((block.Length == 0) && (c2 == '"'))
+                    {
+                        tagQuote = (int)QuoteType.Double;
+                    }
+                    else if (c2.ToString().IndexOfAny(WhiteSpace) == 0)
+                    {
+                        if (block.Length > 0)
+                        {
+                            blockCompleted = true;
+                        }
+                    }
+                    else if (c2 == '=')
+                    {
+                        if (block.Length > 0)
+                        {
+                            blockGroup.Add(block);
+                            blockInGroupIsText.Add(false);
+                        }
+                        block = "=";
+                        blockCompleted = true;
+                    }
+                    else
+                    {
+                        if (firstBlockPosition == INVALID_INDEX)
+                        {
+                            firstBlockPosition = pos - startPos;
+                        }
+                        block += c2;
+                    }
+                    if (tagClosed)
+                    {
+                        if (block.Length > 0)
+                            blockCompleted = true;
+                    }
+
+                    if (blockCompleted)
+                    {
+                        blockGroup.Add(block);
+                        blockInGroupIsText.Add(false);
+                        blockCompleted = false;
+                        block = "";
+                    }
+                    if (quotedTextCompleted)
+                    {
+                        blockGroup.Add(quotedText);
+                        blockInGroupIsText.Add(true);
+                        quotedTextCompleted = false;
+                        quotedText = "";
+                    }
+
+                    pos++;
+                }
+                
+                if (tagQuote == (int)QuoteType.Single)
+                {
+                    SubmitWarning("Unclosed apostrophe inside the tag", currentLine);
+                    break;
+                }
+                else if (tagQuote == (int)QuoteType.Double)
+                {
+                    SubmitWarning("Unclosed quote inside the tag", currentLine);
+                    break;
+                }
+                if (!tagClosed)
+                {
+                    SubmitWarning("Unclosed tag",currentLine);
+                    break;
+                }
+                if (firstBlockPosition > 0)
+                {
+                    SubmitWarning("The name of the tag should follow immediately after the opening angle bracket, without spaces", currentLine);
+                    break;
+                }
+
+
+                //Ищем HREF в атрибутах тега A
+                int hrefIndex = INVALID_INDEX;
+                if ((blockGroup.Count > 3) && (blockGroup[0].Equals("A", StringComparison.OrdinalIgnoreCase)) && !blockInGroupIsText[0])
+                {
+                    for (int i = 1; i + 2 < blockGroup.Count; i++)
+                    {
+                        if (blockGroup[i].Equals("HREF", StringComparison.OrdinalIgnoreCase) && !blockInGroupIsText[i] &&
+                            blockGroup[i + 1].Equals("=") && !blockInGroupIsText[i + 1])
+                        {
+                            hrefIndex = i + 2;
+                        }
+                    }
+                }
+
+                if (hrefIndex != INVALID_INDEX)
+                {
+                    string hrefText = blockGroup[hrefIndex];
+                    int execKeywordLength = "EXEC:".Length;
+                    if (hrefText.StartsWith("EXEC:", StringComparison.OrdinalIgnoreCase) && (hrefText.Length > execKeywordLength))
+                    {
+                        string execText = hrefText.Substring(execKeywordLength);
+                        List<int> subExpMapExec = new List<int>();
+                        ParseSubExpressions(execText, ref subExpMapExec);
+                        if (subExpMapExec.Count == 0)
+                        {
+                            //В EXEC не разбираем код с подвыражениями, это невозможно без интерпретации
+                            List<string> tagLines = new List<string>(execText.Split('\n'));
+                            bool wasRoot = currentRoot;
+                            currentRoot = false;
+                            ParseLocation(tagLines, currentRoot);
+                            currentRoot = wasRoot;
+                        }
+                    }
+                }
+            }
+        }
+
+        bool ParseSubExpressions(string text)
+        {
+            List<int> dummy = null;
+            return ParseSubExpressions(text, ref dummy);
+        }
+        bool ParseSubExpressions(string text, ref List<int> subExpMap)
+        {
+            bool quiet = subExpMap != null;
+            //Разбираем подвыражения - <<$var>>
+            if (quiet)
+                subExpMap.Clear();
+            int pos = 0;
+            bool valid = true;
+            while (valid && pos < text.Length)
+            {
+                pos = text.IndexOf("<<", pos);
+                if (pos == INVALID_INDEX)
+                    break;
+                if (quiet)
+                    subExpMap.Add(pos);
+                //Разбираем содержимое двойных угловых скобок
+                string subText = "";
+                bool subClosed = false;
+                pos += 2;
+                int subQuote = (int)QuoteType.None;
+                int curlyLevel = 0;
+                while (pos < text.Length)
+                {
+                    char c2 = text[pos];
+
+                    if (subQuote == (int)QuoteType.None)
+                    {
+                        if ((c2 == '>') && (pos + 1 < text.Length) && (text[pos + 1] == '>') && (curlyLevel == 0))
+                        {
+                            subClosed = true;
+                            break;
+                        }
+                        else if (c2 == '\'')
+                        {
+                            subQuote = (int)QuoteType.Single;
+                        }
+                        else if (c2 == '"')
+                        {
+                            subQuote = (int)QuoteType.Double;
+                        }
+                        else if (c2 == '{')
+                        {
+                            curlyLevel++;
+                        }
+                        else if (c2 == '}')
+                        {
+                            curlyLevel--;
+                        }
+                    }
+                    else if (((subQuote == (int)QuoteType.Single) && (c2 == '\'')) ||
+                             ((subQuote == (int)QuoteType.Double) && (c2 == '"')))
+
+                    {
+                        //Апостроф или кавычка
+                        if ((pos + 1 < text.Length) && (
+                            ((subQuote == (int)QuoteType.Single) && (text[pos + 1] == '\'')) ||
+                            ((subQuote == (int)QuoteType.Double) && (text[pos + 1] == '"'))))
+                        {
+                            //Экранированный апостроф либо кавычка
+                        }
+                        else
+                        {
+                            subQuote = (int)QuoteType.None;
+                        }
+                    }
+                    subText += c2;
+                    pos++;
+                }
+                if (quiet)
+                {
+                    if (subClosed)
+                        subExpMap.Add(pos + 1);
+                    else
+                        subExpMap.Add(pos - 1);
+                }
+                if (subQuote == (int)QuoteType.Single)
+                {
+                    if (!quiet)
+                        SubmitError("Unclosed apostrophe in a subexpression", currentLine);
+                    valid = false;
+                    break;
+                }
+                else if (subQuote == (int)QuoteType.Double)
+                {
+                    if (!quiet)
+                        SubmitError("Unclosed quote in a subexpression", currentLine);
+                    valid = false;
+                    break;
+                }
+                else if (curlyLevel != 0)
+                {
+                    if (!quiet)
+                        SubmitError("Unclosed curly bracket in a subexpression", currentLine);
+                    valid = false;
+                    break;
+                }
+                if (!subClosed)
+                {
+                    if (!quiet)
+                        SubmitError("Unclosed subexpression", currentLine);
+                    valid = false;
+                    break;
+                }
+                if (subText.Trim(WhiteSpace).Length == 0)
+                {
+                    if (!quiet)
+                        SubmitError("Empty subexpression", currentLine);
+                    valid = false;
+                    break;
+                }
+
+                if (!quiet)
+                {
+                    //Парсим подвыражение как исполняемый код.
+                    //Для того, чтобы строка считалась именно выражением, добавляем ''+ в начало
+                    subText = "''+" + subText;
+                    List<string> subLines = new List<string>(subText.Split('\n'));
+                    bool wasRoot = currentRoot;
+                    currentRoot = false;
+                    valid = ParseLocation(subLines, currentRoot);
+                    currentRoot = wasRoot;
+                }
+            }
+            return valid;
+        }
+    }
+
+    public class QSPGameCode : Common
+    {
+        Hashtable m_LocationsByName;
+        List<Location> m_LocationsByOrder;
+        Location m_lastLocation;
+
+        public QSPGameCode()
+        {
+            m_LocationsByName = new Hashtable();
+            m_LocationsByOrder = new List<Location>();
+            m_lastLocation = null;
+        }
+
+        public bool ParseGame(string fileName, object sender, DoWorkEventArgs e)
+        {
+            int totalLines = 0;
+            StreamReader rTl = new StreamReader(fileName);
+            while (rTl.ReadLine() != null) { totalLines++; };
+            m_LocationsByName.Clear();
+            m_LocationsByOrder.Clear();
+            ClearErrors();
+            m_lastLocation = null;
+            currentLocation = "";
+
+            vars = new List<QspVariable>();
+            locationLinks = new List<QspLocationLink>();
+            objects = new List<QspObj>();
+            acts = new List<QspAct>();
+
+            StreamReader fi = null;
+            if (!OpenStreamForReading(ref fi, fileName))
+            {
+                return false;
+            }
+            string s;
+            int line_counter = 0;
+            List<string> locationCode = new List<string>();
+            bool inside = false;
+            while ((s = fi.ReadLine()) != null)
+            {
+                line_counter++;
+                string trimmed = s.Trim(WhiteSpace);
+                if ((trimmed.Length > 0) && (trimmed[0] == '#'))
+                {
+                    //имя локации
+                    string locName = trimmed.Substring(1).Trim(WhiteSpace);
+                    if (!AddLocation(locName, line_counter))
+                    {
+                        fi.Close();
+                        return false;
+                    }
+                    currentLocation = locName;
+                    inside = true;
+                }
+                else if ((trimmed.Length > 38) && trimmed.StartsWith("--- ") && trimmed.EndsWith(" ---------------------------------"))
+                {
+                    inside = false;
+                    Location lastLoc = GetLastLocation();
+                    if (lastLoc != null)
+                    {
+                        lastLoc.ParseLocation(locationCode, true);
+                        locationCode.Clear();
+                        currentLocation = "";
+                    }
+                }
+                else
+                {
+                    if (inside && GetLastLocation() != null)
+                        locationCode.Add(s);
+                }
+                (sender as BackgroundWorker).ReportProgress(Convert.ToInt32(((double)line_counter/(double)totalLines) * 100));
+                if ((sender as BackgroundWorker).CancellationPending)
+                {
+                    e.Cancel = true;
+                    return true;
+                }
+            }
+            fi.Close();
+            return true;
+        }
+
+        public bool AddLocation(string name, int line)
+        {
+            if (name.Length <= 0)
+            {
+                SubmitError("Empty name of location", line);
+                return false;
+            }
+            if (m_LocationsByName.ContainsKey(name))
+            {
+                SubmitError("Location named " + name + " exist already", line);
+                return false;
+            }
+            Location newLoc = new Location(this, name, line, m_LocationsByOrder.Count == 0);
+            m_LocationsByName.Add(name, newLoc);
+            m_LocationsByOrder.Add(newLoc);
+            m_lastLocation = newLoc;
+            return true;
+        }
+
+        public Location GetLastLocation()
+        {
+            return m_lastLocation;
+        }
+
+        public Hashtable GetLocationsByName()
+        {
+            return m_LocationsByName;
+        }
+
+        public Location GetLocation(string locationName)
+        {
+            Location loc = (Location)m_LocationsByName[locationName];
+            return loc;
+        }
+
+        public bool Beautify(string fileName)
+        {
+            //Причесываем код - добавляем пробелов
+            StreamWriter fo = null;
+            if (!OpenStreamForWriting(ref fo, fileName))
+                return false;
+
+            for (int i = 0; i < m_LocationsByOrder.Count; i++)
+            {
+                Location loc = (Location)m_LocationsByOrder[i];
+                fo.WriteLine("# " + loc.GetName());
+                for (int j = 0; j < loc.GetCodeLinesCount(); j++)
+                {
+                    string text = "";
+                    int level = INVALID_INDEX;
+                    loc.GetCodeLine(j, ref text, ref level);
+                    if (level != INVALID_INDEX)
+                    {
+                        text = new string(' ', level * 4) + text.TrimStart(WhiteSpace);
+                    }
+                    fo.WriteLine(text);
+                }
+                fo.WriteLine("--- " + loc.GetName() + " ---------------------------------");
+                fo.WriteLine();
+            }
+            fo.Close();
+            return true;
+        }
+    }
+}

+ 141 - 0
Analyser/QSP_Analyser/QSP_Analyser.csproj

@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{0EB1C8F9-E5A2-4C13-8ED2-C1897332F197}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Analyser</RootNamespace>
+    <AssemblyName>QSP_Analyser</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <StartupObject>Analyser.Program</StartupObject>
+    <ManifestCertificateThumbprint>4BF816F664C87F6B56DA3F2582A6A8BDC305FB9C</ManifestCertificateThumbprint>
+    <ManifestKeyFile>QSP_Analyser_TemporaryKey.pfx</ManifestKeyFile>
+    <GenerateManifests>true</GenerateManifests>
+    <TargetZone>LocalIntranet</TargetZone>
+    <ApplicationManifest>Properties\app.manifest</ApplicationManifest>
+    <SignManifests>false</SignManifests>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <PublishUrl>C:\Site\QSP\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <PublishWizardCompleted>true</PublishWizardCompleted>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Common.cs" />
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="app.config" />
+    <None Include="Properties\app.manifest" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <Compile Include="QSPGameCode.cs" />
+    <Compile Include="Settings.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>Профиль клиента .NET Framework</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 16 - 0
Analyser/QSP_Analyser/QSP_Analyser.csproj.user

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <PublishUrlHistory>C:\Site\QSP\</PublishUrlHistory>
+    <InstallUrlHistory />
+    <SupportUrlHistory />
+    <UpdateUrlHistory />
+    <BootstrapperUrlHistory />
+    <ErrorReportUrlHistory />
+    <FallbackCulture>en-US</FallbackCulture>
+    <VerifyUploadedFiles>false</VerifyUploadedFiles>
+  </PropertyGroup>
+  <PropertyGroup>
+    <EnableSecurityDebugging>false</EnableSecurityDebugging>
+  </PropertyGroup>
+</Project>

+ 28 - 0
Analyser/QSP_Analyser/Settings.cs

@@ -0,0 +1,28 @@
+namespace Analyser.Properties {
+    
+    
+    // This class allows you to handle specific events on the settings class:
+    //  The SettingChanging event is raised before a setting's value is changed.
+    //  The PropertyChanged event is raised after a setting's value is changed.
+    //  The SettingsLoaded event is raised after the setting values are loaded.
+    //  The SettingsSaving event is raised before the setting values are saved.
+    internal sealed partial class Settings {
+        
+        public Settings() {
+            // // To add event handlers for saving and changing settings, uncomment the lines below:
+            //
+            // this.SettingChanging += this.SettingChangingEventHandler;
+            //
+            // this.SettingsSaving += this.SettingsSavingEventHandler;
+            //
+        }
+        
+        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
+            // Add code to handle the SettingChangingEvent event here.
+        }
+        
+        private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
+            // Add code to handle the SettingsSaving event here.
+        }
+    }
+}

+ 178 - 0
Analyser/QSP_Analyser/app.config

@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<configuration>
+	<configSections>
+		<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+			<section name="Analyser.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
+		</sectionGroup>
+	</configSections>
+	<startup/><userSettings>
+		<Analyser.Properties.Settings>
+			<setting name="filepath" serializeAs="String">
+				<value/>
+			</setting>
+			<setting name="EnableVariableCalls" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="VariableNames" serializeAs="String">
+				<value>$COUNTER
+$ONGLOAD
+$ONGSAVE
+$ONNEWLOC
+$ONACTSEL
+$ONOBJSEL
+$ONOBJADD
+$ONOBJDEL
+$USERCOM</value>
+			</setting>
+			<setting name="EnableSortingLocations" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="EnableSortingVariables" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="EnableSortingObjects" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="SystemVariables" serializeAs="String">
+				<value>FSIZE
+FCOLOR
+BCOLOR
+LCOLOR
+USEHTML
+$FNAME
+$BACKIMAGE
+NOSAVE
+DISABLESCROLL
+DISABLESUBEX
+DEBUG
+$COUNTER
+$ONGLOAD
+$ONGSAVE
+$ONNEWLOC
+$ONACTSEL
+$ONOBJSEL
+$ONOBJADD
+$ONOBJDEL
+$USERCOM
+ARGS
+$ARGS
+RESULT
+$RESULT</value>
+			</setting>
+			<setting name="EnableAero" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="AeroSystemVars" serializeAs="String">
+				<value>SCROLL_SPEED
+$UP_ARROW_IMAGE
+$DOWN_ARROW_IMAGE
+HIDE_SCROLL_ARROWS
+$STYLESHEET
+DISABLESHADE
+DISABLEAUTOREF
+$NEWLOC_EFFECT
+NEWLOC_EFFECT_TIME
+NEWLOC_EFFECT_SEQ
+$TOPIMAGE
+INTEGRATED_ACTIONS
+MAINDESC_X
+MAINDESC_Y
+MAINDESC_W
+MAINDESC_H
+$MAIN_FORMAT
+$MAINDESC_BACKIMAGE
+STATDESC_X
+STATDESC_Y
+STATDESC_W
+STATDESC_H
+$STAT_FORMAT
+$STATDESC_BACKIMAGE
+ACTIONS_X
+ACTIONS_Y
+ACTIONS_W
+ACTIONS_H
+$ACTION_FORMAT
+$SEL_ACTION_FORMAT
+$ACTIONS_BACKIMAGE
+OBJECTS_X
+OBJECTS_Y
+OBJECTS_W
+OBJECTS_H
+$OBJECT_FORMAT
+$SEL_OBJECT_FORMAT
+$OBJECTS_BACKIMAGE
+USERINPUT_X
+USERINPUT_Y
+USERINPUT_W
+USERINPUT_H
+VIEW_X
+VIEW_Y
+VIEW_W
+VIEW_H
+$VIEW_EFFECT
+VIEW_EFFECT_TIME
+ALWAYS_SHOW_VIEW
+$INPUT_BACKIMAGE
+INPUT_X
+INPUT_Y
+$INPUT_FORMAT
+INPUT_TEXT_X
+INPUT_TEXT_Y
+INPUT_TEXT_W
+INPUT_TEXT_H
+INPUT_BAR_X
+INPUT_BAR_Y
+INPUT_BAR_W
+INPUT_BAR_H
+$INPUT_OK_IMAGE
+INPUT_OK_X
+INPUT_OK_Y
+$INPUT_CANCEL_IMAGE
+INPUT_CANCEL_X
+INPUT_CANCEL_Y
+$INPUT_EFFECT
+INPUT_EFFECT_TIME
+$MSG_BACKIMAGE
+MSG_X
+MSG_Y
+$MSG_FORMAT
+MSG_TEXT_X
+MSG_TEXT_Y
+MSG_TEXT_W
+MSG_TEXT_H
+$MSG_OK_IMAGE
+MSG_OK_X
+MSG_OK_Y
+$MSG_EFFECT
+MSG_EFFECT_TIME
+FIXED_SIZE_MENU
+MENU_PADDING
+MENU_BORDER
+MENU_BORDER_COLOR
+$MENU_BACKIMAGE
+MENU_X
+MENU_Y
+$MENU_FORMAT
+$SEL_MENU_FORMAT
+MENU_LIST_X
+MENU_LIST_Y
+MENU_LIST_W
+MENU_LIST_H
+$MENU_EFFECT
+MENU_EFFECT_TIME</value>
+			</setting>
+			<setting name="EnableSortingActions" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="CsvTranslationSuffix" serializeAs="String">
+				<value>_tr</value>
+			</setting>
+			<setting name="IgnoreEmptyTranslationsCsv" serializeAs="String">
+				<value>True</value>
+			</setting>
+			<setting name="EnableCurlyParsing" serializeAs="String">
+				<value>True</value>
+			</setting>
+		</Analyser.Properties.Settings>
+	</userSettings>
+</configuration>

+ 347 - 0
Changelog.txt

@@ -0,0 +1,347 @@
+Version 0.341: (Savegames made in 0.3 - 0.34 are compatible)
+[added & changed] Prostitution content
+- Lowered the lump sums you have to pay Georgiy a bit (I recommend everybody to use the 'cheat' to adjust the payment themselves if it's too easy/harsh)
+- first anal event for the pavlovsk prostitution content
+
+[added] Cheats
+- Cheat for Pavlovsk and the gas station to reduce all willpower cost to 0
+- Cheat for adjusting the chance to meet a nice or more abusive client in pavlovsk
+
+[added & changed] Expelled from school
+- Getting expelled from school now unlocks the hotel room as well
+- You can get expelled for skipping school too often like in the base game and if your grades stay too low for a long period of time
+
+[changed & fixes]
+- If you finished the investigation or used the cheat to block all content, you can't increase your debt to pay for the hotel room. If you can't pay, the room isn''t accessible anymore
+
+[text edits] by EmperorsTitan
+
+Version 0.34: (Savegames made in 0.3 - 0.332 are compatible)
+[added] Content for Iosif
+- Added an anal alternative to the vaginal sex scene with him at the warehouse
+- Expanded Iosif pissing content with several scenes at the warehouse
+
+[added] Debt & Payments
+- You'll have to pay interest on your debt every week (5% - 15% depending on your loyalty)
+- You will have to earn at least 2,500 - 10,000 every week for Georgiy, when you're still in the 3-shift per week payment system. If you earn less, the rest will be added to your debt. It starts with 2,500 and is increased by 2,500 every week until Georgiy demands the full amount after a month.
+- Georgiy will demand more money (2,500), when he discovers that you're a model and/or porn actress. This only happens in the lump sum payment system.
+- Debt punishment changed to happen only once every two weeks to give you the chance to pay down your debt. Georgiy will also take all of your money to reduce your debt, when he punishes you for having to much debt
+
+[added] Gas station
+- Volya will demand that you wear makeup and will force you to buy some, when you don't have any.
+- If you use willpower to change a clients mind at the gas station, he will pay 10% less for every time you use willpower. If the negotiation is successful, you can spend willpower to convince him to give you the full amount, but there is a small chance that the negotiation will fail.
+- If you spend willpower to convince your client (condom, creampie, pay) and fail, you get a second chance to accept
+- 2/3 of all clients will pay a bit more if your visible age is below 18 and 1/3 will pay less
+
+[added] Content for the Mother
+- She can now catch you outside, when you're entering the courtyard (3-shift payment system only)
+- High prostitution fame and working the streets in pavlovsk results in your mother banning you from the apartment
+- Added a cheat to gain access to your parents apartment again, when your mother has thrown you out
+
+[added] Alternative home: Pavlovsk hotel
+- Available after your mother bans you from the apartment
+- Live in the pavlovsk hotel, which is owned by the Belys
+- Pay 3,500 per week or have your debt increased
+- Will be the center of future content as a place where people can visit you and where you can take clients
+
+[added] School
+- Loose reputation for all social groups and gain slut fame in pavlovsk, when you shower at school with your pubic tattoo
+
+[added] Willpower Recommendation
+- It's recommended to start the mod with at least 100 willpower
+- You'll be asked if you want to increase maximum willpower to 100 if you have less than that after reading the newspaper
+
+Version 0.332: (Savegames made in 0.3 - 0.331 are compatible)
+[added] Content for the gas station
+- Added an alternative automatic negotiation mode after having more than 10 clients
+- Set behavior for normal and regular clients
+- Set automatically accept/decline certain acts, condom use, internal cumshots
+- Willpower will be automatically reduced
+
+[added] Clinic/Doctor Mikhailov
+- Added getting birth control shots or implants from Doctor Mikhailov (pay cash or increase your debt)
+- Added Doctor Mikhailov to the investigation tab in the phone
+
+[added] Phone
+- Debug page for the most important variables (probably missed a lot and will be expanded in the next versions)
+- Fetishes can now be blocked in the phone
+
+[changed] Debt punishment
+- The amount of debt you can have before getting punished is now modified by your loyalty (100,000 + loyalty * 500)
+- The bad end for having to much debt also depends on your loyalty [(100,000 + loyalty * 500) * 2]
+
+[fixes] Several small and larger bugs squashed
+
+[text edit] By EmperorsTitan 
+
+Version 0.331: (Savegames made in 0.3 - 0.33 are compatible)
+[fixed] Problem with Sacha and old saves that blocks the new content in pavlovsk
+
+Version 0.33: (Savegames made in 0.3 - 0.323 are compatible)
+[added] Prison written by Akossi 
+- Go to prison (but not in the way you think)
+- First day added, several more are planned
+- Requirement: Sucked off Volya in the car and have worked several weeks
+
+[added] Content for Shura and Sacha
+- Go to a party with Shura and Sacha (Requirement: Sucked off Sacha and progressed far enough in the Shura story)
+- Discussion with Sacha about what happened at the party
+- Shura will comment on the new tattoo after you fucked him outside of the warehouse
+- You can now find Shura/Drugs in the investigation tab on the phone
+
+[added] Prostitution in Pavlovsk
+- Starts after the party with Sacha and Shura
+- 6 sets of videos, 10 scenes in total, nearly every scene has two types of descriptions for a nice and a more abusive client
+- Blowjobs and vaginal sex scenes, some play out in public
+- Start video is randomized (except for regular clients) to hide what scene will play afterwards
+- Abusive clients come with higher willpower cost
+- Abusive clients will sometimes take off condoms to cum inside you or ignore you, when you tell them to cum outside
+- Cumslut tattoo doubles the chance that some abusive clients cum inside you against your will
+- Condoms have a very small chance to break
+- If unlocked the events will continue even if the Belys are blocked either through the investigation or the cheat
+- Visible signs of an STD or visible cum on body/clothes prevent that clients approach you in pavlovsk
+- Action to tell a non-regular client in Pavlovsk that you aren't a whore to reduce prostitution fame
+
+When, where and how...
+- Only during the day
+- Residential, commercial, industrial, warehouse, park, community center, train station, parent apartment complex, old town
+- Number of possible clients per day: 2 + (prostitution fame in pavlovsk / 100)
+- Chance to find a client: 5% + 10% for prostitute outfit + 5% for slutty make-up + 0.1% * prostitute fame in pavlovsk
+- Every time you don't find a client the chance to find one is increased by 2% until you find one
+- Chance is capped at 40%
+- Only one check to find a client per hour
+
+Note on the willpower cost:
+Compared to the gas station willpower changes in the opposite way. At the gas station high acceptance means it get's easier to look for clients. Here high acceptance means it get's harder and harder to refuse clients.
+
+[added] New check-in with Georgiy
+- Requirement (1): All important car scenes with Volya (Okoro Brothers + Prison)
+- Requirement (2): (1,000 / prostitution fame in pavlovsk) < Number of clients in Pavlovsk
+- Pay a lump sum instead of weekly shifts
+- Amount you have to pay depends on the last weekly earning
+- Cheat to change the amount you have to pay (between 2.500 and infinity)
+- Not paying lowers loyalty and adds the amount you didn't pay to your debt with interest
+- Paying less than 50% or owing more than 100.000 triggers 'community service'
+- Owing more than 200.000 to the Belys triggers a bad end
+- You have to go to the gas station on your own if you want to work there (bus station at the St. Petersburg trains station)
+
+[added] Looking for customers in Pavlovsk
+- Requirement: Georgiy has changed your payment method
+- Icon appears during the day next to the phone, when you are dressed as a prostitute (outfit + heels) and are in one of the areas in which clients can approach you. Click on it to start searching for customers.
+- Actively looking for customers costs willpower
+- Bonus chance of 10%
+- Maximum chance increased from 40% to 60%
+
+[changed] Small stuff
+- The change in acceptance for doing a shift at the gas station now depends on how much you have earned
+- Increased the chance for your mother to see you leaving for work
+
+[text edit] more from EmperorsTitan
+
+Version 0.323: (Savegames made in 0.3 - 0.322 are compatible)
+[compatibility] You now can call Henri from the modded bedroom of BroMod
+
+Version 0.322: (Savegames made in 0.3 - 0.321 are compatible)
+[compatibility] The 'thoughts'-scenes in bed now appear in the modded bed of BroMod
+
+Version 0.321: (Savegames made in 0.3 - 0.32 are compatible)
+[text edit] for the clinic by EmperorsTitan
+[fixed] NPCs weren't set up correctly (Sveta now should be able to lose her virginity)
+
+Version 0.32: (Savegames made in 0.3 - 0.311 are compatible)
+[added] Content for Iosif
+- Iosif will take 2 (1 if you have blocked the pissing scene) humiliating pictures with your phone to expand your collection
+- If he finds the first degrading picture on your phone (from the start of the mod), he will at some point take you to St. Petersburg to get inked again (pubic area needs to be free of tats)
+- He will send you a picture as a memento from the party
+
+[added] Content for Mom
+- There is a small chance that your mother catches you, when you try to leave the apartment to go to work
+
+[added] Content for Maxim/End of the Bely's
+- Added repeatable event for him. He'll call you, when he wants to meet.
+- Increase his love for you to earn the first investigation point
+- For now the first investigation point is enough to get away from the Bely's (works exactly like the cheat below)
+
+[added] Cheat to block all content except the gas station
+- It works like a pause button and the normal mod can be restored from the stat window at any time
+- The homeless will still be accessible if unlocked 
+- You can still visit the gas station by traveling to the train station in the industrial area of St. Petersburg. You can take a bus outside the station that will take you to there.
+
+[added/changed] Small stuff
+- Investigation overview in the phone
+- Attending the party reduces the number of shifts you have to work that week by 1
+- If you activate auto lubrication in the purse, lube will be used at the highway (anal and/or vaginal)
+- You have to pay for your brand/tattoo
+- Increased the price for the fake passport by 10,000 to 18,000 since there is a new way to pay down debt
+- Bugfixes
+
+[text edits] by EmperorsTitan
+
+Version 0.311: (Savegames from 0.3 - 0.31 are compatible)
+[compatibility] The newspaper should now appear in the modded kitchen of BroMod
+
+Version 0.31: (Savegames from 0.3 are compatible)
+[added] Content for the party
+- Second party at Vadim's house. You need to have progressed far enough in the Iosif storyline that he calls you regularly (1 sex scene)
+- After the second party you get invited to a shorter repeatable version of the second party (the timer between partys is long)
+- If you miss the first party, you now get a second chance to go
+
+[added] Repeatable prostitution event in the warehouse (1 sex scene)
+
+[added] Small stuff
+- Talking about Iosif fucking Sveta again
+- You can visit Shura every tuesday in addition to sunday after meeting him twice on sunday (the progression of the shura and iosif storyline was too slow imho)
+- Thinking about getting weed from Sacha through other means
+- Talking with Volya about him using her in the attic scene
+- Volya hands you some lube with your whore starter-kit (but it's not usable yet, because Kevin is changing the lube system right now)
+
+[fixed] Police event not happening and that blocked a lot of other content as well
+
+Version 0.3: (Savegames are not compatible)
+[added] Content for the warehouse (All new events unlock at different stages of the mod)
+- One repeatable prostitution event (1 sex scene)
+- Pay your debts in an alternative fashion (1 sex scene with one big and several smaller variations)
+- Borrow money from Georgiy, interest (5% - 100%) and maximum amount (500 - 20.000) depend on your loyalty and how long you have worked for him (3 small sex scenes)
+- Meet Maxim a guy working for the Bely's
+- Introduction to Nikita the last unknown guy that appeared in the attic scene of the police aftermath
+
+[added] Content for the Okoro brothers
+- Ability to call and chat with Henri
+- Meet Lèon at the pavlovsk hotel (1 sex scene)
+
+[added] Content for the drug dealing side of the Belys business
+- Talking with Shura unlocks a weed dealer in the pavlovsk park
+- Visit the dealer in the park (after 22:00) to 'buy' some weed (1 sex scene)
+- Smoke weed in Volyas car in the evening (requirement: know about the weed dealer)
+- Smoking weed with Shura, Volya or at the gas station slowly increases the acceptance stat
+
+[added] Content for Volya (4 small scenes in the car)
+- Talking about your situation
+- Asking about Nikita
+- You can now change thee address where Volya picks you up/drops you off in the phone (Pavlovsk, St. Petersburg, Gadukino or Old Town)
+
+[changed] reworked the start of the mod to make it (hopefully) a little bit more threatening
+
+[added] Wearing a short enough skirt and panties (sexshop only) grants a small increase to your payment and chance to find clients at the gas station
+
+Version 0.25: (All savegames from 0.2 - 0.241 are compatible)
+[added] new sex act to the highway (can be blocked if that isn't something you want to see)
+- 7 small scenes + 2 scenes in bed in which sveta thinks about what happened in those scenes
+- Can occurs at the end of a blowjob, vaginal or anal scene with a normal (not a regular) client
+- The chance of it happening is 10% + 2% for every client that didn't ask for it
+
+Version 0.24:(Savegames made in 0.2 - 0.23 are compatible)
+[added] An event after meeting the french brothers that sheds a bit of light on Georgiy and Vadim
+[added] You can incur debts
+- You can pay debts, when you check in with Georgiy on Sunday
+- Your share of your income is reduced by 20 percentage to pay down your debts 
+[added] Bi-weekly medical examination
+- Treatment of STDs and provides abortion services
+- If you can't pay, you get into debt with the Bely's
+- Missing your medical exam can lead to community service
+- Bed/Thought event about the clinic
+[added] Repeatable 'community service' event with two small variations
+[added] Event to 'help' you to earn more money at the gas station
+[added] New Icons
+- Wearing suitable outfit for prostitution
+- Owing money to the Bely's
+- Having to go to the medical exam
+[changed] Updated the introduction
+- Improved the ui, when getting your first outfit/heels
+- You have to pay for your first outfit. If you can't pay, you incur debts with the Bely's
+[changed] Prostitution at the gas station
+- A shift now ends, when you don't have enough willpower to look for a client
+- Added the possibility to the phone to end a shift early
+- Added a pity counter to prevent finding no client for a long time
+- Increased base pay at the gas station a bit
+- Tongue piercing now always increases payout a little bit for blowjobs (bonus varies by piercing)
+- Removed free condoms from Volya (there is a condom dispenser next to the public bathrooms at the gas station)
+- Failing to earn enough money can lead to community service
+[changed] You have to pay for your fake passport (not the full amount)
+[changed] Georgiy will inform you why you get punished
+[changed] The cheat 'number of forced shifts' doesn't delay or rush the progression of the mod anymore
+
+Version 0.23: (Savegames from 0.22 and older are compatible)
+[changed] Reworked the progression in the 'community service' events.
+- Reworked two old scenes after the first 'community service' and additional scenes that aren't triggered through getting punished, but happen after some time
+- Added more decisions to collect 'bad girl' and 'good girl' points after the first 'community service'
+- Added a few 'bad girl' and 'good girl' points to old decisions
+- Old saves get the points they missed rewarded retroactively, when they load the new version.
+- The 'community service' quest gets reseted in old saves to the point right after doing your first 'community service'
+- After you have taken all decisions you get one of three outcomes that decides how you will react to doing more 'community service'
+[changed] Redone the phone icons (thanks akossi)
+[fixed] Georgiy can't be ignored anymore, when you never start working
+[fixed] Getting punished all the time
+[fixed] The correct phone icon will be displayed if the game is set to the 'pitch black' theme
+
+Version 0.22:
+[added] Punishment System 
+- Get punished for skipping work, ignoring Iosif, low loyalty, missing important events, ...
+- First type of punishment 'community service' with an introduction, a one-time event and one repeatable event (at least one more will follow in the next version)
+[added] new repeatable event with Volya that can either happen on its own or as an extension of another repeatable event (there are two sets of pictures each with a random chance for a small unique ending to the scene)
+[changed] replaced the link in the stat window to open the phone with two icons and added a small explanation how the new phone icons work at the end of the first phone call with Volya
+[changed] You can only increase your share of your earnings to 40% (down from a maximum of 60%)
+
+Version 0.21:
+[added] One new big event after the current end of the main story.
+[added] Small event at the warehouse that gives a bit of background of what the gang is doing and how the guys think about you
+[added] A requirement to wear heels when working a shift. You can choose your first pair when you choose your first outfit or get a random one if you load an old save. You can check your phone if you're unsure if your high heels match the requirement (A hooker without heels is an atrocity that had to be fixed)
+[added] Cheat to the phone to set the number of shifts you are forced to work (between 1 and 6)
+[added] Cheat to the phone to change the first name of the fake passport
+[changed] Forced the second outcome of Iosif's repeatable event to appear the second time he calls you
+[fixed] Orgasms displaying standard text instead of custom ones in many scenes
+[fixed/text edit] Small stuff (A special thanks goes to Deroc for proofreading part of the mod)
+
+Version 0.2:
+[added] New events with Shura and Iosif two of Georgiy Bely's lieutenants, you can meet Shura outside the warehouse on Sunday
+[added] Expanded Volyas content in the car
+[added] All three characters have one or two repeatable sex events at the current end of their content
+[added] One event for the main story after the event in the attic
+[added] Hidden 'Acceptance' stat that tracks how comfortable you have become with your new line of work
+	- Working a shift at the gas station increases acceptance
+	- Several small events in which you thinks about your situation to increase/decrease acceptance 
+	- Dialog choices in old and new events can change acceptance as well
+[added] Integrated the new willpower system 
+	- Whoring at the gas station costs a lot of willpower at the beginning
+	- The cost goes down with every client you serve and with higher acceptance 
+	- Willpower costs for working additional shifts is a lot higher than for shifts you are forced to do. This allows for a more realistic transition from a good girl to a total whore
+
+Fixes and small changes:
+[added] Cum cleanup at the end of the shift if Volya arrives in an inconvenient time
+[added] You can smoke a joint behind the outdoor restroom at the gas station
+[changed] Whoring yourself out at the gas station now has a negative/positive effect on her mood. The size of the effect depends on your acceptance of the situation and if you're serving a normal or regular client
+[changed] A happy/depressed Sveta can earn up to +50/-50 (Blowjob: +25/-25) more/less when working at the gas station
+[changed] Cut working hours from 16:00 - 23:00 to 17:00 - 22:30 to allow more after school content like doing homework with somebody
+[changed] Renamed Tolya to Nikita (it was to similar to Volya)
+[fixed/changed] Small fixes and changes everywhere
+
+Version 0.12:
+[changed] reduced the chance by 50% to meet a client that cums inside you even if he didn't pay for that
+[changed] increased the average amount you have to earn to be a good whore in Georgiys eyes
+[changed] reduced fame gains by an additional 33%
+[changed] the volume of the sound of the cars at the gas station now changes if you are inside the shop, car or restroom and I reduced the volume in all locations
+[fixed] Two problems with regular clients that made it nearly impossible to meet them
+[fixed] not kissing/kissing a regular client displayed the wrong video
+[fixed] missing sex stat gains at the gas station 
+[fixed] wrong text displayed when getting a creampie at the gas station
+[fixed] broken video in the image/video pack
+[text edits] small corrections everywhere
+
+Version 0.11:
+[added] two new story events, the first one starts randomly after you have worked for some time at the gas station and the second follows afterwards
+[added] You can now start the mod manually during the day. A link appears at the bottom of the stat window when you are in one of pavlovsks streets and don't want to wait for the random event to trigger.
+[changed] you can now lose your virginity to Volya even if you already have worked at the gas station but haven't lost your (anal) virginity. Also, added a note that informs you if there isn't any additional content
+[changed] balanced/lowered gaining fame at the gas station
+[changed] Volya gives you some tissues (20) during your first day at work
+[fixed] Dead end when you try to buy wipes
+[fixed] Dead end when working for several weeks at the highway
+[fixed] Missing performance description in the phone menu
+[fixed] Owning all prostitution outfits doesn't crash the game anymore during the start event
+[fixed] never getting a raise from Georgiy
+[fixed] driving home with Volya took no time after the first day
+[fixed] Wrong variable that resulted in text being blocked or the wrong text to be displayed at the gas station if a client cums inside even if that was prohibited
+
+Version 0.1:
+[added] Meeting the gang, introduction to the new job and repeatable prostitution events
+
+

+ 102 - 0
MakeQSP.bat

@@ -0,0 +1,102 @@
+@ECHO off
+
+:: Set those lines to fit your setup. 
+:: This is where wlife.qsp will be copied. If you don't want to move it just comment (::) the line below.
+:: set CP_TO=..\GL_ECV
+
+:: This is the program used to open the QSPFILE. If you comment this line windows will launch the default app for the ".qsp" extension.
+set QSPGUI=QSP\Player-video\qspgui.exe
+set QGEN=QSP\QGen5\QGen.exe
+
+:: The file that will be generated or open
+set QSPFILE=wlife.qsp
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+:menu
+cls
+echo.
+echo :: QSP Compiler and Launcher
+echo.
+
+if defined QGEN (
+	if not exist "%QGEN%" ( 
+		echo QGEN     : [ERROR] - %QGEN%  not found. Using DEFAULT application.
+		set QGEN=
+	) else ( echo QGEN     : [OK] - "%QGEN%")
+) else echo QGEN     : [NOT DEFINED] - Using DEFAULT application.
+
+if defined QSPGUI (
+	if not exist "%QSPGUI%" ( 
+		echo QSP EXEC : [ERROR] - %QSPGUI% not found.
+		set QSPGUI=
+	) else ( echo QSP EXEC : [OK] - "%QSPGUI%")
+) else ( echo QSP EXEC : [NOT DEFINED] - Using Windows DEFAULT.)
+
+if defined QSPFILE (
+	if not exist "%QSPFILE%" ( 
+		echo QSP FILE : [WARNING] - %QSPFILE% not found.
+	) else ( echo QSP FILE : [OK] - "%QSPFILE%")
+) else ( echo QSP FILE : [NOT DEFINED] - ERROR: CAN'T CONTINUE.)
+
+if defined CP_TO (
+	if not exist "%CP_TO%" (
+		echo COPY     : [ERROR] - Destination "%CP_TO%" not found. Copy DISABLED.
+		set CP_TO=
+	) else ( echo COPY     : [OK] - "%CP_TO%")
+) else (  echo COPY     : [DISABLED] )
+
+echo.
+
+if defined NOT_FOUND (
+	echo ERROR: Option '%action%' wasn't recognized. Is it lowercase? 
+	set NOT_FOUND=
+)
+
+echo.
+echo ACTIONS: (B)uild  (R)un  (F)ull  (Q)Gen  (E)xit
+echo.
+set /p action=Choose an action:
+
+if defined QSPFILE (
+	if %action% == b goto build
+	if %action% == r goto run
+	if %action% == f goto build
+	if %action% == q goto qgen
+)
+
+if %action% == e goto exit
+
+set NOT_FOUND=1
+goto menu
+
+:build
+echo.
+echo Building ...
+
+@ECHO ON
+python txtmerge.py locations wlife.txt
+txt2gam.exe wlife.txt %QSPFILE% > nul
+@ECHO OFF
+
+echo.
+if defined CP_TO ( echo Copying %QSPFILE% to "%CP_TO%" ... & copy %QSPFILE% %CP_TO% > nul )
+
+echo.
+echo Done.
+pause
+if %action% == f ( goto run ) else ( goto menu )
+
+:qgen
+echo.
+echo Running ...
+if defined CP_TO ( start %QGEN% %CP_TO%\%QSPFILE% ) else ( start %QGEN% %QSPFILE% )
+goto exit
+
+:run
+echo.
+echo Running ...
+
+if defined CP_TO ( start %QSPGUI% %CP_TO%\%QSPFILE% ) else ( start %QSPGUI% %QSPFILE% )
+
+:exit

+ 28 - 0
build.sh

@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+set -x
+
+# Set those lines to fit your setup.
+# This is where glife.qsp will be copied. If you don't want to move it just comment (#) the line below.
+#DESTDIR=../GL_ECV
+
+# The file that will be generated or open
+QSPFILE=glife.qsp
+
+#######################################################################
+
+./txtmerge.py locations glife.txt
+if [[ "$OSTYPE" == "linux-gnu" ]]; then
+	./txt2gam.linux glife.txt "${QSPFILE}" 1> /dev/null
+elif [[ "$OSTYPE" == "darwin"* ]]; then
+	./txt2gam.mac glife.txt "${QSPFILE}" 1> /dev/null
+elif [[ "$OSTYPE" == "msys" ]]; then
+	if [[ "$MSYSTEM_CARCH" == "x86_64" ]]; then
+		./txt2gam64.exe glife.txt "${QSPFILE}" 1> /dev/null
+	else
+		./txt2gam.exe glife.txt "${QSPFILE}" 1> /dev/null
+	fi
+fi
+if [ -d "${DESTDIR}" ]; then
+	cp --reflink=auto "${QSPFILE}" "${DESTDIR}"
+fi
+

+ 391 - 0
locations/mod_wlife.qsrc

@@ -0,0 +1,391 @@
+# mod_wlife
+
+!!Save Update
+gs 'mod_wlife_saveupdater', 'check'
+
+if week = 1 and wl_timer['week_check'] ! daystart:
+	wl_timer['week'] += 1
+	wl_timer['week_check'] = daystart
+	
+	if wl_status['hotel'] = 1 and wl_status['hotel_bill'] > 0:
+		if karta > wl_status['hotel_bill']:
+			karta -= wl_status['hotel_bill']
+			'<br> <<wl_status[''hotel_bill'']>> <b>₽</b> was automatically debited from your bank account to pay your hotel bill.'	
+			hotelroom1day += 7
+		elseif wl_status['hotel_bill'] > 0 and wl_status['main'] > -1:
+			wl_debt['amount'] += wl_status['hotel_bill']
+			hotelroom1day += 7
+			'<br> <<wl_status[''hotel_bill'']>> <b>₽</b> was added to your debt to pay your hotel bill.'
+		end
+		wl_status['hotel_bill'] = 3500	
+	end
+end
+
+!!Condoms
+wl_status['condoms'] = prezik + prezikcount
+
+!!Location Checks
+if wl_status['hotel'] = 1 and $loc = 'HotelRoom': 
+	gt 'mod_wlife_hotelroom', 'room'
+elseif $curloc = 'gschool_lessons4' and $ARGS[0] = 'shower2' and $wl_brand['text_pubic'] ! '':
+	gs 'mod_wlife_misc', 'school_shower'
+end
+	
+if wl_status['main'] = -1:
+	if $loc = 'nordtrain' and $menu_loc = 'nordtrain' and $metka = 'outside' and $menu_arg = 'outside' and menu_off = 0:
+		'<br>You can take a bus at the local terminal to the '+iif(money < 75, 'gas station', '<a href="exec: minut += 35 & money -= 75 & gt ''mod_wlife_highway'', ''outside''">gas station</a>')+' near the highway between St. Petersburg and Moscow. The bus ride and a short walk to the gas station will take 35 minutes and cost 75 <b>₽</b>.'+iif(money < 75, ' You don''t have enough money.', '')
+	elseif $loc = 'nordtrain' and $menu_loc = 'nordtrain' and $metka = 'outside' and $menu_arg = 'outside' and menu_off = 0 and (PCloStyle ! 4 or ShoHeels < 4):
+		'<br>You could take the bus to the gas station, but you need to wear high heels and appropriate clothing to work there.'
+	elseif wl_homeless['status'] > 0 and $loc = 'pav_industrial' and $menu_loc = 'pav_industrial' and $menu_arg = '' and $ARGS[0] = '' and menu_off = 0:
+		'<br>Go to the <a href="exec: minut += 8 & gt ''mod_wlife_warehouse'', ''homeless_outside''">homeless</a>.'
+	end
+	
+	if wl_sacha['status'] > 3 and wl_whore['pav_timer_hour'] ! hour and rand(-20,70) < minut and $curloc ! 'mod_wlife_solicitation' and $curloc ! 'shop' and menu_off = 0 and $loc = $curloc: gs 'mod_wlife_solicitation', 'chance'
+	
+	pl '<br><center><img height = 60 src="mod/wlife/images/objects/banner.png"></center>'
+	pl 'To restore ''Whore Life'' <a href="exec: wl_status[''main''] = wl_status[''stored''] & clr & gs ''stat''">click here</a>.'	
+	
+	if wl_georgiy['payment_method'] = 1 and PCloStyle = 4 and ShoHeels > 3 and (($metka = 'street' and $loc = 'mod_wlife_warehouse') or ($metka = '' and ($loc = 'gdk' or $loc = 'pav_residential' or $loc = 'pav_industrial' or $loc = 'pav_commercial' or $loc = 'pavtrain' or $loc = 'liam')) or ($metka = 'start' and ($loc = 'pav_complex' or $loc = 'pav_park'))) and hour > 6 and hour < 23 and $curloc ! 'shop' and menu_off = 0 and $loc = $curloc:
+		pl '<center><a href="exec: gt ''mod_wlife_solicitation'', ''search''"><img title="Click to start working in Pavlovsk." height = 80 src="mod/wlife/images/objects/prostitute.png"></a></center>'
+	end 
+	
+elseif wl_status['main'] > -1:
+	!!Street Events
+	if wl_status['main'] = 0 and $loc = 'pav_residential' and $menu_loc = 'pav_residential' and $menu_arg = '' and $ARGS[0] = '' and menu_off = 0 and wl_timer['main'] < daystart and hour > 6 and hour < 20:
+		if wl_status['start'] = 1:
+			gt 'mod_wlife_story', 'start_1'
+		elseif wl_status['start'] = 2:
+			gt 'mod_wlife_story', 'start_2'
+		elseif wl_status['start'] = 3:
+			gt 'mod_wlife_story', 'start_3'
+		elseif wl_status['start'] = 4 and week < 7:
+			gt 'mod_wlife_story', 'start_4'
+		end
+	elseif wl_status['main'] > 8 and wl_iosif['tattoo'] = 1 and tatvag = 0 and $loc = 'pav_residential' and $menu_loc = 'pav_residential' and $menu_arg = '' and $metka = '' and menu_off = 0 and (((hour = 7 or hour = 8) and kanukuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0 and week < 6) or (hour > 6 and (SchoolBlock > 0 or SchoolAtestat > 0))):
+		gt 'mod_wlife_tattoo_piercing', 'tattoo_0'
+	elseif wl_status['main'] > 0 and (($loc = 'pav_residential' and $menu_loc = 'pav_residential') or ($loc = 'pav_commercial' and $menu_loc = 'pav_commercial') or ($loc = 'pav_industrial' and $menu_loc = 'pav_industrial')) and $menu_arg = '' and $ARGS[0] = '' and menu_off = 0:
+		if wl_status['main'] = 6 and wl_police['timer'] < daystart and hour > 6 and hour < 19 and week ! 7:
+			gt 'mod_wlife_story', 'police_aftermath'
+		elseif ((wl_georgiy['timer_day'] ! 0 and (wl_georgiy['timer_day'] + 7) < daystart) or (wl_georgiy['timer_day'] = 0 and wl_status['main'] = 5 and (wl_timer['main'] + 6) < daystart)) and hour > 6 and hour < 23: 
+			gt 'mod_wlife_georgiy', 'check_in'
+		elseif wl_homeless['video_count'] > 0 and wl_adrian['status'] = 1 and wl_adrian['timer'] < daystart and hour > 14 and hour < 20 and sunWeather > 0: 
+			gt 'mod_wlife_punishment', 'adrian_first_0'
+		elseif wl_adrian['status'] = 2 and wl_adrian['timer'] < daystart and hour > 14 and hour < 20 and sunWeather > 0:
+			gt 'mod_wlife_punishment', 'adrian_second_0'
+		end
+	end
+
+	if wl_status['main'] > 9 and wl_whore['pav_timer_hour'] ! hour and rand(-20,70) < minut and $curloc ! 'mod_wlife_solicitation' and $curloc ! 'shop' and menu_off = 0 and $loc = $curloc: gs 'mod_wlife_solicitation', 'chance'
+	
+	!!Clinic
+	if wl_medical['timer_week'] = 2 and week = 1:
+		wl_medical['timer_week'] = 1
+		wl_medical['timer_day'] = daystart
+	elseif wl_medical['timer_week'] = 1 and week = 1 and wl_medical['timer_day'] ! daystart:
+		wl_medical['timer_week'] = 0
+	elseif week > 1 and week < 7 and $loc = 'pav_clinic' and $menu_arg = '' and menu_off = 0: 
+		if wl_medical['status'] = 1:
+			act 'Visit Doctor Mikhailov': gt 'mod_wlife_clinic', 'first_visit'		
+		elseif wl_medical['status'] > 1 and wl_medical['timer_week'] = 0: 
+			act 'Go to your bi-weekly medical examination': wl_temp = 0 & gt 'mod_wlife_clinic', 'check'
+		elseif wl_medical['status'] > 1 and (pcs_apprnc = -10 or cumcondslip > 0 or (thinkpreg = 1 and knowpreg = 0 and preg = 1)):
+			act 'Visit Doctor Mikhailov': wl_temp = 1 & gt 'mod_wlife_clinic', 'check'
+		end
+		if wl_medical['status'] > 1:
+			if knowpreg = 1 and preg = 1 and pregchem < 1863: act 'Get an abortion': wl_temp = 2 & gt 'mod_wlife_clinic', 'abortion'
+			if SchoolAtestat = 0 and Gspravka < 3 and motherKnowSpravka = 0: act 'Ask Doctor Mikhailov for a referral': wl_temp = 3 & gt 'mod_wlife_clinic', 'check'
+		end
+	end
+		
+	!!Locations
+	if menu_off = 0 and $loc = 'pav_complex' and $metka = 'start' and $menu_arg ! 'garages' and wl_volya['apartment'] = 1: 
+		if (wl_status['main'] < 9 and $wl_virgin = 'asked' and (pcs_vag = 0 or anal = 0)) or (((hour = 18 and minut >= 30) or hour = 19) and wl_demand['party'] = 1 and wl_georgiy['timer_week'] = week):
+			'<br>The apartment where <a href="exec: minut += 2 & gt ''mod_wlife_volya'', ''apartment_entrance''">Volya</a> lives is nearby.'
+			act 'Visit Volya': minut += 2 & gt 'mod_wlife_volya', 'apartment_entrance'
+		elseif $curloc ! 'mod_wlife_solicitation' and menu_off = 0:
+			'<br>You don''t have a reason to visit Volya right now.'
+		end
+	elseif $loc = 'pav_industrial' and $menu_loc = 'pav_industrial' and $menu_arg = '' and $ARGS[0] = '' and menu_off = 0 and wl_status['main'] > 4: 
+		'<br>A street leads to Vadim Bely''s <a href="exec: minut += 5 & gt ''mod_wlife_warehouse'', ''street''">warehouse</a>.'
+	elseif $loc = 'pav_park' and $menu_loc = 'pav_park' and $menu_arg = 'start' and $metka = 'start' and menu_off = 0 and wl_drugs['status'] > 0 and hour > 21:
+		'<br>'+iif(wl_drugs['status'] = 1, 'A young man', 'Sacha')+' is selling <a href="exec: minut += 2 & gt ''mod_wlife_sacha'', ''park''">weed</a> for Shura near one of the gates.'
+	elseif $curloc = 'shop' and $shoplocation = 'main' and hour > 7 and hour < 21: 
+		if wl_status['usb'] = 1: gs 'mod_wlife_misc', 'usb_drive'
+		if wl_status['hotel'] = 1 and wl_status['coffee_maker'] = 1: 
+			gs 'mod_wlife_misc', 'coffee_maker'
+		elseif wl_status['coffee_maker'] = 2:
+			gs 'mod_wlife_misc', 'coffee'
+		end
+	elseif ($curloc = 'Komp' or $curloc = 'komp') and wl_investigation['maxim'] = 4 and $ARGS[0] = 'start' and $loc ! 'shulga_room' and $loc ! 'anushapt' and $loc ! 'artemhome':
+		gs 'mod_wlife_misc', 'komp_maxim'
+	elseif $loc = 'nordtrain' and $menu_loc = 'nordtrain' and $metka = 'outside' and $menu_arg = 'outside' and menu_off = 0 and wl_georgiy['payment_method'] = 1 and PCloStyle = 4 and ShoHeels > 3:
+		'<br>You can take a bus at the local terminal to the '+iif(money < 75, 'gas station', '<a href="exec: minut += 35 & money -= 75 & gt ''mod_wlife_highway'', ''outside''">gas station</a>')+' near the highway between St. Petersburg and Moscow. The bus ride and a short walk to the gas station will take 35 minutes and cost 75 <b>₽</b>.'+iif(money < 75, ' You don''t have enough money.', '')
+	elseif $loc = 'nordtrain' and $menu_loc = 'nordtrain' and $metka = 'outside' and $menu_arg = 'outside' and menu_off = 0 and wl_georgiy['payment_method'] = 1 and (PCloStyle ! 4 or ShoHeels < 4):
+		'<br>You could take the bus to the gas station, but you need to wear high heels and appropriate clothing to work there.'
+	end
+
+	!!Location Checks	
+	if menu_off = 0 and $loc = $wl_loc[0] and $metka = $wl_loc[1] and $menu_arg ! 'garages':
+		if wl_status['main'] >= 5 and wl_whore['shifts_message'] = 1 and wl_whore['pirsA'] = 0:
+			if hour = 16 and PCloStyle = 4 and ShoHeels > 3: 
+!!ToDo: Activate if done if wl_party['status'] > 1 and wl_vadim['timer'] < daystart: gt 'mod_wlife_vadim', 'pick_up'
+				'Volya is waiting for you in his <a href="exec: minut += 1 & gt ''mod_wlife_volya'', ''shift_start''">car</a>.'
+			elseif hour = 16 and (PCloStyle ! 4 or ShoHeels < 4):
+				'Volya is waiting for you in his car, but you have to wear an appropriate outfit and heels.'
+			elseif hour < 16:
+				'Volya will pick you up between 16:00 and 17:00. You''ll have to wear an appropriate outfit and heels.'
+			end
+		elseif wl_status['main'] >= 5 and wl_whore['shifts_message'] = 1 and wl_whore['pirsA'] > 0:
+			if hour = 16 and PCloStyle = 4 and ShoHeels > 3 and pirsA < 10000: 
+				'Volya is waiting for you in his <a href="exec: minut += 1 & gt ''mod_wlife_volya'', ''shift_start''">car</a>.'
+			elseif hour = 16 and (PCloStyle ! 4 or ShoHeels < 4 or pirsA = 10000):
+				'Volya is waiting for you in his car, but you have to wear an appropriate outfit, heels and your tongue piercing.'
+			elseif hour < 16:
+				'Volya will pick you up between 16:00 and 17:00. You''ll have to wear an appropriate outfit, heels and your tongue piercing.'
+			end
+		end
+	elseif (($menu_loc = 'HotelHole' and $menu_arg = '') or ($loc = 'mod_wlife_hotelroom' and $metka = 'room')) and menu_off = 0:
+		if wl_okoro['week'] = week and hour < 22: 
+			'<br>Léon will be back in his hotel room at 22:00.'
+		elseif wl_okoro['week'] = week and hour > 21: 
+			act 'Go to Léon''s room': minut += 3 & gt 'mod_wlife_okoro', 'leon_hotel'
+		end
+		if wl_maxim['week'] = week and hour < 21: 
+			'<br>Maxim will be back in his hotel room at 21:00.'
+		elseif wl_maxim['week'] = week and hour > 20: 
+			act 'Go to Maxim''s room': minut += 3 & gt 'mod_wlife_maxim', 'start'
+		end	
+	elseif ($loc = 'koorpar' or $loc = 'mod_BroMod_korrPar' or $loc = 'korr' or $loc = 'korr2x') and wl_status['school_grades'] > 10 and wl_status['school_grades_warning'] = 0 and menu_off = 0:	
+	elseif ($loc = 'korrPar' or $loc = 'mod_BroMod_korrPar') and wl_mother['knows'] = 1 and wl_status['hotel'] = 0:
+		gt 'mod_wlife_mother', 'mother_knows'
+	elseif ($loc = 'korrPar' or $loc = 'mod_BroMod_korrPar') and wl_status['school_expelled'] = 1 and wl_status['hotel'] = 0:
+		gt 'mod_wlife_mother', 'mother_school'
+	elseif ((wl_mother['clothes_timer_inside'] ! daystart and ($loc = 'korrPar' or $loc = 'mod_BroMod_korrPar') and $metka = '' and hour = 16 and minut < 45 and mother_go = 0) or (wl_mother['clothes_timer_outside'] ! daystart and $loc = 'pav_complex' and $metka = 'start' and ((hour = 15 and minut > 30 and mother_go = 0) or (hour = 16 and minut > 30 and mother_go = 1)))) and menu_off = 0 and wl_whore['shifts_message'] = 1 and indorf = 0 and week < 7 and PCloStyle = 4 and wl_mother['acceptance_clothes'] < 2 and wl_mother['clothes_timer'] ! daystart:
+		if $loc = 'pav_complex':
+			wl_mother['clothes_timer_outside'] = daystart
+		else
+			wl_mother['clothes_timer_inside'] = daystart
+		end
+		if rand(1,100) > (90 - wl_mother['clothes_chance']): 
+			wl_mother['clothes_chance'] = 0
+			gt 'mod_wlife_mother', 'mother_shift_start'
+		else
+			wl_mother['clothes_chance'] += rand(3,6)
+		end
+	elseif wl_status['main'] > 8 and wl_iosif['tattoo'] = 1 and tatvag = 0 and $loc = 'pav_residential' and $menu_loc = 'pav_residential' and $menu_arg = '' and $metka = '' and menu_off = 0 and (((hour = 7 or hour = 8) and kanukuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0 and week < 6) or (hour > 6 and (SchoolBlock > 0 or SchoolAtestat > 0))):
+		gt 'mod_wlife_tattoo_piercing', 'tattoo_0'
+	end
+
+	!!Checks:
+	if wl_prison['status'] = 1 and wl_prison['shift'] = 0 and week = 7 and hour < 20 and wl_bad['prison'] = 0:
+!!ToDo: This prison variable has to updated if more prison days are done		
+		wl_bad['prison'] = 1
+	elseif wl_status['main'] >= 5 and wl_whore['shifts_message'] = 1 and hour > 16 and menu_off = 0:
+		gt 'mod_wlife_phone', 'volya_missed'
+	end
+
+	!!Story & Phone/Menu
+	if wl_status['start'] = 0 and wl_status['main'] = 0 and storyline = 1:
+		pl '<br><center><img height = 60 src="mod/wlife/images/objects/banner.png"></center>'
+		if pcs_inhib > 10:
+			pl 'To start ''Whore Life'' read the newspaper on your parents kitchen table.'	
+			if ($loc = 'kuhrPar' or $loc = 'mod_BroMod_kuhrPar') and menu_off = 0: '<br>On the kitchen table lies the <a href="exec: gt ''mod_wlife_story'', ''start_0''">current edition</a> of the local newspaper.'
+		else
+			pl 'Your inhibition is too high at the moment for the mod to start ''Whore Life'', it needs to be below 90.'
+		end	
+	elseif wl_status['start'] > 0 and wl_status['main'] = 0:
+		pl '<br><center><img height = 60 src="mod/wlife/images/objects/banner.png"></center>'
+		pl 'Continue with your life in Pavlovsk...'
+	elseif wl_status['main'] = 2 and hour > 7 and wl_timer['main'] ! daystart and rand(0,2) = 1 and menu_off = 0: 
+		gt 'mod_wlife_phone', 'start_aftermath_picture'
+	elseif wl_status['main'] = 3 and hour > 14 and hour < 23 and wl_timer['main'] ! daystart and rand(0,2) = 1 and menu_off = 0:
+		wl_timer['main'] = daystart
+		gt 'mod_wlife_phone', 'start_aftermath_volya'
+	elseif wl_status['main'] = 2 or wl_status['main'] = 3:
+		pl '<br><center><img height = 60 src="mod/wlife/images/objects/banner.png"></center>'
+		pl 'Wait for Volya to call you.'
+	elseif wl_status['main'] = 4 and week = 1 and wl_timer['main'] ! daystart:
+		wl_timer['startday'] = daystart
+		wl_timer['main'] = daystart
+		wl_status['main'] = 5
+	elseif wl_status['main'] = 4 and (week ! 1 or (wl_timer['main'] = daystart and week = 1)):
+		pl '<br><center><img height = 60 src="mod/wlife/images/objects/banner.png"></center>'
+		pl 'Your new life as a whore will begin '+iif(week = 7, 'tomorrow.', 'next monday.')	
+	elseif wl_thought['homeless'] = 1 and wl_homeless['video_count'] = 0 and wl_homeless['timer'] ! daystart and hour > 14 and menu_off = 0:
+		gt 'mod_wlife_phone', 'homeless_aftermath'
+	elseif wl_okoro['week'] = week and wl_okoro['timer'] ! daystart and InSleep = 0 and menu_off = 0:
+		gt 'mod_wlife_phone', 'leon_reminder'
+	elseif $wl_brand['type'] ! '' and wl_brand['timer'] < daystart and wl_passport_pay = 0 and hour > 14 and menu_off = 0:
+		gt 'mod_wlife_phone', 'passport_pay'
+	elseif wl_status['main'] >= 5 and $curloc ! 'mod_wlife_phone' and $curloc ! 'phone_selfies':
+		pl '<br><center><img height = 60 src="mod/wlife/images/objects/banner.png"></center>'
+		if week < 7 and wl_georgiy['payment_method'] = 1:
+			pl 'You have to pay Georgiy <<wl_georgiy[''lump_sum'']>> <b>₽</b> every Sunday.'
+		elseif week < 7 and wl_georgiy['payment_method'] = 0:
+			pl 'You have to work <<wl_whore[''shifts_week'']>> shifts for Mr. Bely and have worked <<wl_whore[''shifts_done'']>> this week.'+iif(wl_whore['shifts_message'] = 0, ' If you want to work at the gas station, you have to send Volya a message before 16:00.', iif(hour < 17, '<br>Volya will pick you up in <<$wl_loc[2]>> between 16:00 and 17:00.', ''))			
+		elseif week = 7 and wl_georgiy['timer_day'] ! daystart:
+			pl 'You have to report to Georgiy after 20:00 at the warehouse. You '+iif(wl_georgiy['payment_method'] = 0, iif(wl_whore['shifts_done'] < wl_whore['shifts_week'], 'haven''t', 'have')+' fulfilled this weeks obligation.', 'have to pay him <<wl_georgiy[''lump_sum'']>> <b>₽</b>.')
+		elseif week = 7 and wl_georgiy['timer_day'] = daystart and wl_georgiy['payment_method'] = 0:	
+			pl 'You have reported to Georgiy. Next week you have to work <<wl_whore[''shifts_week'']>> shifts.'
+		end
+		
+		if wl_georgiy['timer_week'] > week and wl_demand['party'] = 1:
+			pl 'You have to go to the party at Vadim Bely''s house next Saturday.'
+		elseif wl_georgiy['timer_week'] = week and wl_demand['party'] = 1 and wl_party_warning_day ! daystart and hour > 12 and hour < 19 and menu_off = 0:
+			gt 'mod_wlife_phone', 'volya_party_warning'
+		elseif wl_georgiy['timer_week'] = week and wl_demand['party'] = 1:
+			pl '<font color="red">You have to go to Volya''s apartment today (19:00) to get ready for the party at Vadim Bely''s house</font>.'
+		end
+		
+		$wl_status_msg = '<br><center><table><tr>'
+			
+		if menu_off = 0:
+			$wl_status_msg += '<td><a href="exec: minut += 1 & gt ''mod_wlife_phone'', ''start''"><img title="Click to open up the phone/menu of the mod." height = 80 src="mod/wlife/images/objects/phone_allowed'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'
+		else
+			$wl_status_msg += '<td><img title="You have no time to use your phone at the moment." height = 80 src="mod/wlife/images/objects/phone_forbidden'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></td>'	
+		end
+		
+		if wl_debt['amount'] > 0: 
+			$wl_debt_tooltip = 'You owe <<wl_debt[''amount'']>> ₽.'
+			$wl_debt_msg = $wl_debt_tooltip + iif(wl_georgiy['payment_method'] = 0, ' Your share of your income is reduced by 20 percentage points until you have paid your debts.', '')
+			$wl_status_msg += '<td><a href="exec: msg $wl_debt_msg"><img title="<<$wl_debt_tooltip>>" height = 80 src="mod/wlife/images/objects/debt'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'
+		end
+		
+		if wl_medical['timer_week'] = 0 and wl_medical['status'] = 1:
+			$wl_status_msg += '<td><a href="exec: msg ''You have to go to Doctor Mikhailov. You can find him in his office at the small clinic in Pavlovsk from Tuesday till Saturday.''"><img title="You have to visit Doctor Mikhailov at the clinic in Pavlovsk." height = 80 src="mod/wlife/images/objects/doc'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'
+		elseif wl_medical['timer_week'] = 0 and wl_medical['status'] > 1:
+			$wl_status_msg += '<td><a href="exec: msg ''You have to go to your bi-weekly medical examination. You can find Doctor Mikhailov in his office at the small clinic in Pavlovsk from Tuesday till Saturday.''"><img title="You have to go to your bi-weekly medical exam." height = 80 src="mod/wlife/images/objects/doc'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'	
+		end
+		
+		if wl_iosif['timer'] = 1 and wl_iosif['timer_call'] = daystart: $wl_status_msg += '<td><a href="exec: msg ''You have to go to the warehouse tonight (23:00) to meet up with Iosif.''"><img title="You have to go to the warehouse tonight (23:00) to meet up with Iosif." height = 80 src="mod/wlife/images/objects/info'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'
+		
+		if wl_okoro['status'] = 6 and wl_okoro['week'] = week: $wl_status_msg += '<td><a href="exec: msg ''You can go to the hotel near the train station tonight (22:00) to meet Léon Okoro.''"><img title="You can go to the hotel near the train station tonight (22:00) to meet Léon Okoro." height = 80 src="mod/wlife/images/objects/info'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'
+		
+		if wl_maxim['status'] > 2 and wl_maxim['week'] = week:
+			$wl_status_msg += '<td><a href="exec: msg ''You can go to the hotel near the train station tonight (21:00) to meet Maxim.''"><img title="You can go to the hotel near the train station tonight (21:00) to meet Maxim." height = 80 src="mod/wlife/images/objects/info'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></a></td>'
+		elseif wl_maxim['week'] > week and wl_maxim['day'] ! daystart:
+			wl_maxim['week'] = 0
+		end
+		
+		if wl_georgiy['payment_method'] = 1 and PCloStyle = 4 and ShoHeels > 3 and (($metka = 'street' and $loc = 'mod_wlife_warehouse') or ($metka = '' and ($loc = 'gdk' or $loc = 'pav_residential' or $loc = 'pav_industrial' or $loc = 'pav_commercial' or $loc = 'pavtrain' or $loc = 'liam')) or ($metka = 'start' and ($loc = 'pav_complex' or $loc = 'pav_park'))) and hour > 6 and hour < 23 and $curloc ! 'shop' and menu_off = 0 and $loc = $curloc:
+			$wl_status_msg += '<td><a href="exec: gt ''mod_wlife_solicitation'', ''search''"><img title="Click to start working in Pavlovsk." height = 80 src="mod/wlife/images/objects/prostitute.png"></a></td>'
+		end
+		
+		if wl_whore['pirsA'] = 0:
+			if PCloStyle = 4 and ShoHeels > 3: $wl_status_msg += '<td><img title="Your outfit suits a whore perfectly." height = 80 src="mod/wlife/images/objects/whore'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></td>'
+		else
+			if PCloStyle = 4 and ShoHeels > 3 and pirsA = wl_whore['pirsA']: $wl_status_msg += '<td><img title="Your outfit suits a whore perfectly." height = 80 src="mod/wlife/images/objects/whore'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></td>'
+		end
+				
+		$wl_status_msg += '</tr></table></center><br><br>'
+		pl $wl_status_msg
+	end
+
+	!!School
+	if wl_status >= 5 and wl_status['school_expelled'] = 0 and SchoolBlock = 0 and SchoolAtestat < 1:
+		if schoolprogul > 0:
+			pcs_grades -= 5
+			schoolprogul = 0
+			wl_status['school_skip'] += 1
+		elseif wl_status['school_skip'] = 9:
+			wl_status['school_expelled'] = 1
+		elseif schoolPredupr > 0:
+			schoolPredupr = 0
+		end
+
+		if pcs_grades < 20 and wl_status['school_timer'] ! daystart and kanikuli = 0 and week < 6 and wl_status['school_grades'] < 20:
+			wl_status['school_grades'] += 1
+			wl_status['school_timer'] = daystart
+		elseif wl_status['school_grades'] = 20 and wl_status['school'] = 0:
+			wl_status['school_expelled'] = 1
+		end
+	end
+	
+	if ($loc = 'korrPar' or $loc = 'mod_BroMod_korrPar' or $loc = 'korr' or $loc = 'korr2x') and wl_status['school_expelled'] < 2:
+		if wl_status['school_grades'] > 9 and wl_status['school_grades_warning'] = 0 and menu_off = 0:
+			gt 'mod_wlife_misc', 'school_grades'
+		elseif wl_status['school_skip'] > ((wl_status['school_skip_warning'] * 3) + 2) and wl_status['school_skip_warning'] < 2 and menu_off = 0:
+			gt 'mod_wlife_misc', 'school_skip'
+		elseif wl_status['school_expelled'] = 1:
+			gt 'mod_wlife_misc', 'school_expelled'
+		end
+	end
+	
+	!!Iosif and Maxim checks
+	if wl_iosif['timer'] = 1 and hour > 8 and hour < 16 and menu_off = 0 and wl_iosif['timer_call'] ! daystart: 
+		gt 'mod_wlife_phone', 'iosif_missed'
+	elseif wl_iosif['call_avoid'] > 2 and hour > 8 and hour < 16 and menu_off = 0:
+		gt 'mod_wlife_phone', 'iosif_avoid'
+	elseif wl_iosif['status'] = 3 and wl_iosif['timer_whore'] < daystart and wl_iosif['timer'] ! 1 and hour > 14 and hour < 21 and rand(0,2) = 1 and menu_off = 0 and wl_georgiy['timer_week'] ! week:
+		gt 'mod_wlife_phone', 'iosif_work_first'
+	elseif wl_iosif['status'] > 3 and wl_iosif['timer_whore'] < daystart and wl_iosif['timer'] ! 1 and hour > 14 and hour < 21 and rand(0,2) = 1 and menu_off = 0 and wl_georgiy['timer_week'] ! week:
+		gt 'mod_wlife_phone', 'iosif_work_regular'
+	elseif wl_pictures['iosif_3'] = 1 and hour > 20 and menu_off = 0:
+		gt 'mod_wlife_phone', 'iosif_party_pic'
+	elseif wl_maxim['status'] > 1 and wl_maxim['timer'] < daystart and hour > 13 and hour < 22 and week > 1 and week < 5 and menu_off = 0: 
+		gt 'mod_wlife_maxim', 'call'
+	end
+
+	!!Thoughts & Okoro phone calls
+	if (($curloc = 'bed2' and $menu_loc = 'bed2') or ($curloc = 'mod_BroMod_bed2' and $menu_loc = 'mod_BroMod_bed2')) and $menu_arg = '' and menu_off = 0 and InSleep = 0 and (hour > 19 or hour < 8) and wl_thought['timer'] ! daystart:
+		if (wl_timer['startday'] + 14) < daystart and wl_thought['whore'] = 0 and wl_thought['timer_whore'] < daystart and wl_status['main'] > 4: 
+			gt 'mod_wlife_thoughts', 'whore_0'
+		elseif wl_medical['status'] = 2 and wl_thought['pissing'] = 0 and wl_thought['timer_pissing'] < daystart and $wl_fetish['pissing'] ! 'blocked':
+			gt 'mod_wlife_thoughts', 'pissing'
+		elseif wl_thought['rimjob'] = 1:
+			gt 'mod_wlife_thoughts', 'rim_whore'	
+		elseif wl_passport = 1 and wl_thought['passport'] = 0: 
+			gt 'mod_wlife_thoughts', 'passport'
+		elseif wl_volya['status'] = 3: 
+			gt 'mod_wlife_thoughts', 'volya_car_bj'
+		elseif wl_volya['status'] = 5 and wl_volya['relationship'] = 1: 
+			gt 'mod_wlife_thoughts', 'volya_car_sex'
+		elseif wl_volya['status'] = 5 and wl_volya['relationship'] ! 1:
+			wl_volya['status'] = 6
+		elseif wl_shura['status'] = 9:
+			gt 'mod_wlife_thoughts', 'shura_bj'
+		elseif wl_iosif['pissing'] = 1 and $wl_fetish['pissed_on'] = '':
+			gt 'mod_wlife_thoughts', 'piss_whore'
+		elseif wl_homeless['status'] > 1 and wl_thought['homeless'] = 0:
+			gt 'mod_wlife_thoughts', 'homeless_aftermath'
+		elseif wl_thought['atm'] = 1 and wl_thought['timer_atm'] < daystart:
+			gt 'mod_wlife_thoughts', 'ass_to_mouth'
+!!ToDo: Prostitution in pavlovsk 
+!!	elseif wl_thought['pav_total'] > 0 and wl_thought['pav_prost'] = 0:
+!!		gt 'mod_wlife_thoughts', 'pav_prost'
+		elseif wl_thought['sacha'] = 0 and wl_sacha['status'] = 2:
+			gt 'mod_wlife_thoughts', 'sacha'
+		elseif wl_okoro['status'] = 2 and (wl_timer['startday'] + 49) < daystart and wl_okoro['timer'] ! daystart and week ! 7:
+			gt 'mod_wlife_phone', 'okoro'
+		end
+	end
+	
+	
+	if pav_prostitute >= 50 and wl_whore['pav_timer_hour'] ! hour and (rand(-20,70) - (pav_prostitute/5)) < minut and $curloc ! 'mod_wlife_solicitation' and $curloc ! 'shop' and menu_off = 0 and $loc = $curloc: gs 'mod_wlife_solicitation', 'chance'
+	
+	if pav_prostitute >= 100 and pcs_inhib > 60 and PCloStyle = 4 and ShoHeels > 3 and (($metka = 'street' and $loc = 'mod_wlife_warehouse') or ($metka = '' and ($loc = 'gdk' or $loc = 'pav_residential' or $loc = 'pav_industrial' or $loc = 'pav_commercial' or $loc = 'pavtrain' or $loc = 'liam')) or ($metka = 'start' and ($loc = 'pav_complex' or $loc = 'pav_park'))) and hour > 6 and hour < 23 and $curloc ! 'shop' and menu_off = 0 and $loc = $curloc:
+		pl '<center><a href="exec: gt ''mod_wlife_solicitation'', ''search''"><img title="Click to start working in Pavlovsk." height = 80 src="mod/wlife/images/objects/prostitute.png"></a></center>'
+		act 'Search for clients': gt 'mod_wlife_solicitation', 'search'	
+	end
+	
+	
+	
+end
+
+!!Removes the vanilla Vadim Bely
+if npc_QW['A113'] ! 2:
+	npc_QW['A113'] = 2
+	killvar 'belfirstweek'
+	killvar 'belgangPay'
+	killvar 'daybelixsex'
+	killvar 'belgangday'
+	killvar 'belgangPayweekAmount'
+	killvar 'belgangPayweek'
+	killvar 'belgangPayextension'
+	killvar 'belgangProstitute'
+end
+
+!!Blocks vanilla prostitution event in the residential area
+if pav_residential_prost_day ! daystart: pav_residential_prost_day = daystart
+
+--- mod_wlife ---------------------------------

+ 87 - 0
locations/mod_wlife_cheatmenu.qsrc

@@ -0,0 +1,87 @@
+# mod_wlife_cheatmenu
+
+if $ARGS[0] = 'start':	
+	*clr & cla & *nl & *nl	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/cheatmenu.png"></center>'
+	if $wl_status['abortions'] ! '': 'Forced abortions: '+iif($wl_status['abortions'] = 'yes', '<a href="exec: $wl_status[''abortions''] = ''no'' & gt ''mod_wlife_cheatmenu'', ''start''">Currently on</a>', '<a href="exec: $wl_status[''abortions''] = ''yes'' & gt ''mod_wlife_cheatmenu'', ''start''">Currently off</a>')
+	*nl
+	if wl_georgiy['payment_method'] = 0:
+		'You have to work <<wl_whore[''shifts_minimum'']>> shifts ['+iif(wl_whore['shifts_minimum'] > 1, '<a href="exec: wl_whore[''shifts_minimum''] -= 1 & gt ''mod_wlife_cheatmenu'', ''start''">(-1)</a>', '(-1)')+'|'+iif(wl_whore['shifts_minimum'] < 6, '<a href="exec: wl_whore[''shifts_minimum''] += 1 & gt ''mod_wlife_cheatmenu'', ''start''">(+1)</a>', '(+1)')+'] each week at the gas station. Changing the minimum will take effect after the next check-in with Georgiy.'
+	else 
+		'You have to pay <<wl_georgiy[''lump_sum'']>> <b>₽</b> every week to Georgiy.'
+		'Change it by: '+iif(wl_georgiy['lump_sum'] > 2500, '<a href="exec: wl_georgiy[''lump_sum''] -= 2500 & gt ''mod_wlife_cheatmenu'', ''start''">-2500</a>', '-2500')+'|<a href="exec: wl_georgiy[''lump_sum''] += 2500 & gt ''mod_wlife_cheatmenu'', ''start''">+2500</a>'
+	end
+	'Working at the gas station and Pavlovsk costs willpower: '+iif(wl_cheat['will_cost'] = 0, '<a href="exec: wl_cheat[''will_cost''] = 1 & gt ''mod_wlife_cheatmenu'', ''start''">Yes</a>', '<a href="exec: wl_cheat[''will_cost''] = 0 & gt ''mod_wlife_cheatmenu'', ''start''">No</a>')
+	if wl_sacha['status'] > 3:
+		*nl
+		'Chance to encounter a more abusive client in Pavlovsk (Some scenes don''t have a abusive/nice variant. Setting it to 0% or 100% will not completely block abusive/nice clients): <<wl_whore[''client_behavior_chance'']>>% ('+iif(wl_whore['client_behavior_chance'] = 0, '-10%', '<a href="exec: <<wl_whore[''client_behavior_chance'']>> -= 10 & gt ''mod_wlife_cheatmenu'', ''start''">-10%</a>')+'|'+iif(wl_whore['client_behavior_chance'] = 100, '+10%)', '<a href="exec: <<wl_whore[''client_behavior_chance'']>> += 10 & gt ''mod_wlife_cheatmenu'', ''start''">+10%</a>)')
+	end
+	
+	act 'Go back to the phone': gt 'mod_wlife_phone', 'start'
+	act 'Check important variables': gt 'mod_wlife_cheatmenu', 'variables'
+	act 'Block all content except the gas station (and the homeless/Pavlovsk prostitution if unlocked)':
+		*clr & cla	
+		wl_status['stored'] = wl_status['main']
+		wl_status['main'] = -1
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+		'All content apart from the gas station at the highway has been blocked. You can visit the gas station on your own by going to the St. Petersburg train station in the industrial district. Outside the building you can find a bus terminal.'
+						
+		act 'Continue': gt $loc, $metka
+	end
+	if home_owned[2] = 0: act 'Gain access to your parents apartment again': home_owned[2] = 1 & gt 'mod_wlife_cheatmenu', 'start'
+end
+
+if $ARGS[0] = 'variables':
+	*clr & cla & *nl & *nl	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/variables.png"></center>'
+	
+	*nl
+	
+	act 'Go Back': gt 'mod_wlife_cheatmenu', 'start'
+	
+	'<b>Stats:</b>'
+	'- Acceptance: wl_stats[''acceptance''] = <<wl_stats[''acceptance'']>>'
+	'- Loyalty: wl_stats[''loyalty''] = <<wl_stats[''loyalty'']>>'
+	'- Respect: wl_stats[''respect''] = <<wl_stats[''respect'']>>'
+	
+	*nl
+	
+	'<b>Quest:</b>'
+	'- Start: wl_status[''start''] = <<wl_status[''start'']>>'
+	'- Main Quest: wl_status[''main''] = <<wl_status[''main'']>>'
+	'- Clinic: wl_medical[''status''] = <<wl_medical[''status'']>>'
+	'- Drugs: wl_drugs[''status''] = <<wl_drugs[''status'']>>'
+	'- Party (1): wl_party[''first''] = <<wl_party[''first'']>>'
+	'- Party (2): wl_party[''status''] = <<wl_party[''status'']>>'
+	'- Homeless: wl_homeless[''status''] = <<wl_homeless[''status'']>>'
+	'- Prison: wl_prison[''status''] = <<wl_prison[''status'']>>'
+	
+	*nl
+	
+	'<b>Characters:</b>'
+	'- Volya: wl_volya[''status''] = <<wl_volya[''status'']>>'
+	'- Shura: wl_shura[''status''] = <<wl_shura[''status'']>>'
+	'- Sacha: wl_sacha[''status''] = <<wl_sacha[''status'']>>'
+	'- Iosif: wl_iosif[''status''] = <<wl_iosif[''status'']>>'
+	'- Georgiy: wl_georgiy[''status''] = <<wl_georgiy[''status'']>>'
+	'- Okoro Brothers: wl_okoro[''status''] = <<wl_okoro[''status'']>>'
+	'- Nikita: wl_nikita[''status''] = <<wl_nikita[''status'']>>'
+	'- Adrian: wl_adrian[''status''] = <<wl_adrian[''status'']>>'
+	
+	*nl
+	
+	'<b>Punishment:</b>'
+	'- wl_bad[''status_punishment''] = <<wl_bad[''status_punishment'']>>'
+	'- wl_bad[''work''] = <<wl_bad[''work'']>>'
+	'- wl_bad[''lump_sum''] = <<wl_bad[''lump_sum'']>>'
+	'- wl_bad[''medical''] = <<wl_bad[''medical'']>>' 
+	'- wl_bad[''iosif''] = <<wl_bad[''iosif'']>>'
+	'- wl_bad[''earnings''] = <<wl_bad[''earnings'']>>'
+	'- wl_bad[''prison''] = <<wl_bad[''prison'']>>'
+	'- wl_bad[''total_debt''] = <<wl_bad[''total_debt'']>>'
+	'- wl_bad[''total_debt''] = <<wl_bad[''total_debt'']>>'
+	
+	*nl
+end
+
+--- mod_wlife_cheatmenu ---------------------------------

+ 359 - 0
locations/mod_wlife_clinic.qsrc

@@ -0,0 +1,359 @@
+# mod_wlife_clinic
+
+if $ARGS[0] = 'first_visit':
+	*clr & cla
+	minut += 10
+	menu_off = 1
+	gs 'stat'
+	'<center><video autoplay src="mod/wlife/images/locations/clinic/walk_in.mp4"></video></center>'
+	'After filling out a form with your personal information like your name, age and so on you only have to wait ten minutes, before an old nurse points you towards the office of Doctor Mikhailov. You knock and at once a deep voices sounds through the door, "come on in."'
+	*nl
+	'"Miss...," he looks down on the completed form, "<<$pcs_lastname>> nice to meet you," he continues and holds his hand out to you over the table. His hand feels surprisingly soft for a man of his age. His gray hair and beard, the kind eyes and his demeanor reminds you more of Santa than an evil doctor who treats '+iif(age < 18, 'underage', 'young')+' girls who are coerced into prostitution. "Please take a seat," he says and continues to speak as you sit down. "Let''s clear the air before we start. I know why you''re here and please don''t assume I''m not sympathizing with you or your situation, but I can''t change anything about that. So please refrain from pleading for my help, it will only lead to awkward conversations none of us wants to have."'
+	'"Uhm... OK." He ignores that your words sound more like a question than an answer and instead claps his hands once and flashes a bright smile. "Great, than let us get to work."' 
+	
+	act 'Talk with him':
+		*clr & cla
+		minut += 10
+		wl_medical['picture'] = 0
+		gs 'stat'		
+		'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_0.mp4"></video></center>'
+		'"Before we delve into your medical and sexual history we have to talk about two organizational issues. You don''t have to pay for an appointment, but if I have to perform a procedure or prescribe some medicine, you''ll have to pay for it. I can''t hide this from the clinic. If you can''t afford it, the Bely''s will cover the cost, but you''ll have to pay them back at some point. You''ll also have to check in with me every two weeks. If you don''t, I will have to report that to Mr. Bely," he tells you with a serious expression. You nod and the smile returns to his face. "Alright, then why don''t you tell me a bit about your history." For the next few minutes you tell him everything that you know about your own and the medical history of your family, before telling him that you '+iif(pcs_vag = 0, 'are', 'aren''t')+' a virgin'+iif(pcs_vag = 0, ' ', ' anymore ')+'and'+iif(anal = 0, ' never ', ' ')+'had anal sex.'+iif(SchoolAtestat = 0 and motherKnowSpravka = 0, ' You also tell him about your mother and the monthly referrals you have to show her to prove your virginity. He has no problem to provide you with a referral, when you need it.', '')
+		*nl
+		if pcs_vag > 0: '"Are you or have you ever been pregnant?" he inquires after you''re done talking. '+iif(kid = 0 and knowpreg = 0 and thinkpreg = 0, '"Not that I know of."', '"Yes,'+iif(kid > 0, ' I have a child' +iif(knowpreg > 0 or thinkpreg > 0, ' and ', '.'), ' ')+iif(knowpreg > 0 or thinkpreg > 0, 'I think I''m pregnant."', '"'))+' He nods and scribbles a note onto a piece of paper.'
+				
+		act 'Continue':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/objects/info.gif"></center>'
+			'Developer Note: I will not write special events or reactions for pregnancies since dealing with it get''s way to complicated. You can now decide how the mod should handle pregnancies. You can either choose that abortions are mandatory or not. You''ll be able to change that decision later in the cheatmenu'+iif(wl_status['main'] < 5, ' (which can be found in the phone, when it becomes available).', '.')
+		
+			act 'No, abortions aren''t mandatory':
+				*clr & cla
+				$wl_status['abortions'] = 'no'
+				'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_0.mp4"></video></center>'
+				iif(pcs_vag > 0, '"Since we are already talking about pregnancies.', '"There is one other thing we have to talk about and that''s pregnancies.')+' You should get on the pill and always use a condom to protect yourself from STDs, but if you ever get pregnant and have to deal with it, I can perform the abortion here." You don''t know how to respond to that. Hearing him talking about pregnancies and abortions makes your head spin. Doctor Mikhailov has to say your name several times to get your attention back. "Miss <<$pcs_lastname>>?" He asks one last time and continue, when you nod, "it''s time to have a closer look."'
+				
+				act 'Take a seat on the gynecological chair': gt 'mod_wlife_clinic', 'exam'
+			end
+			
+			act 'Yes, abortions are mandatory':
+				*clr & cla
+				$wl_status['abortions'] = 'yes'
+				'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_0.mp4"></video></center>'
+				iif(pcs_vag > 0, '"Since we are already talking about pregnancies.', '"There is one other thing we have to talk about and that''s pregnancies.')+' You should get on the pill and always use a condom to protect yourself from STDs, but if you ever get pregnant I''ll have to perform an abortion. You can''t do your job efficiently, when you''re pregnant. The Bely''s won''t tolerate it." You don''t know how to respond to that. Hearing him talking about pregnancies and forced abortions makes your head spin. Doctor Mikhailov has to say your name several times to get your attention back. "Miss <<$pcs_lastname>>?" He asks one last time and continue, when you nod, "it''s time to have a closer look."'
+				
+				act 'Get on the examination table': gt 'mod_wlife_clinic', 'exam'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'check':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	gs 'stat'
+	'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_0.mp4"></video></center>'
+	if wl_temp = 0 or wl_temp = 1:
+		'"Miss <<$pcs_lastname>>, please come on in," he says and points at a chair in front of his desk. '+iif(wl_medical['timer_week'] = 2, '"I guess you aren''t here for your medical exam?"', '"Is it already time for your exam?"')+' You '+iif(wl_temp = 0, 'nod. "Yes, exactly."', 'shake your head and sit down. "No, but I''m not feeling very well."')
+		'"Alright, '+iif(wl_temp = 1, 'let''s find out what the problem is. P', 'p')+'lease undress and sit down on the gynecological chair."'
+		
+		act 'Do it': gt 'mod_wlife_clinic', 'exam'
+	elseif wl_temp = 2:
+		'"Miss <<$pcs_lastname>>, please come on in," he says and points at a chair in front of his desk. '+iif(wl_medical['timer_week'] = 2, '"I guess you aren''t here for your medical exam?"', '"Is it already time for your exam?"')+' You shake your head and sit down. "No, I need an abortion. "No problem," he responds without batting an eye. "Please undress and sit down on the gynecological chair and we''ll quickly take care of that issue."'
+		
+		act 'Do it': gt 'mod_wlife_clinic', 'abortion'
+	else
+		Gspravka = 30
+		GspravkaT = 1
+		Gspassed = 1
+		'"Miss <<$pcs_lastname>>, please come on in," he says and points at a chair in front of his desk. '+iif(wl_medical['timer_week'] = 2, '"I guess you aren''t here for your medical exam?"', '"Is it already time for your exam?"')+' You shake your head and sit down. "No, I need a referral for my mother that I''m still a virgin," you explain to him.'
+		'"That won''t take long," he replies and grabs an empty form from his deck. He hands you the completed form, after checking the correct boxes and stamping the document to make it official. "Here you go."'
+		
+		act 'Take the referral and leave': gt 'pav_clinic'
+	end
+	killvar 'wl_temp'
+end
+
+if $ARGS[0] = 'exam':
+	*clr & cla
+	minut += 30
+	wl_medical['timer_week'] = 2
+	cumspclnt = 15
+	gs 'cum_cleanup'
+	$orgasm_or = 'no'
+	gs 'arousal', 'vaginal_finger', -2
+	gs 'arousal', 'anal_finger', -2
+	'<center><video autoplay loop src="mod/wlife/images/locations/clinic/exam_'+wl_medical['picture']+iif(wl_medical['picture'] = 1 or wl_medical['picture'] > 3, rand(0,1), '')+'.mp4"></video></center>'
+	'The whole examination takes roughly half an hour. First he cleans out your vagina, before he visually inspects your pussy lips and your anus. Afterwards he carefully inserts two fingers into your vagina to check for any irregularities and repeats the procedure with your anus. The next step consists of him inserting a speculum into your pussy to be able to have a look at your cervix. His touches don''t feel sexual, instead you get the feeling that he''s a professional who does his job to the best of his abilities and not someone to ogle and touch naked women.'
+		
+	if (wl_medical['picture'] < 5 and $wl_fetish['pissing'] = 'yes') or (wl_medical['picture'] < 4 and $wl_fetish['pissing'] = 'blocked') or wl_medical['status'] = 1:
+		wl_medical['picture'] += 1
+	else
+		wl_medical['picture'] = 0
+	end
+	
+	if wl_medical['status'] = 1:
+		act 'Continue':
+			*clr & cla
+			wl_medical['status'] = 2
+			'<center><video autoplay loop src="mod/wlife/images/locations/clinic/exam_piss_0.mp4"></video></center>'
+			'"OK, we are nearly done. I only need a urine sample," he tells you and takes a big plastic box. Not really something you would have used for it, but at least the exam will be over soon. "Where is the bathroom?" you ask, but he shakes his head. "That won''t be necessary. You would have to get dressed and that would be a hassle. You can do it here," he explains and puts the box on the floor on top a small water absorbent mat.'
+			'"Uhm..., what?" you ask and look horrified at the box on the floor. "You.. You want me to do it here?" He nods. "Sure, don''t worry. I won''t look," he reassures you.'
+			'He can''t be serious. Your old gynecologist never expected you to squat down in the examination room and just pee into a box. He always gave you a small container to take into the bathroom. "No, no, no," you say and shake your head. "Please, let me take it to the bathroom. I''ll be quick."'
+			'"I can''t let you do that. What if you switch out the sample with somebody else''s urine? I need to make sure that everything is properly examined. The Bely''s won''t tolerate any deception."'
+			'"But what could I possibly hide from them?" you ask him while you keep looking at the plastic box on the floor. "You could for example hide a pregnancy from them."'
+			
+			'<br><font color="red">Content Warning: Pissing girl</font>'
+			
+			act 'Squat down':
+				*clr & cla
+				$wl_fetish['pissing'] = 'no'
+				gs 'arousal', 'foreplay', 2, 'humiliation'
+				gs 'stat'
+				'<center><video autoplay loop src="mod/wlife/images/locations/clinic/exam_piss_1.mp4"></video></center>'
+				'"Fine," you sigh and get of the gynecological chair. "But please, don''t look," you say and he turns around demonstratively. "Of course, I''m a professional Miss <<$pcs_lastname>>." You''re starting to seriously doubt that and squat down on the floor steading yourself with one hand on a nearby examination table.'
+				'You can''t stop yourself from thinking about how humiliating this is and you can feel a blush creeping up your neck. One second passes, one more, ten more, but nothing happens. You look up, but he''s still looking at a nearby wall. He really isn''t watching, you think and relax a bit. This opens the flood gate and the first spurt of piss lands inside the box.'
+				
+				act 'Piss':
+					*clr & cla
+					gs 'arousal', 'foreplay', 2, 'humiliation'
+					gs 'arousal', 'end'
+					'<center><video autoplay loop src="mod/wlife/images/locations/clinic/exam_50.mp4"></video></center>'
+					'There is nothing that could stop you once you have started. Your piss fills the box more and more, the feeling of shame subsides at the same rate as if you''re pissing it out of your body. A few seconds more and it will all be over. He can hear you do it, but since he wasn''t looking it''s not as bad as you had suspected. Near the end you take another look at Doctor Mikhailov and as promised he isn''t looking, because what he''s is doing can''t be described as looking. He''s staring at you. His hungry eyes are fixated on the urine that''s pouring out of you. "WHAT THE FUCK?!" you shout, but he doesn''t even flinch and keeps staring. "It''s alright Miss <<$pcs_lastname>>, you''re nearly done," he says calmly while your head turns red rapidly. "Please, look away," you plead, but he shakes his head as the last drops of urine land inside the box. "Why? You''re already finished," he says and takes a step towards you, before you can say anything else. "May I?" he asks and picks up the box without waiting for a response. He walks out of the room and leaves you behind shocked, confused and horrified.'
+					*nl
+					'You wipe your pussy clean and get dressed as you think about what happened. Should you say something or not? You ponder the question, but in the end you decide against it. He''s clearly in a position of power and could tell the Bely''s everything he wants.'
+					*nl
+					'"Everything alright?" he asks, when he returns. His professional attitude is back as if nothing has happened. "Sure, everything is fine," you reply and sit down next to his desk.'
+					
+					act 'Hear the results': gt 'mod_wlife_clinic', 'results'
+				end
+			end
+			
+			act '<font color="red">Block this type of content</font>': 
+				cla & *nl
+				$wl_fetish['pissing'] = 'blocked'
+				'Suddenly Doctor Mikhailov changes his mind and hands you a smaller plastic container. You quickly go to the bathroom, before handing him the sample and finish your examination.'
+				
+				act 'Get dressed and wait for the results': gt 'mod_wlife_clinic', 'results'
+			end
+		end
+	else 
+		if $wl_fetish['pissing'] ! 'blocked': 
+			gs 'arousal', 'foreplay', iif($wl_fetish['pissing'] = 'no', -1, -8) 
+			'But the professionalism instantly vanishes again, when you have to supply another urine sample. His eyes are fixed on your pussy and especially on the urine that pours out of it. '+iif($wl_fetish['pissing'] = 'no', 'It''s an uncomfortable and humiliating experience you wish you didn''t have to go through.', 'It feels like his burning eyes are transferring their heat directly into your pussy and you can feel yourself getting aroused by getting watched.') 
+		end
+		gs 'arousal', 'end'
+				
+		act 'Get dressed and wait for the results': gt 'mod_wlife_clinic', 'results'
+	end
+	gs 'stat'
+end
+
+if $ARGS[0] = 'results':
+	*clr & cla
+	$wl_medical['status'] = ''
+
+	if cumcondslip > 0:
+		minut += 5
+		cumcondslip = 0
+		$wl_medical['status'] = '"I found a condom inside you and removed it. If you were feeling sick, it should slowly subside," he explains. '
+		gs 'cum_cleanup', 'cleanloc', 17
+	end
+
+	if venera > 0:
+		$wl_medical['status'] += '"You'+iif($wl_medical['status'] ! '', ' also ', ' ')+'have a sexually transmitted disease," he takes a short pause to have a closer look at the results.'+iif(GerpesOnce = 1, ' "You have genital herpes'+iif(Gerpes > -3, '. Unfortunately, the complete cure for this disease is very expensive and I can''t cure it here. On the upside, herpes is dormant most of the time and is quite manageable, if you take good care of your body. I will give you a shot with a new drug that''s a bit more expensive than the old stuff, but more effective and you won''t have to wait several days, before it takes effect.', ', but it''s currently in it''s dormant state.')+'Taking vitamins regularly will make sure it won''t show itself.', '')+iif(SifacOnce = 1, ' You'+iif(GerpesOnce = 1, ' also ', ' ')+'have syphilis. The cure for this disease used to be expensive. However, this deadly disease can now be with a single shot. I''ll give it you after we are done here.', '')+iif(TriperOnce = 1, ' I'+iif(SifacOnce = 1 or GerpesOnce = 1, ' also ', ' ')+'found gonorrhea. Fortunately, I can cure this disease. I''ll give you something that will take care of it. It''s a bit more expensive than the usual stuff we hand out at the clinic, but it''s more potent and you won''t have to wait several days for your symptoms to subside.', '')+iif(KandidozOnce = 1, ' You'+iif(SifacOnce = 1 or GerpesOnce = 1 or TriperOnce = 1, ' also ', ' ')+'have thrush'+iif(Kandidoz > 25, '. Unfortunately, the complete cure for this disease is very expensive and we can''t cure it here. On the upside, thrush is not that harmful and can be treated easily to the point where it won''t trouble you. I''ll give you a pill that will take care of it for the moment. When it''s dormant, taking vitamins regularly will make sure it won''t show itself."', ', but it''s currently in it''s dormant state.'), '')
+		iif(vitamin < 5 and (KandidozOnce = 1 or GerpesOnce = 1), '"Do you have some vitamins at home?" he asks. "'+iif(wl_vitamin = 0, 'No', 'Only a few')+'," you reply and shake your head at the same time. "OK, I''ll give you enough for the next month," he tells you', '')
+	
+		if GerpesOnce = 1: 
+			if Gerpes > -3:
+				minut += 5
+				GerpesNapr = 0
+				Gerpes = rand(-15,-10)
+				wl_total_price += 1650
+			end
+			if vitamin < 5: vitamin += 30 & wl_total_price += 130
+		end
+		
+		if SifacOnce = 1:
+			minut += 5
+			SifNapr = 0
+			SifacOnce = 0
+			Sifilis = 0
+			Venera -= 1
+			wl_total_price += 1000
+		end
+		
+		if TriperOnce = 1:
+			minut += 5
+			TriperNapr = 0
+			TriperOral = 0
+			TriperOnce = 0
+			TriperOralSigns = 0
+			Triper = 0
+			Venera -= 1
+			wl_total_price += 4250
+		end
+
+		if KandidozOnce = 1:
+			if Kandidoz > 25: 
+				minut += 5
+				Kandidoz = 0
+				KandidNapr = 0
+				wl_total_price += 1050
+			end
+			if vitamin < 5: vitamin += 30 & wl_total_price += 130
+		end
+	end
+
+	if preg > 0:
+		thinkpreg = 1
+		knowpreg = 1
+		if $wl_medical['status'] ! '': $wl_medical['status'] += '<br>'
+		$wl_medical['status'] += 'He frowns for a moment, when he studies the result. "It seems you are pregnant Miss <<$pcs_lastname>>. '+iif($wl_status['abortions'] = 'yes', 'You know what that means, we should terminate it immediately so that it doesn''t become a problem and interferes with your work. Please get back on the chair."', 'If you want, we can terminate it today."')
+	end
+	gs 'stat'
+	
+	'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_1.mp4"></video></center>'
+	if $wl_medical['status'] = '':
+		'"You''re perfectly healthy Miss <<$pcs_lastname>>," Doctor Mikhailov smiles, when he gives you the good news. "If you keep using protection'+iif(vitamin = 0, ' and maybe take a daily vitamin,', ',')+' it should stay this way."' 
+	else
+		$wl_medical['status']
+	end
+		
+	if SchoolAtestat = 0 and Gspravka < 3 and motherKnowSpravka = 0:
+		*nl
+		minut += 5
+		Gspravka = 30
+		GspravkaT = 1
+		Gspassed = 1
+		'"I will also need a referral for my mother that I''m still a virgin," you explain to him.'
+		'"That won''t take long," he replies and grabs an empty form from his deck. He hands you the completed form, after checking the correct boxes and stamping the document to make it official. "Here you go."' 
+	end
+	
+	if preg = 1 and pregchem < 1863 and $wl_status['abortions'] = 'yes':
+		act 'Get back on the gynecological chair': gt 'mod_wlife_clinic', 'abortion'
+	else
+		act 'Get ready to leave': gt 'mod_wlife_clinic', 'payment'
+		if preg = 1 and pregchem < 1863 and $wl_status['abortions'] = 'no': 
+			act 'Get an abortion': gt 'mod_wlife_clinic', 'abortion'
+		elseif preg = 0 and birth_control['implant_status'] < 3 and tabletkishot < 5:
+			act 'Talk with him about birth control': gt 'mod_wlife_clinic', 'birth_control'
+		end	
+	end
+end
+
+if $ARGS[0] = 'abortion':
+	*clr & cla
+	minut += 30
+	menu_off = 1
+	wl_stats['abortions'] += 1
+	wl_total_price += 15000
+	gs 'mod_wlife_functions','abortion'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/clinic/abortion.jpg"></center>'
+	'You spread out on a gynecological chair, from which angle you''ll be able to see everything that''s going on. It takes roughly half an hour for Doctor Mikhailov to remove the fetus.'
+				
+	act 'Get ready to leave': gt 'mod_wlife_clinic', 'payment'
+	if birth_control['implant_status'] < 3 and tabletkishot < 5: act 'Talk with him about birth control': gt 'mod_wlife_clinic', 'birth_control'
+end
+
+if $ARGS[0] = 'birth_control':
+	*clr & cla
+	'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_1.mp4"></video></center>'
+	if wl_medical['bc_talk'] = 0:
+		wl_medical['bc_talk'] = 1
+		'"I have a question about birth control," you say and with a quick gesture he tells you to continue. "Is there a method you can recommend?"'
+		'He leans back into his chair and ponders the question for a moment. "You obviously should use condoms, because no other method protects you from STDs. If you want a backup to protect you from getting pregnant, you could either go with the pill, getting a shot or an implant. I personally would recommend the implant. It''s expensive in the short-run, but it''s cheaper in the long-run and you won''t have to worry about kids for three years. Most woman stop having their periods after some time, which could be an additional benefit in your situation. You also don''t have to worry about taking the pill every morning or renewing the shot every three months. I can insert the implant or give you the shot here. You would need to buy the pill at the pharmacy."'
+	else
+		'"I have a question about birth control," you say and with a quick gesture he tells you to continue.'
+	end
+	
+	if wl_implant_warning = 0:
+		*nl
+		wl_implant_warning = 1
+		'<b>WARNING: If you play with a girl life version older than the dev build from February 18th, the birth control implant won''t work. Either update your girl life version or don''t buy the implant.</b>'
+	end	
+	
+	act 'Change your mind and get ready to leave': gt 'mod_wlife_clinic', 'payment'
+	
+	act 'Get a birth control shot for 2750 <b>₽</b> (0:15)':
+		cla & *nl
+		minut += 5
+		wl_total_price += 2750
+		gs 'medical_din','birthControlShot'
+		gs 'stat'
+		'"I take the shot," you say.'
+		'"Alright, give me a second," he leaves his office and returns a few minutes later, before he gives you a reassuring smile as he sticks a needle in your arm, and depresses the plunger. Seconds later he explains. "All done! You should be good to go for three months, give or take. It depends a bit from person to person. Body type, hormone levels, and so on. If you want to be perfectly safe, I recommend you come back for another treatment one week before the three months are over and remember it doesn''t protect you from STDs"'
+				
+		act 'Get ready to leave': gt 'mod_wlife_clinic', 'payment'
+	end
+	
+	act ''+iif(birth_control['implant_status'] = 0, 'Get a', 'Renew your')+' birth control implant for 19,650 <b>₽</b> (0:35)':
+		cla & *nl
+		minut += 35
+		wl_total_price += 19650
+		'"I take the implant," you say.'
+		'"Alright, give me a second," he leaves his office and returns a few minutes later. "Please lie down, the procedure won''t take long," he says and points at the gynecological chair.'
+		'He numbs part of your upper arm with a local anesthetic. You have to wait for a few minutes for it to take a effect, before he makes a tiny incision'+iif(birth_control['implant_status'] = 0, ' ', ', takes out your old implant ')+'and pushes a '+iif(birth_control['implant_status'] = 0, 'small tube', 'new implant')+' inside your arm. It isn''t bigger than a matchstick.'
+		'"All done! You should be good to go for three years, but it will take a few days before you will be fully protected and remember it doesn''t protect you from STDs."'
+
+		birth_control['implant_status'] = 3
+		birth_control['implant_timer'] = 1095
+		pillcon += ((pillcon + 15000) / 25) + 4000
+		pillcon2 += ((pillcon2 + 15000) / 25) + 4000
+		
+		act 'Get ready to leave': gt 'mod_wlife_clinic', 'payment' 
+	end
+end
+
+if $ARGS[0] = 'payment':
+	if wl_total_price = 0:
+		minut += 3
+		gt 'pav_clinic'
+	else
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><video autoplay src="mod/wlife/images/locations/clinic/talk_1.mp4"></video></center>'
+		'"OK, that''s it," he says without looking up. He writes down some numbers. "You owe the clinic <<wl_total_price>> <b>₽</b>. How do you want to pay?"'
+		
+		act 'Let the Bely''s pay and increase your debt':
+			cla & *nl
+			wl_debt['amount'] += wl_total_price
+			iif(karta + money < wl_total_price, '"I can''t afford it, the', '"The')+' Bely''s will have to pay for it," you reply. "Alright, I''ll send them the bill. Have a nice day Miss <<$pcs_lastname>>."'
+			'"Thanks likewise Doctor Mikhailov," you say and leave his office.'
+			
+			act 'Continue': 
+				minut += 3
+				killvar 'wl_total_price'
+				gt 'pav_clinic'
+			end
+		end
+		
+		if karta + money >= wl_total_price:
+			act 'Pay for it yourself':
+				cla & *nl
+				if karta >= wl_total_price:
+					karta -= wl_total_price
+				elseif money >= wl_total_price:
+					money -= wl_total_price
+				else
+					wl_total_price -= karta
+					karta = 0
+					money -= wl_total_price
+				end
+				gs 'stat'
+				'"Alright, have a nice day Miss <<$pcs_lastname>>," he wishes you after you paid your bill. "Likewise Doctor Mikhailov," you say and leave his office.'
+				
+				act 'Continue': 
+					minut += 3
+					killvar 'wl_total_price'
+					gt 'pav_clinic'
+				end
+			end
+		end
+	end
+end
+
+--- mod_wlife_clinic ---------------------------------
+

+ 874 - 0
locations/mod_wlife_demands.qsrc

@@ -0,0 +1,874 @@
+# mod_wlife_demands
+
+!!---- BBC -------
+
+if $ARGS[0] = 'bbc_intro_0':
+	*clr & cla
+	wl_okoro['status'] = 1
+	wl_okoro['timer'] = daystart
+	wl_whore['shifts_week'] -= 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'"We have to go somewhere else today," he tells you as he turns the key in the ignition. "Vadim wants you to help us out with something important. We have some of our business partners over from France and the girl who normally keeps them company isn''t available. Instead you get the chance to get to know them."'
+	
+	gs 'willpower', 'misc', 'self', 'medium'
+	if will_cost <= pcs_willpwr:
+		act 'Business in France? (<<will_cost>> Willpower)':
+			*clr & cla		
+			wl_stats['respect'] += 2
+			wl_stats['loyalty'] -= 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'"France?" You ask as casual as possible to not raise suspicion. "What business do the Belys have in France? I guess they aren''t importing wine?"'
+			'"No, they buy...," he stops himself before he can divulge to much information. Shaking his head he sends you a warning look. "Nice try <<$pcs_nickname>>. You know better than to ask me stuff like this, but '+iif(wl_stats['respect'] < 0, 'I have to admit you showed some spunk. I never new that you had the courage to', 'I always new you had some spunk in you and')+' ask me about stuff like this. But you should be careful not all of the guys will be as lenient as I am."'
+			'You answer with a questioning look of your own. "Ask you...? Gathering information? What do you mean?" Your eyes widen in fake surprise as false realization spreads across your face. "Oh, sorry. I didn''t mean anything by it."'
+			'"You sure?" You quickly nod your head as an answer to his question. "Well, OK. But my warning stands. Don''t ask me stuff like this. I need this job, I don''t have anything else."' 
+			
+			act 'Getting to know them?': gt 'mod_wlife_demands', 'bbc_intro_1'
+		end
+	else
+		act 'Business in France? (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Getting to know them?': gt 'mod_wlife_demands', 'bbc_intro_1'
+end
+
+if $ARGS[0] = 'bbc_intro_1':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+	'"With ''keeping them company'' you mean in a biblical sense?" You ask even if you already can guess the answer.'
+	'"Yeah, probably. If they want to, you''ll have to. It''s a service we offer for our business partners. Keeps them happy and maybe more compliant in the upcoming negotiations. So, '+iif(wl_stats['respect'] < 0, 'keep your head down like always', 'hold your tongue for a change')+' and don''t give us any problems."'
+	'"And my shift?" You inquire.'
+	'"Forget about it. You''ll do this instead. It''ll count as one of your weekly shifts." You think about it for a moment when you realize something. He didn''t say anything about compensation. Do they expect you to do it for free? Or is the reduced workload suppose to be your ''payment''. '+iif(wl_stats['acceptance'] < 40, 'They want you to be a whore, s', 'You''re a whore aren''t you? S')+'houldn''t you get paid?'
+
+	gs 'willpower', 'prostitution', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Demand compensation (<<will_cost>> Willpower)':
+			*clr & cla
+			wl_temp = 1
+			wl_stats['acceptance'] += 2
+			wl_stats['respect'] += 1
+			wl_georgiy['status'] = 1
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'"Aren''t you forgetting something?" You ask Volya after you have given him the chance to talk about it by himself.'
+			'"Uhm... no," he answers unsure what you mean. "Is something on your mind?"'
+			'"Am I a whore or what? Shouldn''t I get paid?" You ask bluntly.'
+			'He sighs and answers as calm as he possibly can. "You have to start to accept that you''re part of something bigger now, a part of our organization and that comes with certain responsibilities." He takes one hand off the steering wheel and signals you to wait until he is finished. "Each of us has to play its part. Especially you, because lets be honest, you are at the bottom of the pecking order," he raises his hand again, when he sees from the corner of his eyes that you open your mouth. "I know it''s not your choice, but it is what it is."'
+			'"Fine," you give in pursing your lips. This sucks. At least at the gas station you would have been paid. It''s not only that you don''t get paid, but you''ll lose money on top of it. But, another part of your brain objects, you''ll have to have sex only once instead with a bunch of strangers. Shouldn''t you be glad?'	
+			
+			gs 'willpower', 'misc', 'self', 'easy'
+			if will_cost <= pcs_willpwr:
+				act 'Complain (<<will_cost>> Willpower)':
+					*clr & cla
+					wl_stats['acceptance'] += 1
+					wl_stats['respect'] -= 2
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+					'"Before you get mad, I get it. It''s my duty to obey," you say with a hint of sarcasm in your voice. "But it''s not really about me not getting paid, but I''ll also lose the money I would have earned today. So I get punished for doing my duty."'
+					'"What? I thought you would have been glad to avoid going to work? Do you want me to drive you to the gas station?" He asks confused and a bit surprised.'
+					'"Uhm... no... But you''re deflecting," you reply. "I stand by it, I''m getting punished."'
+					'"Take it up with Georgiy. If it would be up to me, you wouldn''t have to work at all."'
+					
+					act 'End the discussion': gt 'mod_wlife_demands', 'bbc_intro_2'
+				end
+			else
+				act 'Complain (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			act 'Be glad':
+				cla & *nl
+				wl_stats['acceptance'] -= 1
+				wl_stats['respect'] += 1
+				'You let it go and concentrate on the positive aspect of this whole situation. You won''t have to go to gas station today.' 
+			
+				act 'Continue': gt 'mod_wlife_demands', 'bbc_intro_2'
+			end
+		end
+	else
+		act 'Demand compensation (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Don''t ask for anything':
+		cla & *nl
+		wl_temp = 0
+		wl_stats['acceptance'] -= 2
+		wl_stats['respect'] -= 1
+		'You keep your mouth shut and except that the situation is what it is. It''s not like you really are a whore. You''re part of the Belys organization and that seems to come with several responsibilities. At least you don''t have to work at the gas station today.'
+		
+		act 'Continue': gt 'mod_wlife_demands', 'bbc_intro_2'
+	end
+end
+
+if $ARGS[0] = 'bbc_intro_2':
+	*clr & cla
+	minut += 45
+	gs 'stat'
+	if wl_volya['relationship'] = 0:
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_day.jpg"></center>'
+		'For the rest of the drive you use your phone to take your mind off things until you reach your destination.'
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+		iif(wl_temp = 1, 'After a few minutes of awkward silence', 'For the rest of the drive')+' you two make small talk until you reach your destination.'
+	end
+	killvar 'wl_temp'
+	
+	'"We''re here," he says as he parks the car outside a modern looking house on the outskirts of St. Petersburg. "Send me a text when I should pick you up."'
+	'"Ok," you reply and leave the car. You watch Volya drive away before you walk with clicking heels up the short concrete driveway.'
+	
+	act 'Ring the bell':
+		*clr & cla
+		minut += 3
+		$location_type = 'privat'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/partners/french/introduction/door.jpg"></center>'
+		'After a few minutes a man approaches the glass door. He''s in his late thirties, at least two meters tall and is wearing an expensive suit that perfectly fits his buff body. He flashes you a smile with perfect white teeth that are in sharp contrast to his dark skin. "<i>Enchanté</i>," he greets you in French, takes your hand in his and plants a tender kiss on it. "I was saddened to hear that my favorite Russian <i>nana</i> wasn''t available," he says to you in a thick French accent as his eyes roam every inch of your body. "But I can honestly say that my disappointment has diminished quite a bit."'
+		'You smile up at him and his smile broadens significantly as a result, but with his eyes hidden behind his sunglasses you can''t really tell if he''s truly delighted to see you or if it''s just an act.'
+		'"But where are my manners." He holds out his huge hand. "I''m Henri."'
+			
+		act '<<$pcs_firstname>>':
+			wl_temp = 1
+			$wl_names['okoro'] = $pcs_firstname
+			gt 'mod_wlife_demands', 'bbc_intro_3'			
+		end
+		
+		act '<<$wl_names[''first'']>>': 
+			wl_temp = 0
+			$wl_names['okoro'] = $wl_names['first']
+			gt 'mod_wlife_demands', 'bbc_intro_3'
+		end
+	end
+end
+
+if $ARGS[0] = 'bbc_intro_3':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/partners/french/introduction/door.jpg"></center>'
+	minut += 1
+	gs 'stat'
+	'You put your much smaller hand in his. "<<$wl_names[''okoro'']>>," you say giving him your '+iif(wl_temp = 0, 'fake', 'real')+' name.'
+	'"Lovely," he says and invites you in with a wide open gesture of his left hand. "Why don''t you step inside."'
+	
+	act 'Follow him':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/start_0.mp4"></video></center>'
+		'The interior of the house is spartan and it''s obvious that he doesn''t live here. "I assume you''re only staying here for a short while?" You ask carefully to keep the conversation light. It''s your first time with such a high profile customer and you don''t want to cause any trouble for the Belys and by that causing even more trouble for yourself.'
+		'"It''s one of the places I rent whenever I''m here my <i>jeune fille</i>," he answers while his hand is still holding yours. His thumb tenderly glides over your knuckles as he speaks in his surprisingly soft voice for a man of his size and looks. "But I never stay for long."'
+		'"Why not?" You ask to keep the conversation going. "Ah... Russia doesn''t... How would you say it... Russia never really agrees with me. The food, the wine, the weather, everything lacks flavor," he says and his voice sounds like he pities you and everybody else in your home country. "Except the woman of course. I could never get enough of Russian girls, especially if they are a hot <i>nana</i> like you."'
+		'"Thanks," you reply guessing that ''hot nana'' is a compliment.'
+		'"Before we go upstairs I have to apologize. Normally I would have something to drink, something to eat, but Vadim only called me an hour ago that he was sending a replacement over."'
+		'"That''s alright," you say even if it would have been nice for a change to be treated like more than three holes for cocks. "Maybe we can do that next time you want some company? If you aren''t returning to your regular <i>nana</i>."'
+		'He smiles. "Why don''t we go upstairs and find out if that will be the case?"'
+		
+		act 'Follow him upstairs':
+			*clr & cla
+			minut += 3
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/partners/french/introduction/brother.jpg"></center>'
+			'There is a second man inside the house. He was waiting upstairs in one of the bedrooms. Your smile falters for a brief moment, but you quickly regain control. One or two won''t make a difference, you tell yourself. "Hi, I''m <<$wl_names[''okoro'']>>," you introduce yourself as you take a closer look at the second man. He looks like a leaner, younger version of Henri. You would guess they are brothers or maybe cousins.'
+			'"That''s my brother Léon," Henri tells you and you shake hands with him. Léon has the same captivating smile as his brother and his eyes lit up the moment you stepped inside the room. "He doesn''t speak Russian and his English is equally bad."'
+			'"Do we...," you search for the right words to not be to blunt and break the mood. But Henri shakes his head and smirks. "Our mother taught us to always share our toys and we do that until this day."'
+						
+			gs 'willpower', 'will_unprotected', 'self', 'hard'
+			if will_cost <= pcs_willpwr:
+				act 'Ask to use condoms (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 2
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/start_1.mp4"></video></center>'
+					'"I bet you boys took some risks when you were little," you say. "How about we be on the safe side today?" But he immediately shakes his head and holds a finger in front of his mouth to silence you. "<i>Non, non, non mon chérie,...</i> You can''t do it with...," he searches for the correct word in russian. "With plastic between us. It''s like drinking wine from those boxes as the americans do. It''s unnatural."'
+					'You remember Volyas words not to cause any trouble and accept...'
+					
+					act 'Willingly': wl_temp = 1 & wl_stats['unprotected'] += 2 & gt 'mod_wlife_demands', 'bbc_intro_4' 
+					act 'Grudgingly': wl_temp = 0 & gt 'mod_wlife_demands', 'bbc_intro_4'
+				end
+			else
+				act 'Ask to use condoms (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			act 'Let them decide': wl_stats['unprotected'] += 2 & gt 'mod_wlife_demands', 'bbc_intro_4'
+		end
+	end
+end
+
+if $ARGS[0] = 'bbc_intro_4':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/start_2.mp4"></video></center>'
+	'Henri says something to his brother in French which makes him smile and stand up. As Léon starts to take off the jacket of his expensive suit his brother Henri turns back to you. "<i>Nana</i> are you ready to play?" You nod. "Then what are you waiting for, the playground is right behind you." He says and with a push of his hand he throws you onto the bed. It doesn''t hurt and it''s more playful than rough. As you laugh he takes of his sunglasses and for the first time you have a chance to look into his hazel eyes. You can see lust and curiosity as you start to undress, but no malice like you have seen in Vadims'+iif(wl_iosif['status'] > 1, ' or Iosifs ', ' ')+'eyes.'
+	
+	act 'Undress': gt 'mod_wlife_demands_sex', 'bbc_intro_0'
+end
+
+if $ARGS[0] = 'bbc_intro_end':
+	*clr & cla
+	minut += 1
+	wl_okoro['status'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'Georgiy seems angry about something as you follow him out of the warehouse to the adjacent house.'
+	'"Is something wrong?" You ask. He points at a small wooden box on the couch. "This!" he says as if that would explain everything. "Open it," he adds.'
+	
+	act 'Do it':
+		*clr & cla
+		minut += 3
+		money += 2000
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/partners/french/introduction/wine.jpg"></center>'
+		'Confused you open the lid of the box and reveal a wine bottle with a French label. Inside is a small envelope. You take it and open it as well. It''s a note from Henri and 2.000 <b>₽</b>.'
+		*nl
+		'<i>To my jeune fille:</i>'
+		'<i>I never had the chance to thank you for a wonderful time. Even if our meeting was cut short.</i>'
+		'<i>Maybe we''ll see each other again and we can finish what we started.</i>'
+		'<i>I took the liberty of sending you a little present from me and Léon. A sweet white wine for a sweet white girl.</i>'
+		
+		if wine = 0:
+			wine = 1
+		else
+			'<br>Developer Note: It seems you already have a bottle of wine. You can claim your present through the phone when you have finished your current bottle.'
+			wl_wine = 1
+		end
+		
+		act 'Ask what the problem is': 
+			*clr & cla
+			minut += 10
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+			'"What''s the problem?" you ask looking back and forth between him and the wine.'
+			'"Why were you with the Okoro brothers? Henri and Léon?" he asks furious.'
+			'You instinctivly take a step back. "Volya took me there, Vadim told him to do it," you explain quickly.'
+			'"Fuck! Fuck! Fuck! I knew it," he screams and gives the couch a hard kick. "I told him to leave my girls alone and don''t send them to them."'
+			'You keep your mouth shut and wait for his outburst to end. Best not to remind him that you''re in the room or next time he could take his anger out on you instead of the couch.'
+			'"I''m sorry <<$pcs_nickname>> that you had to go through this," he suddenly says. Go through what? You ask yourself. It wasn''t the worst thing you had to do for the Belys, but somehow going to Henri and Léon crossed some kind of line? You can''t imagine what the problem is when he gives you the explanation with his next words. "I''ll tell him again to keep my girls away from that black scum."'
+			'You stand there, shocked for a second until you have processed the information. Figures that a lowlife like Georgiy is a racist. You remember that he once said something to you along the lines of ''Russian girls are for Russians''. You figured that he was a nationalist, not uncommon in Russia in this day and age, but that sentence get''s a new meaning after todays revelation. This seems to be a contentious issues between the two brothers and it could be useful tidbit of information in the future.'
+			*nl
+			'You take the money and the bottle of wine as he keeps on railing against his brother. At some point he calms down and you continue with your weekly check-in.'
+		
+			act 'Continue': gt 'mod_wlife_georgiy', 'check'
+		end	
+	end	
+end
+
+!!------ Party ------ 
+
+if $ARGS[0] = 'party_demand':
+	*clr & cla
+	killvar 'wl_temp'
+	killvar 'wl_counter'
+	wl_demand['party'] = 1
+	wl_georgiy['timer_week'] = 6
+	if wl_volya['apartment'] = 0: wl_volya['apartment'] = 1
+	wl_party['timer'] = daystart + rand(14,21)
+	if wl_party['status'] = 0 and wl_party['first'] = 0:
+		wl_party['first'] = 1
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		'"There is something else I have to discuss with you. Vadim needs you for a little party next saturday at his house. It''s a small gathering of local politicians, business men and other important pillars of the community," Georgiy starts to explain and your overactive imagination can already picture what is going to happen there. A party, booze, men... "<<$pcs_nickname>>? Are you listening?"'
+		'You sit up straight and look him directly in the eyes. "Of course, Sir. Vadim, party, next saturday, got it," you repeat. "He needs me as... ''entertainment''?" you ask making air quotes around the last word. To your surprise Georgiy shakes his head. "As far as I know he only wants some eye candy," you sigh a breath of reliefe. So no gangbang. "But," Georgiy adds. OK, here we go, you think. "If you want to make some money on the side, I don''t think the men will be angry with you."'
+			
+		act 'Money on the side?':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+			'"It''ll be up to you if you want to take one or two of the men for a spin."'
+			'"It''s optional?" You ask not really sure what your role in the organisation is.'
+			'"Of course, we aren''t savages. You are a whore not a slave... but Vadim might not like it, if you sell yourself to some random men on the street and not put out for important business partners of ours," he explains and it''s obvious that in fact they expect you to be the ''entertainment''.'
+			'"I''m probably correct with the assumption that going there isn''t optional as well?" you ask and his cold eyes tell you everything that you need to know. "Right, OK. Got it."'
+			'"Get to Volya''s place at 19:00 where you can get ready. He''ll also have a nice dress for you to wear."'
+			
+			gs 'willpower', 'misc', 'self', 'medium'
+			if will_cost <= pcs_willpwr:
+				act 'Compensation? (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 2
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/looking_down.jpg"></center>'
+					'You take a deep breath. "I don''t want to be disrespectful, Sir. But will I be compensated for my attendance?" you ask looking at your feet.'
+					'"<<$pcs_nickname>>, you''re a whore. You either earn money yourself or we pay you to fuck and not to look pretty and sip champagne," he says stepping right up into your personal space. "You get paid, when you fuck. Understood?" You instinctivly want to nod, but you stop yourself for a second. You know this isn''t true. You wern''t paid for your ''playdate'' with Henri and Léon. Sure, they sent you money, but wasn''t it more like a gift and not a payment? Should you tell Georgiy about it? It could be risky to accuse his brother, but maybe you can try to stoke the racism inside him to get him on your side.'
+					
+					gs 'willpower', 'misc', 'self', 'hard'
+					if will_cost <= pcs_willpwr:
+						act 'Tell him (<<will_cost>> Willpower)':
+							*clr & cla
+							minut += 5
+							wl_georgiy['timer_okoro'] = daystart
+							gs 'willpower', 'pay', 'self'
+							gs 'stat'
+							'<center><img <<$set_imgh>> src="mod/wlife/images/player/looking_down.jpg"></center>'
+							'"I accept that I''m a whore," you '+iif(wl_stats['acceptance'] < 50, 'lie', 'say without having to lie')+' treading carefully at the beginning. "It''s not that I don''t understand my role Mr. Bely, but you probably remember that your brother made me visit the Okoro brothers," you continue and look up for a split second. Mentioning it obviously triggered him and you can feel the anger radiating from him. "Again, I don''t want to be disrespectful, but I only want a clarification about how I''m going to get payed."'
+							'"Go on," he orders you as you pause for a second to look up to check his reaction. "You said I either get paid by you or the client and the brothers paid me, but...," you look down and blurt out the rest. "I don''t think they knew that they had to pay me, at least we never talked about it and Volya '+iif(wl_georgiy['status'] = 1, 'told me that I won''t get paid', 'didn''t mention that I would get paid')+'."'
+							'You wait for the explosion, that he screams like the last time or that he hits you for accusing Vadim to give you away for free, but instead he coldly asks you. "You''re telling me that those blacks had the decency to pay you and my brother did not?" You nod and close your eyes and wait for the impending pain when he explodes...'
+							*nl
+							'Nothing happens. You finally open your eyes and look up. Georgiy''s face looks like a stone cold mask. "Thank you <<$pcs_nickname>> for bringing this to my attention," he says with a barely controlled voice. "I''ll check with the other whores my brother sends to the Okoro brothers. I''ll get back to you about this."'
+														
+							act 'Promise to go to the party': 
+								cla & *nl
+								wl_georgiy['status'] = 3
+								if wl_georgiy['payment_method'] = 0: wl_whore['shifts_week'] -= 1
+								'"Thanks and I''ll go to the party," you promise. "Make sure that you do," he says.'+iif(wl_georgiy['payment_method'] = 0, ' "And by the way, you will have to work one less shift at the gas station for doing this."', '')
+								
+								act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+							end
+						end	
+					else
+						act 'Tell him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+					end
+						
+					act 'Just nod and move on': wl_georgiy['status'] = 2 & gt 'mod_wlife_georgiy', 'demands_and_favors'
+				end
+			else
+				act 'Compensation? (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Promise to be there': 
+				cla & *nl
+				if wl_georgiy['payment_method'] = 0: wl_whore['shifts_week'] -= 1
+				'"Alright, I''ll be there," you promise. "Make sure that you do," he warns you.'
+					
+				act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+			end
+		end
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		'"There is something else I have to discuss with you. Vadim will have another party next Saturday. Your attendance is required again.'
+			
+		act 'Promise to be there': 
+			cla & *nl
+			if wl_georgiy['payment_method'] = 0: wl_whore['shifts_week'] -= 1
+			'"Alright, I''ll be there," you promise.'
+			'"Make sure that you do," he warns you.'+iif(wl_georgiy['payment_method'] = 0, ' "And like last time, you will have to work one less shift at the gas station for doing this."', '')
+				
+			act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+		end
+	end
+end
+
+if $ARGS[0] = 'party_start':
+	*clr & cla
+	wl_demand['party'] = 0
+	if wl_party['first'] = 1: 
+		wl_party['timer'] += rand(7,14)
+		wl_party['first'] = 2
+	else
+		wl_party['timer'] += rand(14,21)
+	end
+	wl_georgiy['timer_week'] = 0
+
+	$wl_lastwornclothingtype = $clothingworntype
+    wl_lastwornclothingnumber = clothingwornnumber
+	$wl_lastwornpantytype = $pantyworntype
+	wl_lastwornpantynumber = pantywornnumber
+	$wl_lastwornbratype = $braworntype
+	wl_lastwornbranumber = brawornnumber
+	$wl_shoelastworntype = $shoeworntype
+	wl_shoelastwornnumber = shoewornnumber
+	
+	gs 'clothing', 'strip'
+	gs 'stat'
+	
+	if wl_party['status'] = 0:
+		$pantyworntype = 'fashionista'
+		pantywornnumber = 38
+		$braworntype = 'fashionista'
+		brawornnumber = 21
+		pcs_makeup = 3
+		pcs_lipbalm = 8
+		false_lashes = 1
+		pcs_lashes = 4
+	else
+		$pantyworntype = 'sexshop'
+		pantywornnumber = 30
+		$braworntype = 'sexshop'
+		brawornnumber = 23
+		pcs_makeup = 4
+		pcs_lipbalm = 8
+		false_lashes = 1
+		pcs_lashes = 4
+	end
+	
+	wl_dress_1 = 0
+	wl_dress_2 = 0
+	wl_loop_counter = 0
+		
+	:wl_jump_partyoutfit
+	wl_loop_counter += 1
+				
+	wl_rand = rand(1,425)
+
+	gs 'clothing_attributes', 'expensive', wl_rand
+	if (wl_party['status'] = 0 and CloStyle = 4) or (wl_party['status'] > 0 and CloStyle ! 4) or CloBimbo ! 0 or CloSkirtShortness = 0: jump 'wl_jump_partyoutfit'
+
+	if wl_loop_counter >= 1000:
+		'<br>Something went wrong, please report it as a bug.'
+	elseif wl_dress_1 = 0:
+		wl_dress_1 = wl_rand
+		jump 'wl_jump_partyoutfit'
+	else
+		if wl_dress_1 = wl_rand: jump 'wl_jump_partyoutfit'
+		wl_dress_2 = wl_rand
+	end
+	'<center></center>'
+	'<center><table cellspacing="3"><tr><td><img <<$set_imgh>> src="images/pc/clothing/3expensive/<<wl_dress_1>>.jpg"></td><td><img <<$set_imgh>> src="images/pc/clothing/3expensive/<<wl_dress_2>>.jpg"></td></tr></table></center>'	
+		
+	'"Clothes, makeup, everything you need is on the bed," Volya says pointing at the half-open door at the end of the small hallway where two dresses, shoes, underwear and a makeup case is waiting for you.'
+	if wl_party['status'] = 0:
+		'"Wow," you whisper when you catch your first glimpse of the dresses. They look ridiculous expensive.'
+		'"Can I keep the dress?" you ask as you slowly run your fingers over the fabric.'
+		'Volya laughs. "No, of course not." His words burst the little bubble of hope inside you. It would have been nice to keep one of the dresses. It seems having money does have its perks.'
+	else
+		'The dresses are nice like the first time you went to one of Vadim''s party, but a lot more slutty as is the underwear. It''s something a hooker, like you, would wear.'
+	end
+		
+	act 'Left':
+		$clothingworntype = 'expensive'
+		clothingwornnumber = wl_dress_1
+		gt 'mod_wlife_demands', 'party_arrival'
+	end
+	
+	act 'Right':
+		$clothingworntype = 'expensive'
+		clothingwornnumber = wl_dress_2
+		gt 'mod_wlife_demands', 'party_arrival'
+	end		
+end
+
+if $ARGS[0] = 'party_arrival':
+	*clr & cla
+	$shoeworntype = 'pussy'
+	shoewornnumber = 2
+	killvar 'wl_loop_counter'
+	killvar 'wl_rand'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/party_dressing.jpg"></center>'
+	'"Are you going to the party too?" you shout so that he can hear you in the other room as you slip into the dress after doing your makeup in a '+iif(wl_party['status'] = 0, 'vibrant', 'slutty')+' way to match your outfit.'
+	if wl_party['status'] = 0:
+		'"Yes," he says stepping inside. The dress clearly has an effect on him. His eyes seem to eat you up as he explains, "but I will have to work as well. I''m the barkeeper," he adds, when you throw him a questioning look.'
+		'"Barkeeper? I thought the party was at Vadim''s place?" you ask curious, but the only answer you get from Volya is, "wait and see."'
+	end
+
+	act 'Go to the party':
+		*clr & cla
+		hour = 20
+		minut = 15
+		gs 'stat'
+		if wl_party['status'] = 0:
+			'<center><video autoplay height = 480 src="mod/wlife/images/prostitution/party/arrival_0.mp4"></video></center>'
+			'"See you inside," you say'+iif(wl_volya['relationship'] > 0, ' smiling warmly at ', ' to ')+'Volya as you get out of the car. "Take care <<$pcs_nickname>>."'
+			'You close the passenger door and watch him drive away to park the car. At the same time Vadim Bely steps out of the house. He''s dressed in an expensive looking suit and the smile on his lips doesn''t reach his cold eyes. "<<$pcs_nickname>>, it''s so good to see you." He grabs your arm and leads you towards the entrance of his home outside of St. Petersburg. "Likewise," you '+iif(wl_vadim['rough'] < 2, 'lie', 'reply')+' and take a look around. There are a bunch of men looking at you through the window. "Come on in and meet my guests."'
+				
+			act 'Enter the house':
+				*clr & cla
+				minut += 2
+				gs 'stat'
+				'<center><video autoplay height = 480 src="mod/wlife/images/prostitution/party/arrival_1.mp4"></video></center>'
+				'The atmosphere inside the house relaxed, most of the men hold a glass with expensive looking booze in their hands. Scotch or whiskey from the looks of it. They are all dressed nicely and most of them wear suits even nicer than Vadim''s.'
+					
+				act 'Talk to Vadim':
+					*clr & cla
+					minut += 3
+					gs 'stat'
+					'<center><video autoplay height = 480 src="mod/wlife/images/prostitution/party/talk_vadim.mp4"></video></center>'
+					'"Did Georgiy explain everything to you?" He asks and takes a sip of his whiskey.'
+					'You quickly nod. "Yes," you reply and quickly recount what Georgiy told you.'
+					'"OK, good. But remember those men don''t want a cheap whore. They want a sweet young girl that''s impressed by their boring jobs, their boring hobbies and their whole fucking boring life."'
+					'"So, I mingle with them, smile and fake being impressed?" You ask.'
+					'"Exactly, you don''t even have to say much. They don''t care about your opinion. If you are nice and flutter your eyelashes at them everything will be fine."'
+					'You give it a moment''s thought and nod, "no problem, I can do that."'
+					'"Good, the most important thing about today is to avoid every discussion about sex." You look at him confused. "Isn''t that why I''m here?" You ask, but he shakes his head. "No, they don''t want a cheap whore who asks them if they want to fuck. They want a young girl they can woo and conquer. Understood?" You nod. "Good. So, have something to drink, enjoy the party and meet the men," he says, but stops you when you walk away. "One last thing, use your fake name. It''s safer for them, me and you as well."'
+								
+					act 'Mingle': gt 'mod_wlife_demands', 'party_first'
+				end
+			end	
+		else		
+			'<center><video autoplay height = 480 src="mod/wlife/images/prostitution/party/arrival_1.mp4"></video></center>'
+			'The atmosphere inside the house is relaxed, most of the men hold a glass with expensive looking booze in their hands. Scotch or whiskey from the looks of it. They are all dressed nicely and several even wear suits nicer than Vadim''s. You don''t recognize anybody by name'+iif(wl_iosif['status'] > 4, ' except Iosif who greets you with a hint of a nod.', '.')
+			'"Hello <<$wl_names[''first'']>>," a few men near the entrance greet you. They clearly recognize you from the last time you came here.'
+			
+			if wl_party['status'] = 1:
+				act 'Talk to Vadim':
+					*clr & cla
+					minut += 5
+					gs 'stat'
+					'<center><video autoplay height = 480 src="mod/wlife/images/prostitution/party/talk_vadim.mp4"></video></center>'
+					'"Welcome back <<$wl_names[''first'']>>," Vadim greets you using your fake name. "This dress suits you well, really brings out the inner whore in you," he degrades you as he looks closely into your eyes. '+iif(wl_stats['acceptance'] < 50, 'The resistance that flares up in them makes him smile like a bloodhound who senses prey.', 'The acceptance that shows in them conjures up a pleased expression on his face.')+' "Remember what I told you last time, don''t be to aggressive, let them come to you, give them the feeling that you have to be wooed and conquered not paid." You nod and '+iif(wl_vadim['rough'] < 2, 'ignore', 'don''t mind')+' his touches on your soft skin. "Forget all that. There has been a change of plans. Go talk to Iosif. He will explain everything to you."'
+					
+					act 'Talk to Iosif': gt 'mod_wlife_demands', 'party_second'
+				end
+			else
+				act 'Talk to Iosif': gt 'mod_wlife_demands', 'party_second'
+			end
+		end
+	end
+end
+
+!!------ First party ------
+
+if $ARGS[0] = 'party_first':
+	*clr & cla	
+	minut += 10
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/mingle_2.jpg"></center>' 
+	'The atmosphere in the room is different than you would have suspected. Its not formal, but quite jovial and relaxed. They drink, they chat, some smoke cigars and all seem to be really comfortable around each other. "Who have we here?" A well-dressed man with greying hair says as he steps up to you with two more men in tow.'
+	'"Hi, I''m <<$wl_names[''first'']>>," you introduce yourself and shake his hand. "It''s nice to meet you."'
+	'"It''s a pleasure," one of the other men says as he shakes your hand a little bit to long to feel comfortable. "I have never seen you before, is it your first time at one of Vadim''s little gatherings?" You nod as he finally releases your hand. "It''s a bit overwhelming to be honest," you tell them while you smile shyly. "I"ve never been to a party like this before."'
+	'"Why don''t we show you the ropes and introduce you to some of our friends and colleagues?" The man with greying hair says looking at every part of your body except your eyes. "How about we start with getting a drink into your empty hands?"'
+		
+	gs 'willpower', 'drink', 'resist', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Decline (<<will_cost>> Willpower)':
+			wl_temp_alc = 1
+			gs 'willpower', 'pay', 'resist'
+			gt 'mod_wlife_demands', 'party_first_drinking'
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Accept': wl_temp_alc = 0 & gt 'mod_wlife_demands', 'party_first_drinking'		
+end
+
+if $ARGS[0] = 'party_first_drinking':
+	*clr & cla
+	minut += 10
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/bar.jpg"></center>'
+	'The men lead you down a staircase into the cellar with a full-blown bar and a barkeeper. It clearly pays off to be a crime boss. Each piece of furniture in Vadim Bely''s home probably costs more than your parents make in a year. Everything is state of the art and is in total contrast to how he presents himself in Pavlovsk. The old car, the track suit he normally wears, everything is gone. Luxury cars are parked outside the house and modern artworks are hanging on the walls.'
+	*nl
+	if wl_temp_alc = 0:
+		'"Let me order a drink for you," the greying man says and clicks his fingers to get the attention of the barkeeper.'
+		act 'Continue': gt 'mod_wlife_demands', 'party_first_volya'
+	else
+		'"Are you sure about the drink?" the man asks again and clicks his fingers to get the attention of the barkeeper.'
+		gs 'willpower', 'drink', 'resist', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Yes (<<will_cost>> Willpower)':
+				wl_temp_alc = 1
+				gs 'willpower', 'pay', 'resist'
+				gt 'mod_wlife_demands', 'party_first_volya'
+			end
+		else
+			act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Change your mind and have a drink with them': wl_temp_alc = 0 & gt 'mod_wlife_demands', 'party_first_volya'	
+	end
+end	
+
+if $ARGS[0] = 'party_first_volya':
+	*clr & cla
+	minut += 10
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/volya_bar.jpg"></center>'
+	'Volya told you that he would tend to the bar, but it''s still strange to see him all dressed up and smiling as if it was the most natural thing in the world, that somebody clicks his fingers to summon him to do his bidding. "Good evening, what can I get for you?" he asks in such a friendly tone that it has to be fake, but the men either don''t recognize it or don''t care. "A whiskey for me, but not the cheap stuff, give me that one," he says pointing at an expensive looking bottle on the top shelf. One after another they order their drinks until you are the only one left without one. "And what can I bring the young lady?" Volya asks as if he didn''t know you. '+iif(wl_temp_alc = 0, '"How about a nice cocktail," he says more to himself than to Volya as his gaze lingers on your. "Yeah, a cocktail," he continues, "a nice ''Sex on the beach''."', '"Nothing," the grey haired man says sounding disappointed.')
+	'Volya prepares every drink and the complicated cocktail with such ease as if he had done nothing else during his whole life. "Here you go," Volya says and puts the '+iif(wl_temp_alc = 0, 'colorful cocktail', 'whiskey glass')+' down in front of '+iif(wl_temp_alc = 0, 'you.', 'the man.')
+			
+	act 'Follow them back to the main area':
+		*clr & cla
+		minut += 90
+		if wl_temp_alc = 0:
+			gs 'drugs', 'alcohol', 'vodka', 1
+			pcs_hydra = 100
+			pcs_mood += 5		
+		end
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/money.jpg"></center>' 
+		'For the next hour and a half you wander around the room, smile'+iif(wl_temp_alc = 0, ', drink your cocktail ', ' ')+'and have boring conversations about cars, boats or other stuff the guys have recently bought. They use those purchases as a proxy for money to boast about how much they have without having to directly say it. Most of the time you aren''t part of the conversation and it''s enough to compliment them a few times or gush about how great their new stuff looks, when they show you pictures on their phones.'
+		*nl
+		'One of the guys suddenly stumbles towards with a huge grin on his face. His obviously drunk and it''s a miracle that he even is still walking. "'+iif(rand(0,1), 'Wow! Your tits are... like... wow', 'Your boobs are awesome')+'," he shouts so loud that several men turn around to look as he pulls out 100 <b>₽</b>. "You deserve a little something for those." he says and moves his hand towards your breast to stick the money between your breasts.'
+		
+		gs 'willpower', 'misc', 'resist', iif(wl_stats['acceptance'] < 50, 'easy', 'hard')
+		if will_cost <= pcs_willpwr:
+			act 'Push his hand away (<<will_cost>> Willpower)':
+				*clr & cla
+				minut += 5
+				wl_temp_tip = 0
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/mingle_1.jpg"></center>' 
+				'You take a step back and push his hand aside. "I''m sorry, that''s really nice of you, but I''m not that kind of girl," you '+iif(wl_stats['acceptance'] < 50, 'say', 'lie')+'. "Oh, I''m sorry," he says slurring his words. "I..I didn''t mean to imply that you are a ... you know," he apologizes and quickly puts the money back into his pocket.'
+				'When he turns around to walk away, you put your hand on his forearm to stop him. "Don''t worry about it, everybody can make a mistake," you say and conjure up a perfect smile on your lips. "I''m sorry," he repeats regardless and you quickly assure him again that it''s not a problem.'
+				*nl
+				'A few minutes after the incident Vadim steps up to you and the group of men you''re currently chatting with. "I have to borrow <<$wl_names[''first'']>> for a few minutes," Vadim says and grabs you by the arm. "Excuse me," you say, before sending them a last smile and following Vadim down the stairs to the bar. "Volya is waiting for you in the garage to take you home," he explains as you walk past the bar where another young man is mixing drinks.'
+					
+				act 'Follow him to the garage': gt 'mod_wlife_demands', 'party_first_vadim'
+			end
+		else
+			act 'Push his hand away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		act 'Let him do it':
+			*clr & cla
+			money += 100
+			wl_temp_tip = 1
+			gs 'fame', 'city', 'prostitute', 2
+			gs 'arousal', 'foreplay', rand(3,6)
+			gs 'arousal', 'end'
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/party/tip.mp4"></video></center>'
+			iif(wl_stats['acceptance'] < 50, 'Smile, you remind yourself and conjure up an inviting smile on your lips', 'Instinctively you put on an inviting smile')+' while you let him stick the money between your tits. "Thanks, sweetie," you say as he gropes your tits until he walks away with a stupid grin on his face. After he walks away you realize that everybody around you is still watching you. You quickly pull the cash out of your cleavage and readjust your clothes.'
+			*nl
+			'A few minutes after the incident Vadim steps up to you and the group of men you''re currently chatting with. "I have to borrow <<$wl_names[''first'']>> for a few minutes," Vadim says and grabs you by the arm. "Excuse me," you say, before sending them a last smile and following Vadim down the stairs to the bar. "Volya is waiting for you in the garage to take you home," he explains as you walk past the bar where another young man is mixing drinks.'
+					
+			act 'Follow him to the garage': gt 'mod_wlife_demands', 'party_first_vadim'
+		end
+	end
+end
+
+if $ARGS[0] = 'party_first_vadim':
+	*clr & cla
+	minut += 5	
+	if wl_temp_alc = 1 or wl_temp_tip = 1:
+		gs 'pain', 8, 'head', 'slap'
+		gs 'pain', 8, 'head', 'slap'
+		gs 'pain', 10, 'tummy', 'slam'
+		wl_party['punished'] = wl_temp_alc + wl_temp_tip	
+		wl_stats['loyalty'] -= 5
+		wl_stats['respect'] -= 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+		'The moment the door closes shut behind you Vadim slaps you hard and before you can react his second hand has curled into a fist and punches you so hard in your stomach that the air is pushed out of your lungs. Pain shoots through your knees, when they hit the hart concrete floor. "Are you too retarded to follow even simple commands?" Vadim''s voice is so loud that he even drowns out the scream that escapes from your lips. Tears mixed with mascara run down your cheeks while he continues to scold you. '+iif(wl_temp_alc = 1, 'I told you to be nice, but you can''t even have a single drink with them? What''s wrong with you? They are important business men, so accept a fucking drink if they offer it to you. Or do you think you are to good for them? You aren''t, you''re trash," he shouts. "', '"')+iif(wl_temp_tip = 1, '"Did you have to behave like a complete slut? You were suppose to be a nice girl-next-door and not some fucking whore who lets people put money between their tits."', '')
+		'"I''m sorry Va...," you correct yourself before you can make another mistake, "Mr. Bely. I didn''t do it on purpose and it won''t happen...," you try to apologize, but he immediately stops you right in your tracks with another hard slap. "Shut up you stupid bitch, I don''t want to hear your excuses," he screams'+iif(wl_temp_tip = 1, '. "If you want to behave like a slut, I can help you with that," he growls ', ' ')+'and unbuckles his belt and pulls down his pants to reveal his hard cock. It seems hitting you turns him on. "Since you seem to be too stupid to use your mouth for talking, use it for something you''re actually good at."'
+							
+		act 'Open your mouth obediently': gt 'mod_wlife_demands_sex', 'party_first_punishment'
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/vadim_bely.jpg"></center>'
+		money += 1000
+		wl_stats['loyalty'] += 5
+		wl_stats['respect'] += 2
+		gs 'arousal', 'foreplay', -4
+		'"You did good," Vadim tells you as you walk towards Volya''s car. "I was unsure if you were already, ready for this, but you were nice to my guests, had a drink with them and I liked how you handled the drunk idiot." He pulls out a few bills and hands you a 1000 <b>₽</b>, when you arrive at the car. "Here this is for you."'
+		'"Thanks, Mr. Bely," you say, but he''s already walking back towards the door.'
+				
+		act 'Get into the car': gt 'mod_wlife_demands', 'party_end'
+	end
+	gs 'stat'
+end
+
+!!------ Second Party ------
+
+if $ARGS[0] = 'party_second':
+	*clr & cla
+	minut += 10
+	gs 'stat'
+	if wl_party['status'] = 1:
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/party/chat_iosif_1.mp4"></video></center>'
+		'The atmosphere has changed considerably in comparison to the first party you attended. All eyes in the room follow your every move as if they''re expecting something to happen. Iosif dark smile and hungry eyes only fuel your suspicion. He''s standing alone out of earshot of the other guests. "Welcome <<$pcs_nickname>>," Iosif greets you coldly. "You look wonderful tonight. It really reveals your inner whore."'
+		'It''s a wonder that you manage to stop yourself from replying with an annoyed eye roll. "Thanks, but Vadim already gave me the exact compliment."'
+		'Iosif smirks. "Great minds think alike," he says and takes a sip of his expensive whiskey before continuing. "Vadim arranged a little performance for tonight and you''ll be the main attraction."'
+		'"Performance? What? Do you want me to dance on the table and perform a striptease for everybody?" You asks half serious half sarcastically.'
+		'"Striptease?" Iosif scoffs. "I mean sure undressing will be part of it, but no <<$pcs_nickname>>, I''m going to fuck you in front of everybody like a live porn screening."'
+		'"A... what? You want to fuck me? Here? In front of everybody?" You say anger creeping into your voice.'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 5
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/party/chat_vadim.mp4"></video></center>'
+			'"Do you have a problem with that?" A familiar voice asks behind you. It''s Vadim. Your anger vanishes in an instant and is replaced by a cold feeling of dread. "That would really be a shame. You''re all dressed up for the occasion."'
+			'You turn to Vadim and choose the only non-suicidal response to his question. "Of course I don''t have a problem with that Mr. Bely. I was just a bit surprised."'
+			'"Great," Vadim says and claps his hands. "Your doing me a huge favor <<$wl_names[''first'']>>," he says using your fake name again and emphasizing it as his gaze turns towards Iosif. "Make sure to give everybody a good show Iosif."'
+			'"Sure boss," he says and Vadim walks away to his guest, probably to tell them that the show is going to start. "Are you ready <<$wl_names[''first'']>>?"'
+			
+			gs 'willpower', 'misc', 'self', 'hard'
+			if will_cost <= pcs_willpwr:
+				act 'No (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 5
+					wl_stats['respect'] += 2
+					wl_stats['loyalty'] -= 2
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><video autoplay loop src="mod/wlife/images/prostitution/party/chat_iosif_2.mp4"></video></center>'
+					'"No, of course not. I''m not ready to get fucked here in front of everybody," you hiss and shake your head in disbelief. "How can I ever be ready for something like this?"'
+					'Iosif gives you a stern look. "I need to know that you can do that. They don''t want to see you break down and cry like a little girl."'
+					'"Don''t worry about that Iosif. I didn''t say I was incapable of doing it. I''ll manage."'
+					'"If you say so," he grabs your wrist and pulls you towards the middle of the room. "Then it''s time to prove that to me. Get down on your knees."'
+					
+					act 'Do it': gt 'mod_wlife_demands_sex', 'degradation_0'
+				end
+			else
+				act 'Protest (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Yes':
+				*clr & cla
+				minut += 5
+				wl_stats['respect'] -= 2
+				wl_stats['loyalty'] += 2
+				gs 'stat'
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/party/chat_iosif_2.mp4"></video></center>'
+				'You give yourself a mental shake, square your shoulders and take a deep breath. You can do that <<$pcs_nickname>>, you tell yourself. "Yes."'
+				'Iosif looks at you a bit surprised. "Really? I would have thought you would protest more."'
+				'"No, I''m totally ready," you say more to yourself than to him. "And now let''s do it before I change my mind."'
+				
+				act 'Get down on your knees': gt 'mod_wlife_demands_sex', 'degradation_0'
+			end
+		end
+	else
+		if pcs_horny < 100 and $wl_fetish['humiliation'] = 'yes': pcs_horny = 100
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/party/chat_iosif_2.mp4"></video></center>'
+		'The anticipation is virtually palpable, when you cross the room to reach Iosif. They all know what''s about to happen. Especially the faces in the room, you haven''t seen before, are now staring at you with a mixture of disbelief, arousal and curiosity. "I''m guessing it will be like last time?" you ask Iosif'+iif($wl_fetish['humiliation'] = 'no', '.', ' and try to hide your anticipation.')+' He nods and empties his half-full whiskey glass with two big gulps. "Ready?" You let your eyes wander around the room looking at the faces of each and every man in the room. They all know what''s going to happen next'+iif($wl_fetish['humiliation'] = 'no', '. Think about the money, just think about the money, you silently say to yourself. Everything else doesn''t matter. Vadim doesn''t matter, Iosif doesn''t matter, the men don''t matter. It will be over quickly and you''ll be richer to endure a few minutes of humiliation.', ', but there''s nobody in this room that is looking forward to this more than you.')
+		
+		act 'Get degraded again': gt 'mod_wlife_demands_sex', 'degradation_repeat'
+	end
+end
+
+!!------ Party end ------
+
+if $ARGS[0] = 'party_end':
+	*clr & cla
+	minut += 30
+	if wl_party['status'] = 0:
+		wl_party['status'] = 1
+		if wl_temp_tip = 1:
+			if pcs_mood > 40: 
+				pcs_mood -= 40
+			else
+				pcs_mood = 5
+			end
+			cumspclnt = 20
+			gs 'cum_cleanup'
+			pcs_makeup = 1
+			willpowermax += 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_sad_night.jpg"></center>'
+			'Volya doesn''t say a word as he drives out of the garage. He only hands you some tissues to clean yourself up, but for the first half of the drive home you only sit in the passenger seat staring blankly out of the window, cum, tears and ruined makeup still on your face. A few '+iif(wl_timer['startday'] > 60, 'months', 'weeks')+' ago you would have broken down in his car, but the time with the gang has toughened you against such a treatment. Still you''re not in the mood to talk to Volya and judging by his behavior he seems to get the unspoken signals you send him.'
+			*nl 
+			'"You need to clean yourself up and get back into your own clothes, before we get home," Volya says suddenly and rips you out of your dark thoughts. Without talking to him you quickly undress inside the car and put your old clothes back on before Volya drops you off at home.'	
+		else
+			pcs_mood = 100
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'Free booze, a thousand rubles and hopefully earning some good will with Vadim makes the evening a complete success. That it was actually a fun evening despite the sometimes boring conversations is not important, but a nice bonus. You and Volya backbite about the rich snobs at Vadim''s party for the drive home.'
+		end
+	elseif wl_party['status'] = 1:
+		wl_party['status'] = 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_'+iif($wl_fetish['humiliation'] = 'no', 'sad_night', 'talk')+'.jpg"></center>'
+		'Nobody says a word as Volya leads you down the stairs to the garage where his car is waiting for you. Half-naked, your pussy and tits still exposed you pass by the empty bar. Every single one of Vadim''s guest was upstairs watching you.'
+		'"Get in," Volya says and helps you into the car where a box of tissues, a white envelope, a bottle of water and a pain pill is waiting for you inside. He knew, you realize. Volya knew what would happen.' 
+		'"You knew?" you ask as Volya starts the car and you gulp down the painkiller with some water. "Why didn''t you say anything?"'
+		'"Vadim wanted your most honest reaction and that meant I wasn''t allowed to tell you."'
+		'You quietly look at him and shake your head for a second before starting to clean your face. Your too drained to argue with him and in the end it won''t accomplish anything. "OK," you say and open the envelope. Inside is 5,000 <b>₽</b>.'
+		'"Vadim really appreciated your performance tonight. He told me halfway through that you deserve more than usual. More than the party girls usually get."'
+		'"Thanks...," you murmur unsure about what to say to that and pocket the cash. Vadim thought that she was better than his other whores. Wow that''s so awesome, you think sarcastically. Your mom would be so proud.'
+		
+		pcs_hydra = 100
+		pain['killer'] += 1
+		money += 5000
+		cumspclnt = 20
+		gs 'cum_cleanup'
+		pcs_makeup = 1
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_'+iif($wl_fetish['humiliation'] = 'no', 'sad_night', 'talk')+'.jpg"></center>'
+		'You don''t talk much. Too drained to speak you only swallow the painkiller he gives you and pocket the cash. 5,000 <b>₽</b> like last time.'
+		
+		pcs_hydra = 100
+		pain['killer'] += 1
+		money += 5000
+		cumspclnt = 20
+		gs 'cum_cleanup'
+		pcs_makeup = 1
+	end
+	gs 'stat'
+	
+	$clothingworntype = $wl_lastwornclothingtype
+	killvar '$wl_lastwornclothingtype'
+	clothingwornnumber =  wl_lastwornclothingnumber
+	killvar ' wl_lastwornclothingnumber'
+	$pantyworntype = $wl_lastwornpantytype
+	killvar '$wl_lastwornpantytype'
+	pantywornnumber = wl_lastwornpantynumber
+	killvar 'wl_lastwornpantynumber'
+	$braworntype = $wl_lastwornbratype
+	killvar '$wl_lastwornbratype'
+	brawornnumber = wl_lastwornbranumber
+	killvar 'wl_lastwornbranumber'
+	$shoeworntype = $wl_shoelastworntype
+	killvar '$wl_shoelastworntype'
+	shoewornnumber = wl_shoelastwornnumber
+	killvar 'wl_shoelastwornnumber'
+
+	killvar 'wl_temp_tip'
+	killvar 'wl_temp_alc'
+	
+	act 'Get out of the car': gt $wl_loc[0], $wl_loc[1]
+end
+
+!!------ Prison ------
+
+if $ARGS[0] = 'prison_demand':
+	*clr & cla
+	minut += 2
+	wl_prison['status'] = 1
+	wl_prison['payment'] = 2000
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'A second after you stepped outside the warehouse, another working girl approaches you from behind. "<<$pcs_nickname>>, Georgiy needs to see you again. He forgot to tell you something," she says. When you ask her why, she crosses her arms and remains silent. Taking a step to the side, she waits for you to start walking, probably making sure you do as you''re told so that she doesn''t get in trouble. With no other choice but to go, you head straight back to his office.'
+	'"Georgiy? You wanted to see me?" You question meekly as you step into the room. His head snaps up and he waves his hand, beckoning you closer.'
+	'"Yeah, I have a job for you. It''s a once a week thing, you''ll do it instead of working at the gas station," Georgiy tells you matter-of-factly. "I''ll pay you <<wl_prison[''payment'']>> <b>₽</b> for every shift you work at the prison.'
+	'You stand there quietly, wondering if you should ask what this job is as you watch him stick a cigarette between his lips and strike a lighter a few times before it lights.'
+	'"You''ll be working at a prison for awhile," he continues. Seeing your confused expression, he coughs up a smoky laugh. "Worried? Don''t be, I''ve had other girls work this place before with no problems. If you follow directions and do as you''re told, you won''t have anything to worry about."'
+	'The cigarette bounces between his lips as he speaks, at times it looks like it will fall out out but it stays in place through the conversation. "Like I said, it''s only once a week, and you can decide on what day you''ll go. Just tell Volya when he comes to pick you up to take you there."'
+	
+	act 'Hesitate':
+		*clr & cla
+		minut += 2
+		wl_stats['respect'] += 1
+		wl_stats['loyalty'] -= 2
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		 '"I don''t know..." You reply. "A prison sounds dangerous."'
+		if wl_stats['loyalty'] < 40:
+			'As soon as the words leave your lips, you regret ever speaking. Wringing your hands nervously, you look down to the floor as Georgiy''s eyes narrow dangerously. The silence stretches on for a while as he lets you marinate in your fear of what he''s going to do to you for doubting and questioning him.'
+			'"Once a week, you''ll be there, <<$pcs_nickname>>," he repeats to you again, this time slower so you can take in his every word. "Understand?"'
+        
+            act 'I understand':
+				cla & *nl
+				'"Of course, I understand," you reply quickly. "Is there anything else I can do for you?"'
+				'"No, now get going. I''m a busy man.'
+				
+				act 'Leave': gt 'mod_wlife_georgiy', 'leave'
+			end
+		else
+			wl_prison['payment'] = 2500
+			'Georgiy reaches up and pulls the cigarette away, slowly exhaling a white cloud of smoke. "A bit anxious, eh? Well, you don''t have a choice in the matter, <<$pcs_nickname>>."'
+			'Hearing this, your shoulders slump and you sigh in defeat. "Right..."'
+			'"But," Georgiy continues. "Since you have proven yourself in the last few weeks, I''m going to be paying you a bit more than the other girls, alright? How does <<wl_prison[''payment'']>> for every shift," he says before pointing at the door. "Now get going, I''m a busy man."'
+        
+            act 'Leave': gt 'mod_wlife_georgiy', 'leave'
+        end
+	end
+	
+	act 'Accept the job':
+		cla & *nl
+		wl_stats['respect'] -= 2
+		wl_stats['loyalty'] += 5
+		gs 'stat'
+		'"Sure," you reply without hesitation. You have learned that it''s best to do as you''re told. "Is there anything else I can do for you?"'
+		'"No, now get going. I''m a busy man.'
+		
+		act 'Leave': gt 'mod_wlife_georgiy', 'leave'
+	end
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Demand more money (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 1
+			wl_stats['respect'] += 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+			'"I don''t know..." You reply. "A prison sounds dangerous. I think... I think it makes sense that I get paid more for doing something like this."'
+			if wl_stats['loyalty'] < 40:
+				'As soon as the words leave your lips, you regret ever speaking. Wringing your hands nervously, you look down to the floor as Georgiy''s eyes narrow dangerously. The silence stretches on for awhile as he lets you marinate in your fear of what he''s going to do to you after you''ve tried to extort more money out of him.'
+				'"Once a week, you''ll be there, <<$pcs_nickname>>," he repeats to you again, this time slower so you can take in his every word. "Understand?"'
+			else
+				wl_prison['payment'] = 3000
+				'Georgiy reaches up and pulls the cigarette away, slowly exhaling a white cloud of smoke. "You really think I''d be so cruel and unfair?" he asks but you know he isn''t looking for an answer to his question. "But," Georgiy continues. "Since you have proven yourself in the last few weeks, I''m going to be paying you a bit more than the other girls, alright? How does <<wl_prison[''payment'']>> for every shift," he says before pointing at the door. "Now get going, I''m a busy man."'
+			end
+			
+			act 'Leave': gt 'mod_wlife_georgiy', 'leave'
+		end
+	else
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+	
+--- mod_wlife_demands ---------------------------------
+

+ 353 - 0
locations/mod_wlife_demands_sex.qsrc

@@ -0,0 +1,353 @@
+# mod_wlife_demands_sex
+
+!!------ BBC -------
+
+if $ARGS[0] = 'bbc_intro_0':
+	*clr & cla
+	if npc_sex['A908'] = 0: guy += 1 & npc_sex['A908'] = 1
+	if npc_sex['A909'] = 0: guy += 1 & npc_sex['A909'] = 1
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/start_3.mp4"></video></center>'
+	'You quickly slip out of your clothes while the two men do the same and reveal two impressive cocks. "Wow," you blurt out and can''t take your eyes off of them. Léon says something in french to his brother which makes him laugh. "What did he say?" you ask as you take both of their semi-hard members into your hands and give them some exploratory strokes.'
+	'"That you seem to like the toys we brought to our playdate," he answers as their members perk up a bit in your tender hands, but as they grow bigger and bigger fear creeps up inside your mind. "<<$wl_names[''okoro'']>>? Is something wrong?"'
+	gs 'boystat', 'A909'
+	$orgasm_or = 'no'
+	gs 'arousal', 'hj', 2, 'prostitution'
+	gs 'stat'
+		
+	gs 'willpower', 'sex', 'self', 'easy'	
+	if will_cost <= pcs_willpwr:	
+		act 'No (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'You shake your head and push any doubts about the size of their tools aside. "No, of course not," you reply and softly pull on each of their dicks to lure them onto the bed.'
+			'"Ah, I see, you''re only to eager to get started," Henri says as he kneels next to you while Léon lays down and pulls you onto his belly, his thick cock resting between your ass cheeks.'
+				
+			act 'Guide his cock into your pussy': gt 'mod_wlife_demands_sex', 'bbc_intro_1'
+		end
+	else
+		act 'No (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end	
+		
+	act 'Yes':
+		cla & *nl
+		minut += 2
+		gs 'stat'
+		'"Not really, but I''m bit concered with the size of your... toys," you answer honestly. Henri looks to his brother and quickly says something to him in french. Lèon shrugs and points to the floor next to the bed. "He suggest you lube us up a bit with your pretty mouth.." Henri translates.'
+		
+		act 'Kneel between them': 
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part1_0.mp4"></video></center>'
+			'You try to pay equal attention to both cocks as you lick along the shafts to coat both of them in your saliva. It''s a pleasant change that they never force you to do anything and instead let you do what you want. You try several times to take them down your throat, but even with your best effort you can''t swallow their dicks completely. In any case the attempts really stimulate your saliva production and their members are quickly covered in a thick layer of it.'
+			'"Ready?" Henri asks. You nod biting softly down on your lower lip. He picks you up from the ground as if you are as light as a feather and carries you to the bed. He then kneels next to you while Léon lays down and pulls you onto his belly his wet thick cock resting between your ass cheeks.'
+			gs 'arousal', 'bj', 5, 'prostitution', 'deepthroat'
+			gs 'stat'
+		
+			act 'Guide his cock into your pussy': gt 'mod_wlife_demands_sex', 'bbc_intro_1'
+		end
+	end
+end
+
+if $ARGS[0] = 'bbc_intro_1':
+	*clr & cla
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part1_1.mp4"></video></center>'
+	'You carefully guide his cock towards the entrance of your hole. "<i>Doucement</i>," Léon says and Henri doesn''t need to translate it for you. The tone of his voice makes it clear that you should do it slowly. You look into his eyes and you realize that this isn''t a quick fuck to claim a '+iif(age < 18, 'underage', 'young')+' russian teen. It''s as much about your pleasure than theirs. The realization melts away the rest of your doubts and anxiety. You let go and slide down on his cock.'
+	'A long deep moan escapes your mouth when he fills you to the brim and you use your hands to steady yourself on his muscular chest while it takes a few breaths to let your pussy adjust to the thick intrusion. Slowly you move your hips back up and slide back down. You repeat it and increase the pace as you grow more comfortable with his size.'
+	*nl
+	'Again Henri says something in french to Léon as he puts his hand on your head to guide it towards his cock. Meanwhile Léon puts his hands on your hips, pushing his hips upwards to meet yours and takes the fucking part over for you as Henri''s cock slides into your mouth.'
+	gs 'arousal', 'vaginal', 4, 'prostitution'
+	gs 'stat'
+	
+	act 'Suck him':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part1_2.mp4"></video></center>'
+		'You can''t coordinate your movement. Léon''s cock hammering into your pussy is just too much to handle. Henri has to hold your head steady to fuck it. It isn''t rough. He applies just enough pressure to keep you in place, but you don''t care anyway. Your mind has melted away into a puddle of lust.'
+		'Without warning Léon turns you over on your back and for a second you feel a horrible emptiness between your legs. Then he is back inside and your eyes flutter shut as his cock hits your g-spot and your orgasm approaches rapidly.'
+		'"Cum for us my sweet <i>fille</i>," Henri says his voice barely piercing through the thick fog in your mind as he pushes a few loose strands of sweaty hair out of your face.'
+		$orgasm_txt = 'It''s the end of the world. It must be. You died and went to heaven. The orgasm stops everything and nothing matters as it rolls over you like a force of nature.'
+		$orgasm_or = 'custom'
+		gs 'arousal', 'vaginal', -12, 'prostitution'
+		gs 'arousal', 'bj', 6, 'prostitution'
+		gs 'arousal', 'kiss', -1, 'prostitution'
+		gs 'stat'
+		
+		act 'Recover':
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part1_3.mp4"></video></center>'
+			'"Stop," you manage to say when Léon keeps going, slower but steadily. Your overstimulated pussy trembles around his cock as you try to make sense of the world before the fire starts to burn between your legs again.'
+			'"But why would you want him to stop?" Henri asks as he watches you intently. "It''s one of the wonders of the world, the female orgasm is beautiful, pure perfection."'
+			'"I can''t, please...," you stammer before another orgasm builds up. "Please, st...," you try to say ''stop'' before your mind becomes to stupid again to handle way to complicated stuff like speaking, but when you find the strength to say it again the words change inside your mouth. "Please more."'
+			$orgams_or = 'no'
+			gs 'arousal', 'vaginal', 6, 'prostitution'
+			gs 'stat'
+			
+			act '...':
+				*clr & cla
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/intermezzo.mp4"></video></center>'
+				'Is there a phone ringing? The tiny voice in your head asks while your body approaches the next orgasm. Why is there a phone ringing? It''s annoying. You try to shut it out, concentrate on the cock moving inside you when the brothers talk to each other in french and you hear the name ''Vadim'' before Henri picks up his phone and answers it.'
+				*nl
+				'Your mind is split between just letting go, to keep feeling good, but the other part urges you to listen in on the conversation. They''re Vadim''s business partners and maybe you will hear something important, something that will help you.'
+				gs 'arousal', 'vaginal', 6, 'prostitution'
+				gs 'stat'
+				
+				gs 'willpower', 'misc', 'self', 'hard'
+				will_cost = will_cost * 3
+				if will_cost <= pcs_willpwr:
+					act 'Try to concentrate on the phone call (<<will_cost>> Willpower)':
+						*clr & cla 
+						'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/partners/french/introduction/phone.jpg"></center>'
+						wl_investigation['okoro'] = 1
+						gs 'arousal', 'vaginal', 6, 'prostitution'
+						gs 'arousal', 'end'
+						gs 'willpower', 'pay', 'self'
+						gs 'stat'
+						'You can only here one side of the conversation.'
+						*nl
+						'"I''m in the middle of something Vadim, can''t it wait?"'
+						'"<i>Oui</i>, exactly. <i>Oui</i>, she''s perfect."'
+						'"<i>Non</i>," you can hear the disapproval in his voice after Vadim told him something. "I told you a million times a hooker is to be worshiped not... ." You miss the next part as Léon breaks your concentration with a hard thrust and you can''t contain your loud moan. "Did your hear that? Beautiful. What could be more honorable than a woman who brings pleasure to the world, who doesn''t deny her nature?"'
+						'"Let''s move on," he says after a reply from Vadim. "You didn''t call me to ask about your whore. What''s going on?" He listens for a minute as your body trails the edge of an orgasm. You want it, you need the release, but you also want to hear what they are talking about. "There is nothing wrong with the shipment. Everything went smoothly at the port. <i>Oui</i>, <i>Oui</i> they took the money like always. The corruption in your country is the only good thing about it apart from the women of course."'
+						'"It''s 1,000 kilos. <i>Oui</i>, pure as a catholic nun. You''ll get it tomorrow." He listens for a few seconds. "<i>Non</i>, she can''t hear us, don''t worry. Léon is distracting her." He pauses again. "Really? Why is it so urgent?" He asks annoyed and sighs loudly after listening to Vadim again. "Well, it''s risky to get it out of the shipping container at the moment. Even in Russia it''s not a good idea to transport a ton of cocaine during the day. That will cost extra. Let''s say 10%." Another pause. "Ok, 5% but send me the number of this hot <i>nana</i> I want to finish someday what I started."'
+						*nl
+						'Fuck it, you don''t care anymore. You can''t concentrate on the conversation and give up. There is only one thing you want to do...'
+						
+						act '...orgasm':
+							*clr & cla
+							'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part2_0.mp4"></video></center>'
+							$orgasm_txt = 'You scream out Léons name, asking him to fuck you harder, making you cum again and only an insignificant part of your brain notices that Henri leaves the room as he says something to Vadim about you being to loud.'
+							$orgasm_or = 'custom'
+							gs 'arousal', 'vaginal', 2, 'prostitution'
+							gs 'arousal', 'end'
+							gs 'stat'
+							'Suddenly Léon stops and pulls you off of the bed. You know what''s about to happen next.'
+						
+							act 'Open your mouth': gt 'mod_wlife_demands_sex', 'bbc_intro_2'
+						end
+					end
+				else
+					act 'Listen to the conversation (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				act 'Enjoy the moment':
+					*clr & cla
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part2_0.mp4"></video></center>'
+					wl_stats['acceptance'] += 5
+					$orgasm_txt = 'Fuck it, you don''t care right now. You completely let go and scream out Léons name, asking him to fuck you harder, making you cum again and only an insignificant part of your brain notices that Henri leaves the room as he says something to Vadim about you being to loud.'
+					$orgasm_or = 'custom'
+					gs 'arousal', 'vaginal', 2, 'prostitution'
+					gs 'arousal', 'end'
+					gs 'stat'
+					'This time Léon stops after a few more seconds and pulls your recovering body off of the bed. You know what''s about to happen next.'
+					
+					act 'Open your mouth': gt 'mod_wlife_demands_sex', 'bbc_intro_2'
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'bbc_intro_2':
+	*clr & cla
+	minut += 2
+	swallow += 1
+	facial += 1
+	gs 'cum_call', 'mouth', 'A908', 1
+	gs 'cum_call', 'face', 'A908', 1
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/partners/french/introduction/part2_1.mp4"></video></center>'
+	'He shoots his cum all over your face and into your open mouth. Instinctivly you collect the seed on your lips with your tongue and swallow it all down.'
+	'"I have bad news <i>mon chéri</i>," Henri says as Léon leaves the room. "I have to go, I''m truly sorry, but I have important business to attend to." To your surprise he bows down to you and puts a tender kiss on your mouth that had his brothers cum on them only a few seconds ago.'
+	'He helps you up and it''s a miracle that you can stand on your shaky legs. "The bath is down the hall. You can freshen up before you have to leave."'
+	
+	act 'Follow him':
+		*clr & cla
+		minut += 15
+		pcs_sweat = 0
+		cumspclnt = 15
+		gs 'cum_cleanup'
+		gs 'arousal', 'kiss', -1
+		gs 'arousal', 'end'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/partners/french/introduction/cleanup.jpg"></center>'
+		'The shower is running when you enter the bath and you can see Léon soaping up his body behind the glass. He and Henri exchange a few words as you clean up the cum from your face.'
+		'"Léon will wait until somebody picks you up," Henri says as he hurries out of the bathroom.'
+		*nl
+		'Fifteen minutes later Lèon kisses you goodbye before Volya picks you up and drives you home.'
+		
+		act 'Arrive back in Pavlovsk': minut += 35 & gt 'pav_complex', 'start'
+	end
+end
+
+!!------ First Party ------
+
+if $ARGS[0] = 'party_first_punishment':
+	*clr & cla
+	gs 'boystat', 'A900', 1
+	gs 'arousal', 'bj', 6, 'sub', 'rough', 'deepthroat', 'humiliation'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/party/vadim/deepthroat_0.mp4"></video></center>'
+	'"You stupid bitch," Vadim insults you as he grabs your head and rams his dick down your throat in one aggressive move. You gag around his meat, but his grip tightens even more to hold your face in place. "I have never seen such a worthless cunt in my whole life," he continues to berate you as a burning feeling starts to build inside your lungs. Air! You need air! You slap your hand against his thigh, when dark spots show up in your field of vision and the feeling in your lungs becomes unbearable. "Don''t worry it''s not like there is anything in your head that can get damaged," he says mockingly, but contrary to his words he releases his grip and let''s you pull his dick out of your throat to suck in a deep breath of soothing cold air.'
+	'"Please," you begin to plead to him, but he has other plans for you. His strong tattooed hands grab your head and a second later you can taste his cock again, as he uses your mouth like a pussy. The assault continues for several minutes and he chokes you on his cock again and again and again. Every time you have to slap his leg to make sure that you doesn''t suffocate around his cock.'
+	
+	act 'Continue':
+		*clr & cla
+		pcs_makeup = 0
+		gs 'pain', 8, 'head', 'slap'
+		gs 'pain', 8, 'head', 'slap'
+		gs 'pain', 8, 'head', 'slap'
+		gs 'arousal', 'bj', 6, 'sub', 'rough', 'deepthroat', 'humiliation'
+		gs 'stat'	
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/party/vadim/deepthroat_1.mp4"></video></center>'
+		'"How dare you!" His scream suddenly echoes through the garage, when you slap his leg again. "Do you really believe you are allowed to hit me?" he continues to scream as he pulls out of your drooling mouth. He slaps your head hard before pushing his cock back into you. Tears well up in your eyes and black streaks of mascara form on your face as he repeats his action several times. Pulling his cock out, hitting you, pushing back in,...'
+		
+		act 'Suffer through it':
+			*clr & cla
+			minut += 2
+			swallow += 1	
+			facial += 1
+			gs 'pain', 8, 'head', 'slap'
+			gs 'pain', 8, 'head', 'slap'
+			gs 'cum_call', 'mouth', 'A900', 1
+			gs 'cum_call', 'face', 'A900', 1
+			gs 'arousal', 'end'
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/prostitution/party/vadim/deepthroat_2.mp4"></video></center>'
+			'Finally your ordeal comes to an end, when Vadim pulls out without hitting you again. "Come on, finish it," he commands. You instinctively grab his cock with your hand and it only takes you a few strokes before his cock shoots his cum all over your face and into your open mouth.'
+			'Vadim pulls his pants up as you sob kneeling on the ground. "Volya," he shouts. "Get this trash out of here." He leaves the garage without saying another word as strong hands pick you up and help you walk towards the car.'
+			
+			act 'Get inside': gt 'mod_wlife_demands', 'party_end'
+		end
+	end
+
+end
+
+!!------ Second Party ------
+
+if $ARGS[0] = 'degradation_0':
+	*clr & cla
+	gs 'boystat', 'A902'
+	gs 'fame', 'city', 'prostitute', 20
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/party/iosif/degrade_start.mp4"></video></center>'
+	'You kneel down and pull down the zipper of Iosif pants. If you weren''t the center of attention before, you''re it now. The men come closer while you pull out his cock and not even bother with a handjob to get him hard. A blowjob will do it much more quickly and the sooner you finish him off the sooner it will be all over and you can get out of here.'
+	'"Look at that," one of the men around you says as your mouth closes around Iosif''s dick and softly start to suck it. "Such a slut," another one comments accompanied by a flash of light. Out of the corner of your eyes you can see him pointing his smartphone at you and he isn''t the only one. More and more phones appear and Vadim doesn''t say anything to stop them.'
+	'This is bad, really bad. What if somebody uploads it? Your face will be clearly visible and everybody who knows you and sees it will recognize you. Suddenly all those thoughts are shoved aside, when Iosif roughly grabs you by the throat. "That''s enough of this soft shit bitch. I have a wife at home if I want something like that," he pushes you away from him and pulls down his pants. "Get on the table," Iosif orders you and points at the small couch table. This is going to be your stage for your ''performance''.' 
+	
+	gs 'arousal', 'bj', 6, 'sub', 'prostitution'
+	gs 'stat'
+	
+	act 'Undress':
+		*clr & cla
+		$orgasm_or = 'no'
+		gs 'pain', 10, 'asscheeks', 'slap'
+		gs 'pain', 10, 'hair', 'pull'
+		gs 'pain', 10, 'throat', 'choke'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/party/iosif/degrade_0.mp4"></video></center>'
+		'Iosif roughly pulls the top of your dress down to reveal your tits to the prying eyes and camera lenses and before you can even try to protest he does the same for your ass and pussy. Lights flash again as more pictures are taken, but most men just point their phones at you. They''re filming every second of what is about to happen.' 
+		'"Take this," Iosif says coldly and your eyes grow wide as one hand grabs your hair pulling your head back as he shoves his cock into your pussy. "Does it hurt bitch?" Iosif asks tauntingly. "Does your pussy hurt, when I force myself inside?"'
+		'Not knowing what''s the right answer you reply instinctively. "Yes, it hurts," you answer, but it was the wrong one. Iosif violently pulls your head back again as his other hand slaps your ass hard. "Stop lying, your loose cunt can take anything." And as if he wants to prove himself right he starts to hammer his cock into you without mercy.'
+		'"You, yes you," Iosif says to one of the other men. "Punish her. Show her what we do to lying sluts."'
+		'You don''t know what is going to happen and you try to prepare yourself for anything. Maybe they slap you again or something similar you guess, but then a man steps into your field of vision and puts his hand on your throat and holds the smartphone close to your face. He isn''t grabing you like Iosif did. He''s full on choking you. You wince and struggle to breath, but he doesn''t stop. "Bitch wants to breath?" he asks and you try to nod, but it''s impossible with Iosif pulling your head back. This is all too much. The pain, the lack of air and the cock ravaging your pussy is way too much to handle. Your mind goes completely blank apart from one realization that burns itself into you. Being humiliated and degraded like this turns you...'
+		
+		gs 'arousal', 'vaginal', 6, 'sub', 'rough', 'humiliation', 'prostitution'
+		gs 'stat'
+		
+		act '... off': $wl_fetish['humiliation'] = 'no' & gt 'mod_wlife_demands_sex', 'degradation_1'
+		act '... on': $wl_fetish['humiliation'] = 'yes' & gt 'mod_wlife_demands_sex', 'degradation_1'
+	end
+end
+ 
+if $ARGS[0] = 'degradation_1':
+	*clr & cla
+	minut += 6
+	gs 'pain', 10, 'hair', 'pull'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/party/iosif/degrade_1.mp4"></video></center>'
+	if $wl_fetish['humiliation'] = 'yes':
+		if pcs_horny < 100: pcs_horny = 100
+		$orgasm_or = 'custom'
+		'This is turning you on like crazy. The lack of air doesn''t matter it even heightens the burning desire radiating off your wet pussy. You know that nothing really bad will happen to you. Not now, not in front of so many people, so many witnesses and as if to prove you right the guy let''s go of your throat.'
+		$orgasm_txt = '"Yes," you shout as your legs start to shake and your pussy pulsates around Iosif''s hard cock. Your own admission only intensifies your orgasm.'
+	else
+		pcs_horny = 0
+		'This is horrible and you don''t understand why there are girls who like being treated this way. The lack of air is only intensifying your fear and lack of arousal. A small part of you wonders if something really bad is going to happen to you today, but as if to prove you wrong the guy let''s go of your throat.' 
+	end
+	'Iosif laughs, when he hears you greedily suck in soothing air into your lungs. "You love that, don''t you <<$wl_names[''first'']>>?" You instinctively try to nod, but his hand still keeps your head in place. "Yes," you '+iif($wl_fetish['humiliation'] = 'yes', 'answer honestly.', 'manage to lie.')
+	'This elicits an immediate reaction by the audience. "Disgusting whore," one man says in spits in your face. "Pure filth," another one adds.'
+	
+	if $wl_fetish['humiliation'] = 'yes': gs 'arousal', 'vaginal', -9, 'sub', 'rough', 'humiliation', 'prostitution'
+	if $wl_fetish['humiliation'] = 'no': '"Yes," you lie and without thinking about it you start to moan loudly and let your body tremble in a fake orgasm.'
+	'Some men hoot, when you scream your'+iif($wl_fetish['humiliation'] = 'yes', ' ', ' fake ')+'pleasure into the room. "Look at that piece of trash cum," Iosif scoffs still pounding rapidly into you. "Why don''t you help her to cool down guys," he suggests and loud laughter erupts in the room, when two men empty their drinks over your head'+iif(pcs_makeup > 1, ' ruining your makeup in the process and ', ' ')+'drenching your hair and face in a mixture of white wine and vodka.'
+	
+	if pcs_makeup > 1: pcs_makeup = 0
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 6
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/party/iosif/degrade_2.mp4"></video></center>'
+		'Suddenly Vadim is by your side and grabs your head and move it so that you have to stare in several cameras. His head comes really close and you''re the only one who can hear his words, when he quietly whispers into your ear. "Tell them what you are. What you are <<$pcs_nickname>>, not <<$wl_names[''first'']>>. Tell them the truth about you."'
+		'"I''m a whore," you say loudly and in your head you repeat those words with '+iif($wl_fetish['humiliation'] = 'no', 'a loud <b>not</b> mashed between ''a'' and ''whore''.', 'an emphasis on <b>whore</b>.')+' "I exist to please men," you '+iif($wl_fetish['humiliation'] = 'no', 'lie', 'say')+'. "Holes to be used."'
+		'"Yes you are," Vadim agrees. "And who made you realize this truth?"'
+		'"You!" you scream. "Thank you Mr. Bely for helping me finding the truth," you '+iif($wl_fetish['humiliation'] = 'no', 'lie and even if you know there is no other choice than to say this you still hate yourself for it.', 'say and in this moment as you moan like a bitch in heat you mean it.')
+		
+		if $wl_fetish['humiliation'] = 'yes':
+			$orgasm_or = 'custom'
+			$orgasm_txt = 'You cum again. Harder even than the first time and it''s liberating. You let go and don''t care what you have become, who is fucking you and that a group of strangers are filming this. Right now the only thing that matters in your life is Iosif magnificent cock. "Fuck me harder," you scream into the room as a second orgasm comes crushing down on you.'
+			gs 'arousal', 'vaginal', -9, 'sub', 'rough', 'humiliation', 'prostitution'
+		else
+			pcs_mood = 0
+		end
+	
+		gs 'stat'
+		
+		act 'Continue': gt 'mod_wlife_demands_sex', 'degradation_end'
+	end
+end
+
+if $ARGS[0] = 'degradation_repeat':
+	*clr & cla
+	minut += 20
+	if $wl_fetish['humiliation'] = 'yes': $orgasm_or = 'custom'
+	gs 'fame', 'city', 'prostitute', 20
+	gs 'pain', 10, 'hair', 'pull'
+	gs 'pain', 10, 'throat', 'choke'
+	gs 'pain', 10, 'asscheeks', 'slap'
+	gs 'pain', 10, 'head', 'slap'
+	gs 'pain', 10, 'breasts', 'slap'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/party/iosif/degrade_'+rand(0,1)+'.mp4"></video></center>'
+	'There is no foreplay, no time to prepare yourself. Like last time Iosif takes charge and fucks you forcefully, surrounded by Vadim''s guest. Iosif conducts the audience like a conductor does his orchestra. He encourages them to choke you, spit on you, slap your ass, your face or your tits. They call you everything they can think of and all the time Iosif forces you tell them that they''re right. That you are a slut, a whore or simply just trash.' 
+	
+	$orgasm_txt = 'In the end you can''t take it anymore. Your legs tremble, heat flares up between your legs as an intense orgasm hits you. '+iif($wl_fetish['humiliation'] = 'yes', 'It feels like a wonderful reward for accepting the truth about what you are.', 'You hate yourself for reacting to their degrading treatment like that, but it''s impossible to stop it from happening.')
+	
+	gs 'arousal', 'vaginal', iif($wl_fetish['humiliation'] = 'yes', -30, -10), 'sub', 'rough', 'humiliation', 'prostitution'
+	gs 'stat'
+	
+	act 'Continue': gt 'mod_wlife_demands_sex', 'degradation_end'
+end
+
+if $ARGS[0] = 'degradation_end':
+	*clr & cla
+	minut += 3
+	facial += 1
+	gs 'pain', 10, 'hair', 'pull'
+	gs 'pain', 6, 'legL', 'ache'
+	gs 'pain', 6, 'legR', 'ache'
+	if wl_pictures['iosif_3'] = 0: wl_pictures['iosif_3'] = 1
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/party/iosif/degrade_end.mp4"></video></center>'
+	'"Worthless cunt," Iosif shouts and pulls his engorged meat out of your abused hole. "Get on your knees," he commands you, but doesn''t bother to wait if you obey. He pulls you down from the table by your hair and aims his cock at your face. "Open your fucking mouth." You do, but it''s too late. He''s already pumping a huge load on to your face and drenches it in cum.'
+	if wl_party['status'] = 1:
+		wl_stats['acceptance'] += 5
+		'When he''s done and you somehow manage to stand up on your shaking legs, Vadim says. "What do you say, when somehow gives you such a big present?"'
+		'Laughter erupts again as you turn around to face Iosif and '+iif($wl_fetish['humiliation'] = 'no', 'you plaster a fake smile on your face.', 'a happy smile forms on your face.')+' "Thank you."'
+	end
+	'"Good whore," Vadim praises you as a familiar shape comes up behind Iosif. It''s Volya who looks at you with a neutral expression. "And Volya would you be so kind to take out the trash?" Vadim adds viciously.'
+	'"Sure," Volya says and gently puts one hand around your arm to lead you out of the room.'
+			
+	gs 'cum_call', 'face', 'A902', 1
+	gs 'arousal', 'end'
+	gs 'stat'
+			
+	act 'Follow Volya': gt 'mod_wlife_demands', 'party_end'
+end
+
+--- mod_wlife_demands_sex ---------------------------------
+

+ 827 - 0
locations/mod_wlife_functions.qsrc

@@ -0,0 +1,827 @@
+# mod_wlife_functions
+
+!!ToDo: Use func('shortgs', 'rand_pick', 'string', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta') after next devbuild for insults or small descriptions
+
+!!Willpower
+if $ARGS[0] = 'will_unprotected':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	if $ARGS[1] = 'resist':
+		if wl_stats['unprotected'] <= 90:
+			will_cost = (10 + wl_stats['unprotected'] + will_calc) / 10
+		else
+			will_cost = (100 + will_calc)/10
+		end
+	else
+		if wl_stats['unprotected'] <= 90:
+			will_cost = (100 - wl_stats['unprotected'] + will_calc) / 10
+		else
+			will_cost = (10 + will_calc)/10
+		end	
+	end
+	gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
+end
+
+if $ARGS[0] = 'will_rimming':
+	gs 'willpower', 'calc'
+		
+	if $ARGS[1] = 'self':
+		if stat['rimming_give'] <= 90:
+			will_cost = (100 - stat['rimming_give'] + will_calc)/10
+		else
+			will_cost = (10 + will_calc)/10
+		end
+	elseif $ARGS[1] = 'force':
+		if stat['rimming_give'] <= 40:
+			will_cost = (110 - will_enforced - stat['rimming_give'] + will_calc)/10
+		else
+			will_cost = (70 - will_enforced + will_calc)/10
+		end	
+	else
+		if stat['rimming_give'] <= 90:
+			will_cost = (10 + stat['rimming_give'] + will_calc)/10
+		else
+			will_cost = (100 + will_calc)/10
+		end
+	end
+	gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
+end
+
+if $ARGS[0] = 'will_atm':
+	gs 'willpower', 'calc'
+		
+	if $ARGS[1] = 'self':
+		if wl_stats['atm'] <= 90:
+			will_cost = (100 - wl_stats['atm'] + will_calc)/10
+		else
+			will_cost = (10 + will_calc)/10
+		end
+	elseif $ARGS[1] = 'force':
+		if wl_stats['atm'] <= 40:
+			will_cost = (110 - will_enforced - wl_stats['atm'] + will_calc)/10
+		else
+			will_cost = (70 - will_enforced + will_calc)/10
+		end	
+	else
+		if wl_stats['atm'] <= 90:
+			will_cost = (10 + wl_stats['atm'] + will_calc)/10
+		else
+			will_cost = (100 + will_calc)/10
+		end
+	end
+	gs 'willpower', 'difficulty', '<<$ARGS[2]>>'
+end
+
+if $ARGS[0] = 'will_acceptance':
+	if $ARGS[1] = 'resist':
+		if wl_stats['acceptance'] > 60:
+			gs 'willpower', 'prostitution', 'resist', 'hard'
+		elseif wl_stats['acceptance'] > 30:
+			gs 'willpower', 'prostitution', 'resist', 'medium'
+		else
+			gs 'willpower', 'prostitution', 'resist', 'easy'
+		end
+	elseif $ARGS[1] = 'force':
+		if wl_stats['acceptance'] < 20:
+			gs 'willpower', 'prostitution', 'force', 'hard'
+		elseif wl_stats['acceptance'] < 40:
+			gs 'willpower', 'prostitution', 'force', 'medium'
+		else
+			gs 'willpower', 'prostitution', 'force', 'easy'
+		end
+	else
+		if wl_stats['acceptance'] < 20:
+			gs 'willpower', 'prostitution', 'self', 'hard'
+		elseif wl_stats['acceptance'] < 40:
+			gs 'willpower', 'prostitution', 'self', 'medium'
+		else
+			gs 'willpower', 'prostitution', 'self', 'easy'
+		end
+	end
+end
+
+!! Condoms & STDs
+if $ARGS[0] = 'std_check':
+	wl_std_check_rand = rand(0,10)
+	if protect = 1:
+		wl_std_rand = rand(0,1000)
+		if wl_std_rand = 1000: gs 'mod_wlife_functions' , 'std_chance'
+	else
+		if $ARGS[1] = 'high':
+			wl_std_rand = rand(0,120)
+		else
+			wl_std_rand = rand(0,100)
+		end
+		if wl_std_rand >= 80: gs 'mod_wlife_functions' , 'std_chance'
+	end
+end
+
+if $ARGS[0] = 'std_chance':
+	if cheatHealth = 0:
+		if wl_std_check_rand = 8:
+			!!herpes
+			if rand(1, 100) > 90:
+				if GerpesOnce = 0:
+					GerpesOnce = 1
+					Venera += 1
+					Gerpes += 1
+					GenHerpes = 1					
+				end
+			end
+		elseif wl_std_check_rand = 7:
+			!!syphilis
+			if rand(1, 100) > 95: Venera += 1
+			if SifacOnce = 0:
+				SifacOnce = 1
+				Sifilis += 1
+			end
+		elseif wl_std_check_rand >= 5 and wl_std_check_rand < 7:
+			!!gonorrhea/triper
+			if rand(1, 100) > 95: Venera += 1
+			if TriperOnce = 0:
+				TriperOnce = 1
+				Triper += 1
+			end
+		elseif wl_std_check_rand < 5:
+			!!candidiasis/thrush
+			if rand(1, 100) > 85:
+				if KandidozOnce = 0:
+					KandidozOnce = 1
+					Kandidoz += 1
+				end
+			end
+		end
+	end	
+end
+
+if $ARGS[0] = 'std_check_oral':
+	wl_std_check_rand = rand(0,10)
+	if protect = 1:
+		wl_std_rand = rand(0,1000)
+		if wl_std_rand = 1000: gs 'mod_wlife_functions' , 'std_oral_chance'
+	else
+		if $ARGS[1] = 'high':
+			wl_std_rand = rand(0,120)
+		elseif $ARGS[1] = 'low':
+			wl_std_rand = rand(0,90)
+		else
+			wl_std_rand = rand(0,100)
+		end
+		if wl_std_rand >= 80: gs 'mod_wlife_functions' , 'std_oral_chance'
+	end
+end
+
+if $ARGS[0] = 'std_oral_chance':
+	if cheatHealth = 0:
+		if wl_std_check_rand >= 5 and wl_std_check_rand < 7:
+			if rand(1, 100) > 95: Venera += 1
+			if TriperOnce = 0:
+				TriperOnce = 1
+				TriperOral += 1
+				if rand (0,100) < 15: TriperOralSigns = 1 
+			end
+		elseif wl_std_check_rand = 7:
+			if rand(0,1) = 1:
+				!!syphilis
+				if rand(1, 100) > 95: Venera += 1
+				if SifacOnce = 0:
+					SifacOnce = 1
+					Sifilis += 1
+				end
+			end
+		elseif wl_std_check_rand < 5:
+			!!candidiasis/thrush
+			if rand(1, 100) > 85:
+				if KandidozOnce = 0:
+					KandidozOnce = 1
+					Kandidoz += 1
+				end
+			end
+		elseif wl_std_check_rand = 8:
+			!!herpes
+			if rand(1, 100) > 90:
+				if GerpesOnce = 0:
+					GerpesOnce = 1
+					Venera += 1
+					Gerpes += 1
+					OrHerpes = 1
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'remove_condom':
+	if prezik > 0:
+		prezik -= 1
+	else
+		prezikcount -= 1
+	end
+end
+
+if $ARGS[0] = 'your_condom':
+	wl_whore['condom'] = 1
+	protect = iif(prezik > 0,1,0)
+	if prezik > 0:
+		if rand(1,prezik) <= badprezik: 
+			badprezik -= 1
+			noprotect = 1
+			sexcontra = 7
+		else
+			sexcontra = 3
+		end
+		prezik -= 1
+		sexcontra = iif(preziktype = 2,7,sexcontra) 
+	else
+		sexcontra = 0
+	end
+end
+
+if $ARGS[0] = 'his_condom':
+	$bwa_boy = iif($ARGS[1] = '',$boydesc,$ARGS[1])
+	protect = 1
+	sexcontra = 3
+	*p '<<ucase(mid($bwa_boy,1,1))>><<mid($bwa_boy,2,len($bwa_boy)-1)>> takes his condom and puts it on his <<dick>> centimeter dick.'
+end
+
+!!Acceptance
+if $ARGS[0] = 'acceptance_check':
+	if wl_stats['acceptance'] < 20: 
+		if $ARGS[1] = 'normal':
+			pcs_mood -= 20
+		else
+			pcs_mood -= 10
+		end
+	elseif wl_stats['acceptance'] >= 20 and wl_stats['acceptance'] < 40:
+		if $ARGS[1] = 'normal':
+			pcs_mood -= 10
+		else
+			pcs_mood -= 5
+		end
+	elseif wl_stats['acceptance'] >= 40 and wl_stats['acceptance'] < 60 and $ARGS[1] = 'normal':
+		pcs_mood -= 5
+	elseif wl_stats['acceptance'] >= 60 and $ARGS[1] = 'regular':
+		pcs_mood += 5
+	end
+end
+
+!!Background: Black
+if $ARGS[0] = 'darkness':
+	fcolor = rgb(255, 255, 255)
+	bcolor = rgb(0, 0, 0)
+	lcolor = rgb(106, 90, 205)
+end
+
+if $ARGS[0] = 'parameters':			
+	!!Reset
+	protect = 0
+	sexcontra = 0
+	$wl_client_condom = 'tbd'
+	$wl_client_cumshot = 'tbd'
+	
+	!!Client
+	gs 'npcgeneratec', 0, 'client', rand(18,65)
+	gs 'boyStat', $npclastgenerated
+	
+	!!Time
+	if hour > 19 or hour < 7:
+		$wl_work_time = 'night'
+	else
+		$wl_work_time = 'day'
+	end
+		
+	!!STD
+	if pcs_apprnc = -10 and rand(1,10) < 8: 
+		wl_whore['std_mod'] = 1
+	else
+		wl_whore['std_mod'] = 0
+	end
+
+	!!Non-Visible Cum	
+	if cumloc[0] = 1: 
+		wl_whore['cum_vaginal_mod'] = 1
+	else
+		wl_whore['cum_vaginal_mod'] = 0
+	end
+	
+	if cumloc[3] = 1: 
+		wl_whore['cum_anal_mod'] = 1
+	else
+		wl_whore['cum_anal_mod'] = 0
+	end
+	
+	!!Visible Cum (Dressed)
+	if cumloc[7] = 1 or cumloc[11] = 1 or cumloc[13] = 1 or cumloc[15] = 1: 
+		wl_whore['cum_dressed'] = 1
+	else
+		wl_whore['cum_dressed'] = 0
+	end
+	
+	!!Visible Cum (Undressed)
+	if cumloc[1] = 1 or cumloc[4] = 1 or cumloc[8] = 1 or cumloc[14] = 1 or cumloc[16] = 1: 
+		wl_whore['cum_undressed'] = 1
+	else
+		wl_whore['cum_undressed'] = 0
+	end
+	
+	!!Client Likes/Dislikes
+	if rand(1,10) = 10:
+		wl_whore['mesec_mod'] = 1
+	else
+		wl_whore['mesec_mod'] = 0
+	end
+	
+	if rand(1,100) > 97:
+		wl_whore['dirty_anal_mod'] = 1
+	else
+		wl_whore['dirty_anal_mod'] = 0
+	end
+	
+	if rand(1,10) = 10:
+		wl_whore['cum_visible_mod'] = 1
+	else
+		wl_whore['cum_visible_mod'] = 0
+	end
+	
+	!!Age
+	if vidage < 18 and rand(1,10) < 7:
+		wl_whore['vidage_mod'] = 1
+	else
+		wl_whore['vidage_mod'] = 0
+	end
+	
+	!!Scene
+	wl_scene_rand = rand(1,100)
+	
+	if wl_scene_rand <= 50:
+		if mesec = 0 or wl_whore['mesec_mod'] = 1:
+			$wl_whore['client_scene'] = 'Vaginal'
+		elseif mesec > 0 and wl_whore['mesec_mod'] = 0 and (wl_whore['enema'] = 1 or wl_whore['dirty_anal_mod'] = 1):
+			$wl_whore['client_scene'] = 'Anal'
+		else 		
+			$wl_whore['client_scene'] = 'Blowjob'
+		end		
+	elseif wl_scene_rand > 50 and wl_scene_rand <= 75:
+		if wl_whore['enema'] = 1 or wl_whore['dirty_anal_mod'] = 1:
+			$wl_whore['client_scene'] = 'Anal'
+		elseif wl_whore['enema'] = 0 and wl_whore['dirty_anal_mod'] = 0 and (mesec = 0 or wl_whore['mesec_mod'] = 1):
+			$wl_whore['client_scene'] = 'Vaginal'
+		else 		
+			$wl_whore['client_scene'] = 'Blowjob'		
+		end
+	else
+		$wl_whore['client_scene'] = 'Blowjob'
+	end
+		
+	!!Regular Worker
+	if wl_whore['customer_total'] < 10: 
+		wl_whore['regular_chance'] = 0
+	elseif wl_whore['customer_total'] >= 10 and wl_whore['customer_total'] <= 25: 
+		wl_whore['regular_chance'] = 1
+	elseif wl_whore['customer_total'] > 25 and wl_whore['customer_total'] <= 50: 
+		wl_whore['regular_chance'] = 2
+	elseif wl_whore['customer_total'] > 50 and wl_whore['customer_total'] <= 100: 
+		wl_whore['regular_chance'] = 3
+	elseif wl_whore['customer_total'] > 100 and wl_whore['customer_total'] <= 250: 
+		wl_whore['regular_chance'] = 4
+	end
+	
+	!!Chance to find a client
+	wl_whore['client_chance'] = hotcat * 10 + wl_whore['regular_chance'] * 5 + rand(1,100) + wl_whore['pity_counter']
+	if $pantyworntype = 'sexshop' and CloSkirtShortness > 4: wl_whore['client_chance'] += 10
+	
+	!!Client	
+	if wl_whore['regular_timer'] ! daystart and $wl_whore['client_scene'] ! 'Blowjob':
+		if (wl_whore['regular_chance'] = 1 and rand(1,100) > 95) or (wl_whore['regular_chance'] = 2 and rand(1,100) > 90) or (wl_whore['regular_chance'] = 3 and rand(1,100) > 80) or (wl_whore['regular_chance'] = 4 and rand(1,100) > 60):
+			wl_whore['regular'] = 1
+		else
+			wl_whore['regular'] = 0
+		end
+	else
+		wl_whore['regular'] = 0
+	end
+	
+!!ToDo: Rough Clients
+!!	if wl_whore['regular'] = 0:	
+!!		if (wl_work_day = 0 and rand(1,100) > 90) or (wl_work_day = 1 and rand(1,100) > 95): 
+!!			if wl_whore['rough'] = 1
+!!		else
+!!			wl_whore['rough'] = 0
+!!		end
+!!	end
+	
+	if wl_whore['regular'] = 0 and wl_whore['rough'] = 0 and wl_whore['std_mod'] = 0 and rand(1,100) > iif($wl_brand['text_pubic'] = 'cumslut', 84, 92): 
+		wl_whore['client_creampie'] = 1
+	else
+		wl_whore['client_creampie'] = 0
+	end
+		
+	if wl_whore['rough'] = 1 or (wl_whore['rough'] = 0 and rand(1,100) > 40):
+		wl_whore['propose'] = 0
+	else
+		wl_whore['propose'] = 1 
+	end	
+end
+
+if $ARGS[0] = 'payment':
+	!!Basic Payment
+	if $ARGS[1] = 'pav':
+		if $wl_whore['pav_scene'] = 'blowjob':
+			wl_whore['payment'] = 425
+		elseif $wl_whore['pav_scene'] = 'anal':
+			wl_whore['payment'] = 1200
+		else
+			wl_whore['payment'] = 1000
+		end
+	else
+		if $wl_whore['client_scene'] = 'Blowjob':
+			wl_whore['payment'] = 350
+			if $ARGS[1] = 'condom_no': wl_whore['payment'] += 75
+			if $ARGS[2] = 'inside_yes': wl_whore['payment'] += 50
+		elseif $wl_whore['client_scene'] = 'Vaginal':
+			wl_whore['payment'] = 700
+			if $ARGS[1] = 'condom_no': wl_whore['payment'] += 300
+			if $ARGS[2] = 'inside_yes': wl_whore['payment'] += 300
+		elseif $wl_whore['client_scene'] = 'Anal':
+			wl_whore['payment'] = 900
+			if $ARGS[1] = 'condom_no': wl_whore['payment'] += 200
+			if $ARGS[2] = 'inside_yes': wl_whore['payment'] += 100
+		end
+	end
+
+	!!Bonus
+	wl_whore['payment_mod'] = hotcat * 10
+	if pcs_makeup = 0:
+		wl_whore['payment_mod'] -= 20
+	elseif pcs_makeup > 1:
+		wl_whore['payment_mod'] += pcs_makeup * 10
+	end
+		
+	if mesec > 0 and $wl_whore['client_scene'] = 'Vaginal':
+		if wl_whore['mesec_mod'] = 0: 
+			wl_whore['payment_mod'] -= 200
+		else
+			wl_whore['payment_mod'] += 300
+		end
+	end
+		
+	if wl_whore['enema'] = 0 and $wl_whore['client_scene'] = 'Anal': 
+		if wl_whore['dirty_anal_mod'] = 0: 
+			if $ARGS[1] = 'condom_no':
+				wl_whore['payment_mod'] -= 600
+			elseif $ARGS[1] = 'condom_yes':
+				wl_whore['payment_mod'] -= 300
+			end
+		else
+			wl_whore['payment_mod'] += 300
+		end
+	end
+	
+	if wl_whore['cum_dressed'] = 1: 
+		if wl_whore['cum_visible_mod'] = 0: 
+			wl_whore['payment_mod'] -= 200
+		else
+			wl_whore['payment_mod'] += 300
+		end
+	end
+	
+	wl_whore['payment_mod'] += pcs_mood - 50
+	
+	if $pantyworntype = 'sexshop' and CloSkirtShortness > 4: wl_whore['payment_mod'] += 50
+	
+	if wl_whore['vidage_mod'] = 1:
+		wl_whore['payment_mod'] += 50 * (18 - vidage)
+	else
+		wl_whore['payment_mod'] -= 50 * (18 - vidage)
+	end
+	
+	if ($wl_whore['client_scene'] = 'Blowjob') or ($wl_whore['pav_scene'] = 'blowjob'):
+		wl_whore['payment_mod'] = wl_whore['payment_mod'] / 2
+		if pirsA = 2: 
+			wl_whore['payment_mod'] += 50
+		elseif pirsA = 4:
+			wl_whore['payment_mod'] += 75
+		elseif pirsA > 0 and pirsA < 10000:
+			wl_whore['payment_mod'] += 25
+		end
+	end
+	wl_whore['payment'] += wl_whore['payment_mod']
+	wl_whore['payment_backup'] = wl_whore['payment']
+	
+	!!Client Satisfaction
+	wl_whore['payment'] = (wl_whore['payment'] * (100 + wl_whore['client_satisfaction'])) / 100
+	
+	!!Rounding
+	wl_whore['payment'] = func('mod_wlife_functions', 'exact_round', wl_whore['payment'], 10)
+	wl_whore['payment_backup'] = func('mod_wlife_functions', 'exact_round', wl_whore['payment_backup'], 10)
+end
+
+if $ARGS[0] = 'reputation_check':
+	if wl_stats['loyalty'] < -100:
+		wl_stats['loyalty'] = -100
+	elseif wl_stats['loyalty'] > 100:
+		wl_stats['loyalty'] = 100
+	end
+	
+	if wl_stats['loyalty'] < -60:
+		$wl_stats['loyalty'] = 'illoyal'
+	elseif wl_stats['loyalty'] < -40:
+		$wl_stats['loyalty'] = 'untrustworthy'
+	elseif wl_stats['loyalty'] < -20:
+		$wl_stats['loyalty'] = 'unreliable'
+	elseif wl_stats['loyalty'] < 20:
+		$wl_stats['loyalty'] = 'unproven'
+	elseif wl_stats['loyalty'] < 40:
+		$wl_stats['loyalty'] = 'reliable'
+	elseif wl_stats['loyalty'] < 60:
+		$wl_stats['loyalty'] = 'trustworthy'
+	else
+		$wl_stats['loyalty'] = 'loyal'
+	end
+	
+	if wl_stats['respect'] < -100:
+		wl_stats['respect'] = -100
+	elseif wl_stats['respect'] > 100:
+		wl_stats['respect'] = 100
+	end
+	
+	if wl_stats['respect'] < -60:
+		$wl_stats['respect'] = 'whore'
+	elseif wl_stats['respect'] < -30:
+		$wl_stats['respect'] = 'slut'
+	elseif wl_stats['respect'] < 30:
+		$wl_stats['respect'] = 'chick'
+	elseif wl_stats['respect'] < 60:
+		$wl_stats['respect'] = 'girl'
+	else
+		$wl_stats['respect'] = 'woman'
+	end
+	
+	if wl_stats['loyalty'] < -60:
+		wl_debt['interest'] = 100
+		wl_debt['weekly_interest'] = 15
+		$wl_debt['interest'] = '<br>He doesn''t trust you at all and demands na interest rate of <<wl_debt[''interest'']>>%.'
+	elseif wl_stats['loyalty'] < -40:
+		wl_debt['interest'] = 60
+		wl_debt['weekly_interest'] = 15
+		$wl_debt['interest'] = '<br>He doesn''t trust you and demands an interest rate of <<wl_debt[''interest'']>>%.'
+	elseif wl_stats['loyalty'] < -20:
+		wl_debt['interest'] = 40
+		wl_debt['weekly_interest'] = 10
+		$wl_debt['interest'] = '<br>He''s skeptical about trusting you and demands an interest rate of <<wl_debt[''interest'']>>%.' 
+	elseif wl_stats['loyalty'] < 20:
+		wl_debt['interest'] = 25
+		wl_debt['weekly_interest'] = 10
+		$wl_debt['interest'] = '<br>He''s a bit skeptical about trusting you and demands an interest rate of <<wl_debt[''interest'']>>%.'
+	elseif wl_stats['loyalty'] < 40:
+		wl_debt['interest'] = 15
+		wl_debt['weekly_interest'] = 5
+		$wl_debt['interest'] = '<br>He trusts you and only demands an interest rate of <<wl_debt[''interest'']>>%.'
+	else
+		wl_debt['interest'] = 10
+		wl_debt['weekly_interest'] = 5
+		$wl_debt['interest'] = '<br>He trusts you a lot and only demands an interest rate of <<wl_debt[''interest'']>>%.'
+	end
+end	
+
+if $ARGS[0] = 'abortion':
+	abort += 1
+	abortionbirthdate = daystart
+
+	gs 'medical_din', 'remove_preg'
+	knowpregloss = 2
+
+	abortrand = rand(0, 10)
+	if age > 18:
+		if abortrand < 10:sterilewb += 1
+		if abortrand = 10:sterilewb += 10
+	else
+		if abortrand < 7:sterilewb += 2
+		if abortrand >= 7:sterilewb += 10
+	end
+	killvar 'abortrand'
+	
+	pcs_hydra += 20
+	
+	if broodcurse > 0: over = 13 & gt'gameover'
+end	
+
+if $ARGS[0] = 'random_name':
+
+	$wl_boyname[1] = ''
+	$wl_boyname[2] = ''
+
+	:wl_rng_jump
+
+	wl_temp = rand(0,23)
+
+	if wl_temp = 0:
+		$wl_temp = 'Abram'
+	elseif wl_temp = 1:
+		$wl_temp = 'Alexei'
+	elseif wl_temp = 2:
+		$wl_temp = 'Adrian'
+	elseif wl_temp = 3:
+		$wl_temp = 'Dima'
+	elseif wl_temp = 4:
+		$wl_temp = 'Dimitri'
+	elseif wl_temp = 5:
+		$wl_temp = 'Igor'
+	elseif wl_temp = 6:
+		$wl_temp = 'Leonid'
+	elseif wl_temp = 7:
+		$wl_temp = 'Petka'
+	elseif wl_temp = 8:
+		$wl_temp = 'Michail'
+	elseif wl_temp = 9:
+		$wl_temp = 'Vasily'
+	elseif wl_temp = 10:
+		$wl_temp = 'Oleg'
+	elseif wl_temp = 11:
+		$wl_temp = 'Olezka'
+	elseif wl_temp = 12:
+		$wl_temp = 'Pasha'
+	elseif wl_temp = 13:
+		$wl_temp = 'Pavel'
+	elseif wl_temp = 14:
+		$wl_temp = 'Sacha'
+	elseif wl_temp = 15:
+		$wl_temp = 'Slava'
+	elseif wl_temp = 16:
+		$wl_temp = 'Ruslan'
+	elseif wl_temp = 17:
+		$wl_temp = 'Taras'
+	elseif wl_temp = 18:
+		$wl_temp = 'Timofey'
+	elseif wl_temp = 19:
+		$wl_temp = 'Vanya'
+	elseif wl_temp = 20:
+		$wl_temp = 'Viktor'
+	elseif wl_temp = 21:
+		$wl_temp = 'Vladimir'
+	elseif wl_temp = 22:
+		$wl_temp = 'Yaromir'
+	elseif wl_temp = 23:
+		$wl_temp = 'Yevgeni'
+	end
+	
+	if $wl_boyname[1] = '':
+		$wl_boyname[1] = $wl_temp
+		jump 'wl_rng_jump'
+	elseif $wl_boyname[2] = '':
+		$wl_boyname[2] = $wl_temp
+	end
+	
+	if $wl_boyname[1] = $wl_boyname[2]:
+		$wl_boyname[2] = ''
+		jump 'wl_rng_jump'
+	end
+	
+	killvar 'wl_temp'
+	killvar '$wl_temp'
+end
+
+if $ARGS[0] = 'weed_check':
+	gs 'drugs', 'joint'
+	wl_drugs['counter_weed'] += 1
+	if wl_drugs['counter_weed'] > rand(2,5) and wl_stats['acceptance'] < 100:
+		wl_drugs['counter_weed'] = 0
+		wl_stats['acceptance'] += 1
+		'<br>Your life isn''t so bad, isn''t it? You tell yourself. Shura was right. Sometimes it''s just better to accept what''s happening and not give a shit about it.' 
+	end
+end
+
+if $ARGS[0] = 'tat_pierce_count':
+	tattCount = 0
+
+	if tatarm >= 1: tattCount += 1
+	if tatass >= 1:	tattCount += 1
+	if tatback >= 1: tattCount += 1
+	if tatblly >= 1: tattCount += 1
+	if tatbrst >= 1: tattCount += 1
+	if tatchst >= 1: tattCount += 1
+	if tatfce >= 1:	tattCount += 1
+	if tatankle >= 1: tattCount += 1
+	if tatleg >= 1:	tattCount += 1
+	if tatlip >= 1:	tattCount += 1
+	if tatneck >= 1: tattCount += 1
+	if tatvag >= 1: tattCount += 1
+	if tatlech >= 1: tattCount += 1
+	if tatside >= 1: tattCount += 1
+	if tatupb >= 1: tattCount += 1
+	if tatunder >= 1: tattCount += 1
+	if tatwrist >= 1: tattCount += 1
+	if tathand >= 1: tattCount += 1
+
+	pierWearCount = 0
+
+	if pirsA > 0 and pirsA ! 10000:	pierWearCount += 1
+	if pirsB > 0 and pirsB ! 10000:	pierWearCount += 1
+	if pirsC > 0 and pirsC ! 10000:	pierWearCount += 1
+	if pirsD > 0 and pirsD ! 10000:	pierWearCount += 1
+	if pirsE > 0 and pirsE ! 10000:	pierWearCount += 1
+	if pirsF > 0 and pirsF ! 10000:	pierWearCount += 1
+	if pirsG > 0 and pirsG ! 10000:	pierWearCount += 1
+	if pirsN > 0 and pirsN ! 10000:	pierWearCount += 1
+end
+
+if $ARGS[0] = 'pav_client':					
+	!!Reset
+	wl_whore['pav_internal'] = 0
+	
+	!!STD
+	if pcs_apprnc = -10 and rand(1,10) < 8: 
+		wl_whore['std_mod'] = 1
+	else
+		wl_whore['std_mod'] = 0
+	end
+	
+	!!Visible Cum (Dressed)
+	if cumloc[7] = 1 or cumloc[11] = 1 or cumloc[13] = 1 or cumloc[15] = 1: 
+		wl_whore['cum_dressed'] = 1
+	else
+		wl_whore['cum_dressed'] = 0
+	end
+				
+	!!Regular
+	if wl_whore['pav_total'] < 10: 
+		wl_whore['pav_chance'] = 0
+	elseif wl_whore['pav_total'] >= 10 and wl_whore['pav_total'] <= 25: 
+		wl_whore['pav_chance'] = 1
+	elseif wl_whore['pav_total'] > 25 and wl_whore['pav_total'] <= 50: 
+		wl_whore['pav_chance'] = 2
+	elseif wl_whore['pav_total'] > 50 and wl_whore['pav_total'] <= 100: 
+		wl_whore['pav_chance'] = 3
+	elseif wl_whore['pav_total'] > 100 and wl_whore['pav_total'] <= 250: 
+		wl_whore['pav_chance'] = 4
+	end
+	
+	if ((wl_whore['pav_chance'] = 1 and rand(1,100) > 95) or (wl_whore['pav_chance'] = 2 and rand(1,100) > 90) or (wl_whore['pav_chance'] = 3 and rand(1,100) > 80) or (wl_whore['pav_chance'] = 4 and rand(1,100) > 60)) and (wl_rand ! 8 or (wl_rand = 8 and wl_whore['pav_regular_s8'] = 1)):
+		wl_whore['pav_regular'] = 1
+!!	elseif wl_whore['pav_chance'] > 0 and rand(1,100) > 92:
+!!		wl_whore['pav_regular'] = -1
+	else
+		wl_whore['pav_regular'] = 0
+	end
+
+!!ToDo: Add cheat for this chance	
+	$wl_whore['client_behavior'] = iif(rand(1,100) < wl_whore['client_behavior_chance'] or wl_whore['pav_regular'] = -1, 'nice', 'abusive')
+	
+	!!Scene			
+	if wl_rand > 7:
+		$wl_whore['pav_scene'] = 'anal'
+	elseif mesec = 0 and rand(0,100) < 50:
+		$wl_whore['pav_scene'] = 'pussy'
+	else
+		$wl_whore['pav_scene'] = 'blowjob'
+	end
+	
+	if wl_rand = 0 or wl_rand = 8 or wl_rand = 9 or ((wl_rand = 2 or wl_rand = 3 or (wl_rand = 5 and $wl_whore['client_behavior'] = 'nice') or wl_rand = 6 or wl_rand = 7) and $wl_whore['pav_scene'] = 'pussy'):
+		$wl_whore['pav_location'] = 'private'
+		if wl_rand = 3 or wl_rand = 8: 
+			$wl_whore['client_behavior'] = 'abusive'
+!!ToDo: Next lines have to be removed if more parts of the image set are done		
+		elseif wl_rand = 5:
+			$wl_whore['client_behavior'] = 'abusive'
+			$wl_whore['pav_scene'] = 'blowjob'
+		end
+	elseif wl_rand = 1 and $wl_whore['pav_scene'] = 'pussy':
+		$wl_whore['pav_location'] = iif($wl_whore['client_behavior'] = 'nice', 'private', 'public')
+	elseif ((wl_rand = 2 or wl_rand = 3 or wl_rand = 6 or wl_rand = 7) and $wl_whore['pav_scene'] = 'blowjob') or wl_rand = 4 or wl_rand = 5:
+		$wl_whore['pav_location'] = 'public'
+		if wl_rand = 5: 
+			$wl_whore['client_behavior'] = 'abusive'
+!!ToDo: Next line has to be removed if scene is done
+			$wl_whore['pav_scene'] = 'blowjob'
+		end			
+	else
+		gt 'mod_wlife_solicitation', 'rng'
+	end
+	
+	if wl_whore['pav_regular_s8'] = 1 and wl_rand = 8: wl_whore['pav_regular'] = 1
+	
+	!!Generator
+	gs 'npcgeneratec', 0, 'pavlovsk client', rand(18,45)
+	gs 'boyStat', $npclastgenerated
+end
+
+if $ARGS[0] = 'exact_round':
+	!! ARGS[1] = value you want divided
+	!! ARGS[2] = divider
+	!!  func('mod_wlife_functions','exact_round', number, divider)
+	!!  func('mod_wlife_functions','exact_round', 12345, 7)
+	if ARGS[2] ! 0:
+		round_number = ARGS[1]/ARGS[2]
+		if (ARGS[2] mod 2 ! 0 and ARGS[1] mod ARGS[2] > ARGS[2]/2) or (ARGS[2] mod 2 = 0 and ARGS[1] mod ARGS[2] >= ARGS[2]/2): round_number += 1
+		round_number = round_number * ARGS[2]
+		result = round_number
+		killvar 'round_number'
+	else
+		'<b>Developer Note: No division by 0. Please report this and some text from the mainscreen as a bug in the whore life thread.</b>'
+	end
+end
+
+--- mod_wlife_functions ---------------------------------
+
+

+ 489 - 0
locations/mod_wlife_gang.qsrc

@@ -0,0 +1,489 @@
+# mod_wlife_gang
+
+if $ARGS[0] = 'random_warehouse':
+	*clr & cla
+	menu_off = 1
+	minut += rand(20,30)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+	'The warehouse is full of guys. Some of them smile, some throw you a curious look and some ignore you when you enter. The atmosphere is relaxed, most of them have a bottle of beer or vodka in their hands or are working on one of the cars. You don''t recognize anybody by name'+iif(wl_iosif['status'] > 4, ' except Iosif who greets you with a hint of a nod.', '.')
+	if wl_gang['status'] = 0:
+		*nl
+		wl_gang['status'] = 1
+		'"Hey girl," one of the guys shout. "You looking for Georgiy?" You nod and move a little bit closer. "He will be here in a few minutes. Why don''t you keep us company until he arrives?"'
+		'Since it''s not a good idea to shun them you step even closer. Cautious at first you quickly grow more comfortable around the boys. Sure some of the guys exactly match your expectations. They are rude, handsy and have the sophistication of a teenage chimpanzee, but those guys aren''t the majority. Some could even be considered nice, but most of them are like many of the ''bad boys'' you have met at school. Behaving tough to hide their own insecurities. That doesn''t make them any less dangerous, because in the end they would do anything to appear tough to their peers. Showing any kind of weakness could ruin their reputation.'
+	else
+		'"Hey <<$pcs_nickname>>," some of the guys shout. Clearly they recognize you from the last time you came here. "Georgiy isn''t here, why don''t you hang out with us again until he arrives?"'
+	end
+	*nl
+	'You walk around the room stopping here and there for a few minutes to smile and chat, listen to their boastful stories about their work and escapades. There are a few touches, more often than not a guy grabs your ass when you stand next to him, but that''s nothing compared to what you have endured in the last weeks. The simple touch of a stranger doesn''t concern you anymore.'
+	wl_temp = rand(0,5)
+	if wl_temp = 0 and wl_gang['status'] > 0:
+		'As you walk around you hear snippets of more important conversations. A '+iif(rand(0,1), 'drug deal gone bad', 'weapons deal gone well')+' or how '+iif(rand(0,1), 'they nearly got caught stealing a shipment of cars in the St.Petersburg port', 'one of the guys got shot when a rookie cop didn''t take the bribe they offered.')
+	elseif wl_temp = 1 and wl_gang['status'] > 0:
+		gs 'mod_wlife_functions', 'reputation_check'	
+		'When you approach or leave a group of guys you sometimes can hear them talking about you. They say that you are <<$wl_stats[''loyalty'']>> <<$wl_stats[''respect'']>>.'		
+	elseif wl_temp = 2 and wl_gang['status'] > 0:
+		'A lot of times you can hear them talk about what they did with the money they have earned on their last job. It''s either a story about booze, girls and drugs or what teenage boys wet dream they want to or have fulfilled for themselves, especially fast cars are mentioned constantly.'
+	elseif wl_temp = 3 and wl_gang['status'] > 0:
+		'Crude and/or simple minded describes best a huge share of the guys. Money, expensive stuff they bought or want to buy and girls are the most talked about topics.' 
+	elseif wl_temp > 3 and wl_gang['status'] > 0:
+		if wl_stats['respect'] < -60:
+			'From the conversation you can guess that they think you''re nothing more than a total whore that fucks and does anything for money.'
+		elseif wl_stats['respect'] < -30:
+			'From the conversation you can guess that they think you''re a depraved slut that does mostly anything for the right price.'
+		elseif wl_stats['respect'] < 30:
+			'From the conversation you can guess that they think you''re a nice chick that is working the streets because she has to.'
+		elseif wl_stats['respect'] < 60:
+			'From the conversation you can guess that they think you''re a good girl that is working the streets because she has no other choice.'
+		else
+			'From the conversation you can guess that they think you''re a decent woman that is working the streets because she has no other choice.'
+		end
+	end
+	
+	act 'Check in with Georgiy': gt 'mod_wlife_georgiy', 'check_in' 
+end
+
+if $ARGS[0] = 'warehouse_events':	
+	if wl_status['main'] > 6 and wl_nikita['status'] = 0:
+		gt 'mod_wlife_nikita', 'first_meet'
+	elseif wl_maxim['timer'] < daystart and (wl_maxim['status'] = 0 or wl_maxim['status'] = 1) and (wl_timer['startday'] + 42) < daystart:
+		gt 'mod_wlife_maxim', 'warehouse'	
+	elseif wl_nicholai['day'] < daystart and wl_debt['nicholai'] ! -1 and wl_nicholai['blocked'] ! daystart and (wl_nicholai['status'] = 0 or rand(0,2) = 2):
+		gt 'mod_wlife_gang', 'nicholai_0'
+	elseif wl_lai['day'] < daystart and ((wl_lai['status'] = 0 and wl_status['main'] > 6) or rand(0,2) = 2):
+		gt 'mod_wlife_gang', 'lai_0'
+	else
+		minut += 2 & gt 'mod_wlife_warehouse', 'street'
+	end
+end
+
+if $ARGS[0] = 'warehouse_prostitution_decline':
+	gs 'mod_wlife_functions', 'will_acceptance', 'resist'
+	if will_cost <= pcs_willpwr:
+		act 'Decline (<<will_cost>> Willpower)': 
+			minut += 1
+			gs 'mod_wlife_functions', 'will_acceptance', 'resist'
+			gs 'willpower', 'pay', 'resist'
+			if wl_gang['decline'] = 0:
+				cla & *nl
+				wl_stats['respect'] += 2
+				wl_gang['decline'] = 1
+				gs 'stat'
+				'You shake your head and send '+iif(wl_gang['boys'] = 1, 'him', 'them')+' an apologetic smile as you explain to them that you aren''t working tonight. '+iif(wl_gang['boys'] = 1, 'He grumbles', 'They grumble')+' a bit, clearly disappointed by your decision, but you get the feeling that declining the opportunity to sell yourself earned you some respect with '+iif(wl_gang['boys'] = 1, 'him', 'them')+'.'
+			
+				act 'Leave': gt 'mod_wlife_warehouse', 'street'
+			else
+				wl_stats['respect'] += 1
+				gt 'mod_wlife_warehouse', 'street'
+			end
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'warehouse_prostitution_condom':
+	minut += 2
+	wl_stats['respect'] += 2
+	wl_stats['loyalty'] -= 2
+	wl_gang['condom'] = 1				
+	gs 'mod_wlife_functions', 'will_unprotected', 'self'
+	gs 'willpower', 'pay', 'self'
+	gs 'stat'
+	'The second you mention condoms you want to snatch your words out of the air and swallow them back down. "A condom?" '+iif(wl_gang['boys'] = 1, 'He', 'One of the guys')+' frowns and anger flares up inside his eyes. He seems deeply offended by the question. "Why? Do '+iif(wl_gang['boys'] = 1, 'I', 'wee')+' look like some diseased '+iif(wl_gang['boys'] = 1, 'fuck', 'fucks')+'?"'
+	'"No, no... of course not," you hastily reply. "I would never assume that. It''s just my routine to use a condom," you '+iif(wl_stats['unprotected'] > 20, 'lie', 'say')+', but that explanation doesn''t seem to satisfy him. He angrily shakes his head and points his finger at you. "Maybe the cheap street whore should shut the fuck up, get off her high horse and be glad that she doesn''t have to fuck some unwashed trucker for a change," he growls and '+iif(wl_gang['boys'] = 1, 'walks', 'they walk')+' away before you can say another word.'
+				
+	act 'Leave the warehouse': minut += 1 & gt 'mod_wlife_warehouse', 'street'
+end
+
+if $ARGS[0] = 'nicholai_0':
+	*clr & cla
+	minut += 2
+	wl_gang['boys'] = 1
+	wl_nicholai['day'] = daystart + rand(0,14)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nicholai.jpg"></center>'
+	if wl_nicholai['status'] = 0:
+		wl_nicholai['status'] = 1
+		wl_nicholai['payment'] = 500
+		'The warehouse is full of guys, when you return from your weekly check-in with Georgiy. You only make it halfway through the hall before a guy stops you. His face is covered in tattoos, but you have to admit with his short blond hair and baby blue eyes he''s way more attractive than the average guy. "Hey," the guy greets you. "I have seen you around for a few weeks now. Aren''t you Georgiy''s new whore?"'
+		iif(wl_stats['acceptance'] > 60, 'You slightly shrug. "Yeah," you answer. There is no point in denying what you are. "B', 'You sigh internally, but plaster a smile on your face. "Yeah, b')+'ut I prefer <<$pcs_nickname>> over whore."'
+		'He shrugs. "Sure, <<$pcs_nickname>>. I''m Nicholai," he introduces himself, but this is where the niceties end. "I have <<wl_nicholai[''payment'']>> <b>₽</b> to spend on some pussy. Are you up?"'	
+	elseif wl_nicholai['status'] = 1:
+		'The warehouse is nearly empty, when you return from your weekly check-in with Georgiy and you don''t know any of them except Nicholai who shouts from the other end of the warehouse as he walks towards you. "<<$pcs_nickname>>. My offer still stands. I pay <<wl_nicholai[''payment'']>> <b>₽</b> to have your cunt."'
+	elseif wl_nicholai['status'] = 3:
+		wl_nicholai['status'] = 4
+		'Nicholai stops you on your way out. "Hey <<$pcs_nickname>>, I''m bored. Wanna fuck? <<wl_nicholai[''payment'']>> <b>₽</b> like last time?"'
+		'Is he serious? You ask yourself as he walks closer. Last time he came inside you without warning. "Exactly like last time?" you ask coldly and cross your arms in front of your chest. "Do you remember what happened last time? You gave me a creampie."'
+		'"Your welcome," he smiles and not even for a second you don''t thing that he means it as a joke. He''s serious about that. "I don''t cum inside in every girl, but I had a feeling that you would deserve my cum."'
+		'You stare at him in disbelieve.'
+		'...'
+		'What? you ask yourself.'
+		'...'
+		'You keep staring at him, not sure what you going to say to him. He really can''t be serious.'
+		'"So?" he asks.'
+		'"Uhm...," you shake your head to get your brain going again. "What?"'
+		'"I asked you if you''re up for some fun <<$pcs_nickname>>, you stupid cow..."'
+	else
+		'Nicholai stops you on your way out. "Hey <<$pcs_nickname>>, '+iif(wl_debt['nicholai'] = 1, 'How about you get some more money to pay your debt and you fuck me as well?', 'I''m bored. Wanna fuck?')+' <<wl_nicholai[''payment'']>> <b>₽</b> like last time?"'
+	end
+	
+	gs 'mod_wlife_gang', 'warehouse_prostitution_decline'
+	
+	act 'Accept': wl_stats['respect'] -= 1 & gt 'mod_wlife_gang', 'nicholai_1'
+	
+	gs 'willpower', 'prostitution', 'self', 'hard'
+	if will_cost <= pcs_willpwr and wl_nicholai['payment'] = 500:
+		act 'Demand more money (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 1
+			gs 'willpower', 'prostitution', 'self', 'hard'
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'			
+			if wl_stats['respect'] < -50 or wl_stats['loyalty'] < -40:
+				wl_nicholai['payment'] = 300
+				'"Really? Do you really believe that a whore like you deserves more money?" he asks you, but the answer to the question is obvious. No, in his eyes you don''t. "Be glad that I don''t charge you for allowing you to touch me. Let''s make make it <<wl_nicholai[''payment'']>> <b>₽</b> instead."'
+				
+				gs 'mod_wlife_gang', 'warehouse_prostitution_decline'
+				act 'Accept': wl_stats['respect'] -= 3 & gt 'mod_wlife_gang', 'nicholai_1' 
+			elseif wl_stats['loyalty']  > 40 or wl_stats['respect'] > 30:
+				wl_nicholai['payment'] = 800
+				'"Hm..., yeah why not. I only heard positive things about you <<$pcs_nickname>>. Loyal bitches deserve a reward," he says as he hands you <<wl_nicholai[''payment'']>> <b>₽</b>. "Come on, let''s go."'
+				
+				act 'Accept': wl_stats['respect'] -= 1 & gt 'mod_wlife_gang', 'nicholai_1'
+			else
+				'He shakes his head. "No, it''s <<wl_nicholai[''payment'']>> <b>₽</b>. Take it or leave it."'
+
+				gs 'mod_wlife_gang', 'warehouse_prostitution_decline'
+				act 'Accept': wl_stats['respect'] -= 1 & gt 'mod_wlife_gang', 'nicholai_1'
+			end
+		end
+	elseif will_cost > pcs_willpwr and wl_nicholai['payment'] = 500:
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	if wl_gang['condom'] = 0:
+		gs 'mod_wlife_functions', 'will_unprotected', 'self'
+		if will_cost <= pcs_willpwr:
+			act 'Demand to use a condom (<<will_cost>> Willpower)':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nicholai.jpg"></center>'
+				
+				gs 'mod_wlife_gang', 'warehouse_prostitution_condom'
+			end
+		else
+			act 'Demand to use a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	elseif wl_gang['condom'] = 1:
+		wl_gang['condom'] = 2
+		'<br>You think about asking for a condom, but you quickly discard the idea after what happened last time you asked for a condom.'
+	end
+end
+
+if $ARGS[0] = 'nicholai_1':
+	*clr & cla
+	minut += 2
+	money += wl_nicholai['payment']
+	wl_nicholai['day'] = daystart + rand(7,21)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nicholai.jpg"></center>'
+	if wl_nicholai['status'] < 2:
+		'"Come on, whore... sorry, I mean <<$pcs_nickname>>," he says mockingly and points in the direction where you came from. "Let''s go. You have a job to do," he adds as he walks away not even once looking over his shoulder if you''re following him. You both know that you have no other choice. He paid and you have to do as he commands.'
+		
+		act 'Follow him':
+			*clr & cla
+			minut += 3
+			wl_stats['respect'] -= 2
+			wl_stats['acceptance'] += 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/common_room.jpg"></center>'
+			'A group of guys is relaxing inside the common room, drinking beer and watching some cliché action movie with lazy dialog, lots of guns and the obligatory explosion in between. "Yo," Nicholai greets the other guys clearly sounding annoyed about something. "Weren''t you suppose to leave? I need the room."'
+			'One of the guys pauses the film. "Georgiy was still talking to some slut," he explains.'
+			'Wait... you think after a second. Do they mean you? So, you are only ''some slut'' to them.'
+			'"Yeah, that slut is now with me," all eyes are on you for an uncomfortable moment. "And sure you can stay and watch...," he adds and again all eyes burn into you, but you don''t even get a chance to responds before Nicholai continues, "if you all want to make Georgiy wait, of course."'
+			'"Shit," one of them says and they simultaneously jump up and hurry out of the room.'
+			'You can''t stop yourself from grinning a bit as a group of hardend criminals run out of the room like a bunch of frightened little girls, but Nicholai wipes away your grin. "Take those fucking clothes off."'
+					
+			act 'Do it': gt 'mod_wlife_gang_sex', 'nicholai'
+		end	
+	else
+		if rand(0,2) = 0:
+			minut += 3
+			wl_stats['respect'] -= 1
+			'The common room is occupied again, when you enter it with Nicholai. "Yo, guys," he nods with his head in your direction. "Can you give me some privacy, need to fill up that whore''s cunt...," he looks at you and grins, "sorry, I mean I need to fill up <<$pcs_nickname>> cunt."'
+			'Whatever you want to do, it''s best to just keep your mouth shut. Especially with so many guys around. It''s one thing to talk back to one of them, but a completely different thing to say something in front of the other guys. He''ll have to keep up appearances and punish you for misbehaving. And Nicholai seems like somebody that would not allow you to respond even in private.'
+			'"Sure, Nicholai, have fun," one of the guys says and another one gives you an appreciative slap on the ass as they leave the room. Just like last time Nicholai doesn''t concern himself with pleasantries. "Get your ass on the couch," he commands as he closes the door behind you.'	
+		else
+			minut += 1
+			'The common room is empty this time, when you enter it and like last time Nicholai doesn''t concern himself with pleasantries. "Get your ass on the couch," he commands as he closes the door behind you.'	
+		end
+		
+		gs 'stat'
+
+		killvar 'wl_rand'
+		
+		act 'Do it': gt 'mod_wlife_gang_sex', 'nicholai'
+	end
+end
+
+if $ARGS[0] = 'lai_0':
+	*clr & cla
+	minut += 4
+	wl_gang['boys'] = 2
+	wl_lai['payment'] = 1000
+	wl_lai['day'] = daystart + rand(0,14)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+	if wl_lai['status'] = 0:
+		wl_lai['status'] = 1
+		wl_gang['boys'] = 1
+		'Two guys intercept you, when you leave the warehouse. They''re both tall, lean and apart from the fact that the one of them has a beard and more hair on his head they look very similar. Brothers perhaps? "Hi," you greet them casually. "I don''t think we have met yet."'
+		'"That''s Lev and I''m Igor," the one without a beard introduces both of them. "How about you turn you beautiful ass around and move it back into the house so that we can fuck you." He moves into your personal space as he speaks and roughly grabs your ass with one of his big hands.'
+		'"Woah, easy there," you say taking a step back to get out of his reach. Wrong move, you realize when anger flares up inside his eyes. "You have to pay to touch," you say to defend your behavior, but Igor isn''t satisfied with that explanation. He takes a threatening step towards you, but this time Lev steps in and holds him back.'
+		'"Let me go Lev, that bitch deserves a lesson in respect," Igor growls, but Lev doesn''t.' 
+		'"Calm down moron. You know the rules," Lev says calmly before turning to you. "Excuse my cousin, he''s an idiot."'
+		'"I''m not," Igor protests.'
+		'"Yes you are," Lev replies. "And now shut up or you will scare...," he looks at you "<<$pcs_nickname>>," you answer the unspoken question. "Or you scare <<$pcs_nickname>> away."'
+		'"I don''t care about the fucking rules Lev. Just give her some fucking money. The bitches don''t deserve our respect," Igor hisses and struggles against his cousin''s grip.'
+		'"Shut up Igor, I won''t say it a third time," Lev warns him again and this time Igor obeys. "Go wait in the common room until I get you. OK?" For a second you believe Igor will object, but to your surprise he nods and when Lev let go he walks away without saying another word."'
+		'"Sorry about that," Lev apologizes. "My cousin can sometimes be a bit difficult. Especially if he needs to get laid. That''s why we came to talk to you. Are you free tonight? I would pay you 1000 <b>₽</b> for me and him?" Lev asks straightforwardly. "But only if you do us at the same time. You may have already guessed, but it''s not a good idea for you to be alone with him."'
+	elseif wl_lai['status'] = 1:
+		'Lev and Igor intercept you again, when you leave the warehouse. "Hello <<$pcs_nickname>>," Lev says, but Igor only throws you a disapproving look. He doesn''t seem to be in a better mood than last time. "Did you change your mind <<$pcs_nickname>>?" Lev asks. "The offer still stands. 1000 <b>₽</b>."'
+	else
+		'You can see Lev and Igor talking to a few other guys, when you leave the warehouse. Lev waves at you and quickly walks over to you while his cousin stays behind. "Hi Lev, how are you doing?" you ask.'
+		'"I''m fine <<$pcs_nickname>>, thanks for asking," Lev replies. "Are you free tonight? We could use some company."'
+	end
+	
+	gs 'mod_wlife_gang', 'warehouse_prostitution_decline'
+	
+	act 'Accept': wl_stats['respect'] -= 1 & gt 'mod_wlife_gang', 'lai_1'
+	
+	gs 'willpower', 'prostitution', 'self', 'hard'
+	if will_cost <= pcs_willpwr and wl_lai['payment'] = 1000:
+		act 'Demand more money (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 1
+			wl_lai['payment'] = 1600
+			gs 'willpower', 'prostitution', 'self', 'hard'
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"1000? For two guys?" You shake your head. "Isn''t that a bit low?"'
+			'"Fine. 1600? Is that OK?" Lev offers.'
+	
+			act 'Accept': wl_stats['respect'] -= 1 & gt 'mod_wlife_gang', 'lai_1'
+		end
+	elseif will_cost > pcs_willpwr and wl_lai['payment'] = 1000:
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	if wl_gang['condom'] = 0:
+		gs 'mod_wlife_functions', 'will_unprotected', 'self'
+		if will_cost <= pcs_willpwr:
+			act 'Demand to use a condom (<<will_cost>> Willpower)':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+				
+				gs 'mod_wlife_gang', 'warehouse_prostitution_condom'
+			end
+		else
+			act 'Demand to use a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	elseif wl_gang['condom'] = 1:
+		wl_gang['condom'] = 2
+		'<br>You think about asking for a condom, but you quickly discard the idea after what happened last time you asked for a condom.'
+	end
+end
+
+if $ARGS[0] = 'lai_1':
+	*clr & cla
+	minut += 6
+	money += wl_lai['payment']
+	wl_lai['day'] = daystart + rand(14,28)
+	gs 'stat'
+	if wl_lai['status'] < 2:
+		wl_stats['acceptance'] += 1
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/attic.jpg"></center>'
+		'You follow Lev back through the old hallway into the adjacent house where you pick up Igor on the way. Everything is fine until Lev turns right and walks up the narrow stairwell. A feeling of dread washes over you when you slowly follow them. You have never been up here, except once, when Vadim tied you up and let his goons use you like a sex-doll. "No, we can''t do it here," you say after Lev opens the door to the attic.'
+		'"But there is a bed...," he explains, but you shake your head in protest. "No, not here."'
+		'"<<$pcs_nickname>>, I already paid," he reminds you, but he sounds more concerned than angry. "What''s the problem?"'
+		'You shake your head and push the memories of that fateful day away. Lev is right. They have paid and you have a job to do. You can''t get caught up in the past. Focus on the present, you tell yourself. "No, everything is fine. We can do it here, but not on the bed."'
+		'"Come on Lev," Igor grumbles. "I don''t care where I fuck her".'
+		'"Alright," Lev says and walks past the bed to the far end of the attic.'
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/attic.jpg"></center>'
+		'Like last time Igor and Lev lead you into the attic, but this time Lev doesn''t even mention doing it on the bed. Instead he walks straight to the other end and unfastens his belt. You know what you have to do next.'
+	end
+	
+	act 'Get on your knees': gt 'mod_wlife_gang_sex', 'lai'
+end
+
+if $ARGS[0] = 'pay_debt_0':
+	*clr & cla
+	minut += rand(2,6)
+	wl_rand = iif(wl_debt['status'] < 4, wl_debt['status'], rand(2,3))
+	wl_stats['respect'] -= wl_rand
+	gs 'mod_wlife_functions', 'random_name'
+	$wl_debt[1] = $wl_boyname[1]
+	$wl_debt[2] = $wl_boyname[2]	
+	if wl_rand = 2:
+		$wl_debt[3] = ''
+		$wl_debt[4] = ''
+	elseif wl_rand = 3:
+		:wl_debt_jump
+		gs 'mod_wlife_functions', 'random_name'
+		if ($wl_debt[1] = $wl_boyname[1]) or ($wl_debt[2] = $wl_boyname[1]) or ($wl_debt[1] = $wl_boyname[2]) or ($wl_debt[2] = $wl_boyname[2]): jump 'wl_debt_jump'
+		$wl_debt[3] = $wl_boyname[1]
+		$wl_debt[4] = $wl_boyname[2]
+	end
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nicholai.jpg"></center>'	
+	if wl_debt['status'] = 2:
+		'You find Nicholai hanging out in the warehouse. "Georgiy told me to report..."'
+		'"Yeah, I know <<$pcs_nickname>>. You''re here to fuck down your debt," he interjects taking a long appraising look at your body. "Remember, you have to do anything that the guys ask. Georgiy does you a favor in paying this way, so don''t insult his generosity by making a fuse about something...," he warns you before he continues, "let''s see if I can find a few guys that are willing to use you," he says and adds, "wait here", before walking away already waving to a group of guys at the other end of the warehouse.'
+	elseif wl_debt['status'] = 3:
+		'"Back again?" Nicholai asks before you can say a word. "Want to fuck some cock to reduce your debt?" he asks and acknowledges your grudging nod with a mischievous smirk. "Say it," he tells you and when you don''t do it immediately he repeats the command. "Say it!"'
+		iif(wl_stats['acceptance'] > 40, 'You shrug and comply without hesitating for even a second.', 'You sigh and hesitate for a second before complying.')+' "I want to fuck some cock to reduce my debt."'
+		'He shakes his head disapprovingly. "You should say it like you mean it. We both know the truth and you don''t have to hide it from me."'
+		'"Hi Nicholai, I really need to have some cock to fuck down my debt," you say with '+iif(wl_stats['acceptance'] > 40, 'honest', 'fake')+' enthusiasm.'
+		'"See? That wasn''t so hard, wasn''t it. Wait here, I''ll see if I can find some guys for you."' 
+	else
+		'You already know, what he wants to hear from you. "Hi Nicholai, I really need to have some cock to fuck down my debt," you say with '+iif(wl_stats['acceptance'] > 40, 'honest', 'fake')+' enthusiasm before he can demand anything from you.'
+		'He grins and it''s obvious that he really enjoys it, when you say degrading things like that "If that''s your wish, wait here, I''ll see if I can find some guys for you."' 
+	end
+
+	act 'Wait':
+		*clr & cla
+		minut += rand(6,12)
+		wl_temp = rand(1,4)
+		if wl_temp > 1: gs 'arousal', 'foreplay', -2, 'sub', 'prostitution'
+		gs 'stat'
+		'<center><video autoplay src="mod/wlife/images/prostitution/warehouse/debt/start_0.mp4"></video></center>'
+		'After a few minutes of haggling Nicholai returns to you with two guys in tow. "Meet <<$wl_debt[1]>> and <<$wl_debt[2]>>," he introduces the two. "They''ll help you reducing your debt" he adds before gesturing towards the common room. "Let''s go."'
+		'The guys '+iif(wl_temp = 1, 'ignore', 'talk about')+' you on the short walk to the common room. '+iif(wl_temp = 1, 'For once even Nicholai doesn''t talk down to you.', 'Every few steps you can feel a hand ''accidentally'' touching your ass or you can hear one of the guys making a derogatory statement about you that involves words like slut, whore or bitch.')
+		'The two guys sit down on the old couch and <<$wl_debt[2]>> pats the cushion next to him. "Sit down, <<$pcs_nickname>>," he says, but it sounds more like an order than an offer and you have no other choice than to comply. He puts his right hand on your thigh the instant you sit down'+iif(wl_temp = 1, ', but he doesn''t go any further than that.', ' and without hesitation moves it closer and closer towards your crotch.')
+		'"Who is going to be first?"'
+		
+		act 'Continue':
+			*clr & cla
+			minut += rand(3,6)
+			wl_debt['reduction'] = 100 * rand(4,5) + hotcat * 10
+			if wl_stats['respect'] < -20: wl_debt['reduction'] -= 50
+			if wl_stats['loyalty'] < -20: wl_debt['reduction'] -= 50
+			if wl_temp > 1: gs 'arousal', 'foreplay', -2, 'sub', 'prostitution'
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/start_1.mp4"></video></center>'
+			iif(wl_temp = 1, '"How about <<wl_debt[''reduction'']>> <b>₽</b>," <<$wl_debt[1]>> offers looking at the other guys hand on your legs. <<$wl_debt[2]>> shrugs. "Sure, I have no problems with sloppy seconds," he replies.', '"How about <<wl_debt[''reduction''] - 100>> <b>₽</b>," <<$wl_debt[1]>> offers, but <<$wl_debt[2]>> immediately interjects his hand moving even closer towards your pussy. "No, I pay 100 <b>₽</b> more to go first," he says.')
+			'"OK," Nicholai says. "We have a winner. Write down the sum so I can keep track on how much she works off her debt," Nicolai instructs them.'
+			'"Stand up," '+iif(wl_temp = 1, '<<$wl_debt[1]>>', '<<$wl_debt[2]>>')+' orders you and takes a black sharpie that Nicholai is handing them. "And pull up your top," he adds, puts the cap of the pen into his mouth and takes it of with his teeth.'
+			if wl_debt['status'] = 2:
+				wl_debt['status'] = 3
+				'"Why?" you ask as you stand up, but Nicholai answers for him. "Don''t ask questions, just do it."'
+				'This is stupid, you think as you pull your top up revealing your stomach. Why can''t they get it over with? Guys like Nicholai always have to play their little games to assert their power. Even if they''re holding all the cards. Your annoyance only grows, when '+iif(wl_temp = 1, '<<$wl_debt[1]>>', '<<$wl_debt[2]>>')+' writes down the amount on your stomach, but you keep your mouth shut and let him do it. You need to pay down the debt and if that''s what you have to do, you''ll bear with it.'
+			elseif wl_debt['status'] = 3:
+				wl_debt['status'] = 4
+				'Just like last time '+iif(wl_temp = 1, '<<$wl_debt[1]>>', '<<$wl_debt[2]>>')+' writes down the number on your stomach, but this time you keep an eye on Nicholai who watches every stroke of the pen like it''s the hottest porn on earth. This really turns him on seeing you marked like an object for sale at the local grocery store.'
+			else
+				'He writes down the amount on your stomach while Nicholai looks at the number with a satisfied look. As always he seems to enjoy having you marked with a ''price tag'' like an object in a shop.'
+			end
+			
+			act 'Continue':
+				*clr & cla
+				minut += 1
+				gs 'stat'
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/start_2.mp4"></video></center>'
+				'"Have fun," Nicholai and '+iif(wl_temp = 1, '<<$wl_debt[2]>>', '<<$wl_debt[1]>>')+' say before walking out the door. '+iif(wl_temp = 1, '<<$wl_debt[1]>>', '<<$wl_debt[2]>>')+' is sitting back down and already is in the process of pulling down the zipper of his jeans.'
+				iif(wl_temp = 1, '"Don''t ruin her for me," <<$wl_debt[2]>>', '"Get her wet and ready for me," <<$wl_debt[1]>>')+' says.'
+							
+				act 'Do what has to be done':
+					wl_debt['reduction_total'] = wl_debt['reduction']
+					wl_debt['reduction'] -= 10 * rand(10,15)
+					if wl_debt['reduction'] < 300: wl_debt['reduction'] = 300 + 10 * rand(2,6)
+				
+					$wl_debt['current'] = iif(wl_temp = 1, $wl_debt[1], $wl_debt[2])
+					gt 'mod_wlife_gang_sex', 'pay_debt_0'
+				end
+			end	
+		end
+	end
+end
+
+if $ARGS[0] = 'pay_debt_1':
+	*clr & cla
+	minut += 3
+	'<center><video autoplay src="mod/wlife/images/prostitution/warehouse/debt/intermezzo_0.mp4"></video></center>'
+	if wl_temp > 1:
+		'"Are you ready for me slut?" <<$wl_debt[''current'']>> asks when he enters the common room. His hungry eyes can''t decide if they want to stare at your bare breasts or your exposed pussy. Some guys just can''t treat a girl in a nice way. But you aren''t a girl in his eyes, you think. In his eyes you''re just a piece of meat he paid for to use in any way he likes.'
+		'You spread your legs and give him a better view of your pussy. "Always," you '+iif(wl_stats['acceptance'] > 60, 'say truthfully.', 'lie.')
+	else
+		'"Hi, how are you doing?" <<$wl_debt[''current'']>> asks and the concern in his voice is obvious. Guys like him could be a nice change, but sometimes you wish they all would treat you like trash. It would be easier to handle, because what can you say to him? No? Some low-level guy like him wouldn''t be able to help you. If he was an asshole, you would just ignore it and let him have you. Convincing guys like <<$wl_debt[''current'']>> to use you makes this even harder.'
+		'"I''m fine," you reply and plaster a hopefully convincing smile on your face. "Don''t worry about me and let me worry about your needs," you continue and when he opens his mouth you add, "if I would have a problem with this, I would say so, OK?" It takes a few seconds, but he finally nods.'
+	end
+	
+	gs 'stat'
+	
+	act 'Get ''paid'' ':
+		*clr & cla
+		minut += 3
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/intermezzo_1.mp4"></video></center>'
+		if wl_temp = 1: wl_debt['reduction'] += 100
+		iif(wl_temp > 1, '"Stand up whore,', '"I''m sorry about that, but could you please stand up,')+' I need to write down how much I pay you," he says and picks the black sharpie up from a nearby table and writes down <<wl_debt[''reduction'']>> on your stomach.'
+		
+		act 'Get started':
+			wl_debt['reduction_total'] += wl_debt['reduction']
+			wl_debt['reduction'] -= 10 * rand(10,15)
+			if wl_temp = 1: wl_debt['reduction'] -= 100
+			if wl_debt['reduction'] < 200: wl_debt['reduction'] = 200 + 10 * rand(1,3)
+			gt 'mod_wlife_gang_sex', 'pay_debt_1'
+		end
+	end
+end
+
+if $ARGS[0] = 'pay_debt_2':
+	*clr & cla
+	minut += 3
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nicholai.jpg"></center>'
+	'Shortly after <<$wl_debt[''current'']>> has left Nicholai enters the room, but he isn''t alone. Two guys follow him inside. "I have good news. This are <<$wl_debt[3]>> and <<$wl_debt[4]>>. They''ll also enjoy your body today," Nicholai explains and adds after a small pause, "at the same time."'
+	'You could protest, but what would that accomplished. Nicholai is doing exactly what you asked for. Finding guys for you to fuck to clear your debt. More guys means more money. "Fine," you say and stand up when <<$wl_debt[3]>> picks up the black sharpie.'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 3
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/end.mp4"></video></center>'
+		'"How many guys did she have?" The guy called <<$wl_debt[4]>> asks.'
+		'"Two, why? Do you want a discount?" Nicholai asks, but it sounds more like a suggestion. "How about <<wl_debt[''reduction'']>> for each of you?"'
+		'You frown. That''s how much you are worth now. <<wl_debt[''reduction'']>>. But you keep your mouth shut and let <<$wl_debt[4]>> write the number on your stomach.'
+				
+		act 'Get it over with': 
+			wl_debt['reduction_total'] += 2 * wl_debt['reduction']
+			gt 'mod_wlife_gang_sex', 'pay_debt_2'
+		end
+	end
+end
+
+if $ARGS[0] = 'pay_debt_end':
+	*clr & cla
+	minut += 3
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nicholai.jpg"></center>'
+	'"Good job <<$pcs_nickname>>, do you want to know how much you made?" Nicholai asks. You look down to your stomach where the '+iif(wl_rand = 2, 'two', 'three')+' numbers are still visible, but you are too exhausted to try to decipher them up upside down. "It''s <<wl_debt[''reduction_total'']>>," he says.'
+	if wl_debt['amount'] >= wl_debt['reduction_total']:
+		 wl_debt['amount'] -= wl_debt['reduction_total']
+		 '"That leaves me with <<wl_debt[''amount'']>>?" you ask as you getting dressed.'
+	else
+		 wl_debt['amount'] = 0
+		 '"That means I have paid all my debt?" you ask adding up the numbers in your head.'
+	end	
+	'"Yeah," Nicholai says. "Just tell Georgiy, when you want me to sell you again," he tells you deprecatingly'+iif(wl_stats['acceptance'] > 60, '. You', ' and you wish you could wipe the evil smirk from his face with a hard slap. Instead you')+' only nod and watch him leave the room.'
+	
+	wl_debt['reduction_total'] = 0
+	
+	act 'Leave the warehouse': wl_nicholai['blocked'] = daystart & gt 'mod_wlife_georgiy', 'leave'
+end
+
+--- mod_wlife_gang ---------------------------------
+
+

+ 310 - 0
locations/mod_wlife_gang_sex.qsrc

@@ -0,0 +1,310 @@
+# mod_wlife_gang_sex
+
+if $ARGS[0] = 'lai':
+	*clr & cla
+	gs 'npcgeneratec', 0, 'Lev', 26
+	gs 'boyStat', $npclastgenerated
+	gs 'pain', 4, 'legL', 'ache'
+	gs 'pain', 4, 'legR', 'ache'
+	gs 'pain', 10, 'throat', 'stretch'
+	if pcs_makeup > 1: pcs_makeup = 0
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/lev_igor/part1_'+rand(0,2)+'.mp4"></video></center>'
+	'The floor is cold and hard, but using the bed never crosses your mind. You ignore the pain that starts to build up in your knees and concentrate on the task at hand... literally. You take one cock in each of your hands and slowly stroke both of them. Their dicks look the same like they could be twins. Same length, same shape and girth and both feel equally warm and hard in your small hands.'
+	if wl_lai['status'] = 1:
+		wl_lai['status'] = 2
+		'"Use your mouth, you fucking piece of trash," Igor orders you and earns himself a slap on the back of his head from his cousin.'
+		'"Keep your mouth shut," Lev tells him. Last time Lev could control Igor, but you don''t want to take any chances. You don''t know if Lev can control his cousin all the time. That''s why you do what Igor wants. Your tongue glides over the length of his shaft before tacking a huge chunk of his cock inside. This seems to finally shut Igor up.'
+		'"Deeper," Igor tells you only after a few seconds and roughly grabs your head. He forces his cock into you, down your throat until his balls slap against your chin. The rough and sudden intrusion stretches your throat nearly beyond his capability.'
+		'"Easy Igor, let her breath," Lev warns him sharply while tears run down your cheeks. You can''t breath and with every passing second your lungs scream louder and louder for oxygen. "IGOR!" This time Igor listens to his cousin and pulls his cock out. You suck cool air into your burning lungs and your panic subsidies a bit. Fucking maniac, you think and you''re glad that Lev insisted on a threesome.'
+		'"Sorry <<$pcs_nickname>>," Lev says and slaps the back of his cousins head again. "Behave yourself Igor."'
+		'"Fuck, stop it Lev," he complains. "Stop hitting me or..." he never has a chance to finish that threat. It''s time for you to take the initiative. You grab both cocks again and swallow Igor''s whole length in one go. This finally shuts him up. This time he doesn''t interfere with your work and you manage to give him and his cousin equal attention.'
+	else
+		'Unlike the first time Igor doesn''t interfere and you manage to give his and his cousin''s cock equal attention.'
+	end
+	
+	gs 'arousal', 'hj', 6, 'prostitution'
+	gs 'arousal', 'bj', -6, 'rough', 'prostitution', 'deepthroat'
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		wl_temp = rand(0,1)
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/lev_igor/part2_'+rand(0,3)+'.mp4"></video></center>'
+		iif(wl_temp = 0, 'Lev', 'Igor')+' pounds into you and it gets more and more complicated to keep up with his increasing speed and also tend to '+iif(wl_temp = 0, 'Igor''s', 'Lev''s')+' needs. A few '+iif(wl_timer['startday'] < 60, 'week', 'months')+' ago you wouldn''t have been able to manage sucking dick and getting pounded hard at the same time, but now, the experienced whore that you are, you synchronize your movements with '+iif(wl_temp = 0, 'Lev', 'Igor')+' to give both men a pleasurable experience.'
+		iif(wl_temp = 0, '"Take my cum bitch," Igor', '"I''m close," Lev')+' says and judging by the increasingly erratic movements '+iif(wl_temp = 0, 'Lev', 'Igor')+' is ready to cum as well. After a few more thrusts '+iif(wl_temp = 0, 'Lev', 'Igor')+' pulls out of your snatch and steps in front of, you next to his cousin.'
+		
+		gs 'arousal', 'vaginal', 7, 'rough', 'prostitution'
+		gs 'arousal', 'bj', -7, 'rough', 'prostitution'
+		gs 'stat'
+		
+		act 'Open your mouth':
+			*clr & cla
+			facial += 1
+			swallow += 1
+			salfetka += rand(1,3)
+			'<center><table cellspacing="3"><tr><td><video autoplay loop src="mod/wlife/images/prostitution/warehouse/lev_igor/part3_0.mp4"></video></td><td><video autoplay loop src="mod/wlife/images/prostitution/warehouse/lev_igor/part3_1.mp4"></video></td></tr></table></center>'
+			'Both men furiously stroke their dicks, but Lev cums first. His warm seed lands all over your face. Not even a single drop manages to get inside your open mouth. Cum runs down your face while Igor steps closer resting his cock directly on your lower lip. One flick of your tongue over the hot skin of his dick and he erupts as well. Semen fills your mouth and after one big gulp only the taste remains.'
+			
+			gs 'cum_call', 'face', 'Lev'
+			gs 'npcgeneratec', 0, 'Igor', 22
+			gs 'boyStat', $npclastgenerated
+			cumnostd = 1 & gs 'cum_call', 'mouth', 'Igor' 
+			gs 'arousal', 'end'
+			gs 'stat'
+			
+			'"Sorry about that," Lev says and pulls a package of tissues out of his pocket. "Here, take this to clean yourself up."'
+									
+			act 'Use the tissues and leave':
+				minut += 10
+				cumspclnt = 20
+				if pcs_makeup = 0: pcs_makeup = 1
+				gs 'cum_cleanup'
+				gt 'mod_wlife_warehouse', 'street'
+			end
+		end
+	end
+end	
+
+if $ARGS[0] = 'nicholai':
+	*clr & cla
+	minut += rand(4,8)
+	cumnostd = 1
+	gs 'boystat', 'A912'
+	$orgasm_txt = 'You can''t control it anymore as your legs shake and your eyes close. His deep hard thrusts push you over the edge. You''re glad that he doesn''t even stop for a millisecond when the first wave of pleasure washes over you and your vaginal muscles pulsate around his dick.'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/nicholai/start_<<rand(0,2)>>.mp4"></video></center>'
+	iif(wl_nicholai['status'] < 2, 'He roughly grabs you by your right arm the second you''re undressed and pulls you to the couch. "Get on all fours," he commands unceremoniously.', 'You already know what he wants and get on all fours the second you have shed all your clothes.')+' He kneels behind you and rams his cock into your pussy without any warning or foreplay. You'+iif(wl_nicholai['status'] < 2, ' ', ' still ')+'yelp as your pussy is abruptly filled to the brim with hard cock'+iif(wl_nicholai['status'] < 2, '.', ', even if you were prepared for what is going to happen.')+' "'+iif(rand(0,1) = 0, 'Fuck', 'Shit')+'," you hiss as pain flares up in your pussy'+iif(rand(0,1) = 0, '. "Shut up and take it, bitch," he tells you', ', but he doesn''t seem to care')+' as he starts to roughly pound his meat into you and you can only hold on for the ride and ...'
+	gs 'arousal', 'vaginal', rand(-12,-8), 'rough', 'prostitution'	
+	gs 'stat'
+
+	act '... take it':
+		*clr & cla
+		minut += rand(4,8)
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/nicholai/intermezzo_<<rand(0,1)>>.mp4"></video></center>'
+		'His stamina is impressive. He never relents and constantly fucks you hard with an ever increasing beat. Even when he pulls you onto his lap, he always does all of the work. He''s quiet most of the time which amplifies the lewd sound of flesh smacking into flesh and cock diving into your hole. But here and there he peppers the sound with a small derogatory comment about your looks, your intelligence or that you''re only a whore.' 
+		gs 'arousal', 'vaginal', rand(-12,-8), 'rough', 'prostitution'
+		gs 'stat'
+		
+		act 'Keep taking it':
+			*clr & cla
+			minut += rand(2,4)
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/nicholai/end.mp4"></video></center>'	
+			$orgasm_txt = 'You can''t control it anymore as your legs shake and your eyes close. His sperm hitting your insides push you over the edge and your vaginal muscles milk his dick for every drop as waves of pleasure wash over you.' 		
+			if wl_nicholai['status'] < 2: 
+				npc_sex['A912'] = 1
+				wl_nicholai['status'] = 2
+				'Suddenly he let''s go and your own weight pulls you down and buries his cock as deep as possible inside your snatch. "Take my cum," he moans and you can feel his baby making juice fill you to the brim.'
+				gs 'arousal', 'vaginal', rand(-8,-4), 'rough', 'prostitution'
+								
+				act 'Let it go':
+					cla & *nl
+					wl_stats['respect'] -= 1
+					wl_nicholai['status'] = 4
+					wl_stats['unprotected'] += 1
+					'He pushes you off him as if you''re nothing more than a sex doll that has fulfilled its purpose. Afterwards he quickly get''s dressed and leaves without saying another word or even looking at you.'
+					
+					act 'Get dressed and leave': minut += 5 & gt 'mod_wlife_warehouse', 'street'
+				end
+				
+				gs 'willpower', 'self', 'resist', 'cum_inside'
+				if will_cost <= pcs_willpwr:	
+					act 'Complain (<<will_cost>> Willpower)':
+						cla & *nl
+						wl_stats['respect'] += 1
+						wl_nicholai['status'] = 3
+						gs 'willpower', 'pay', 'resist'
+						gs 'stat'
+						'"What the fuck?" you shout in disbelief as you touch your wet pussy to make sure that he really came inside you. "We didn''t agree on that!"'
+						'Nicholai doesn''t react, he doesn''t even look at you, instead he pulls his shirt over his head and picks up his jeans from the floor.'
+						'"Hey, I''m talking to you. You can''t just cum inside me," you keep shouting rubbing your cum stained fingers clean on the couch. Nicholai meanwhile pulls his jeans up and walks out of the room ignoring you.'
+						'"Fuck," you shout annoyed and mumble to yourself, "what an asshole."'
+						
+						act 'Get dressed and leave': minut += 5 & gt 'mod_wlife_warehouse', 'street'
+					end
+				else
+					act 'Complain (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			else
+				wl_stats['unprotected'] += 1
+				'And he''s done. Just like last time he abruptly stops and your own weight buries his cock as deep as possible into you as he shots his load into your young pussy.'
+				gs 'arousal', 'vaginal', rand(-8,-4), 'rough', 'prostitution'
+				'He pushes you off you as if you''re nothing more than a sex doll that has fulfilled its purpose. Afterwards he quickly get''s dressed and leaves without saying another word or even looking at you.'
+				
+				act 'Get dressed and leave': minut += 5 & gt 'mod_wlife_warehouse', 'street'
+			end
+			
+			gs 'arousal', 'end'
+			gs 'stat'
+			
+			if $orgasm_txt ! '': killvar '$orgasm_txt'
+		end
+	end
+end
+
+if $ARGS[0] = 'pay_debt_0':
+	*clr & cla
+	wl_stats['unprotected'] += 1
+	gs 'npcgeneratec', 0, $wl_debt['current'], rand(18,25)
+	gs 'boyStat', $npclastgenerated
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_1/bj_'+iif(wl_temp = 1, 0, rand(1,2))+'.mp4"></video></center>'
+	if wl_temp = 1:
+		gs 'arousal', 'bj', 9, 'sub', 'prostitution'
+		'You kneel down naked next to him as he pulls down his pants to reveal his limp dick. "Suck me hard," he tells you and you can barely manage to keep the sigh in that wants to escape your mouth. That''s going to take a while, you predict.'
+		'The lifeless thing inside your mouth feels weird. Normally young man like him respond before you have even touched their penis with your lips, but he stays stubbornly soft. "I thought you''re a pro, put some effort into it," he says angrily.'
+		'Asshole, you think. Why is it your problem, when he can''t get his impotent dick up. Still, there''s no point in complaining to him. You concentrate more on the sensitive tip and after a few minutes the dick inside your mouth finally starts to grow. "That''s enough, get your ass over here."'
+	else
+
+		gs 'arousal', 'foreplay', -3, 'sub', 'prostitution'
+		gs 'arousal', 'vaginal_finger', -3, 'sub', 'prostitution'
+		gs 'arousal', 'bj', 3, 'sub', 'prostitution', 'deepthroat'
+		'You kneel down naked next to him as he pulls down his pants to reveal his already hard cock. "Use your mouth whore," he tells you and you obediently comply with his order. The whole time you play with his dick his hands roam your body. <<$wl_debt[''current'']>> touches every inch of naked flesh, he can reach, before concentrating on your '+iif(pcs_horny > 50, 'wet', 'dry')+' folds. His experienced fingers find your hole and push inside while you push your head down to deepthroat him.'
+		'"That''s enough slut, get your ass over here."'
+	end
+		
+	gs 'stat'
+	
+	act 'Do it':
+		*clr & cla
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_1/pussy_'+iif(wl_temp = 1, rand(0,1), rand(2,3))+'.mp4"></video></center>'
+		if wl_temp = 1:	
+			'You swing one leg over his and sit down on his lap guiding his dick inside your pussy. He''s already getting soft and you hope that the stimulation and warmth of your snatch is enough to keep him hard enough to fuck you. He''ll probably not appreciate if he isn''t able to perform and blame you for his failure.'
+			'But all your doubts quickly dissipate. There never was a reason to worry. He grows harder when you start to move your ass up and down and you two instantly find a good rhythm.'
+		else
+			'He rams his thick meat inside. There''s no other way to describe it. From one second to the next your hole is abruptly filled. "Yeah, that''s what I''m talking about," he shouts pulling his cock out and rams it back in with all the force he can muster. You can only hold on to the edge of the couch and wait until he''s done ravaging you.'
+		end
+		
+		iif(rand(0,1) = 0, '"Fuck, I''m close,"', '"I''m... I''m going to cum,"')+' he suddenly groans and you bit your tongue not to say anything. Georgiy''s order was clear. You have to do, what they want.' 
+
+		gs 'arousal', 'vaginal', iif(wl_temp = 1, 3, 9), 'sub', 'prostitution', iif(wl_temp = 1, '', 'rough')
+		gs 'stat'
+	
+		act 'Don''t say anything':
+			*clr & cla
+			minut += 3
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_1/cumshot.mp4"></video></center>'
+			'"Fuck, yes," he groans and pulls his cock out of your cunt. "Take it bitch," he shouts shooting his cum all over your ass. "'+iif(rand(0,1), 'Damn, that was great. Would have loved to fill your hole, but I had to be considerate of the other guys', 'You can wait here, I''ll tell the next guy that you''re ready for him')+'," <<$wl_debt[''current'']>> says.'
+	
+			gs 'cum_call', 'butt', $wl_debt['current']
+			gs 'arousal', 'vaginal', -2, 'sub', 'prostitution'
+			gs 'arousal', 'end'
+			gs 'stat'
+			 
+			$wl_debt['current'] = iif($wl_debt['current'] = $wl_debt[1], $wl_debt[2], $wl_debt[1])
+			
+			act 'Wait for <<$wl_debt[''current'']>>': gt 'mod_wlife_gang', 'pay_debt_1'
+		end
+	end
+end
+
+if $ARGS[0] = 'pay_debt_1':
+	*clr & cla
+	wl_stats['unprotected'] += 1
+	gs 'npcgeneratec', 0, $wl_debt['current'], rand(18,25)
+	gs 'boyStat', $npclastgenerated
+	if rand(0,3) = 0 or wl_temp = 1:
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_2/bj_'+rand(0,1)+'.mp4"></video></center>'
+		'He'+iif(wl_temp = 1, ' softly ', ' ')+'pushes your head down and it''s obvious what he wants. You let the tip of his dick slip into your wet mouth and softly suck on it. "Yes, that''s great," he says and falls back against the couch and relaxes. To your surprise he let''s you do your job and doesn''t say anything. You''re free to really show him your skill and he moans appreciatively when you tend to the sensitive tip or deepthroat the whole length of his penis.'
+		'"Oh yes, damn... you''re really great <<$pcs_nickname>>, keep doing that," he moans close to the edge of his orgasm.'
+		
+		gs 'arousal', 'bj', 9, 'sub', 'prostitution', 'deepthroat'
+	else
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_2/pussy_'+rand(0,2)+'.mp4"></video></center>'
+		if rand(0,1) = 0:
+			minut += 9
+			$orgasm_or = 'no'
+			if pcs_horny > 60: pcs_horny -= 40
+			'This is as vanilla as sex can be. Cock inside pussy, switching positions after a few minutes and it''s not bad, he''s even better than most, but something is missing for you. Both of you''re are going through the motions and he''s clearly enjoying himself, but if you could use only one word to describe it, it would be boring.'
+			'He''s ready to cum after a few more minutes of playing the part of the grateful whore that''s so thankful for having his oh-so magnificent cock inside her. "Open your mouth," he says kneeling next to your face.'
+			gs 'arousal', 'vaginal', -1, 'sub', 'prostitution'
+		else
+			if pcs_horny < 60: pcs_horny = 70
+			$orgasm_or = 'yes'
+			$orgasm_txt = 'This is as vanilla as sex can be. Cock inside pussy, switching positions after a few minutes, but somehow something is different. He hits all the right spots and your orgasm is approaching quickly. It''s like pressure behind a dam that rises quickly until it finally bursts. Your fingers grab the old leather of the couch, your eyes flutter shut and your mind goes blank. Maybe only seconds pass but it feels like minutes. "Open your mouth." His voice pulls you back and the second you open your eyes again you see he kneels next to your face. '
+			
+			gs 'arousal', 'vaginal', 6, 'sub', 'prostitution'
+		end
+		
+	end
+	
+	gs 'stat'
+	
+	act 'Take his cum':
+		*clr &cla
+		minut += 3
+		swallow += 1
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_2/cumshot.mp4"></video></center>'
+		'Warm cum hits your taste buds and floods your mouth. "Oh, yes," he groans. "Swallow it all."'
+		'You gulp once followed by a second time when a few more smaller spurts hit your tongue.'
+		'"Can you do me a favor?" you ask when he goes up to get dressed. "Can you tell Nicholai that I''m done?"'
+		'"Sure '+iif(wl_temp = 1, $pcs_nickname, 'whore')+'," he says before walking out of the room.'
+		
+		gs 'cum_call', 'mouth', $wl_debt['current']
+		gs 'arousal', 'bj', -1, 'sub', 'prostitution'
+		gs 'arousal', 'end'
+		gs 'stat'
+		
+		act 'Wait for Nicholai': gt 'mod_wlife_gang', 'pay_debt_'+iif(wl_rand = 3, '2', 'end')
+	end
+end 
+
+if $ARGS[0] = 'pay_debt_2':
+	*clr & cla
+	wl_stats['unprotected'] += 2
+	$wl_debt['current'] = $wl_debt[3]
+	gs 'npcgeneratec', 0, $wl_debt['current'], rand(18,25)
+	gs 'boyStat', $npclastgenerated
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_3/start.mp4"></video></center>'
+	iif(rand(0,1) = 0, '"Look at those tits," <<$wl_debt[4]>> says to the other guy ', '"Damn you''re hot bitch <<$pcs_nickname>>," <<$wl_debt[3]>>," says to you')+' as his hands roam over you. They both explore every nook and cranny of your body satisfied by the simple handjob you both give them.'
+	wl_temp = rand(0,3)
+	if wl_temp = 0 and wl_debt['status'] > 4:
+		pcs_mood = 100
+		'<<$wl_debt[4]>> is watching intensely how your hand moves up and down his shaft. "Do you like how my big cock feels in your hand?" he asks you in such a serious tone that you can only barely stop yourself from bursting out laughing. The same isn''t true for <<$wl_debt[3]>>. His laughter thunders through the room. "Dude, what the fuck... do you like how my big cock feels? Really?" You couldn''t agree more, but you slightly bite the inside of your cheek to prevent you from grinning. To your surprise <<$wl_debt[4]>> isn''t angry, instead he joins in and a second later you three are all laughing.'
+		'"OK you two," you say when all three of you finally calmed down again. "How about we move on from the jokes to more serious stuff?"'
+		'"Good idea," <<$wl_debt[4]>> agrees.'
+	else
+		'"Yeah, stroke it bitch," <<$wl_debt[3]>> encourages you while his touches grow bolder by the second. <<$wl_debt[4]>> reacts completely different. The longer you stroke him the more he relaxes until he closes his eyes and just enjoys your touch. After a few minute <<$wl_debt[3]>> pushes a finger inside your cunt and without hesitation puts it directly into his mouth and sucks on it like a lolly. "Damn, you taste great. How about I push something bigger inside?"'
+		
+		gs 'arousal', 'vaginal_finger', -3, 'sub', 'prostitution'
+	end
+		
+	gs 'arousal', 'foreplay', 3, 'sub', 'prostitution'	
+	gs 'arousal', 'hj', 3, 'sub', 'prostitution'	
+	gs 'stat'
+	
+	if wl_debt['status'] = 4: wl_debt['status'] = 5
+	
+	act 'Fuck them both':
+		*clr &cla
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_3/threesome_'+rand(0,4)+'.mp4"></video></center>'
+		'In the next minutes your mouth and your pussy are constantly filled. The three of you switch between several positions. At times you lie on the side with one of the guys fucking you from behind, sometimes you''re riding one of them cowgirl style while the other one stands next to you getting his cock sucked at the same time or you''re bend over the couch. With your mouth steadily filled with cock you never have a chance to reply to their '+iif(wl_temp = 0 and wl_debt['status'] > 4, 'compliments', 'degrading insults')+' until they''re ready to cum.'
+		
+		gs 'arousal', 'vaginal', 12, 'sub', 'prostitution' 
+		gs 'arousal', 'bj', -12, 'sub', 'prostitution'
+		gs 'stat'
+		
+		act 'Receive their cum':
+			*clr & cla
+			minut += 5
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/warehouse/debt/scene_3/cumshot.mp4"></video></center>'
+			'Their cocks slip simultaneously out of your holes. <<$wl_debt[''current'']>> sprays his load all over your tits while the other guys covers the outside of your pussy with his seed. '+iif(wl_temp = 0 and wl_debt['status'] > 4, '"Thanks, <<$pcs_nickname>>,"', '"Be careful bitch with that cum, don''t mess up our couch,"')+' <<$wl_debt[4]>> says as both step away from the couch and pick up their clothes. "We''ll tell Nicholai that we''re done with you," is the last thing they tell.'	
+			
+			gs 'cum_call', 'breasts', $wl_debt['current']
+			$wl_debt['current'] = $wl_debt[4]
+			gs 'npcgeneratec', 0, $wl_debt['current'], rand(18,25)
+			gs 'boyStat', $npclastgenerated
+			gs 'cum_call', 'labia', $wl_debt['current']
+			
+			gs 'arousal', 'vaginal', 1, 'sub', 'prostitution' 
+			gs 'arousal', 'bj', -1, 'sub', 'prostitution'			
+			gs 'arousal', 'end'
+			gs 'stat'
+		
+			killvar 'wl_temp'
+		
+			act 'Wait for Nicholai': gt 'mod_wlife_gang', 'pay_debt_end'
+		end
+	end
+end 
+
+--- mod_wlife_gang_sex ---------------------------------
+
+

+ 596 - 0
locations/mod_wlife_georgiy.qsrc

@@ -0,0 +1,596 @@
+# mod_wlife_georgiy
+
+!!------ Check-In ------
+
+if $ARGS[0] = 'check_in':
+	if week = 7:
+		gt 'mod_wlife_georgiy', 'check_start'
+	else
+		gt 'mod_wlife_georgiy', 'check_missed'
+	end
+end
+
+if $ARGS[0] = 'check_missed':
+	*clr & cla
+	menu_off = 1
+	minut += 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/jeep.jpg"></center>'
+	'A familiar car speeds down the road and stops right next to you. Two of Bely''s men exit it while a third stays behind the wheel.'
+	'"Georgiy wants to talk to you right now," one of them yells angrily and they pull you inside the car before you have a chance to react.'
+
+	act 'Continue': minut += 10 & gt 'mod_wlife_georgiy', 'check_start'
+end
+
+if $ARGS[0] = 'check_start':
+	*clr & cla
+	menu_off = 1
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'		
+	if week = 7:
+		'"<<$pcs_nickname>>, it''s good to see you again," he says with a fake smile. "Let''s go into my ''office''."'
+		act 'Go with him':
+			if wl_okoro['status'] = 1:
+				gt 'mod_wlife_demands', 'bbc_intro_end'
+			else
+				gt 'mod_wlife_georgiy', 'check'
+			end
+		end
+	else
+		wl_stats['loyalty'] -= 5	
+		'Georgiy Bely is already waiting for you at the warehouse and he his furious. "Are you fucking kidding me, <<$pcs_nickname>>?" He yells, brutally grabs your arm and twists it around.'
+		'You scream in pain while he forces you on your knees. "I told you to talk to me every Sunday. Is that so hard to understand you stupid whore?"'
+		'"Sorry, it won''t happen again," you manage to say between waves of pain.'
+		'"You''re right, it won''t," he tells you as he lets go off your arm and opens his belt. "Time for a lesson in obedience." He takes out his already hard cock. "Open your mouth, bitch."'
+		gs 'pain', 4, 'armL', 'twist'
+		gs 'stat'
+	
+		act 'Do it': gt 'mod_wlife_georgiy_sex', 'punishment_1'		
+	end
+end
+
+if $ARGS[0] = 'check':
+	*clr & cla
+	minut += 2
+	wl_debt['nicholai'] = 0
+	wl_georgiy['timer_day'] = daystart
+	if wl_prison['shift'] = 1: wl_prison['shift'] = 0
+	gs 'stat'
+	if week ! 7: wl_georgiy['timer_day'] -= week
+	if wl_stats['acceptance'] > 100: wl_stats['acceptance'] = 100
+	
+	!!Checks
+	
+	gs 'mod_wlife_functions', 'reputation_check'
+	
+	if wl_georgiy['payment_method']	= 1:
+		gs 'mod_wlife_georgiy', 'lump_sum_check'	
+	else
+		gs 'mod_wlife_georgiy', 'shift_check'
+	end
+
+	gs 'mod_wlife_georgiy', 'punishment_check'
+		
+	act 'Continue':
+		if wl_bad['status_punishment'] = 1 or (wl_georgiy['timer_week'] ! week and wl_demand['party'] = 1) or wl_stats['loyalty'] < -80:
+			if wl_stats['loyalty'] < -80: wl_stats['loyalty'] += 5
+			gt 'mod_wlife_punishment', 'start'
+		elseif wl_bad['status_punishment'] = 0 and (wl_timer['startday'] + 14) < daystart and wl_homeless['status'] = 0:
+			cla & *nl
+			'"I need to discuss something else with you today," he says in a serious tone of voice. "Follow me."'
+			act 'Do it': gt 'mod_wlife_punishment', 'homeless_intro_0'
+		elseif wl_georgiy['payment_method'] = 0 and wl_okoro['status'] > 0 and wl_prison['status'] > 0 and ((1000 / max(pav_prostitute, 1)) < wl_whore['pav_total']):
+			gt 'mod_wlife_georgiy', 'payment_switch'
+		else
+			gt 'mod_wlife_georgiy', 'demands_and_favors'
+		end
+	end
+end
+
+if $ARGS[0] = 'debt_check':
+	*nl
+	wl_debt['temp'] = (wl_debt['amount'] * wl_debt['interest_weekly']) / 100
+	if wl_debt['temp'] > 0:
+		'The first thing Georgiy does is to remind you to pay your debt. You owe the Belys <<wl_debt[''amount'']>> <b>₽</b> and have to pay <<wl_debt[''interest_weekly'']>>% interest every week. This amounts to <<wl_debt[''temp'']>> <b>₽</b>.'
+		wl_debt['amount'] += wl_debt['temp']
+	end
+	wl_debt['temp'] = 0
+end
+
+if $ARGS[0] = 'shift_check':
+	
+	if wl_georgiy['weekly_amount'] < 10000: wl_georgiy['weekly_amount'] += 2500
+	
+	if wl_whore['shifts_done'] > 0: 
+		wl_whore['earnings_check'] = wl_whore['earnings_week'] / wl_whore['shifts_done']
+			
+		if wl_whore['shifts_minimum'] = 3: wl_whore['earnings_check'] += 750 * (wl_whore['shifts_done'] - wl_whore['shifts_week'])
+			
+		if wl_whore['earnings_check'] < 1500:
+			$wl_whore['earnings_msg'] = '"But maybe stop playing on your phone or what you girls do all day and look for clients! The rotting corpse of my dead mother would earn more during a shift than you."'
+			wl_stats['loyalty'] -= 2
+			wl_bad['counter_earning'] += 3
+		elseif wl_whore['earnings_check'] < 2250:
+			$wl_whore['earnings_msg'] = '"But next time, actually do some fucking work. Showing up isn''t enough," he warns you.'
+			wl_stats['loyalty'] -= 1
+			wl_bad['counter_earning'] += 2
+		elseif wl_whore['earnings_check'] < 3250:
+			$wl_whore['earnings_msg'] = '"But put some effort into it. I have whores that earn more than twice the amount."'
+			wl_bad['counter_earning'] += 1
+		elseif wl_whore['earnings_check'] < 4750:
+			$wl_whore['earnings_msg'] = '"By the way, you did OK. Put more effort into it and you will be a decent earner at some point."'		
+		elseif wl_whore['earnings_check'] < 6500:
+			$wl_whore['earnings_msg'] = '"By the way, you did a good job this week. You aren''t playing in the same league as my best whore, but you''re getting there."'
+			wl_stats['loyalty'] += 1
+			wl_bad['counter_earning'] -= 1
+		elseif wl_whore['earnings_check'] < 9000:
+			$wl_whore['earnings_msg'] = '"By the way, you did a great job this week. You are one of my best street whores."'
+			wl_stats['loyalty'] += 2
+			wl_bad['counter_earning'] -= 2
+		else
+			$wl_whore['earnings_msg'] = '"By the way, you were my best whore on the street. Great job <<$pcs_nickname>>."'
+			wl_stats['loyalty'] += 3
+			wl_bad['counter_earning'] -= 3
+		end
+		if wl_whore['earnings_week'] < wl_georgiy['weekly_amount']:
+			*nl
+			wl_debt['amount'] += (wl_georgiy['weekly_amount'] - wl_whore['earnings_week'])
+			$wl_whore['earnings_msg'] += '<br>"I expect my whores to make at least <<wl_georgiy[''weekly_amount'']>> <b>₽</b> per week, but you only made <<wl_whore[''earnings_week'']>> <b>₽</b>. I''ll add the difference to your debt," he says and increases your debt by <<wl_georgiy[''weekly_amount''] - wl_whore[''earnings_week'']>> <b>₽</b>.'+iif(wl_georgiy['weekly_amount'] < 10000, ' It''s only <<wl_georgiy[''weekly_amount'']>> because you''re new to this. Normally, I expect all my girls to deliver at least 10000 every week.', '')
+		end
+	else
+		$wl_whore['earnings_msg'] = ''
+	end
+			
+	wl_whore['shifts_total'] += wl_whore['shifts_done']
+				
+	if wl_whore['shifts_done'] < wl_whore['shifts_week']:
+		wl_bad['status_punishment'] = 1
+		wl_bad['work'] = 1
+		wl_whore['shifts_week_last'] = wl_whore['shifts_week']
+		wl_stats['loyalty'] += wl_whore['shifts_done'] - wl_whore['shifts_minimum']
+		wl_whore['shifts_week'] -= wl_whore['shifts_done']
+		wl_whore['shifts_week'] += wl_whore['shifts_minimum']		
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+		if wl_whore['shifts_week'] > 6:
+			wl_stats['loyalty'] -= 40
+			wl_whore['shifts_week'] = 6
+			gs 'pain', 8, 'head', 'slap'
+			gs 'stat'
+			'"Are you fucking kidding me?" He screams and slaps you violently with his open hand. You are thrown onto the couch and cover your face in case he does it again, but he doesn''t. Probably doesn''t want to damage the merchandise. "You promised to do better and what was your promise worth? Fucking nothing."'
+			'"Please, Georgiy," you try to say, but he cuts you off. "Stop. You will work every day next week and I hope for your fucking sake that you have better news for me next Sunday or I swear to god...," he lifts his hand in a threatening motion.'
+		else
+			wl_stats['loyalty'] -= 10
+			gs 'pain', 4, 'head', 'slap'
+			gs 'stat'
+			'"<<$pcs_nickname>>, <<$pcs_nickname>>, <<$pcs_nickname>>," he says and shakes his head every time he says your name, when you look up he suddenly slaps you. Not especially hard, but hard enough that a sharp pain shoots through your face. "I told you to work <<wl_whore[''shifts_week_last'']>> shifts!"'
+			'"I''m sorry, I couldn''t work so much this week. Please, I''ll do it next week and work extra hard. I promise!"'
+			'"You will work <<wl_whore[''shifts_week'']>> shifts to make up for this week," he tells you angrily.'
+		end
+		
+		if wl_stats['loyalty'] < 0 and wl_whore['share_player'] > 25:
+			'"Oh and by the way," he says angrily. "I''ll cut your share to 25% until you have proven yourself."'
+			wl_whore['share_player'] = 25
+			wl_whore['share_pimp'] = 75
+		end
+		
+		wl_whore['shifts_week_last'] = 0
+	elseif wl_whore['shifts_done'] >= wl_whore['shifts_week']:
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		if wl_whore['shifts_done'] > wl_whore['shifts_week']:
+			'"Volya told me how you performed this week," he says with a strangely sincere smile on his face. "You did very well. I really appreciate your initiative <<$pcs_nickname>>. Keep it up. You have to work <<wl_whore[''shifts_minimum'']>> shifts next week, but if you again want to work more feel free to do so."'
+		else
+			'"Volya told me how you performed this week," he says. "You did well, keep it up. You have to work <<wl_whore[''shifts_minimum'']>> next week and as long as you keep doing your part, we won''t have a problem."'
+		end
+		*nl
+		$wl_whore['earnings_msg']
+		*nl
+		'Since last week he had heard several stories about your behavior and he tells you that he thinks that you are one of his <<$wl_stats[''loyalty'']>> girls.'
+									
+		wl_whore['shifts_done'] -= wl_whore['shifts_week']
+		wl_stats['loyalty'] += wl_whore['shifts_done']
+		wl_whore['shifts_week'] = wl_whore['shifts_minimum']	
+	end
+
+	wl_whore['earnings_total'] += wl_whore['earnings_week']
+	wl_whore['earnings_week'] = 0
+		
+	wl_whore['shifts_total_minimum'] += wl_whore['shifts_minimum']
+	wl_whore['shifts_done'] = 0
+end
+
+if $ARGS[0] = 'lump_sum_check':
+	wl_debt['lump_sum_interest'] = 0
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/money.jpg"></center>'
+	'Georgiy doesn''t concern himself with niceties like greeting somebody. He only asks. "Do you have my money?"'
+	if money > wl_georgiy['lump_sum']:
+		wl_stats['loyalty'] += 5
+		money -= wl_georgiy['lump_sum']
+		gs 'stat'
+		'You nod and hand him the <<wl_georgiy[''lump_sum'']>> <b>₽</b>.'
+		'"Good job <<$pcs_nickname>>."'
+	else 
+		wl_stats['loyalty'] -= 5
+		wl_debt['lump_sum_interest'] += ((wl_georgiy['lump_sum'] - money) * wl_debt['interest'] / 100)
+		wl_debt['amount'] += (wl_georgiy['lump_sum'] - money + wl_debt['lump_sum_interest'])
+		'You shake your head and only hand him <<money>> <b>₽</b>.'
+		'"That isn''t good <<$pcs_nickname>>. I will add the rest to your debt and you will have to pay <<wl_debt[''lump_sum_interest'']>> <b>₽</b> interest.'
+		gs 'stat'
+		
+		if (wl_georgiy['lump_sum'] / max(money, 1)) > 1: 
+			wl_bad['lump_sum'] = 1
+			wl_bad['status_punishment'] = 1
+		end
+		
+		money = 0
+	end
+	
+	if wl_georgiy['lump_sum_model'] = 0 and city_modelling > rand(150,200):
+		wl_georgiy['lump_sum_model'] = 1
+		wl_georgiy['lump_sum'] += 2500
+		*nl
+		gs 'pain', 10, 'head', 'slap'
+		'"There is one other think we have to talk about. Your new career as a model," he says and shakes his head annoyed. "Do you really think that we wouldn''t notice?"'
+		'"I didn''t know that it would be a problem," you reply quickly.'
+		'"It isn''t, but don''t you believe we deserve our fair share?"'
+		'You frown. Fair share? Fair share for what exactly? It''s not like Georgiy is posing in front of the camera. "I do," you say instead. "But for what exactly?"'
+		'Georgiy slaps your face hard and hot pain flares up in your cheek. "Ungrateful bitch. Do you really believe without helping you to realize your potential you would have the courage to pose for men?" You obediently shake your head and put your hand on your burning cheek. "You will pay me an additional 5,000 <b>₽</b> every week."'
+	elseif wl_georgiy['lump_sum_porn'] = 0 and city_porn > rand(150,200):
+		wl_georgiy['lump_sum_porn'] = 1
+		wl_georgiy['lump_sum'] += 2500
+		'"Vadim send me an interesting video. Can you guess what was in it?"'
+		'You think about it for and then answer hesitantly. "Me?"'
+		'"Yes you, doing porn. From now on you''ll pay me 5,000 <b>₽</b> more every week. We deserve our fair share, because with out us you would probably never even thought about doing something like this."'
+	end
+end
+
+if $ARGS[0] = 'punishment_check':
+	if (wl_medical['timer_week'] = 0 or wl_medical['punishment'] = 1) and wl_bad['status_punishment'] = 0:
+		wl_stats['loyalty'] -= 5
+		wl_bad['status_punishment'] = 1
+		wl_bad['medical'] = 1
+		wl_medical['punishment'] = 0
+		'"Doctor Mikhailov informed me you missed your bi-weekly appointment. I don''t need a'+iif($wl_status['abortions'] = 'yes', ' pregnant or ', ' ')+' sick whore. I think some motivation is necessary so that you don''t forget to go there again.'
+	elseif wl_medical['timer_week'] = 0 and wl_medical['punishment'] = 0 and wl_bad['status_punishment'] = 1:
+		wl_medical['punishment'] = 1
+	end
+	
+	if wl_bad['status_punishment'] = 0 and wl_bad['counter_earning'] / 12 > wl_bad['counter'] and wl_bad['status'] = 0:
+		wl_bad['status'] = 1
+		wl_bad['counter'] += 2
+	elseif wl_bad['status_punishment'] = 0 and wl_bad['counter_earning'] / 6 > wl_bad['counter'] and wl_bad['status'] > 0:
+		wl_bad['status_punishment'] = 1
+		wl_bad['earnings'] = 1
+		wl_bad['counter'] += 1
+		'"<<$pcs_nickname>>, you don''t seem to '+iif(wl_bad['counter'] = 1, 'take your job as serious as I hoped you would.', 'get the message.')+' I think some motivation to put some more effort into it is necessary'+iif(wl_bad['counter'] = 1, ' again."', '."')
+	end
+	
+	wl_debt['punishment_check'] = 100000 + (wl_stats['loyalty'] * 500)
+	
+	if wl_debt['punishment_week'] = 1:
+		wl_debt['punishment_week'] = 0
+	elseif wl_debt['amount'] > wl_debt['punishment_check'] and wl_debt['amount'] <= (wl_debt['punishment_check'] * 2): 
+		wl_bad['total_debt'] = 1
+		wl_bad['status_punishment'] = 1
+		wl_debt['punishment_week'] = 1
+	elseif (wl_debt['amount'] - money) > (wl_debt['punishment_check'] * 2):
+		wl_bad['total_debt'] = 2
+	end
+end
+
+if $ARGS[0] = 'payment_switch':
+	*clr & cla
+	minut += 2
+	wl_georgiy['payment_method'] = 1
+	gs 'stat'
+	
+	if wl_whore['earnings_check'] > 10000:
+		wl_georgiy['lump_sum'] = 25000
+	elseif wl_whore['earnings_check'] > 7500:
+		wl_georgiy['lump_sum'] = 20000
+	elseif wl_whore['earnings_check'] > 5000:
+		wl_georgiy['lump_sum'] = 15000
+	elseif wl_whore['earnings_check'] > 3500:
+		wl_georgiy['lump_sum'] = 12500
+	else
+		wl_georgiy['lump_sum'] = 10000
+	end
+	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'"Well, well, well," Georgiy says with a cold smile. "We have been busy, haven''t we?" But he doesn''t want an answer from you. "I heard some stories about a new teen whore in Pavlovsk and her name is <<$pcs_nickname>>, when you believe the rumors."'
+	'You swallow hard. "Georgiy, please. I can explain...," you mumble, but he shuts you up with one quick gesture of his hand.'
+	'"Do you think I''m angry?" he asks you with a neutral expression.'
+	'"Uhm... maybe? I earned money on the side...," you start, but he finishes the sentence for you. "And you didn''t give us our fair share." You nod. "I would be if I wasn''t so happy that my newest girl finally embraced her inner whore." He doesn''t look happy. "But we deserve our fair share. That''s obviously true. But I can''t have Volya follow you around 24/7 to control how much you work and I also really need him to train the next girl."'
+	'Train? Did he just say ''train the next girl''. Did Volya train you? Doubt bubbles up inside you, but those thoughts are pushed to the side, when he continues. "You will still have to visit me every Sunday and pay me <<wl_georgiy[''lump_sum'']>> <b>₽</b>, but how you earn this money is up to you."'
+	'"<<wl_georgiy[''lump_sum'']>> <b>₽</b>? How am I suppose to earn that, when Volya isn''t my pimp anymore. How am I suppose to get to the gas station?"'
+	'"I don''t care. Take the fucking bus."'
+	
+	act 'Continue':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/info.gif"></center>'	
+		'You have reached the start of the second chapter of the prostitution story. You will have to earn money on your own from now on. There is bus that can take you to the gas station from the train station in the industrial area of St. Petersburg. The amount you have to pay to Georgiy is based on your last average daily earning. It can be lowered or raised in the cheatmenu in the phone if it''s to hard or to easy to earn the money.'
+		*nl
+		'From now on you can look for customers in Pavlovsk. This icon...'
+		'<center><img height = 100 src="mod/wlife/images/objects/prostitute.png"></center>'
+		'... will appear during the day if you''re wearing prostitution clothes, heels and are in one of the areas of Pavlovsk in which clients can approach you. Click on it to start searching for customers.'
+		
+		act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+	end
+end
+
+if $ARGS[0] = 'demands_and_favors':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'"I don''t have anything else to discuss with you, do you have something on your mind or are we done here?" Georgiy asks.'
+	
+	if wl_debt['nicholai'] < 1:
+		act 'Leave the warehouse': gt 'mod_wlife_georgiy', 'leave'
+		if wl_iosif['timer'] = 1 and hour > 21: act 'Go and meet Iosif': minut += 3 & gt 'mod_wlife_iosif', 'warehouse_prostitution'
+	else
+		act 'Go to Nicholai': gt 'mod_wlife_gang', 'pay_debt_0'
+	end
+		
+	if (wl_whore['share_timer'] + 7) < daystart and wl_whore['share_player'] < 40 and (wl_timer['startday'] + 14) < daystart and wl_georgiy['payment_method'] = 0:
+		act 'Ask for a bigger share': gt 'mod_wlife_georgiy', 'ask_share'
+	elseif (wl_whore['share_timer'] + 7) >= daystart and wl_whore['share_player'] < 40 and wl_georgiy['payment_method'] = 0:
+		'<br>You already asked '+iif(wl_whore['share_timer'] = daystart, 'today', 'last week')+' for a bigger share of your earnings.'
+	end
+
+	if wl_debt['amount'] > 0 and wl_debt['borrow_timer'] ! daystart and wl_debt['nicholai'] < 1: 
+		if money > 0 and wl_debt['pay_timer'] ! daystart:
+			act 'Pay down your debt':
+				*clr & cla
+				minut += 2
+				wl_debt['pay_timer'] = daystart
+				'<center><img <<$set_imgh>> src="mod/wlife/images/objects/money.jpg"></center>'
+				if money >= wl_debt['amount']:
+					wl_stats['respect'] += 2
+					'You pay down the rest of your debt (<<wl_debt[''amount'']>>).'
+					money -= wl_debt['amount']
+					wl_debt['amount'] = 0
+				else
+					wl_stats['respect'] += 1
+					wl_debt['amount'] -= money
+					'You give Georgiy <<money>> <b>₽</b> and reduce your debt to <<wl_debt[''amount'']>> <b>₽</b>.'
+					money = 0
+				end
+				gs 'stat'
+							
+				act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+			end
+		end
+		if wl_debt['status'] = 0 and wl_stats['acceptance'] < 20 and wl_nicholai['status'] > 0:
+			'<br>There are probably some of his guys that would fuck you, you think as you remember Nicholai '+iif(wl_nicholai['status'] > 1, 'fucking', 'soliciting')+' you the other day. You could ask Georgiy to pay down your debt in that way if you have accepted your new life enough to do that.'
+		elseif (wl_debt['status'] = 0 and wl_stats['acceptance'] >= 20) or (wl_debt['status'] > 0 and wl_stats['acceptance'] < 60) and wl_debt['timer'] ! daystart and wl_nicholai['status'] > 0:
+			$wl_temp = iif(wl_debt['status'] > 0, 'Ask to fuck down your debt', 'Inquire about an alternative ways to pay down your debt')
+			gs 'mod_wlife_functions', 'will_acceptance', 'self'
+			if will_cost <= pcs_willpwr:
+				act '<<$wl_temp>> (<<will_cost>> Willpower)':
+					gs 'mod_wlife_functions', 'will_acceptance', 'self'
+					gs 'willpower', 'pay', 'self'
+					gt 'mod_wlife_georgiy', 'pay_debt'
+				end
+			else
+				act '<<$wl_temp>> (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		elseif wl_debt['status'] > 0 and wl_stats['acceptance'] >= 60 and wl_debt['timer'] ! daystart:
+			act 'Ask to fuck down your debt': gt 'mod_wlife_georgiy', 'pay_debt'  
+		end
+	elseif wl_debt['amount'] = 0 and wl_debt['borrow_timer'] ! daystart and (wl_timer['startday'] + 21) < daystart:
+		if wl_debt['borrow_status'] = 0:
+			gs 'willpower', 'misc', 'self', 'hard'
+			if will_cost <= pcs_willpwr:
+				act 'Ask to borrow some money (<<will_cost>> Willpower)':
+					gs 'willpower', 'misc', 'self', 'hard'
+					gs 'willpower', 'pay', 'self'
+					gt 'mod_wlife_georgiy', 'borrow_money_0'
+				end
+			else
+				act 'Ask to borrow some money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		else
+			act 'Ask to borrow some money': gt 'mod_wlife_georgiy', 'borrow_money_0'
+		end
+	end
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if wl_georgiy['status'] = 2 and will_cost <= pcs_willpwr:
+		'<br>You remember that there is still the unresolved issue with you not getting paid by Vadim for entertaining the Okoro brothers. In the end they gave you money, but you got the feeling that it was a gift and not a payment for your services.'
+		act 'Discuss the money issue (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 5
+			wl_georgiy['timer_okoro'] = daystart
+			gs 'willpower', 'misc', 'self', 'hard'
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/looking_down.jpg"></center>'
+			'"I have something to discuss with you," you tell him and he signals you with a gesture of his hand to go on. "Let me first say that I accept my role," you '+iif(wl_stats['acceptance'] < 50, 'lie', 'say')+' treating carefully at the beginning. "It''s not that I don''t understand that I''m a whore, but you probably remember that your brother made me visit the Okoro brothers," you continue and look up for a split second. Mentioning obviously triggered him and you can feel the anger radiating from him. "Again, I don''t want to be disrespectful, but I only want a clarification about how I''m going to get payed."'
+			'"Go on," he orders you as you pause for a second to look up to check his reaction. "You said I either get payed by you or the client and the brothers paid me, but...," you look down and blurt out the rest. "I don''t think they knew that they had to pay me, at least we never talked about it and Volya didn''t mention that I would get paid."'
+			'You wait for the explosion, that he screams like the last time or that he hits you for accusing Vadim to give you away for free, but instead he coldly asks you. "You''re telling me that those blacks had the decency to pay you and my brother did not?" You nod and close your eyes and wait for the impending pain, when he''s going to hit you.'
+			*nl
+			'Nothing happens. You finally open your eyes and look up. Georgiy''s face looks like a stone cold mask. "Thank you <<$pcs_nickname>> for bringing this to my attention," he says with a barely controlled voice. "I''ll check with the other whores my brother send to the Okoro brothers. I''ll get back to you about this."'
+													
+			act 'Continue': wl_georgiy['status'] = 3 & gt 'mod_wlife_georgiy', 'demands_and_favors'
+		end	
+	elseif wl_georgiy['status'] = 2 and will_cost > pcs_willpwr: 
+		'<br>You remember that there is still the unresolved issue with you not getting paid by Vadim for entertaining the Okoro brothers. In the end they gave you money, but you got the feeling that it was a gift and not a payment for your services.'
+		act 'Discuss the money issue (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	if wl_georgiy['status'] = 3 and wl_georgiy['timer_okoro'] ! daystart:
+		*clr & cla
+		minut += 5
+		money += 2000
+		wl_stats['respect'] += 10
+		wl_georgiy['status'] = 4
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		'"Here is your money," he suddenly says and holds out 2.000 <b>₽</b>.'
+		'"Uhm... thanks," you say a bit confused about what is going on, but you take the money anyway.'
+		'"I talked with some of my other whores about their dealings with the Okoro brothers and it seems you were right," he tells you grudgingly and you get the feeling that it isn''t a good idea to delve deeper into this topic so you keep your mouth shut.'
+		'For a moment it seems that''s that and Georgiy is to move on from the topic, when he suddenly opens his mouth again, closes it after a second, before finally opening it again and continue to talk about it, "I have two rules for my whores." He holds up one finger. "First rule is that you get paid. As I told you before I''m not a savage, I don''t hold slaves." That''s debatable at best, you think as he holds up a second finger. "Second rule is that you obey and do what you''re told, when you get paid." In his mind accepting payment even under duress equals consent. "If you want to give out freebies, fine that''s up to you, but the general rule is: If somebody wants a piece of you, he has to pay. Understood?" he asks and you quickly nod. "Yes, Sir."'
+		'"OK, if you ever have a problem and one of the guys is violating those rules, come to me." After a few seconds of silence have passed. "And <<$pcs_nickname>> I can respect a whore that stands up for herself to get paid," he adds and you''re not sure if that is a compliment you can feel good about.' 
+		
+		act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+	elseif (wl_timer['startday'] + 42) < daystart and wl_okoro['status'] > 0 and wl_party['status'] = 0 and wl_party['timer'] < daystart:
+		gt 'mod_wlife_demands', 'party_demand'
+	elseif wl_party['status'] > 0 and wl_party['timer'] < daystart and wl_iosif['status'] > 4:
+		gt 'mod_wlife_demands', 'party_demand'	
+	end	
+end
+
+if $ARGS[0] = 'ask_share':
+	*clr & cla
+	minut += 2
+	wl_whore['share_timer'] = daystart
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'"Sir, I have a question," you say and look up to him. He nods. You take a deep breath and gather all the courage you can muster. "I wanted to ask you if I could get a bigger share." He frowns and you quickly look back down and prepare yourself for his reaction.'
+	*nl
+	
+	if (wl_timer['startday'] + 14) < daystart:
+		if wl_whore['shifts_total'] > wl_whore['shifts_total_minimum']:
+			if (wl_stats['loyalty'] > 10 and wl_whore['share_player'] < 30) or (wl_stats['loyalty'] > 30 and wl_whore['share_player'] < 35) or (wl_stats['loyalty'] > 60 and wl_whore['share_player'] < 40):
+				wl_whore['share_player'] += 5
+				wl_whore['share_pimp'] -= 5
+				'Suddenly you feel his hand on your chin and he lifts it slowly until you look him in the eye again. "Sure, <<$pcs_nickname>>. You have earned it. I will tell Volya that you get 5% more," he says raising your share to <<wl_whore[''share_player'']>>%.'
+				if wl_whore['share_player'] >= 40: '"<br>But that''s it. I can''t give you more. So don''t ask me again."'
+			elseif wl_stats['loyalty'] < 0:
+				'"Who do you think you are? Stupid cunt. Maybe you should get to work and earn us some money before asking for more," he yells and brutally slaps your face with his open palm. And now fuck off."'
+				'You try to stop the tears in your eyes when you hurry outside.'
+				gs 'pain', 8, 'head', 'slap'
+			else
+				'"I would like to give you more, <<$pcs_nickname>>, but I can''t at the moment. If you keep working hard, come back to me and we will take another look at it."'
+			end
+		else
+			'"No, <<$pcs_nickname>>. You have never shown any initiative. If you would do more than just what is required of you, than I would maybe think about it."'
+		end
+	else
+		'"No, absolutely not. You haven''t worked long enough for me," he tells you annoyed with your behavior. "I first have to see if you are a good girl that has a future in our organization or not," he says, the last two words sounding like a threat. But it doesn''t sound like a bigger share is off the table forever.'
+	end
+	
+	gs 'stat'
+	
+	act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+end
+
+if $ARGS[0] = 'pay_debt':
+	*clr & cla
+	if wl_debt['status'] = 0:
+		minut += 2
+		wl_debt['status'] = 1
+		wl_stats['respect'] -= 2
+		wl_stats['loyalty'] += 3
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		'"Uhm... I had a question about my debt. Would it be possible to pay it down in another way?" you ask and the implication is clear what you mean by ''another''.'
+		'Georgiy''s eyebrows move up a bit. "Really?" You nod and a smiles forms on his lips that makes you a bit uncomfortable. "Very well <<$pcs_nickname>>, it seems you finally understand what you''re good at and to answer your question: Yes, but don''t expect to get a lot out of it. If I would just let all the whores fuck away their debt, I wouldn''t earn anything. Also you''ll have to do what the guys ask you. I won''t do you this favor if you complain about everything." You swallow hard, but nod as he waits for your reaction. "OK, let''s do it this way. One of my guys, Nicholai..." you sigh loudly and he responds with an evil smirk. "Ah, I see you know who I''m talking about. He''ll know best who of my guys deserves a cheap fuck."'
+		'"OK, so do I go directly to Nicholai or...," you ask, but he immediately shakes his head. "No, you come to me first."'
+		
+		act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+	else
+		minut += 2
+		wl_stats['acceptance'] += 1
+		wl_stats['loyalty'] += 1
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+		if wl_debt['status'] > 1:
+			wl_debt['timer'] = daystart
+			if rand(1,10) < 3:
+				wl_debt['nicholai'] = -1
+				'Georgiy shakes his head, when you ask him about '+iif(wl_stats['acceptance'] > 60, 'fucking some of his guys to reduce your debt', 'reducing your debt in an alternative fashion')+'. "No, Nicholai has other things to do today. Maybe next week <<$pcs_nickname>>."'
+			
+				act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+			else
+				wl_debt['nicholai'] = 1
+				'Georgiy nods, when you ask him about '+iif(wl_stats['acceptance'] > 60, 'fucking some of his guys to reduce your debt', 'reducing your debt in an alternative fashion')+'. "Nicholai should be somewhere in the house or warehouse. Just go to him after we are done here."'
+			
+				act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+			end
+		else
+			wl_debt['nicholai'] = 1
+			wl_debt['status'] = 2
+			'Georgiy nods, when you ask him about '+iif(wl_stats['acceptance'] > 60, 'fucking some of his guys to reduce your debt', 'reducing your debt in an alternative fashion')+'. "I talked with Nicholai about it. He should be in the warehouse. Just go to him after we are done here."'
+			
+			act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+		end
+	end
+end
+
+if $ARGS[0] = 'borrow_money_0':
+	*clr & cla
+	minut += 5
+	wl_debt['borrow_timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'	
+	if wl_stats['loyalty'] <= -80:
+		'"Georgiy, could I borrow...," you ask, but he angrily shakes his head. "No, of course not <<$pcs_nickname>>. Maybe I would lend you some money if you get your shit together."'
+		
+		act 'Continue': gt 'mod_wlife_georgiy', 'demands_and_favors'
+	elseif wl_debt['borrow_status'] = 0:
+		wl_debt['borrow_status'] = 1
+		'"Georgiy, could I ask you for a favor?" you ask meekly and lower your head submissively when he frowns. You take a deep breath before asking your question. "Could I borrow some money from you?"'
+		'He let''s you wait for nearly half a minute before he responds. "Sure, why not, but you''ll have to pay interest."' 
+	else
+		'"Georgiy, I need to borrow money," you say to him.'
+		'"Sure, no problem <<$pcs_nickname>>. How much do you need?"'
+	end
+	
+	$wl_debt['interest']
+	
+	act 'Change your mind': gt 'mod_wlife_georgiy', 'demands_and_favors'
+	
+	if wl_stats['loyalty'] > -80: act '500 <b>₽</b> (<<500 + 500 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 500 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+	
+	if wl_stats['loyalty'] > -40: act '1000 <b>₽</b> (<<1000 + 1000 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 1000 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+	
+	if wl_stats['loyalty'] > -20: act '2000 <b>₽</b> (<<2000 + 2000 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 2000 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+	
+	if wl_stats['loyalty'] > 0 and (wl_timer['startday'] + 21) < daystart: act '3000 <b>₽</b> (<<3000 + 3000 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 3000 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+	
+	if wl_stats['loyalty'] > 20 and (wl_timer['startday'] + 35) < daystart: act '5000 <b>₽</b> (<<5000 + 5000 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 5000 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+
+	if wl_stats['loyalty'] > 40 and (wl_timer['startday'] + 49) < daystart: act '10000 <b>₽</b> (<<10000 + 10000 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 10000 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+		
+	if wl_stats['loyalty'] > 80 and (wl_timer['startday'] + 63) < daystart: act '20000 <b>₽</b> (<<20000 + 20000 * wl_debt[''interest''] / 100>> Debt)': wl_debt['borrow_amount'] = 20000 & gt 'mod_wlife_georgiy', 'borrow_money_1'
+end
+
+if $ARGS[0] = 'borrow_money_1':
+	*clr & cla
+	minut += 5
+	wl_debt['amount'] += wl_debt['borrow_amount'] + wl_debt['borrow_amount'] * wl_debt['interest'] / 100
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'"Alright, I''ll send one of my guys a message to get the money," he tells you as he types on his phone before casually adding. "Why don''t you undress and go down on your knees, so you can properly thank me for lending you money."'
+		
+	act 'Get down on your knees':
+		if wl_debt['borrow_status'] = 1:
+			wl_debt['borrow_status'] = 2
+			wl_rand = 1
+		elseif wl_debt['borrow_status'] = 2:
+			wl_debt['borrow_status'] = 3
+			wl_rand = 0
+		else
+			wl_rand = rand(0,2)
+		end
+		if $wl_fetish['rimjob'] ! '' and $wl_fetish['rimjob'] ! 'undecided' and $wl_fetish['rimjob'] ! 'blocked' and wl_rand = 0:
+			gt 'mod_wlife_georgiy_sex', 'borrow_money', 'rj'
+		elseif wl_rand = 1:
+			gt 'mod_wlife_georgiy_sex', 'borrow_money', 'humiliation'
+		else
+			gt 'mod_wlife_georgiy_sex', 'borrow_money', 'bj'
+		end
+	end
+end
+
+if $ARGS[0] = 'leave':	
+	if wl_prison['status'] = 0 and (wl_timer['startday'] + 56) < daystart and wl_volya['first_bj'] > 0:
+		gt 'mod_wlife_demands', 'prison_demand'
+	elseif wl_gang['status'] > 0 and (wl_timer['startday'] + 21) < daystart:
+		gt 'mod_wlife_gang', 'warehouse_events'
+	else
+		minut += 2 & gt 'mod_wlife_warehouse', 'street'
+	end
+end
+
+--- mod_wlife_georgiy ---------------------------------

+ 108 - 0
locations/mod_wlife_georgiy_sex.qsrc

@@ -0,0 +1,108 @@
+# mod_wlife_georgiy_sex
+
+if $ARGS[0] = 'punishment_1':
+	*clr & cla
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/georgiy/punishment_1/rough00.mp4"></video></center>'
+	'He roughly grabs the back of your head and holds you in place as he pushes his cock into your mouth. You gag, but he doesn''t pull out, instead he keeps this position for a few moments until your throat calms down. "Seems you''re ready," he says, pulls back and pushes back inside. After a few times he finds a steady rhythm and fucks your face while his men watch you kneeling helplessly in front of their boss.'
+	
+	gs 'boystat', 'A901'
+	
+	gs 'pain', 8, 'mouth', 'stretch'
+	gs 'arousal', 'bj', 2, 'sub', 'rough'
+	gs 'stat'
+
+	act 'Continue':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/georgiy/punishment_1/rough01.mp4"></video></center>'
+		'Every push forces his cock a little bit deeper into your throat. "Listen how she gags," one of the guys bellows and the others laugh. "Make her puke, Georgiy," another one suggests, but this makes Georgiy stop trying to force his member deeper down your throat, but he keeps fucking you. "Come on <<$pcs_nickname>>, be a good whore and take it," he says and you give it your best to control your gag reflex.'
+		if wl_georgiy['punishment_1'] = 0:
+			wl_georgiy['punishment_1'] = 1
+			'"Don''t be so nice to her," one of his guys says in the heat of the moment.'
+			'"Shut up, don''t tell me what to do you little shit or you will be in her place," he yells at him.'
+		end
+				
+		gs 'pain', 4, 'mouth', 'stretch'
+		gs 'arousal', 'bj', 5, 'sub', 'rough'
+		gs 'stat'
+	
+		act 'Continue':
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/georgiy/punishment_1/rough02.mp4"></video></center>'
+			if wl_georgiy['punishment_1'] = 0: 'In his anger about his subordinate he rams his cock as deep as he can down your throat and roughly continues without any consideration for you.'
+			'It''s essentially like the first time with his brother Vadim. You can''t breath and when you try with all the strength you can muster to pull back to get some air he keeps you in place and forces his cock deeper down your throat and holds it there as he cums down your throat.'
+					
+			gs 'pain', 4, 'throat', 'stretch'
+			gs 'arousal', 'bj', 5, 'sub', 'rough', 'deepthroat'
+			gs 'cum_call', 'mouth', 'A901', 1
+			gs 'stat'
+			
+			act 'Continue':
+				*clr & cla
+				minut += 2
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/georgiy/punishment_1/rough03.mp4"></video></center>'
+				'"Think about your position in our organization and learn to do as you''re told," he yells and keeps his cock still inside your throat. He waits, waits a few additional seconds. "Or next time I''ll wait far longer." He says and pulls out.'
+				'You take a deep breath and air rushing into your lungs never before felt so good.'
+				'He gives you a minute to catch your breath before he pulls you to your feet and into the adjacent house. "We still have to talk <<$pcs_nickname>>. Follow me."'
+				
+				gs 'arousal', 'bj', 1, 'sub', 'rough', 'deepthroat'
+				gs 'arousal', 'end'
+				gs 'stat'
+				
+				act 'Go with him': minut += 10 & gt 'mod_wlife_georgiy', 'check'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'borrow_money':
+	*clr & cla
+	gs 'boystat', 'A901'
+	wl_stats['respect'] -= 2
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/georgiy/borrowing/'+$ARGS[1]+iif($ARGS[1] = 'bj', '_<<rand(0,1)>>', '')+'.mp4"></video></center>'
+	'He takes of his pants and underwear while you strip down to your birthday suite. His cock doesn''t respond even when Georgiy coldly watches every one of your moves. Only when you kneel down like a submissive bitch his cock twitches and comes to life.'
+	if wl_rand = 0:
+		'He turns around, when he stands right in front of you and pushes his ass right into your face. "I want your tongue in my ass," he says matter-of-factly and spreads his hairy asscheeks as if his words aren''t clear enough. '+iif($wl_fetish['rimjob'] = 'no', 'You hesitate disgusted by the sight. It''s not like he stepped right out of the shower, but you don''t have any other choice. You need that money and if you have to lick ass to get it, you do it.', 'You eagerly move a bit closer and a flash of arousal shoots from your crotch up your spine directly into your brain. You never really understood why, but something about this degrading act just turns you on like crazy."')+' Your entire face presses into his ass so that your tongue can find the puckered hole between his fleshy cheeks. "Yes, that''s it. Like it, push it inside. Get what you deserve."'
+		'You do as your told and force your tongue against his hole. "Stroke me, do it now," he commands you sounding horny like a randy teenager. You reach around and grab his already hard cock and do your best to satisfy him with your hand.'
+		
+		gs 'arousal', 'hj', 6, 'sub'
+		gs 'arousal', 'rimming_give', iif($wl_fetish['rimjob'] = 'yes', -9, -1), 'sub', 'humiliation'
+	elseif wl_rand = 1:
+		if pcs_makeup > 1: pcs_makeup = 0
+		'"No," he shouts angrily and slaps you hard when you reach for his cock. "I didn''t tell you to touch me."'
+		'"Sorry," you meekly apologize and look up to him as submissively as possible. But your apology doesn''t seem to satisfy him. He slaps you again and again and again... until your cheek is red and burns like hell.'
+		'"Here," he spits down on your burning cheek. "Something to cool it," he says as if it was an honor to have his spit on your face. "Some of you girls don''t deserve better," he tells you and slaps your other cheek hard. "You sluts always want more money. Even if we already gave you a good paying job." Sometime between hitting you, spitting on you and telling you what an ungrateful cunt you are he started to stroke his dick. Only once your body comes into contact with his cock, when he touches your face with it to rub the spit all over you face.'
+		
+		gs 'pain', 10, 'head', 'slap'
+		gs 'pain', 10, 'head', 'slap'
+		gs 'arousal', 'foreplay', 12, 'sub', 'humiliation'
+	else
+		if pcs_makeup > 1: pcs_makeup = 0
+		'"Open up," he orders you and instantly your obedient mouth opens wide as if it has a mind of his own. Suddenly he moves forward and buries himself so deep inside your throat that you have to gag hard, tears shoot out of your eyes and your mouth produces so much saliva that it runs down your chin after a second. He holds his cock there enjoying the feeling of your struggle to break free from his ironclad hold on you. Then he fucks you like your throat is a pussy. With long, hard and fast thrusts of his hips he pounds his meat into your skull. He only stops to impale and hold your head down on his dick.'
+		
+		gs 'pain', 6, 'mouth', 'stretch'
+		gs 'arousal', 'bj', 6, 'sub', 'rough', 'deepthroat', 'humiliation'
+	end
+	
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 4
+		facial += 1
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/georgiy/borrowing/cumshot.mp4"></video></center>'
+		'He aims his cock at your face and covers it in a thick layer of cum as if he saved up for an entire week to coat you in his seed. "Good girl, first you take this and now you can take this," he says and throws the money next to you on the couch. You can''t remember hearing or seeing anyone enter the room, but his guy must have already came by and at least saw some of the stuff Georgiy did to you.'
+		
+		gs 'cum_call', 'face', 'A901', 1 
+		gs 'stat'
+		
+		act 'Take the money':
+			money += wl_debt['borrow_amount']
+			gt 'mod_wlife_georgiy', 'demands_and_favors'
+		end
+	end
+end
+
+--- mod_wlife_georgiy_sex ---------------------------------
+
+

+ 1245 - 0
locations/mod_wlife_highway.qsrc

@@ -0,0 +1,1245 @@
+# mod_wlife_highway
+
+$loc = 'mod_wlife_highway'
+$locM = 'mod_wlife_highway'
+$menu_loc = 'mod_wlife_highway'
+
+if $ARGS[0] = 'outside':	
+	if wl_status['main'] > -1 and wl_georgiy['payment_method'] = 0: gs 'mod_wlife_highway', 'event_check'
+		
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',20
+	$metka = 'outside'
+	$menu_arg = 'outside'
+	menu_off = 0
+	
+	$location_type = 'public_outdoors'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/highway/gas_'+iif(month > 10 or month < 4, 'winter', '')+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'		
+	'The gas station is modern and clean in comparison to other gas stations in the area. To the south of the station is the highway M-10 that goes from St. Petersburg to Moscow. To the north are small villages and towns similar to Pavlovsk which is even further south than the highway.'
+	*nl
+	'There is a small shop were you can buy something to eat or to drink and a public restroom is also nearby.'
+	*nl
+	if wl_whore['earnings_day'] > 0: '<br>You have earned <<wl_whore[''earnings_day'']>> <b>₽</b> today.'+iif(wl_georgiy['payment_method'] = 0, ' Your share is <<wl_whore[''earnings_day''] * wl_whore[''share_player''] / 100>> <b>₽</b>'+iif(wl_debt['amount'] > 0, ', but Volya will keep <<wl_whore[''earnings_day''] * 20 / 100>> <b>₽</b> to pay down your debt.', '.'), '')
+	
+	if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: '<br>You can take a bus to the '+iif(money < 75, 'industrial train station', '<a href="exec: gt ''mod_wlife_highway'', ''bus_end''">industrial train station</a>')+' in St. Petersburg. The bus ride and a short walk to the bus station will take 35 minutes and cost 75 <b>₽</b>..'+iif(money < 75, ' You don''t have enough money.', '')
+	
+	gs 'stat'
+			
+	act 'Go inside the gas station': minut += 1 & gt 'mod_wlife_highway', 'shop'
+	act 'Go to the public restroom': minut += 1 & gt 'mod_wlife_highway', 'restroom'
+	act 'Go to work': gt 'mod_wlife_highway', 'work'
+	act 'Wait': gs 'obj_din', 'wait'
+end	
+
+if $ARGS[0] = 'shop' or $wl_shop_inside = 'yes':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',5
+	$metka = 'shop'
+	$menu_arg = 'shop'
+	menu_off = 0
+	
+	$location_type = 'public_indoors'
+	$wl_shop_inside = 'yes'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/highway/gas_interior.jpg"></center>'
+	'The shop is stacked with some magazines, cigarettes, different things to eat and drink.'
+	*nl 
+	if wl_status['main'] > -1: 
+		'Behind the counter stands <a href="exec: minut += 1 & gt ''mod_wlife_highway'',''tomas''">'+iif(wl_tomas_known = 0, 'a plump man', 'Tomas')+'</a>.'
+		*nl
+	end
+	
+	$wl_shop_tab = '<center><table align="center">'
+	$wl_shop_tab += func ('$stock_item', 20, 'Cigarettes', 115, 'siga', $curloc)
+	$wl_shop_tab += func ('$single_stock_item', 1, 'Fashion magazine', 430, 'fashmag', $curloc)
+	$wl_shop_tab += func ('$single_stock_item', 1, 'Computer magazine', 430, 'compmag', $curloc)
+	$wl_shop_tab += func ('$single_stock_item', 1, 'Biographical magazine', 430, 'biomag', $curloc)
+	$wl_shop_tab += func ('$single_stock_item', 1, 'Cooking magazine', 430, 'cookmag', $curloc)
+	$wl_shop_tab += func ('$single_stock_item', 1, 'Knitting magazine', 430, 'knitmag', $curloc)
+	$wl_shop_tab += func ('$single_stock_item', 1, 'Fitness magazine', 430, 'fitmag', $curloc)
+	$wl_shop_tab += func ('$stock_item', 10, 'Wipes', 50, 'salfetka', $curloc, '', iif(bag > 0, 0, 1), 'You need a purse')
+	$wl_shop_tab += func ('$stock_item', 20, 'Tampons', 200, 'tampon', $curloc)
+	if umbrella = 0: $wl_shop_tab += func ('$single_stock_item', 1, 'Umbrella', 1000, 'umbrella', $curloc, '', iif(bag > 0, 0, 1), 'You need a purse')
+	$wl_shop_tab += '</table></center>'
+	*pl $wl_shop_tab
+	killvar '$wl_shop_tab'
+	gs 'stat'
+	
+	act 'Go outside': $wl_shop_inside = 'no' & minut += 1 & gt 'mod_wlife_highway', 'outside'
+	
+	act 'Buy and eat a snack (100 <b>₽</b> and 0:05)':
+		*clr & cla
+		menu_off = 1
+		minut += 5
+		money -= 100
+		pcs_health += 5
+		pcs_mood += 40
+		fat += 6
+		pcs_energy += 60
+		if pcs_hydra >= 100:
+			pcs_hydra += 10
+		else
+			pcs_hydra += 20
+		end
+		cumspclnt = 2
+		gs 'cum_cleanup'
+		pcs_breath = 0
+		gs 'stat'		
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/food.jpg"></center>'
+		'You enjoy a tasty snack.'
+		
+		act 'Continue': gt 'mod_wlife_highway', 'shop'
+	end
+	
+	act 'Buy and eat a healthy snack (100 <b>₽</b> and 0:05)':
+		*clr & cla
+		menu_off = 1
+		minut += 5
+		money -= 100
+		pcs_health += 40
+		pcs_mood += 10
+		fat += 2
+		pcs_energy += 60
+		if pcs_hydra >= 100:
+			pcs_hydra += 10
+		else
+			pcs_hydra += 20
+		end
+		pcs_breath = 0
+		cumspclnt = 2
+		gs 'cum_cleanup'
+		gs 'stat'		
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/food.jpg"></center>'
+		'You enjoy a healthy snack.'
+		
+		act 'Continue': gt 'mod_wlife_highway', 'shop'
+	end
+
+	act 'Buy and drink some water (40 <b>₽</b> and 0:05)':
+		*clr & cla
+		menu_off = 1
+		frost = 1
+		if alko > 0: alko -= 1
+		minut += 5
+		money -= 40
+		pcs_health += 10
+		pcs_energy += 4
+		if pcs_hydra >= 100:
+			pcs_hydra += 25
+		else
+			pcs_hydra += 75
+		end
+		pcs_breath = 0
+		cumspclnt = 2
+		gs 'cum_cleanup'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/water.jpg"></center>'
+		'You enjoy a drink of water'
+		
+		act 'Continue': gt 'mod_wlife_highway', 'shop'
+	end
+end	
+
+if $ARGS[0] = 'restroom':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',10
+	$metka = 'restroom'
+	$menu_arg = 'restroom'
+	menu_off = 0
+		
+	$location_type = 'public_outdoors'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/highway/restroom_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'		
+	'The gas station has a public bathroom. '+iif(wl_restroom_chip = 0, 'It costs 10 <b>₽</b> to use it.', 'You have an employee chip an can use it for free.')+' On the right side of the restroom is a <a href="exec: minut += 1 & gt ''mod_wlife_highway'',''condom_dispenser''">condom dispenser</a>.'
+	gs 'stat'
+	
+	act 'Go back': minut += 1 & gt 'mod_wlife_highway', 'outside'
+	
+	if money >= 10 and wl_restroom_chip = 0:
+		act 'Enter the female restroom': money -= 10 & minut += 1 & gt 'mod_wlife_highway', 'restroom_female'
+		act 'Enter the male restroom': money -= 10 & minut += 1 & gt 'mod_wlife_highway', 'restroom_male'
+	elseif wl_restroom_chip = 1:
+		act 'Enter the female restroom': minut += 1 & gt 'mod_wlife_highway', 'restroom_female'
+		act 'Enter the male restroom': minut += 1 & gt 'mod_wlife_highway', 'restroom_male'
+	else
+		'<br>You don''t have enough money to use the restroom.'
+	end
+	
+	if joint > 0 and wl_drugs['status'] > 0 and wl_drugs['timer_highway'] ! daystart: 
+		act 'Smoke a joint':
+			*clr & cla
+			menu_off = 1
+			minut += 5
+			wl_drugs['timer_highway'] = daystart
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking.jpg"></center>'
+			'You go behind the restrooms and pull a joint out of your purse and light it up. Not before long you''re starting to feel the relaxing effects'+iif(wl_stats['acceptance'] < 20, ' wash away the anxiety about your job.', ' as you''re getting high.')
+			gs 'mod_wlife_functions', 'weed_check'
+			gs 'stat'
+			act 'Go back': gt 'mod_wlife_highway', 'restroom'
+		end
+	end
+end
+
+if $ARGS[0] = 'condom_dispenser':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',10
+	$metka = 'condom_dispenser'
+	$menu_arg = 'condom_dispenser'
+	menu_off = 0
+		
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/highway/condoms.jpg"></center>'		
+	'A condom costs 100 <b>₽</b> and you have <<wl_status[''condoms'']>> condoms.'
+	gs 'stat'
+	
+	act 'Go back': minut += 1 & gt 'mod_wlife_highway', 'restroom'
+	
+	if money >= 60: 
+		act 'Buy a condom (60 <b>₽</b>)':
+			minut += 1
+			money -= 60
+			if preziktype = 0: prezik += 1
+			if preziktype = 1 or preziktype = 2: prezikcount += 1
+			gt 'mod_wlife_highway', 'condom_dispenser'
+		end
+	end
+	
+	if money >= 300: 
+		act 'Buy five condoms (300 <b>₽</b>)':
+			minut += 1
+			money -= 300
+			if preziktype = 0: prezik += 5
+			if preziktype = 1 or preziktype = 2: prezikcount += 5
+			gt 'mod_wlife_highway', 'condom_dispenser'
+		end
+	end
+	
+	if money >= 600: 
+		act 'Buy ten condoms (600 <b>₽</b>)':
+			minut += 1
+			money -= 600
+			if preziktype = 0: prezik += 10
+			if preziktype = 1 or preziktype = 2: prezikcount += 10
+			gt 'mod_wlife_highway', 'condom_dispenser'
+		end
+	end
+end
+
+if $ARGS[0] = 'restroom_female':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',5
+	$metka = 'restroom_female'
+	$metkaM = 'restroom_female'
+	$menu_arg = 'restroom_female'
+	menu_off = 0
+	
+	$location_type = 'bathroom'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/highway/restroom_female.jpg"></center>'		
+	'The female restroom is relatively clean. It has has three bathroom stalls which over only a little privacy.'
+	*nl
+	'A <a href="exec:gt ''mirror'',''start''">mirror</a>, where you can ' + iif(pcs_hairbsh = 0,'<a href="exec: gt ''mirror'',''brush''">brush</a>','brush') + ' your hair hangs over each sink.'
+	gs 'stat'
+	
+	act 'Go outside': minut += 1 & gt 'mod_wlife_highway', 'restroom'
+	
+	dynamic $tampon
+	dynamic $quickwash
+	dynamic $basin
+	dynamic $removepan
+!!ToDo: Change $removepan to $publicpan, when the new dev version is out	
+end
+
+if $ARGS[0] = 'restroom_male':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',5
+	$metka = 'restroom_male'
+	$metkaM = 'restroom_male'
+	$menu_arg = 'restroom_male'
+	menu_off = 0
+	
+	$location_type = 'bathroom'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/highway/restroom_male.jpg"></center>'		
+	'The male restroom is dirty and smells like urine. It has has three bathroom stalls which over only a little privacy.'
+	*nl
+	'A <a href="exec:gt ''mirror'',''start''">mirror</a>, where you can ' + iif(pcs_hairbsh = 0,'<a href="exec: gt ''mirror'',''brush''">brush</a>','brush') + ' your hair hangs over each sink.'
+	gs 'stat'
+	
+	act 'Go outside': minut += 1 & gt 'mod_wlife_highway', 'restroom'
+	
+	dynamic $tampon
+	dynamic $quickwash
+	dynamic $basin
+	dynamic $removepan
+!!ToDo: Change $removepan to $publicpan, when the new dev version is out	
+end
+
+if $ARGS[0] = 'tomas':
+	*clr & cla
+	menu_off = 1
+	gs 'stat'
+	
+	if wl_tomas_known = 1: 
+		if npc_rel['A907'] <= 0:
+			$wl_tomas_relationship = 'you hate him.'
+		elseif npc_rel['A907'] > 0 and npc_rel['A907'] <= 10:
+			$wl_tomas_relationship = 'you really don''t like him.'
+		elseif npc_rel['A907'] > 10 and npc_rel['A907'] <= 20:
+			$wl_tomas_relationship = 'you don''t like him.'
+		elseif npc_rel['A907'] > 20 and npc_rel['A907'] <= 60:
+			$wl_tomas_relationship = 'you feel indifferent towards him.'
+		elseif npc_rel['A907'] > 60 and npc_rel['A907'] <= 90:
+			$wl_tomas_relationship = 'you like him.'
+		elseif npc_rel['A907'] > 90:
+			$wl_tomas_relationship = 'you really like him a lot.'
+		end
+	end
+	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/tomas.jpg"></center>'
+	'Behind the counter stands '+iif(wl_tomas_known = 0, 'a plump man', 'Tomas')+iif(wl_tomas_known = 1, ', <<$wl_tomas_relationship>>', '.')+' He is wearing a bad fitting uniform that stretches over his considerable belly and he looks old enough that he should have retired years ago.'+iif(wl_tomas_known = 1, ' He is paid by Georgiy Belly to look the other way and scrub you from the security feed.', '')
+	*nl
+
+	act 'Leave': minut += 1 & gt 'mod_wlife_highway', 'shop'
+	if wl_tomas_known = 0:
+		cla & *nl
+		minut += 1
+		wl_tomas_known = 1
+		wl_tomas_day = daystart
+		'As you step up to the counter the old man looks at your clothes for a moment before he smiles meekly at you.'
+		'He seems unsure what to say to you. "Hello, what can I do for you?"'
+		gs 'stat'
+			
+		act 'Tell him who you are':
+			*clr & cla
+			minut += 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/tomas.jpg"></center>'
+			'You take a quick look over your shoulder to see if you are alone with him in the shop. "I''m <<$pcs_firstname>>," you say. "Georgiy send me to ... work here."'
+			'"Oh, I see. They told me you were coming," he tells you and holds out his hand. You look at it for a moment and then ...' 
+			gs 'stat'
+			
+			act 'Ignore his hand':
+				cla & *nl
+				minut += 3
+				npc_rel['A907'] = 30				
+				'"Anyway," he says clearly surprised as he pulls back his hand. "I''m Tomas."'
+				'"Do I have to check in with you or... ?" You ask, but he quickly shakes his head.'
+				'"No, your... the guy that drives you," he says trying to avoid the word ''pimp''. "He gives me the heads-up and I''ll scrub the security footage at the end of my shift."'
+				'You look at him sceptically.'
+				'"Don''t worry, I now what I''m doing. I have done it for years for the Belys." He looks past you for a second as the door of the shop opens behind you. "Have a nice day," he says with the typical fake smile of an employee in the service industry. He clearly doesn''t want to talk to you with a customer in the shop.'
+				gs 'stat'
+				
+				act 'Leave': gt 'mod_wlife_highway', 'outside'
+			end
+			
+			act 'Shake his hand':
+				cla & *nl
+				minut += 3
+				npc_rel['A907'] = 50
+				'His hands are surprisingly cold, but his smile is honest and warm. "I''m Tomas by the way. Nice to meet you <<$pcs_firstname>>."'
+				'"Nice to meet you, too." You reply. "Do I have to check in with you or... ?" You ask, but he quickly shakes his head.'
+				'"No, your... the guy that drives you," he says trying to avoid the word ''pimp''. "He gives me the heads-up and I''ll scrub the security footage at the end of my shift."'
+				'You look at him sceptically.'
+				'"Don''t worry, I now what I''m doing. I have done it for years for the Belys." He looks past you for a second as the door of the shop opens behind you. "Have a nice day," he says with the typical fake smile of an employee in the service industry. He clearly doesn''t want to talk to you with a customer in the shop.'
+				gs 'stat'
+				
+				act 'Leave': gt 'mod_wlife_highway', 'outside'
+			end
+		end
+	elseif wl_tomas_day ! daystart and wl_tomas_known = 1:
+		wl_tomas_day = daystart
+		act 'Talk to him': gt 'mod_wlife_highway', 'tomas_talk'
+	end
+end
+
+if $ARGS[0] = 'tomas_talk':
+!!ToDo / Idea: restroom chip
+!!ToDo / Idea: free food/water
+!!ToDo / Idea: Read magazines for free	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/tomas.jpg"></center>'
+	'Developer Note: More content is planned for Tomas.'
+	act 'Continue': gt 'mod_wlife_highway', 'shop'
+end
+
+!!------ Prostitution ------
+
+if $ARGS[0] = 'work':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',20
+		
+	*clr & cla
+	$metka = 'work'
+	$menu_arg = 'work'
+	menu_off = 0
+	gs 'stat'
+			
+	gs 'mod_wlife_functions', 'parameters'
+	
+	if $wl_names['street'] = '':
+		'If you want, you can tell your clients a different name.'
+		
+		$wl_names['street'] = input("What name do you want to tell your clients? (Leave blank for <<$pcs_nickname>>)")
+		if $wl_names['street'] = '': $wl_names['street'] = $pcs_nickname
+	end
+	
+	'<center><video autoplay src="mod/wlife/images/prostitution/normal/negotiation/search.mp4"></video></center>'		
+	'You are walking near the gas station waiting for a client. On a scale from 1 to 10 you look like a <<hotcat>>. A good looking girl will always earn more money.'+iif(pcs_makeup < 2, ' You should '+iif(pcs_makeup = 0, 'fix your make-up', 'wear make-up')+' if you want to do that.', ' Wearing make-up is a good way to do this.')+iif(pirsA > 0 and pirsA < 10000, ' Your tongue piercing will make a blowjob more enjoyable for most men, that could bring in a small bonus.', '')+iif($pantyworntype = 'sexshop' and CloSkirtShortness > 4, ' Wearing such a short skirt reveals your slutty panties to your potential customers.', '')+iif(pcs_apprnc = -10, ' You don''t look healthy and should seek treatment for your STD. There is a high chance that a guy won''t touch you without a condom.', '')
+	
+	if wl_whore['enema'] = 0: '<br>Nearly all men won''t like dirty anal sex, even with a condom, and it''s probably a safe bet that they won''t pay a lot for it. You should start giving yourself an enema before going to work.'
+	if mesec > 0: '<br>You are having your period, most men will pay less for vaginal sex during that time of the month.'	
+	if wl_whore['cum_dressed'] = 1: '<br>You have visible cum stains on you. Most clients won''t like that and will offer less money.'
+	
+	if wl_whore['earnings_day'] > 0: 'You have earned <<wl_whore[''earnings_day'']>> <b>₽</b> today.'+iif(wl_georgiy['payment_method'] = 0, ' Your share is <<wl_whore[''earnings_day''] * wl_whore[''share_player''] / 100>> <b>₽</b>'+iif(wl_debt['amount'] > 0, ', but Volya will keep <<wl_whore[''earnings_day''] * 20 / 100>> <b>₽</b> to pay down your debt.', '.'), '')
+	
+	if wl_status['main'] > -1 and wl_georgiy['payment_method'] = 0: gs 'mod_wlife_highway', 'event_check'
+	
+	act 'Stop working': gt 'mod_wlife_highway', 'outside'
+
+	if wl_stats['acceptance'] < 20:
+		'<br>You haven''t accepted your life as a common street whore and are very hesitant to look for customers.'
+	elseif wl_stats['acceptance'] < 40:
+		'<br>You haven''t accepted your life as a common street whore, but you are slowly getting used to it.'
+	end
+	gs 'mod_wlife_functions', 'will_acceptance', 'self'
+	if wl_cheat['will_cost'] = 1: will_cost = 0
+	if will_cost <= pcs_willpwr:
+		act 'Look for a client (0:30 and <<will_cost>> Willpower)': 
+			gs 'willpower', 'pay', 'self'
+			gt 'mod_wlife_highway', 'look_client'
+		end
+	elseif will_cost > pcs_willpwr and wl_georgiy['payment_method'] = 1:
+		act 'Look for a client (0:30 and <font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>' 
+	else
+		wl_temp = 0 & gt 'mod_wlife_volya', 'shift_premature_end'
+	end
+
+	if salfetka > 0 and (wl_whore['cum_dressed'] = 1 or wl_whore['cum_undressed'] = 1 or wl_whore['cum_vaginal_mod'] = 1 or wl_whore['cum_anal_mod'] = 1): 
+		act 'Remove the cum from your body (0:02)':
+			minut += 2
+			salfetka -= 1
+			cumspclnt = 20
+			gs 'cum_cleanup'
+			gt 'mod_wlife_highway', 'work'
+		end
+	elseif salfetka = 0:
+		'<br>You don''t have any tissues with you to remove cum from your body.'
+	end
+	
+	if wl_whore['customer_total'] > 9:
+		*nl
+
+		if wl_status['condoms'] = 0 and (wl_auto['norm_bj_condom'] + wl_auto['norm_vag_condom'] + wl_auto['norm_anal_condom'] + wl_auto['reg_vag_condom'] + wl_auto['reg_anal_condom']):
+			'<b>You''re out of condoms!</b>'
+			*nl
+		end
+		
+		*nl
+		'<table><tr><td valign="top"><b>Behavior towards normal clients:</b>'
+		'Negotiation: '+iif(wl_auto['normal'] = 1, '<a href="exec: wl_auto[''normal''] = 0 & gt ''mod_wlife_highway'', ''work''">Automatic</a>', '<a href="exec: wl_auto[''normal''] = 1 & gt ''mod_wlife_highway'', ''work''">Manual</a>')
+		if wl_auto['normal'] = 1:
+			*nl
+			'Which acts do you automatically accept/decline?'
+			'Blowjob: '+iif(wl_auto['norm_bj'] = 1, '<a href="exec: wl_auto[''norm_bj''] = 0 & gt ''mod_wlife_highway'', ''work''">Accept</a>', '<a href="exec: wl_auto[''norm_bj''] = 1 & gt ''mod_wlife_highway'', ''work''">Decline</a>')
+			'Vaginal: '+iif(wl_auto['norm_vag'] = 1, '<a href="exec: wl_auto[''norm_vag''] = 0 & gt ''mod_wlife_highway'', ''work''">Accept</a>', '<a href="exec: wl_auto[''norm_vag''] = 1 & gt ''mod_wlife_highway'', ''work''">Decline</a>')
+			'Anal: '+iif(wl_auto['norm_anal'] = 1, '<a href="exec: wl_auto[''norm_anal''] = 0 & gt ''mod_wlife_highway'', ''work''">Accept</a>', '<a href="exec: wl_auto[''norm_anal''] = 1 & gt ''mod_wlife_highway'', ''work''">Decline</a>')
+			
+			if wl_auto['norm_bj'] + wl_auto['norm_vag'] + wl_auto['norm_anal'] > 0:
+				*nl
+				'Do you insist on a condom?'
+				if wl_auto['norm_bj'] = 1: '- Blowjob: '+iif(wl_auto['norm_bj_condom'] = 1, '<a href="exec: wl_auto[''norm_bj_condom''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''norm_bj_condom''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+				if wl_auto['norm_vag'] = 1: '- Vaginal: '+iif(wl_auto['norm_vag_condom'] = 1, '<a href="exec: wl_auto[''norm_vag_condom''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''norm_vag_condom''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+				if wl_auto['norm_anal'] = 1: '- Anal: '+iif(wl_auto['norm_anal_condom'] = 1, '<a href="exec: wl_auto[''norm_anal_condom''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''norm_anal_condom''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+				
+				if wl_auto['norm_bj_condom'] = 0 or wl_auto['norm_vag_condom'] = 0 or wl_auto['norm_anal_condom'] = 0:
+					*nl
+					'Do you allow him to cum inside you?'
+					if wl_auto['norm_bj_condom'] = 0 and wl_auto['norm_bj'] = 1: '- Blowjob: '+iif(wl_auto['norm_bj_creampie'] = 1, '<a href="exec: wl_auto[''norm_bj_creampie''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''norm_bj_creampie''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+					if wl_auto['norm_vag_condom'] = 0 and wl_auto['norm_vag'] = 1: '- Vaginal: '+iif(wl_auto['norm_vag_creampie'] = 1, '<a href="exec: wl_auto[''norm_vag_creampie''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''norm_vag_creampie''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+					if wl_auto['norm_anal_condom'] = 0 and wl_auto['norm_anal'] = 1: '- Anal: '+iif(wl_auto['norm_anal_creampie'] = 1, '<a href="exec: wl_auto[''norm_anal_creampie''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''norm_anal_creampie''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+				end
+			end	
+		end
+		'</td><td></td><td valign="top"><b>Behavior towards regular clients:</b>'
+		'Negotiation: '+iif(wl_auto['regular'] = 1, '<a href="exec: wl_auto[''regular''] = 0 & gt ''mod_wlife_highway'', ''work''">Automatic</a>', '<a href="exec: wl_auto[''regular''] = 1 & gt ''mod_wlife_highway'', ''work''">Manual</a>')
+		if wl_auto['regular'] = 1:
+			*nl
+			'Do you insist on a condom?'
+			'- Vaginal: '+iif(wl_auto['reg_vag_condom'] = 1, '<a href="exec: wl_auto[''reg_vag_condom''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''reg_vag_condom''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+			'- Anal: '+iif(wl_auto['reg_anal_condom'] = 1, '<a href="exec: wl_auto[''reg_anal_condom''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''reg_anal_condom''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+			*nl
+			if wl_auto['reg_anal_condom'] = 0 or wl_auto['reg_vag_condom'] = 0: 
+				'Do you allow him to cum inside you?'
+				if wl_auto['reg_vag_condom'] = 0: '- Vaginal: '+iif(wl_auto['reg_vag_creampie'] = 1, '<a href="exec: wl_auto[''reg_vag_creampie''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''reg_vag_creampie''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+				if wl_auto['reg_anal_condom'] = 0: '- Anal: '+iif(wl_auto['reg_anal_creampie'] = 1, '<a href="exec: wl_auto[''reg_anal_creampie''] = 0 & gt ''mod_wlife_highway'', ''work''">Yes</a>', '<a href="exec: wl_auto[''reg_anal_creampie''] = 1 & gt ''mod_wlife_highway'', ''work''">No</a>')
+			end
+		end
+		'</td></tr></table>'
+	end
+end
+
+if $ARGS[0] = 'event_check':
+	if hour > 18 and ((wl_bad['counter'] > 0 and wl_bad['status'] = 1) or wl_whore['share_timer']> 0) and pirsA = 0: 
+		gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_start'
+	elseif wl_bad['status'] = 1 and pirsA > 0:
+		wl_bad['status'] = 2
+	end
+	
+	if (hour = 22 and minut >= 30) or hour = 23 or hour < 6: gt 'mod_wlife_volya', 'shift_end'
+
+	if hour < 20 and wl_status['main'] = 5 and wl_whore['customer_day'] > 0 and (wl_timer['startday'] + 14) < daystart and wl_shura['status'] > 0 and wl_iosif['status'] > 0:
+		wl_status['main'] = 6
+		gt 'mod_wlife_story', 'police'
+	end
+end
+
+if $ARGS[0] = 'look_client':
+	*clr & cla
+	menu_off = 1
+	minut += 30		
+	gs 'stat'
+		
+	if pcs_inhib < 60: inhib_exp += rand(1,2)
+				
+	if wl_whore['regular'] = 1:
+		gt 'mod_wlife_highway', 'client_regular'
+	elseif wl_whore['client_chance'] > 100 and wl_whore['regular'] = 0:
+		wl_whore['pity_counter'] = 0
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'
+							
+		'A car stops next to you. "Hey sweetie, are you looking for a good time?" You say to him.'
+
+		if wl_whore['rough'] = 0:
+			if wl_whore['propose'] = 0 and wl_auto['normal'] = 0:
+				act 'Let him decide': gt 'mod_wlife_highway', 'negotiation_start'
+			elseif wl_auto['normal'] = 1:
+				act 'Negotiate with him': gt 'mod_wlife_highway', 'negotiation_start'
+			else
+				*nl
+				'The man looks a little bit nervous. You approach the window in a sensual manner and try to make him feel more comfortable. "Just relax and let me take care of you."'
+				'You lean into the car and chat with him about what he likes and dislikes.'
+						
+				if wl_whore['enema'] = 0: iif(wl_whore['dirty_anal_mod'] = 0, 'He hates', 'He admits that he loves')+' anal sex with a girl that didn''t clean herself and he will pay significantly '+iif(wl_whore['dirty_anal_mod'] = 0, 'less', 'more')+' for it.'
+				if mesec > 0: iif(wl_whore['mesec_mod'] = 0, 'He really doesn''t like', 'He tells you that he likes')+' to fuck girls that have their period.'
+						
+				*nl
+						
+				'You offer him...'
+						
+				if rand(1,10) < 10:
+					act 'A blowjob': $wl_whore['client_scene'] = 'Blowjob' & gt 'mod_wlife_highway', 'negotiation_start'
+					act 'Your pussy': $wl_whore['client_scene'] = 'Vaginal' & gt 'mod_wlife_highway', 'negotiation_start'
+					act 'Your ass': $wl_whore['client_scene'] = 'Anal' & gt 'mod_wlife_highway', 'negotiation_start'
+				else
+					act 'A blowjob': 
+						if $wl_whore['client_scene'] ! 'Blowjob': wl_whore['propose'] = 2
+						gt 'mod_wlife_highway', 'negotiation_start'
+					end
+					act 'Your pussy':
+						if $wl_whore['client_scene'] ! 'Vaginal': wl_whore['propose'] = 2
+						gt 'mod_wlife_highway', 'negotiation_start'
+					end
+					act 'Your ass':
+						if $wl_whore['client_scene'] ! 'Anal': wl_whore['propose'] = 2
+						gt 'mod_wlife_highway', 'negotiation_start'
+					end
+				end
+			end
+		else
+			gt 'mod_wlife_highway', 'rough'		
+		end
+	else
+		wl_whore['pity_counter'] += rand(4,8)
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/search.mp4"></video></center>'
+		'<br>Some cars drive by, but nobody stops.'
+		act 'Continue': gt 'mod_wlife_highway', 'work'
+	end
+end
+
+!!------ Regular Client ------
+
+if $ARGS[0] = 'client_regular':
+	*clr & cla
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/arrival.mp4"></video></center>'
+	
+	'A car approaches and slows down as it comes nearer. You take a look at the driver and you recognize him, he''s one of your regulars.'
+
+	act 'Approach the car':
+		*clr & cla
+		minut += 1
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/approach.mp4"></video></center>'		
+		'"Hi <<$wl_names[''street'']>>. I was looking for you." He says in a good mood clearly happy to see you.'
+		*nl
+		'"Hey sweetie, good to see you again." You say to him with a smile on your lips.'
+		
+		act 'Lean inside the car':
+			*clr & cla
+			minut += 1
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'			
+			'"I was hoping that you would work today," he tells you and you give him a smile. You remember that he '+iif($wl_whore['client_scene'] = 'Vaginal', 'never asked to fuck your ass and always preferred your pussy.', 'always preferred to fuck your ass.')
+			*nl
+			
+			if wl_status['condoms'] > 0 or (wl_status['condoms'] = 0 and wl_whore['std_mod'] = 0):
+				'You tell him that...'
+				
+				gs 'willpower', 'prostitution', 'resist', 'easy'
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:
+					act '... you''re not in the mood (<<will_cost>> Willpower)':
+						gs 'willpower', 'pay', 'resist'
+						gt 'mod_wlife_highway', 'client_regular_fail'
+					end
+				else
+					act '... you''re not in the mood (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>' 
+				end
+				
+				act '... you guess he wants to fuck your '+iif($wl_whore['client_scene'] = 'Vaginal', 'pussy', 'ass')+'': 
+					*clr & cla
+					minut += 2
+					gs 'stat'
+					'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'
+					
+					'"So, I guess you want to fuck my '+iif($wl_whore['client_scene'] = 'Vaginal', 'pussy', 'ass')+'? You seem to love that the last time.'
+					'He grins. "You remembered?" He asks you. "Sure," you answer with a convincing smile. "I''ll always remember what my most loyal customers like."'
+					*nl
+					'You also remember that with him you...'
+					
+					if wl_whore['std_mod'] = 0 and wl_auto['regular'] = 0:
+						act 'Always use a condom':
+							cla & *nl						
+							'... always use a condom.'+iif(wl_status['condoms'] = 0, ' But you don''t have any with you', '')
+							
+							act 'Don''t make an exception':
+								cla & *nl
+								$wl_client_condom = 'Yes'
+								$wl_client_cumshot = 'Outside or Condom'
+								gs 'mod_wlife_functions', 'payment', 'condom_yes', 'inside_no'
+								
+								if wl_status['condoms'] > 0:
+									'You pull out a condom out of your '+iif(bag = 1, 'purse', 'pocket')+' and he nods. "No problem <<$wl_names[''street'']>>, better safe than sorry."'
+									
+									act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+								else
+									gs 'stat'
+									'"I know you really like to fuck my '+iif($wl_whore['client_scene'] = 'Vaginal', 'pussy', 'ass')+' but I don''t have any condoms."'
+									*nl
+									'"Shit? Really?" He looks disheartened.'
+									*nl
+									if money >= 100:
+										'"Don''t worry, honey. There is a condom dispenser at the restroom. If you give me a second, I''ll be right back."'
+										'He nods and you go and buy a condom.'
+										*nl
+										'It takes you more than a second, but when you return you show him the condom.'
+										'"Perfect, you nearly gave me a heart attack." You grin. "I mean it," he says half serious, half joking. "I can''t go a week without fucking you."'
+										minut += 2
+										money -= 100
+										prezikcount += 1
+										gs 'stat'
+										
+										act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+									else
+										'He sighs and after a second he shrugs. "Fine," he looks at you and reassures you. "Don''t worry about it <<$wl_names[''street'']>>, you''re always worth waiting for."'
+										
+										act 'Leave': gt 'mod_wlife_highway', 'work'
+									end
+								end
+							end
+							
+							act 'Make an exception':
+								cla & *nl
+								$wl_client_condom = 'No'
+								'"You know what, how about we do it without a condom today?" You ask and quickly add: "But you have to pay for that."'
+								'He looks at you surprised but pleased. "I can fuck you raw? Really?" You nod. "Wow, nice. Sure let''s do it like god intended."'
+								*nl
+								'You smile and tell him that he...'
+									
+								act 'Can''t cum inside you':
+									cla & *nl
+									$wl_client_cumshot = 'Outside'
+									gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_no'
+									'... can''t cum inside you. "Yeah, raw is the best way to fuck, but don''t cum inside me, OK? I''ll suck you off at the end."'
+									'"Sure thing, babe."'
+										
+									act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+								end
+									
+								act 'Can cum inside you':
+									cla & *nl
+									$wl_client_cumshot = 'Inside'
+									gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+									'... can cum inside you. "And don''t be afraid to cum inside me if you want and pay for it."'
+									'"Of course I''ll pay for it. You''re the best, <<$wl_names[''street'']>>."'
+										
+									act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+								end
+							end
+						end	
+						
+						act 'Never use a condom':
+							cla & *nl
+							$wl_client_condom = 'No'
+							'... never use a condom. "You want to fuck me raw as always?"'
+							'He nods. "Of course, it just isn''t the same with a condom. It''s really great that you do that, <<$wl_names[''street'']>>. You know that, right? There aren''t many girls your age that do it raw."'
+							*nl
+							'You smile and tell him that he...'
+							
+							act 'Can''t cum inside you':
+								cla & *nl
+								$wl_client_cumshot = 'Outside'
+								gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_no'
+								'... can''t cum inside you. "Yeah, raw is the best way to fuck, but remember don''t cum inside me. I''ll suck you off at the end."'
+								'He nods. "Sure thing, babe."'
+								
+								act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+							end
+							
+							act 'Can cum inside you':
+								cla & *nl
+								$wl_client_cumshot = 'Inside'
+								gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+								'... can cum inside you. "Yeah, raw is the best way to fuck and remember don''t be afraid to cum anywhere you want."'
+								'"You''re the best whore in the whole area, <<$wl_names[''street'']>>."'
+								
+								act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+							end
+						end
+					elseif wl_whore['std_mod'] = 0 and wl_auto['regular'] = 1:
+						if (wl_auto['reg_vag_condom'] = 1 and $wl_whore['client_scene'] = 'Vaginal') or (wl_auto['reg_anal_condom'] = 1 and $wl_whore['client_scene'] = 'Anal'):
+							$wl_client_condom = 'Yes'
+							$wl_client_cumshot = 'Outside or Condom'
+							if wl_status['condoms'] = 0: prezikcount += 1 & money -= 100
+						else
+							$wl_client_condom = 'No'
+							if (wl_auto['reg_vag_creampie'] = 1 and $wl_whore['client_scene'] = 'Vaginal') or (wl_auto['reg_anal_creampie'] = 1 and $wl_whore['client_scene'] = 'Anal'):
+								$wl_client_cumshot = 'Inside'
+							else
+								$wl_client_cumshot = 'Outside'
+							end
+						end
+												
+						gs 'mod_wlife_functions', 'payment', iif($wl_client_condom = 'Yes', 'condom_yes', 'condom_no'), iif($wl_client_cumshot = 'Inside', 'inside_yes', 'inside_no')
+						gt 'mod_wlife_highway', 'client_regular_success'
+					else
+						cla & *nl
+						$wl_client_condom = 'Yes'
+						$wl_client_cumshot = 'Outside or Condom'
+						gs 'mod_wlife_functions', 'payment', 'condom_yes', 'inside_no'
+						
+						'... should always use a condom. He was always nice, never mistreated you and without a condom he would surely catch your STD.'
+						
+						act 'Continue': gt 'mod_wlife_highway', 'client_regular_success'
+					end
+				end
+			else	
+				'You remember your STD, how he never mistreated you and also your lack of condoms. So, you tell him that...'
+				act '... you''re not in the mood': gt 'mod_wlife_highway', 'client_regular_fail'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'client_regular_fail':
+	*clr & cla
+	minut += 5
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'
+	'"I''m sorry sweetie, I know you really like to fuck my '+iif($wl_whore['client_scene'] = 'Vaginal', 'pussy', 'ass')+' but I''m not up for that today."'
+	*nl
+	'"Shit? Really?" You nod and he looks disheartened. After a moment he shrugs and throws you a grin. "Don''t worry about it <<$wl_names[''street'']>>, it''s fine, you''re always worth the wait."'
+	*nl
+	'"Thanks," you say and step away from the car.'+iif(wl_whore['std_mod'] = 1 and wl_status['condoms'] = 0, ' As you walk away you think about your decision for a moment. In the end it was the right choice, he was always nice to you and without a condom he surely would catch your STD.', '')
+	
+	act 'Continue': gt 'mod_wlife_highway', 'work'
+end
+
+if $ARGS[0] = 'client_regular_success':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',5
+		
+	*clr & cla
+	minut += 5
+	wl_whore['regular_timer'] = daystart
+	gs 'mod_wlife_functions', 'acceptance_check', 'regular'
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/drive.mp4"></video></center>'
+	'You get into his car and he takes you to your regular spot at the end of the parking lot.'
+		
+	act 'Continue':
+		*clr & cla
+		if rand(1,10) < 4:
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/money_0a.mp4"></video></center>'
+			'You don''t want to say anything about the money, it always dampens the mood if you have to remind your clients to pay upfront. But with him you always have to say something. The instant he stops the car he reaches out for your top and touches your breasts.'
+			'"Show them to me," he murmurs and together you free your tits from your top. "I love those. They''re perfect."'
+			'"Thanks," you say as he grabs your right boob and squeezes it with a look on his face of a teenage boy that sees one of those for the first time.'
+			'You laugh and smile, but also...'
+			
+			gs 'arousal', 'breasts', 2
+			gs 'stat'
+			
+			act 'Remind him to pay you':
+				*clr & cla
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/money_0b.mp4"></video></center>'
+				'"You have to pay me first," you tell him quietly, but he doesn''t listen. Instead he eagerly puts one of your nipples inside your mouth and starts to suck on them. "Please, you know you have to pay first." You remind him again.'
+				'"Fine," he sighs and jokes: "But they taste so good," stretching the ''so'' ridiculously long.'
+				'You laugh and shake your head. "Come on," you grin when he doesn''t stop and push him away.'
+				'"OK, Ok, I''ll get your money."'
+				*nl
+				'"Happy?" He asks as you take the <<wl_whore[''payment'']>> <b>₽</b>.'+iif(wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1, '', ' You keep it separated from your own money until you can settle everything with Volya tonight.')
+				'"Yes, now let me make you happy," you reply.'
+				
+				gs 'arousal', 'breasts', 2
+				
+				wl_whore['earnings_day'] += wl_whore['payment']	
+				if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += wl_whore['payment']
+				wl_whore['payment'] = 0
+				gs 'stat'
+				
+				act 'Continue': gt 'mod_wlife_highway_sex', 'regular_start'
+			end
+		else
+			minut += 2
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/money_1.mp4"></video></center>'
+			'You don''t want to say anything about the money, it always dampens the mood if you have to remind your clients to pay upfront. But with him you don''t have to. The instant he stops the car, he pulls out his wallet and hands you the money. He even makes sure that you see that everything is there without you having to count it yourself.'
+			'"Thanks," you say and take the <<wl_whore[''payment'']>> <b>₽</b>.'+iif(wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1, '', ' You keep it separated from your own money until you can settle everything with Volya tonight.')
+			*nl
+			'Now it''s for you to keep up your end of the bargain.'
+			
+			wl_whore['earnings_day'] += wl_whore['payment']	
+			if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += wl_whore['payment']
+			wl_whore['payment'] = 0
+			gs 'stat'
+			
+			act 'Get undressed': gt 'mod_wlife_highway_sex', 'regular_start'
+		end
+	end
+end
+
+!!------ Normal Client ------
+
+if $ARGS[0] = 'negotiation_start':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+
+	if wl_auto['normal'] = 1: gt 'mod_wlife_highway', 'negotiation_automatic'
+		
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'
+			
+	iif(wl_whore['propose'] = 0, 'You lean into his car and chat with him about the price and what he likes and dislikes.' , iif(wl_whore['propose'] = 2, 'He doesn''t like your suggestion and instead offers something else.', 'You chat with him about the price.'))+' At the end of your conversation he takes a good look at you and '+iif(wl_whore['std_mod'] = 0, 'asks you if you do it with or without a condom.', 'tells you that you don''t look healthy and he won''t do it without a condom')
+		
+	*nl	
+	'You are negotiating with the client:'
+	'Sex: <<$wl_whore[''client_scene'']>>'
+	gs 'mod_wlife_functions', 'payment', 'condom_yes', 'not_discussed'
+	'Payment with condom: <<wl_whore[''payment'']>> <b>₽</b>'
+	if wl_whore['std_mod'] = 0:
+		gs 'mod_wlife_functions', 'payment', 'condom_no', 'not_discussed'
+		'Payment without condom: <<wl_whore[''payment'']>> <b>₽</b>'
+	end
+	
+	if wl_whore['propose'] = 0:
+		*nl
+		if wl_whore['enema'] = 0: iif(wl_whore['dirty_anal_mod'] = 0, 'He hates', 'He admits that he loves')+' anal sex with a girl that didn''t clean herself and he will pay significantly '+iif(wl_whore['dirty_anal_mod'] = 0, 'less', 'more')+' for it.'
+		if mesec > 0: iif(wl_whore['mesec_mod'] = 0, 'He doesn''t like', 'He tells you that he likes')+' to fuck girls that have their period.'
+	end
+					
+	if wl_status['condoms'] > 0 and (wl_whore['std_mod'] = 1 or wl_whore['propose'] = 2):
+		gs 'willpower', 'prostitution', 'resist'
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr:
+			act 'Decline and move away (<<will_cost>> Willpower)':
+				gs 'willpower', 'pay', 'resist'
+				gt 'mod_wlife_highway', 'work'
+			end
+		else
+			act 'Decline and move away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	elseif wl_whore['propose'] = 0 and wl_whore['std_mod'] = 0:
+		gs 'willpower', 'prostitution', 'resist'
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr:
+			act 'Decline and move away (<<will_cost>> Willpower)':
+				gs 'willpower', 'prostitution', 'resist'
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				gs 'willpower', 'pay', 'resist'
+				gt 'mod_wlife_highway', 'work'
+			end
+		else
+			act 'Decline and move away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		gs 'willpower', 'prostitution', 'resist', 'easy'
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr:
+			if rand(1,10) < 9:
+				if $wl_whore['client_scene'] ! 'Blowjob': act 'Decline and offer him a blowjob instead (<<will_cost>> Willpower)': wl_whore['client_satisfaction'] -= 10 & gs 'willpower', 'pay', 'resist' & $wl_whore['client_scene'] = 'Blowjob' & wl_whore['propose'] = 1 & gt 'mod_wlife_highway', 'negotiation_start'
+				if $wl_whore['client_scene'] ! 'Anal': act 'Decline and offer him your ass instead (<<will_cost>> Willpower)': wl_whore['client_satisfaction'] -= 10 & gs 'willpower', 'pay', 'resist' & $wl_whore['client_scene'] = 'Anal' & wl_whore['propose'] = 1 & gt 'mod_wlife_highway', 'negotiation_start'
+				if $wl_whore['client_scene'] ! 'Vaginal': act 'Decline and offer him your pussy instead (<<will_cost>> Willpower)': wl_whore['client_satisfaction'] -= 10 & gs 'willpower', 'pay', 'resist' & $wl_whore['client_scene'] = 'Vaginal' & wl_whore['propose'] = 1 & gt 'mod_wlife_highway', 'negotiation_start'
+			else
+				if $wl_whore['client_scene'] ! 'Blowjob': act 'Decline and offer him a blowjob instead (<<will_cost>> Willpower)': gs 'willpower', 'pay', 'resist' & gt 'mod_wlife_highway', 'negotiation_fail'
+				if $wl_whore['client_scene'] ! 'Anal': act 'Decline and offer him your ass instead (<<will_cost>> Willpower)': gs 'willpower', 'pay', 'resist' & gt 'mod_wlife_highway', 'negotiation_fail'
+				if $wl_whore['client_scene'] ! 'Vaginal': act 'Decline and offer him your pussy instead (<<will_cost>> Willpower)': gs 'willpower', 'pay', 'resist' & gt 'mod_wlife_highway', 'negotiation_fail'
+			end
+		else
+			if $wl_whore['client_scene'] ! 'Blowjob': act 'Decline and offer him a blowjob instead (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			if $wl_whore['client_scene'] ! 'Anal': act 'Decline and offer him your ass instead (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			if $wl_whore['client_scene'] ! 'Vaginal': act 'Decline and offer him your pussy instead (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+	
+	if wl_status['condoms'] > 0 and wl_whore['std_mod'] = 0: 
+		act 'Insist on a condom': $wl_client_condom = 'Yes' & gt 'mod_wlife_highway', 'negotiation_condom_yes'
+	elseif wl_status['condoms'] > 0 and wl_whore['std_mod'] = 1:
+		act 'Accept and use a condom': $wl_client_condom = 'Yes' & gt 'mod_wlife_highway', 'negotiation_condom_yes'
+	end
+
+	if wl_whore['std_mod'] = 0:
+		act 'Don''t insist on a condom': $wl_client_condom = 'No' & gt 'mod_wlife_highway', 'negotiation_condom_no'
+	elseif wl_status['condoms'] = 0 and wl_whore['std_mod'] = 1:
+		act 'Tell him you don''t have a condom':
+			if rand(1,10) < 9:
+				gt 'mod_wlife_highway', 'negotiation_fail'
+			else
+				cla & *nl
+				$wl_whore['client_scene'] = 'Blowjob'
+				'After a moment he reluctantly accepts doing it without a condom'+iif($wl_whore['client_scene'] = 'Blowjob', '.', ', but he changed his mind and doesn''t want more than a blowjob.')
+				
+				*nl
+				'Sex: <<$wl_whore[''client_scene'']>>'
+				gs 'mod_wlife_functions', 'payment', 'condom_no', 'not_discussed'
+				'New payment: <<wl_whore[''payment'']>> <b>₽</b>'
+				
+				gs 'mod_wlife_functions', 'will_unprotected', 'resist'
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:
+					act 'Decline and move away (<<will_cost>> Willpower)':
+						gs 'willpower', 'pay', 'resist'
+						gt 'mod_wlife_highway', 'work'
+					end
+				else
+					act 'Decline and move away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				
+				act 'Accept': $wl_client_condom = 'No' & gt 'mod_wlife_highway', 'negotiation_condom_no'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'negotiation_condom_yes':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'
+	
+	gs 'mod_wlife_functions', 'payment', 'condom_yes', 'Outside or Condom'
+	
+	*nl
+	'You are negotiating with your client:'
+	'Sex: <<$wl_whore[''client_scene'']>>'
+	'Payment: <<wl_whore[''payment'']>> <b>₽</b>'
+	'Condom: <<$wl_client_condom>>'
+	*nl
+		
+	if wl_whore['std_mod'] = 1 or rand(1,10) < 7 or ($wl_whore['client_scene'] = 'Vaginal' and mesec > 0 and wl_whore['mesec_mod'] = 0) or ($wl_whore['client_scene'] = 'Anal' and wl_whore['enema'] = 0 and wl_whore['dirty_anal_mod'] = 0):		
+		if wl_whore['std_mod'] = 1:
+			'"Ok, get in'+iif(rand(1,10) < 7, ', but you really don''t look well, you should let somebody take a look at that.', ' and be glad I let you touch me, filthy whore.')+'," he says.'
+		else
+			'"Ok, get in'+iif(rand(1,10) < 7, ' girl', ' whore')+'," he says.'
+		end
+		act 'Get into his car':
+			$wl_client_cumshot = 'Outside or Condom'
+			gs 'mod_wlife_functions', 'payment', 'condom_yes', 'Outside or Condom'
+			gt 'mod_wlife_highway', 'negotiation_success'
+		end
+	else
+		gs 'mod_wlife_functions', 'payment', 'condom_no', 'not_discussed'
+		'He asks you to forgo the condom. He would pay at least <<wl_whore[''payment'']>> <b>₽</b> and even more if you '+iif($wl_whore['client_scene'] = 'Blowjob', 'swallow his cum.', 'let him cum inside you.')
+		gs 'mod_wlife_functions', 'will_unprotected', 'resist'
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr:
+			act 'Decline (<<will_cost>> Willpower)':
+				cla & *nl
+				gs 'willpower', 'pay', 'resist'
+				if rand(1,10) < 7:
+					'He finally accepts.'
+					$wl_client_cumshot = 'Outside or Condom'
+					wl_whore['client_satisfaction'] -= 10
+					gs 'mod_wlife_functions', 'payment', 'condom_yes', 'inside_no'
+					act 'Get into his car': gt 'mod_wlife_highway', 'negotiation_success'
+				else
+					wl_whore['fail_condom'] = 1
+					gt 'mod_wlife_highway', 'negotiation_fail'
+				end
+			end
+		else
+			act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Accept': $wl_client_condom = 'No' & gt 'mod_wlife_highway', 'negotiation_condom_no' 
+	end
+end
+
+if $ARGS[0] = 'negotiation_condom_no':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'
+	
+	gs 'mod_wlife_functions', 'payment', 'condom_no', 'not_discussed'
+	
+	*nl
+	'You are negotiating with your client:'
+	'Sex: <<$wl_whore[''client_scene'']>>'
+	'Payment: <<wl_whore[''payment'']>> <b>₽</b>'
+	'Condom: <<$wl_client_condom>>'
+	*nl
+	
+	gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+	'He asks you if you would '+iif($wl_whore['client_scene'] = 'Blowjob', 'swallow his cum.', 'let him cum inside you.')+' He offers to pay you <<wl_whore[''payment'']>> <b>₽</b> if you do.'
+	
+	if $wl_whore['client_scene'] = 'Anal':
+		gs 'willpower', 'cum_inside_anal', 'resist'
+	elseif $wl_whore['client_scene'] = 'Blowjob':
+		gs 'willpower', 'swallow', 'resist'
+	else
+		gs 'willpower', 'cum_inside', 'resist'
+	end
+	if wl_cheat['will_cost'] = 1: will_cost = 0
+	if will_cost <= pcs_willpwr:	
+		act 'Decline (<<will_cost>> Willpower)':
+			cla & *nl
+			gs 'willpower', 'pay', 'resist'
+			if rand(1,10) < 10 or wl_whore['client_creampie'] = 1:
+				'He accepts your decision.'
+				$wl_client_cumshot = 'Outside'
+				wl_whore['client_satisfaction'] -= 10
+				gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_no'
+				act 'Get into his car': gt 'mod_wlife_highway', 'negotiation_success'
+			else
+				wl_whore['fail_creampie'] = 1
+				gt 'mod_wlife_highway', 'negotiation_fail'
+			end
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+			
+	act 'Accept and get into his car': 
+		$wl_client_cumshot = 'Inside'
+		gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+		gt 'mod_wlife_highway', 'negotiation_success'
+	end
+end
+
+if $ARGS[0] = 'negotiation_automatic':
+	wl_auto['negotiation'] = 1
+	gs 'willpower', 'prostitution', 'resist'
+	if wl_cheat['will_cost'] = 1: will_cost = 0
+	if ((wl_auto['norm_bj'] = 0 and $wl_whore['client_scene'] = 'Blowjob') or (wl_auto['norm_vag'] = 0 and $wl_whore['client_scene'] = 'Vaginal') or (wl_auto['norm_anal'] = 0 and $wl_whore['client_scene'] = 'Anal')) and will_cost <= pcs_willpwr:
+		gs 'willpower', 'pay', 'resist'
+		gt 'mod_wlife_highway', 'negotiation_fail'
+	else
+		if ((wl_auto['norm_bj'] = 0 and $wl_whore['client_scene'] = 'Blowjob') or (wl_auto['norm_vag'] = 0 and $wl_whore['client_scene'] = 'Vaginal') or (wl_auto['norm_anal'] = 0 and $wl_whore['client_scene'] = 'Anal')): wl_auto['willpower'] = 1
+		
+		if ((wl_auto['norm_bj_condom'] = 1 and $wl_whore['client_scene'] = 'Blowjob') or (wl_auto['norm_vag_condom'] = 1 and $wl_whore['client_scene'] = 'Vaginal') or (wl_auto['norm_anal_condom'] = 1 and $wl_whore['client_scene'] = 'Anal')) and wl_status['condoms'] > 0:
+			gs 'mod_wlife_functions', 'will_unprotected', 'resist'
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			if wl_whore['std_mod'] = 1 or rand(1,10) < 7 or ($wl_whore['client_scene'] = 'Vaginal' and mesec > 0 and wl_whore['mesec_mod'] = 0) or ($wl_whore['client_scene'] = 'Anal' and wl_whore['enema'] = 0 and wl_whore['dirty_anal_mod'] = 0):
+				$wl_client_condom = 'Yes'
+				$wl_client_cumshot = 'Outside or Condom'
+				gs 'mod_wlife_functions', 'payment', 'condom_yes', 'inside_no'
+			elseif will_cost <= pcs_willpwr:
+				$wl_client_condom = 'Yes'
+				$wl_client_cumshot = 'Outside or Condom'
+				wl_whore['client_satisfaction'] -= 10
+				gs 'willpower', 'pay', 'resist'
+				gs 'mod_wlife_functions', 'payment', 'condom_yes', 'inside_no'
+				if rand(1,10) < 4:
+					wl_whore['fail_condom'] = 1
+					gt 'mod_wlife_highway', 'negotiation_fail'
+				end
+			else
+				if $wl_whore['client_scene'] = 'Anal':
+					gs 'willpower', 'cum_inside_anal', 'resist'
+				elseif $wl_whore['client_scene'] = 'Blowjob':
+					gs 'willpower', 'swallow', 'resist'
+				else
+					gs 'willpower', 'cum_inside', 'resist'
+				end
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:
+					$wl_client_condom = 'No'
+					$wl_client_cumshot = 'Outside'
+					wl_whore['client_satisfaction'] -= 10
+					gs 'willpower', 'pay', 'resist'
+					gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_no'
+					if rand(1,10) = 10 and wl_whore['client_creampie'] = 0: gt 'mod_wlife_highway', 'negotiation_fail'
+				else
+					wl_auto['willpower'] = 1
+					$wl_client_condom = 'No'
+					$wl_client_cumshot = 'Inside'
+					gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+				end
+			end	
+			gt 'mod_wlife_highway', 'negotiation_success'
+		elseif rand(1,10) < 9 and wl_whore['std_mod'] = 1:
+			gt 'mod_wlife_highway', 'negotiation_fail'
+		else
+			$wl_client_condom = 'No'
+			gs 'mod_wlife_functions', 'will_unprotected', 'resist'
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			if ((wl_auto['norm_bj_creampie'] = 1 and $wl_whore['client_scene'] = 'Blowjob') or (wl_auto['norm_vag_creampie'] = 1 and $wl_whore['client_scene'] = 'Vaginal') or (wl_auto['norm_anal_creampie'] = 1 and $wl_whore['client_scene'] = 'Anal')):
+				$wl_client_cumshot = 'Inside'
+				gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+			elseif will_cost <= pcs_willpwr:
+				$wl_client_cumshot = 'Outside'
+				wl_whore['client_satisfaction'] -= 10
+				gs 'willpower', 'pay', 'resist'
+				gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_no'
+				if rand(1,10) = 10 and wl_whore['client_creampie'] = 0:
+					wl_whore['fail_creampie'] = 1
+					gt 'mod_wlife_highway', 'negotiation_fail'
+				end
+			else
+				wl_auto['willpower'] = 1
+				$wl_client_cumshot = 'Inside'
+				gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+			end
+			gt 'mod_wlife_highway', 'negotiation_success'
+		end
+	end		
+end
+
+if $ARGS[0] = 'negotiation_fail':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/leave_walk.mp4"></video></center>'	
+	'He shakes his head. "I have changed my mind'+iif(rand(1,10) < 7, '", sorry girl maybe next time."', ', bitch. Get away from my car."')+' He says.'
+	
+	act 'Step back from the car': 
+		wl_whore['client_satisfaction'] = 0
+		gt 'mod_wlife_highway', 'work'
+	end
+	if wl_whore['fail_condom'] = 1:
+		wl_whore['fail_condom'] = 0
+		act 'Change your mind and do it without a condom': gt 'mod_wlife_highway', 'negotiation_condom_no'
+	elseif wl_whore['fail_creampie'] = 1:
+		wl_whore['fail_creampie'] = 0
+		act 'Change your mind and allow him to cum inside you':
+			gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+			gt 'mod_wlife_highway', 'negotiation_success'
+		end
+	elseif wl_whore['fail_pay'] = 1:
+		wl_whore['fail_pay'] = 0
+		act 'Change your mind and accept his offer':
+			gs 'mod_wlife_functions', 'payment', 'condom_no', 'inside_yes'
+			gt 'mod_wlife_highway', 'negotiation_success'
+		end		
+	end
+end
+
+if $ARGS[0] = 'negotiation_success':
+	CLOSE ALL
+	if sound = 0:PLAY 'sound/highway.mp3',5
+	
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/drive.mp4"></video></center>'
+	if wl_auto['negotiation'] = 1:	
+		'You have negotiated the following'+iif(wl_auto['willpower'] = 1, ', but you didn''t have enough willpower to resist all of his demands:', ':')
+		'Sex: <<$wl_whore[''client_scene'']>>'
+		'Payment: <<wl_whore[''payment'']>> <b>₽</b>'
+		'Condom: <<$wl_client_condom>>'
+		'Cumshot: '+iif($wl_client_cumshot = 'Outside or Condom', 'Outside', '<<$wl_client_cumshot>>')
+		wl_auto['willpower'] = 0
+		wl_auto['negotiation'] = 0
+		*nl
+	end
+	'You get inside the car and tell him to drive to a more secluded part of the parking lot.'+iif(rand(1,10) < 4, 'His right hand immediately moves onto your thigh and he slowly strokes it and he is clearly distracted as he slowly drives the car to the end of the parking space.', '')
+	*nl
+	
+	if $wl_client_condom = 'No': wl_stats['unprotected'] += 1
+	
+	if wl_whore['client_satisfaction'] < 0:
+		'You get the feeling that he isn''t satisfied with all the choices and that he would have paid 10% or maybe even 20% more. You could try to convince him to pay you a bit more.'
+		act 'Don''t haggle': gt 'mod_wlife_highway', 'money'
+		gs 'mod_wlife_functions', 'will_acceptance', 'force'
+		will_cost = (will_cost * iif(wl_whore['client_satisfaction'] = -10, 20, 40)) / 100
+		if will_cost < 3: will_cost = 3
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr:
+			act 'Ask for more money (<<will_cost>> Willpower)':
+				cla & *nl
+				gs 'willpower', 'pay', 'force'
+				if rand(1,10) = 10:
+					wl_whore['fail_pay'] = 1
+					gt 'mod_wlife_highway', 'negotiation_fail'
+				end
+				wl_whore['payment'] = wl_whore['payment_backup']
+				gs 'stat'
+				'He grudgingly accepts and agrees to pay you <<wl_whore[''payment'']>> <b>₽</b> instead.'
+				
+				act 'Continue': gt 'mod_wlife_highway', 'money'
+			end
+		else
+			act 'Ask for more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	else
+		'When you arrive you have only one thing left to do...'
+		act '... ask for your money': gt 'mod_wlife_highway', 'money'
+	end
+end
+
+if $ARGS[0] = 'money':
+	*clr & cla
+	minut += 2
+	wl_whore['client_satisfaction'] = 0
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/money.mp4"></video></center>'
+	'"So...," you say when he parks his car, but he already knows what you''re going to say. "Yeah, I know, you want your money."'
+	'He pulls out his wallet and hands you <<wl_whore[''payment'']>> <b>₽</b>.'+iif(wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1, '', ' You keep it separated from your own money until you can settle everything with Volya tonight.')
+	
+	wl_whore['earnings_day'] += wl_whore['payment']	
+	if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += wl_whore['payment']
+	wl_whore['payment'] = 0
+	gs 'mod_wlife_functions', 'acceptance_check', 'normal'
+	gs 'stat'
+
+	'<br>The moment you have put your money away his hands move to your body starting to undress you.'
+	
+	act 'Get to work': gt 'mod_wlife_highway_sex', 'start'
+end
+
+if $ARGS[0] = 'bus_end':
+	minut += 35	
+	money -= 75
+	if wl_whore['bus_check'] ! daystart:
+		wl_whore['bus_check'] = daystart
+		if wl_stats['acceptance'] > 100:
+			wl_stats['acceptance'] = 100
+		elseif wl_whore['earnings_day'] > 8000:
+			wl_stats['acceptance'] += 3
+		elseif wl_whore['earnings_day'] > 5000:
+			wl_stats['acceptance'] += 2
+		elseif wl_whore['earnings_day'] > 0:
+			wl_stats['acceptance'] += 1
+		else
+			wl_stats['acceptance'] -= 1
+		end
+	end
+	
+	wl_whore['earnings_day'] = 0
+	wl_whore['customer_day'] = 0
+	gt 'nordtrain', 'outside'
+end
+
+--- mod_wlife_highway ---------------------------------

+ 905 - 0
locations/mod_wlife_highway_sex.qsrc

@@ -0,0 +1,905 @@
+# mod_wlife_highway_sex
+
+!!------ Normal Client ------
+
+if $ARGS[0] = 'start':
+	menu_off = 1
+	guy += 1
+	!!STD checks are done by the mod
+	cumnostd = 1
+	if $wl_whore['client_scene'] = 'Blowjob' or rand(0,2) < 2:
+		wl_whore['blowjob_first'] = 1
+		gt 'mod_wlife_highway_sex', 'Blowjob'
+	else
+		gt 'mod_wlife_highway_sex', $wl_whore['client_scene']
+	end
+end
+
+if $ARGS[0] = 'Blowjob':
+	*clr & cla
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/blowjob/bj_'+rand(1,27)+'.mp4"></video></center>'
+	
+	if wl_whore['scene_repeat'] = 0: 
+		'At the sight of your naked body he wastes no time to undress and reveal his '+iif($wl_whore['client_scene'] ! 'blowjob', 'limb dick.', 'already hard cock.')+' You both shuffle around in the car until you find a comfortable position.'+iif(rand(1,10) < 4, ' Sometimes you both can''t stop yourself from laughing, when you awkwardly move around each other and body parts intertwine.', '')
+		*nl
+	end
+	
+	if $wl_whore['client_scene'] = 'Blowjob' and wl_whore['scene_repeat'] = 0:
+		if $wl_client_condom = 'Yes':
+			gs 'mod_wlife_functions', 'remove_condom'
+			'You take your condom and put it on his <<dick>>cm dick.'
+		end
+		iif(rand(1,10) < 6, '"Don''t keep me waiting,', '"Get to work,')+iif(rand(1,10) < 4, ' whore', ' girl')+'," he says and you obediently start to suck him off.'
+	elseif $wl_whore['client_scene'] = 'Blowjob' and wl_whore['scene_repeat'] = 1:
+		'You''re giving it your best. Switching up your routine, sometimes you only tease the head of his dick, lick his balls or deepthroat him as he praises your effort, but as time moves on he doesn''t seem to be close to shooting his load.'
+	elseif $wl_whore['client_scene'] = 'Blowjob' and wl_whore['scene_repeat'] = 2:
+		'His stamina is impressive and despite your best efforts he still doesn''t cum. Your jaw aches and you''re getting tired of sucking him.'
+		gs 'pain', 1, 'mouth', 'stretch'
+	else
+		if $wl_client_condom = 'Yes':
+			gs 'mod_wlife_functions', 'remove_condom'
+			'You take your condom and put it on his <<dick>>cm dick.'
+		end
+		'"Get me ready," he commands and you obediently start to suck him hard.'
+	end
+		
+	'You wrap your lips around his member'+iif($wl_client_condom = 'Yes', '; with those modern condom there''s no real difference to bare skin. You suck and run', ' sucking and running')+' your tongue along his shaft while your hands fondle his balls. "Don''t be shy '+iif(rand(1,10) < 4, 'whore', 'girl')+'," he murmurs before pushing his cock further into your mouth.' 
+	
+	gs 'arousal', 'bj', 6, 'unknown', 'prostitution'
+	gs 'stat'
+	
+	if $wl_whore['client_scene'] ! 'Blowjob':
+		act 'Continue': gt 'mod_wlife_highway_sex', $wl_whore['client_scene']
+	elseif $wl_whore['client_scene'] = 'Blowjob' and (wl_whore['scene_repeat'] = 0 and rand(1,6) < 4) or (wl_whore['scene_repeat'] = 1 and rand(1,6) < 3):
+		wl_whore['scene_repeat'] += 1
+		act 'Continue': gt 'mod_wlife_highway_sex' , 'Blowjob'
+	elseif $wl_fetish['rimjob'] ! 'blocked' and wl_whore['client_creampie'] = 0 and (rand(1,100) + wl_whore['rim_pity_counter']) > 90:
+		act 'Continue': gs 'mod_wlife_highway_sex', 'rimjob_start'
+	else
+		act 'Continue': gs 'mod_wlife_highway_sex' , 'switch'
+	end
+end
+
+if $ARGS[0] = 'Vaginal':
+	*clr & cla
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/vaginal/vaginal_'+rand(1,45)+'.mp4"></video></center>'
+	
+	if wl_whore['scene_repeat'] = 0:
+		if wl_whore['blowjob_first'] = 0: 'Once you both are alone you quickly take of your clothes and present your pussy to him. At the sight of your pussy he wastes no time unzipping his pants to reveal his already hard cock.'
+		if $wl_client_condom = 'Yes' and wl_whore['condom'] = 0:
+			gs 'mod_wlife_functions', 'remove_condom'
+			'You take your condom and put it on his <<dick>>cm dick.'
+		end
+		gs 'arousal', 'auto_lube', 'vaginal'
+		'You spread your legs and help guide his member to the right place. '+iif(pcs_horny > 40, 'You are getting wetter by the second, hoping to get some pleasure out of it, too. "You''re already wet for me? Good girl,"', 'He rubs his dick against your pussy and doesn''t seem to care that your pussy is still dry. "Get ready, bitch,"')+' he says and pushes his cock eagerly inside.'
+	elseif wl_whore['scene_repeat'] = 1:
+		'He shows no signs of getting close as he fucks you as hard as in the beginning. "I could fuck you all day," he says.'
+	elseif wl_whore['scene_repeat'] = 2:
+		'"Your pussy feels amazing," he says and rams his dick inside you as hard as he can. His stamina is as impressive as is his assault relentless.'
+	end
+	
+	gs 'arousal', 'vaginal', 6, 'unknown', 'prostitution'
+	gs 'stat'
+
+	if (wl_whore['scene_repeat'] = 0 and rand(1,6) < 4) or (wl_whore['scene_repeat'] = 1 and rand(1,6) < 3):
+		wl_whore['scene_repeat'] += 1
+		act 'Continue': gt 'mod_wlife_highway_sex' , 'Vaginal'
+	elseif $wl_fetish['rimjob'] ! 'blocked' and wl_whore['client_creampie'] = 0 and (rand(1,100) + wl_whore['rim_pity_counter']) > 90:
+		act 'Continue': gs 'mod_wlife_highway_sex', 'rimjob_start'
+	else
+		act 'Continue': gs 'mod_wlife_highway_sex' , 'switch'
+	end
+end
+
+if $ARGS[0] = 'Anal':
+	*clr & cla	
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/anal/anal_'+rand(1,19)+'.mp4"></video></center>'
+	
+	if wl_whore['scene_repeat'] = 0:
+		if wl_whore['blowjob_first'] = 0: 'Once you both are alone you quickly take of your clothes and present your pussy to him. At the sight of your pussy he wastes no time unzipping his pants to reveal his already hard cock.'
+		if $wl_client_condom = 'Yes' and wl_whore['condom'] = 0:
+			gs 'mod_wlife_functions', 'remove_condom'
+			'You take your condom and put it on his <<dick>>cm dick.'
+		end
+		gs 'arousal', 'auto_lube', 'anal'
+		'You spread your legs and help guide his member to the right place. He pushes his member against your asshole and without giving you a word of warning forces his dick inside.'
+	elseif wl_whore['scene_repeat'] = 1:
+		'Again and again he pushes his cock inside your ass, forcing it deeper and deeper with every thrust.'
+	elseif wl_whore['scene_repeat'] = 2:
+		'He isn''t stopping, you realize while he fucks you with an amazing stamina.'
+		'"Fuck, you have a great ass," he groans as he thrusts balls-deep inside you.'
+		gs 'pain', 1, 'asshole', 'stretch'
+		gs 'pain', 1, 'asshole', 'tear'
+	end
+	
+	gs 'arousal', 'anal', 6, 'unknown', 'prostitution'
+	gs 'stat'
+
+	if (wl_whore['scene_repeat'] = 0 and rand(1,6) < 4) or (wl_whore['scene_repeat'] = 1 and rand(1,6) < 3):
+		wl_whore['scene_repeat'] += 1
+		act 'Continue': gt 'mod_wlife_highway_sex' , 'Anal'
+	elseif $wl_fetish['rimjob'] ! 'blocked' and wl_whore['client_creampie'] = 0 and (rand(1,100) + wl_whore['rim_pity_counter']) > 90:
+		act 'Continue': gs 'mod_wlife_highway_sex', 'rimjob_start'
+	else
+		act 'Continue': gs 'mod_wlife_highway_sex' , 'switch'
+	end
+end
+
+if $ARGS[0] = 'rimjob_start':
+	cla & *nl
+	minut += 10
+	wl_whore['rim_pity_counter'] = 0
+	wl_whore['payment'] = 500 + hotcat * 5 + iif(wl_whore['pirsA']= pirsA and pirsA < 10000, pirsA * 15, 0)
+	gs 'stat'
+	iif(rand(0,1) = 0 or $wl_fetish['rimjob'] = '', 'Even after ten more minutes he still doesn''t seem to be close to shooting his load. "Something wrong?" you ask. He shakes his head. "Not really, but this will take a while." You let out an involuntary sigh. "There is something that will get me off quickly if you''re willing to do it." You send him a questioning look. "Lick my ass, that always get''s me off quickly,"', '"This isn''t working," he says after ten more minutes. "Could you maybe eat my ass? It''s a sure way for me to cum,"')+' he continues and quickly adds. "I pay extra, of course. How about <<wl_whore[''payment'']>> <b>₽</b>? I would really love to feel '+iif(pirsA > 0 and pirsA < 10000, 'that piercing', 'your tongue')+' on my asshole."'
+	
+	if $wl_fetish['rimjob'] = '':
+		'<br>He wants you to do what? Licking his ass? You think shocked and look down to his ass. You knew that anal would be a possibility, but this? You don''t even have time to think about it more, before he asks, "and?" He clearly wants you to quickly make a decision.'
+		
+		'<br><font color="red">Content Warning: Ass-licking/Rimjob</font>'
+		
+		gs 'mod_wlife_highway_sex', 'rimjob_decision'
+		
+		act '<font color="red">Block this type of content</font>': 
+			cla & *nl
+			minut += 2
+			wl_whore['payment'] = 0
+			wl_whore['client_rimjob'] = 0	
+			$wl_fetish['rimjob'] = 'blocked'
+			gs 'stat'
+			'You shake your head, you will never fall so low to do something like this. "No, I don''t do something like this." He looks disappointed, but doesn''t say anything, before you resume what you did before this short intermezzo.' 
+			
+			act 'Continue': gt 'mod_wlife_highway_sex', 'switch'
+		end
+	else
+		gs 'mod_wlife_highway_sex', 'rimjob_decision'
+	end
+end
+
+if $ARGS[0] = 'rimjob_decision':
+	gs 'mod_wlife_functions', 'will_rimming', 'resist', iif($wl_fetish['rimjob'] = 'yes', 'hard', 'easy')
+	if wl_cheat['will_cost'] = 1: will_cost = 0
+	if will_cost <= pcs_willpwr:	
+		act 'Decline (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 1
+			wl_whore['payment'] = 0
+			wl_whore['client_rimjob'] = 0
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'"Sorry, I don''t do something like this," you '+iif($wl_fetish['rimjob'] ! 'undecided', 'lie', 'say')+iif(rand(0,1), ', but he doesn''t seem to care. "No problem, most girls don''t do it," he tells you', '. He looks disappointed, but doesn''t say anything')+', before you resume what you did before this short intermezzo.' 
+			
+			act 'Continue': minut += 10 & gt 'mod_wlife_highway_sex', 'switch'
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Accept':
+		cla & *nl
+		minut += 1
+		wl_whore['client_rimjob'] = 1
+		gs 'stat'
+		'"No problem, honey," you reply with a smile on your lips, "but money first." He eagerly pulls out his wallet and hands you the agreed upon amount of <<wl_whore[''payment'']>> <b>₽</b>.'
+		
+		wl_whore['earnings_day'] += wl_whore['payment']	
+		if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += wl_whore['payment']
+		wl_whore['payment'] = 0
+		
+		act 'Dig in': gt 'mod_wlife_highway_sex', 'switch'
+	end
+end
+
+if $ARGS[0] = 'switch':
+	if wl_whore['client_rimjob'] = 1:
+		gt 'mod_wlife_highway_sex', 'cumshot', 'rimjob'
+	elseif $wl_fetish['rimjob'] ! 'blocked':
+		wl_whore['rim_pity_counter'] += 2
+	end
+	
+	if $wl_whore['client_scene'] = 'Blowjob':
+		if $wl_client_cumshot = 'Inside' or wl_whore['client_creampie'] = 1:
+			gt 'mod_wlife_highway_sex', 'cumshot', 'mouth'
+		else
+			gt 'mod_wlife_highway_sex', 'cumshot', 'facial'
+		end
+	elseif $wl_whore['client_scene'] = 'Vaginal':
+		if $wl_client_cumshot = 'Inside' or wl_whore['client_creampie'] = 1:
+			gt 'mod_wlife_highway_sex', 'cumshot', 'vaginal_creampie'
+		elseif $wl_client_cumshot = 'Outside or Condom' and wl_whore['client_creampie'] = 0:
+			wl_cumshot_rand = rand(0,4)
+			if wl_cumshot_rand < 3:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'stomach'
+			elseif wl_cumshot_rand = 3:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'butt'	
+			else
+				gt 'mod_wlife_highway_sex', 'cumshot', 'facial'
+			end
+		elseif $wl_client_cumshot = 'Outside' and wl_whore['client_creampie'] = 0:
+			cla & *nl
+			'You can feel it, he is getting close.'
+			act 'Trust him to pull out': 
+				wl_cumshot_rand = rand(1,100)
+				if wl_cumshot_rand <= 10:
+					wl_whore['accident'] = 1
+					gt 'mod_wlife_highway_sex', 'cumshot', 'vaginal_creampie'
+				elseif wl_cumshot_rand > 10 and wl_cumshot_rand <= 60:
+					gt 'mod_wlife_highway_sex', 'cumshot', 'stomach'
+				elseif wl_cumshot_rand > 60 and wl_cumshot_rand <= 90:
+					gt 'mod_wlife_highway_sex', 'cumshot', 'butt'
+				else
+					gt 'mod_wlife_highway_sex', 'cumshot', 'facial'
+				end
+			end
+			
+			act 'Remind him to pull out':
+				wl_cumshot_rand = rand(1,100)
+				if wl_cumshot_rand <= 5:
+					wl_whore['accident'] = 1
+					gt 'mod_wlife_highway_sex', 'cumshot', 'vaginal_creampie'
+				elseif wl_cumshot_rand > 5 and wl_cumshot_rand <= 60:
+					gt 'mod_wlife_highway_sex', 'cumshot', 'stomach'
+				elseif wl_cumshot_rand > 60 and wl_cumshot_rand <= 90:
+					gt 'mod_wlife_highway_sex', 'cumshot', 'butt'
+				else
+					gt 'mod_wlife_highway_sex', 'cumshot', 'facial'
+				end
+			end
+		end
+	elseif $wl_whore['client_scene'] = 'Anal':
+		if $wl_client_cumshot = 'Inside' or wl_whore['client_creampie'] = 1:
+			gt 'mod_wlife_highway_sex', 'cumshot', 'anal_creampie'
+		elseif $wl_client_cumshot = 'Outside or Condom' and wl_whore['client_creampie'] = 0:
+			wl_cumshot_rand = rand(0,5)
+			if wl_cumshot_rand < 2:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'stomach'
+			elseif wl_cumshot_rand >= 2 or wl_cumshot_rand < 5:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'butt'
+			elseif wl_cumshot_rand = 5:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'facial'
+			end
+		elseif $wl_client_cumshot = 'Outside' and wl_whore['client_creampie'] = 0:
+			wl_cumshot_rand = rand(1,100)
+			if wl_cumshot_rand <= 10:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'anal_creampie'
+			elseif wl_cumshot_rand > 10 and wl_cumshot_rand <= 50:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'butt'
+			elseif wl_cumshot_rand > 50 and wl_cumshot_rand <= 90:
+				gt 'mod_wlife_highway_sex', 'cumshot', 'stomach'
+			else
+				gt 'mod_wlife_highway_sex', 'cumshot', 'facial'
+			end	
+		end
+	end
+end
+
+if $ARGS[0] = 'cumshot':
+	*clr & cla	
+	if wl_whore['condom'] = 0 and $wl_whore['client_scene'] = 'Blowjob':
+		gs 'mod_wlife_functions', 'std_check_oral'
+	else
+		gs 'mod_wlife_functions', 'std_check'	
+	end
+
+	if $ARGS[1] = 'rimjob':
+		gs 'mod_wlife_functions', 'std_check_oral', 'low'
+		gt 'mod_wlife_highway_sex', 'rimjob_end'
+	elseif $ARGS[1] = 'mouth':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/mouth_'+rand(1,6)+'.mp4"></video></center>'
+		'"'+iif(rand(1,10) < 4, 'Bitch, ', '')+'I''m cumming." He says'+iif(wl_whore['scene_repeat'] = 0, '', ' finally')+iif($wl_client_condom = 'Yes', ', pulls the condom off ', ' ')+'and pushes his cock back inside your mouth and shoots his load down your throat.'
+		if $wl_client_cumshot ! 'Inside': 
+			'"That wasn''t what we agreed on," you say angrily after he pulls his dick out of your mouth.'
+			'"Shut up, as if you don''t do that every day. Do you really think I pull out and ruin the seat?" He replies annoyed. "Now get dressed, I have other things to do."'
+		end		
+		gs 'cum_call', 'mouth', 'a client'
+		swallow += 1
+	elseif $ARGS[1] = 'facial':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/face_'+rand(1,7)+'.mp4"></video></center>'
+		'"'+iif(rand(1,10) < 4, 'Bitch, ', '')+'I''m cumming." The man says'+iif(wl_whore['scene_repeat'] = 0, '', ' finally')+iif($wl_client_condom = 'Yes', ', pulls off the condom ', ' ')+'and shoots his cum all over your face.'
+		gs 'cum_call', 'face', 'a client'
+		facial += 1
+		if rand(1,100) > 95 and pcs_makeup > 1: pcs_makeup = 0
+	elseif $ARGS[1] = 'vaginal_creampie':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/pussy_'+rand(1,7)+'.mp4"></video></center>'
+		if wl_whore['accident'] = 1 and wl_whore['client_creampie'] = 0 and $wl_client_cumshot ! 'Inside':
+			wl_whore['payment'] += 300
+			'He speeds up for a moment and then shoots his cum deep inside you.'
+			'You look at him, but before you can say anything he pulls out and looks at the mess he made. "Fuck, I''m really sorry. I''ll pay extra."'
+			if wl_whore['reminded'] = 0: 
+				'You sigh, but don''t say anything. There is nothing you can do about it anyway.'
+			else
+				'"Seriously? I reminded you to pull out," you shout.' 
+				'He actually looks really sorry about it. "Come on, please don''t be mad, you are an awesome fuck and I couldn''t stop myself. Really, I''m sorry." He apologies again.'
+				'"Fine", you sigh. "But pay up."'
+			end			
+		elseif wl_whore['client_creampie'] = 1 and $wl_client_cumshot ! 'Inside':
+			'He'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+' stops and pulls out, but only for a little while. He pushes himself back in, but something feels different. He cums before you can say anything, cock still buried deep in your pussy and without a condom. He groans and shoots his cum deep inside you. "Take it, bitch!" He screams.'
+			'"What''s wrong with you?" You scream while he slips out of your pussy. "You stupid son of a..."'
+			iif($wl_brand['text_pubic'] = 'cumslut', '"Stop complaining cumslut," he taunts you with your own tattoo. "We both know you want it."', '"Hahaha... what''s the problem ''mom''?" He laughs and get''s dressed.')
+		else
+			'He'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+'moans and you feel the warmth of his cum filling your pussy. With one last moan, he shoots the rest of his load inside you. "Fuck, that was good'+iif(rand(1,10) < 4, ' whore', '')+'," he sighs while zipping up.'
+		end
+		
+		gs 'cum_call', 'vaginal', 'a client'
+	elseif $ARGS[1] = 'stomach':			
+		if $wl_whore['client_scene'] = 'Anal':
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/abelly_'+rand(1,10)+'.mp4"></video></center>'
+		else
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/pbelly_'+rand(1,10)+'.mp4"></video></center>'
+		end
+	
+		iif($wl_client_condom = 'Yes', 'The man'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+'takes off the condom, ', 'He'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+'')+'groans and shoots his cum all over your labia and belly. Satisfied, he starts to clean himself up, going as far as to crudely wipe away the last dribbles of cum leaking from his cock onto your stomach. "That was fun'+iif(rand(1,10) < 4, ', slut."', '."')+' He says.'
+		
+		gs 'cum_call', 'stomach', 'a client'
+		gs 'cum_call', 'labia', 'a client'	
+	elseif $ARGS[1] = 'butt':
+		if $wl_whore['client_scene'] = 'Anal':
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/abutt_'+rand(1,4)+'.mp4"></video></center>'
+		else
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/pbutt_'+rand(1,4)+'.mp4"></video></center>'
+		end
+		
+		iif($wl_client_condom = 'Yes', 'The man'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+'takes off the condom, ', 'He'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+'')+'groans and shoots his cum all over your butt. Satisfied, he starts to clean himself up, going as far as to crudely wipe away the last dribbles of cum leaking from his cock onto your butt. "That was fun'+iif(rand(1,10) < 4, ', slut."', '."')+' He says.'
+		
+		gs 'cum_call', 'butt', 'a client'
+	elseif $ARGS[1] = 'anal_creampie':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/cum/anal_'+rand(1,2)+'.mp4"></video></center>'
+		if wl_whore['client_creampie'] = 1 and $wl_client_cumshot ! 'Inside':
+			'For several more minutes he pounds your ass until he finally stops'+iif($wl_client_condom = 'Yes', 'and pulls out for a second before he pushes back inside.', ', cock still buried deep in your ass.')+' He groans and you can feel spurts of warm cum fill you.'
+			'"What''s wrong with you?" You scream while he slips out of your abused hole.'
+			iif($wl_brand['text_pubic'] = 'cumslut', '"Stop complaining cumslut," he taunts you with your own tattoo. "We both know you want it."', '"Shut up! It''s not like I could knock you up, slut." He gives your ass a hard slap before zipping himself up.')
+		else
+			'He'+iif(wl_whore['scene_repeat'] = 0, ' ', ' finally ')+'moans and you feel the warmth of his cum filling your ass. With one last moan, he shoots the rest of his load deep inside your bowls. "God, yes take it'+iif(rand(1,10) < 5, ' whore', ' bitch')+'," he sighs.'
+			'"That was great, thanks for that," he adds.'
+			if $wl_client_cumshot ! 'Inside':
+				wl_whore['payment'] += 100
+				'"Did you just cum inside me?" You ask him. "You didn''t pay for that!"'
+				'He looks puzzled. "Really? I didn''t?" He asks and when you shake your head he looks sorry. "Sorry, I totally forgot."'
+				'"Fine", you sigh. "But pay up."'
+			end
+		end
+		gs 'cum_call', 'anus', 'a client'
+	end
+		
+	if wl_whore['payment'] > 0:
+		*nl
+		'He pulls out his wallet and hands you an additional <<wl_whore[''payment'']>> <b>₽</b>.'
+
+		wl_whore['earnings_day'] += wl_whore['payment']	
+		if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += wl_whore['payment']
+		wl_whore['payment'] = 0
+	end
+	
+	if $wl_whore['client_scene'] = 'Blowjob':
+		gs 'arousal', 'bj', 2, 'unknown', 'prostitution'
+	elseif $wl_whore['client_scene'] = 'Vaginal':
+		gs 'arousal', 'vaginal', 2, 'unknown', 'prostitution'
+	elseif $wl_whore['client_scene'] = 'Anal':
+		gs 'arousal', 'anal', 2, 'unknown', 'prostitution'
+	end
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	act 'Get dressed': gt 'mod_wlife_highway_sex', 'end'
+end
+
+if $ARGS[0] = 'rimjob_end':
+	*clr & cla
+	wl_time = rand(3,4)
+	wl_rand = rand(0,5)
+	gs 'fame', 'city', 'prostitute', 1
+	if $wl_fetish['rimjob'] = 'yes':
+		wl_arousal = wl_time * -3
+	else
+		wl_arousal = wl_time * -1
+	end
+	minut += wl_time * 2
+	
+	act 'Get dressed': gt 'mod_wlife_highway_sex', 'end'
+	
+	if $wl_fetish['rimjob'] = '':
+		$wl_fetish['rimjob'] = 'undecided'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s5.mp4"></video></center>'
+		'He lays down on the backseat and lift his legs to present his ass to you. What have you agreed to? You ask yourself as your eyes wander down to his exposed asshole. He shaved the hair around it just like he did his balls and most of his crotch. At least you won''t have a ton of hair in your mouth. "Don''t worry, I showered before coming here," he tries to reassure you. "I always hope to find a girl that will do it. So I come prepared."'
+		'You continue to question your decision as you slowly move your head towards his ass. When you''re only an inch away you stick out your tongue and flinch the second it tip touches his puckered asshole. You quickly retreat back an inch, but it was unpleasant. A bit weird, but it didn''t taste horrible as you may have feared. "Please," the man pleads and that is the push you need to get back into it. You touch his asshole again with your tongue and start to lick the puckered flesh and the area around it. It tastes a bit bitter, but not bad and you quickly get used to it as you move your tongue around and over his asshole. "Spit on it," he orders you as he strokes his cock furiously. You do as he commands and push a bit with your tongue against his now wet opening. That takes him over the edge and he shoots his cum all over his hand an stomach while his asshole twitches slightly against your tongue. "Thanks," he says sounding completely spend but satisfied.'		
+	else
+		if wl_whore['rim_counter'] = 0 or (wl_whore['rim_counter'] = 6 and wl_rand = 0):
+			wl_whore['earnings_day'] += 200	
+			if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += 200
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s0_'+rand(0,2)+'.mp4"></video></center>'
+			'He kneels on the backseat and spreads his ass-cheeks with his hands to give you better access to his asshole.'+iif($wl_fetish['rimjob'] = 'yes', ' Not even h', ' H')+'esitating for a second you push your mouth in his ass-crack and coat the sensitive area in your saliva. "Fuck, yes," the man shouts. "This is so fucking hot," he continues, when you dance around his hole with your tongue, before sucking on it once. After a minute of constant licking he urges you to give him a handjob and stimulated by your tongue and hands he shoots his cum on the backseat within a minute.'
+			*nl
+			'"Thanks, that was the best orgasm I had in a long time," he says sounding satisfied and pulls out another 200 <b>₽</b>. "Here take this for a job well done."'
+		elseif wl_whore['rim_counter'] = 1 or (wl_whore['rim_counter'] = 6 and wl_rand = 1):	
+			gs 'cum_call', 'hands', 'a client'
+			if wl_thought['rimjob'] = 0: wl_thought['rimjob'] = 1
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s1.mp4"></video></center>'
+			'In contrast to most guys he''s completely shaved. Not a single hair is left on his ass, balls and crotch which makes the whole experience a bit more enjoyable for you.'+iif(wl_thought['rimjob'] < 2, ' You give yourself a mental shake. It isn''t as if you like giving guys a rimjob... or do you? You ask yourself, but immediately push the thought aside and concentrate on the task in front of you. ', ' ')+'He also tastes like nothing, not even sweat as if he stepped right out of the shower. "That''s great, keep doing that," he says with a blissful smile on his face, when you flick your tongue through the puckered meat of his hole.'
+			*nl
+			'You continue to tease his ass with your '+iif(pirsA > 0 and pirsA < 10000, 'piercing', 'tongue')+' for the next few minutes and stroking his cock with your hands. "Damn, that''s...," he stops talking as cum erupts from the tip of his cock coating your hand in it.'		
+		elseif wl_whore['rim_counter'] = 2 or (wl_whore['rim_counter'] = 6 and wl_rand = 2):
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s2.mp4"></video></center>'
+			'You push your face into his shaved ass-crack and dig in. "That feels nice," he says with a grin and strokes his cock as your tongue moves up and down his ass-crack. "Sounds even nicer," he adds, when the air is filled with the slobbery sounds your mouth and tongue make on his ass.'
+			'"Yeah that''s it, lick my asshole whore, suck on it," he says more to himself to turn him on than to you. Still, you do what he says and enclose your mouth around his hole and suck on it a few times. "Shit, I''m coming," he hisses and erupts all over his hands.'			
+		elseif wl_whore['rim_counter'] = 3 or (wl_whore['rim_counter'] = 6 and wl_rand = 3):
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s3_'+rand(0,1)+'.mp4"></video></center>'
+			'"I...," his face turns red. "I know it''s probably not something you enjoy," he says, "but could you at least fake it?"'
+			'"I don''t have to fake it," you '+iif($wl_fetish['rimjob'] = 'yes', 'tell him the truth', 'lie to make him feel better')+'. "Really?" he asks surprised and happy at the same time. You nod and push him down on the backseat. "Of course, or I wouldn''t do it," you tell him and wink at him, before pushing your face into his ass and run your tongue through his ass-crack and over his asshole without breaking eye contact with him. "Yummy," you grin.'
+			*nl
+			'You give it all you got to give him a good time and make him believe that there is nothing more enjoyable for you than to have your face pushed against a guys ass. The whole time his gaze is fixed on you until he cums.'
+		elseif wl_whore['rim_counter'] = 4 or (wl_whore['rim_counter'] = 6 and wl_rand = 4):
+			cla
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s4.mp4"></video></center>'
+			'"More pressure," your client demands as your tongue moves up and down between his ass-cheeks. "Come on, really push against it," he adds and you shift your focus to his asshole. Your tongue pushes against it and you apply more force than you normally would. "Yeah, that''s it. Your tongue feels great," he moans as his eyes flutter shut and his right hand grabs his cock.'			
+			'For a minute or two nobody says a word and the only things you can hear are the cars rushing by on the nearby highway and the perverted slobbery sounds your mouth makes in his ass-crack. "A finger, push a finger inside," he tells you as he quickens his strokes. "Now!"'
+			'You do it. Your right index finger moves past his saliva covered sphincter into his ass. "Wiggle it around," he yells and your lips curl upwards into a small grin, when you move your finger up and down and his cock shoots several large spurts on his crotch, stomach and even hit his throat.'
+			if $wl_fetish['atm'] = 'blocked':
+				act 'Get dressed': gt 'mod_wlife_highway_sex', 'end'
+			else
+				'"Put it into your mouth," the man suddenly says, when he opens his eyes. '+iif($wl_fetish['atm'] = '', 'You move your mouth towards his cock to lick it clean, believing that''s what he meant, but he shakes his head. "No, your finger," he explains more clearly. Your finger? What? Is he crazy? You lift it', 'You lift your finger')+' in front of your eyes. It looks clean. "You want me to put my finger into my mouth?" He nods eagerly. "Yeah, lick it clean'+iif($wl_fetish['atm'] = 'yes', '. ', '," he continues and when he sees the hesitation on your face he adds, "')+'I''ll give you 1000 <b>₽</b>, when you do it."'
+				
+				gs 'mod_wlife_functions', 'will_atm', 'resist', iif($wl_fetish['atm'] = 'yes', 'hard', 'easy')
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost < pcs_willpwr:
+					act 'Don''t do it (<<will_cost>> Willpower)':
+						cla & *nl
+						minut += 1
+						gs 'willpower', 'pay', 'resist'
+						gs 'stat'
+						'You shake your head and lower your finger. "Sorry, that''s not something I do," you '+iif(wl_thought['atm'] > 0, 'lie.', 'say.')
+						
+						act 'Get dressed': gt 'mod_wlife_highway_sex', 'end'
+					end
+				else
+					act 'Don''t do it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				act 'Lick your finger':
+					*clr & cla
+					minut += 2
+					wl_whore['earnings_day'] += 1000	
+					if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += 1000
+					if wl_thought['atm'] = 0: wl_thought['atm'] = 1
+					wl_stats['atm'] += 1
+					gs 'mod_wlife_functions', 'std_check_oral', 'low'
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/normal/sex/rimjob/finger.jpg"></center>'
+					'"1,000?" you ask making sure you heard him correctly. "Yeah, a thousand rubles. You only have to put that finger into your mouth," he encourages you. You '+iif($wl_fetish['atm'] = 'yes', 'shrug', 'sigh')+' and suck your finger into your mouth. His eyes grow wide, when you swirl your tongue around it, before pulling your finger lasciviously out of your mouth. "Damn, you''re nasty," he says chuckling and hands you the promised 1,000 <b>₽</b>.'
+					
+					act 'Get dressed': gt 'mod_wlife_highway_sex', 'end'
+				end
+				
+				if $wl_fetish['atm'] = '': 
+					$wl_fetish['atm'] = 'undecided'
+					'<br><font color="red">Content Warning: Ass-to-Mouth</font>'
+					act '<font color="red">Block this type of content</font>': 
+						cla & *nl
+						minut += 1
+						$wl_fetish['atm'] = 'blocked'
+						gs 'stat'
+						'You shake your head and lower your finger. "Sorry, that''s not something I do," you say.'
+						
+						act 'Get dressed': gt 'mod_wlife_highway_sex', 'end'
+					end
+				end
+			end
+		elseif wl_whore['rim_counter'] = 5 or (wl_whore['rim_counter'] = 6 and wl_rand = 5):
+			if wl_thought['trash'] = 0: wl_thought['trash'] = 1
+			facial += 1
+			gs 'cum_call', 'face', 'a client'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob_s5.mp4"></video></center>'
+			'"Just flick your tongue over it," the men tells you as he'+iif(wl_whore['condom'] = 1, ' pulls the condom off and ', ' ')+'takes his cock into his hand. You do as he wants '+iif($wl_fetish['rimjob'] = 'yes', 'without hesitation', 'after hesitating for a few seconds')+' and flick the tip of your tongue over the puckered flesh of his hole. "Look me in the eye bitch," he orders you and instinctively you look up into his '+iif(rand(0,1) = 1, 'brown', 'blue')+' eyes. There is no respect or appreciation in them for what you''re doing for him. You realize that it isn''t about him wanting to get a rimjob, but about you doing such a degrading act for money. "Yeah, taste my ass," he says coldly while he continues to furiously stroke his cock. It turns him on so much to degrade you that it won''t take long for him to cum. "That''s what you''re good for, licking a mens asshole... you fucking trash," he nearly screams the last words as suddenly moves backwards and upright to point his cock directly at you. Your eyes close, the only thing you have time for, before his cum lands all over your face.' 
+			*nl
+			if wl_whore['rim_unfriendly'] = 0 or rand(0,2) = 2:
+				wl_whore['earnings_day'] += 500	
+				if wl_status['main'] = -1 or wl_georgiy['payment_method'] = 1: money += 500
+				wl_whore['rim_unfriendly'] = 1
+				'"I''m sorry," he apologizes, his demeanor has completely changed, and pulls out 500 <b>₽</b>. "I can''t stop myself from saying stuff like that." he explains. "It turns me on way too much."'
+				'"Don''t worry about it," you answer taking the money from his hand'+iif(wl_thought['trash'] < 2, ' and try not to think about the truth behind his words.', '.')
+			else
+				wl_whore['client_asshole'] = 1
+			end
+		end
+		
+		if wl_whore['rim_counter'] < 6: wl_whore['rim_counter'] += 1
+	end
+		
+	gs 'arousal', 'rimming_give', wl_arousal, 'unknown', 'prostitution'
+	gs 'arousal', 'end'
+	gs 'stat'
+end
+
+if $ARGS[0] = 'end':
+	*clr & cla
+	minut += 5
+	wl_whore['customer_day'] += 1
+	gs 'fame', 'city', 'prostitute', 1
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/leave_car.mp4"></video></center>'
+	'"That was great", he tells you with a satisfied smile on his face. "Can we meet again sometime?"'
+	
+	if (wl_whore['client_creampie'] = 1 and $wl_client_cumshot ! 'Inside') or wl_whore['client_asshole'] = 1:
+		'You don''t look at him and don''t answer his question. You just get out of the car and...'
+	else
+		'"Sure, why not, sweetie. I work here several times a week except on Sunday," you say.'
+		'"What''s your name?" He calls after you.'
+		'"<<$wl_names[''street'']>>," you say before you ...'
+	end
+			
+	act 'Leave':
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/leave_walk.mp4"></video></center>'
+		'You had <<wl_whore[''customer_day'']>> '+iif(wl_whore['customer_day'] > 1, 'clients', 'client')+' and earned <<wl_whore[''earnings_day'']>> <b>₽</b> today.'
+					
+		wl_whore['reminded'] = 0
+		wl_whore['accident'] = 0
+		wl_whore['condom'] = 0
+		wl_whore['blowjob_first'] = 0
+		wl_whore['scene_repeat'] = 0
+		wl_whore['client_rimjob'] = 0
+		wl_whore['client_asshole'] = 0
+		killvar 'wl_cumshot_rand'
+		killvar 'wl_time'
+		killvar 'wl_rand'
+		killvar 'wl_arousal'
+		
+		act 'Continue': gt 'mod_wlife_highway', 'work'
+	end
+end
+
+!!------ Regular Client ------
+
+if $ARGS[0] = 'regular_start':
+	*clr & cla
+	menu_off = 1
+	cumnostd = 1
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/start.mp4"></video></center>'
+	'You rub your hand over the hard bulge in his pants and smile seductively at him. "Let''s take care of this."'
+	'He groans and watches you opening his pants. "Yes, <<$wl_names[''street'']>>. I have waited the whole week for this," he tells you while you take his semi-hard cock and rub it slowly with your hand.'
+	*nl
+	if $wl_client_condom = 'Yes':
+		gs 'mod_wlife_functions', 'remove_condom'
+		'You take your condom and put it on his <<dick>>cm dick.'
+		*nl
+	end
+	'You bow your head down and tenderly take the head of his dick in your mouth.'
+	'"Oh fuck," he says when you circle your tongue around the head.'
+	
+	gs 'arousal', 'bj', 2, 'unknown', 'prostitution'
+	gs 'arousal', 'hj', 2, 'unknown', 'prostitution'
+	
+	wl_scene_rand = rand(1,10)
+	
+	act 'Continue':
+		if wl_scene_rand < 8:
+			if wl_scene_rand < 4: wl_scene_clit = 1
+			gt 'mod_wlife_highway_sex', 'regular_start_bj'
+		else
+			gt 'mod_wlife_highway_sex', 'regular_start_lick'
+		end
+	end
+end
+
+if $ARGS[0] = 'regular_start_bj':
+	*clr & cla
+	if wl_scene_clit = 1:
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/start_blowjob_clit.mp4"></video></center>'	
+		gs 'arousal', 'foreplay', -4, 'unknown', 'prostitution'
+	else
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/start_blowjob'+rand(0,1)+'.mp4"></video></center>'
+	end
+	'"That''s great, keep doing it like this," he tells you and you circle your tongue around the head of his cock again. "Yeah, like this," he responds and you can feel his cock growing harder in your mouth.'
+	iif(wl_scene_clit = 1, 'His hand moves to your pussy and carefully rubs your clit while', 'For the next two minutes')+' you keep bobbing your head up and down on his shaft.'
+	
+	gs 'arousal', 'bj', 4, 'unknown', 'prostitution'
+	gs 'stat'
+	
+	wl_scene_rand = rand(1,10)
+		
+	act 'Continue':
+		if wl_scene_rand < 4:
+			gt 'mod_wlife_highway_sex', 'regular_start_lick'
+		elseif wl_scene_rand >= 4 and $wl_whore['client_scene'] = 'Vaginal':
+			gt 'mod_wlife_highway_sex', 'regular_vaginal'
+		elseif wl_scene_rand >= 4 and $wl_whore['client_scene'] = 'Anal':
+			gt 'mod_wlife_highway_sex', 'regular_anal'
+		end
+	end
+end
+
+if $ARGS[0] = 'regular_start_lick':
+	*clr & cla
+	wl_scene_lick = 1
+	wl_pic_rand = rand(0,1)
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/start_lick'+'<<wl_pick_rand>>'+'.mp4"></video></center>'
+	'He hinges down the passenger seat. "Lay down, I want to taste you," he tells you. You eagerly obey and spread your legs.'
+	'"Beautiful," he comments on your'+iif(pcs_horny < 40, ' dry ', ' wet ')+'pussy.'
+	*nl
+	if wl_pic_rand = 0:
+		'You grab on of your breasts and knead it. "Please," you moan. He smiles, but takes a moment to take in the view of you playing with yourself, then he moves his head between your legs and sucks your clit into his mouth.'
+		gs 'arousal', 'breasts', -4, 'unknown', 'prostitution'
+	else
+		'He takes too much time, so you grab his head and move him between your legs. "Come on," you say and enthusiastically sucks your clit into his mouth.'
+	end
+	*nl
+	'"Yes," you moan and for the next few minutes you don''t think about anything else than the feeling of his tongue on your pussy.' 
+	
+	gs 'arousal', 'cuni', 4, 'unknown', 'prostitution'
+	gs 'stat'
+		
+	act 'Continue':
+		if $wl_whore['client_scene'] = 'Vaginal':
+			gt 'mod_wlife_highway_sex', 'regular_vaginal'
+		elseif $wl_whore['client_scene'] = 'Anal':
+			gt 'mod_wlife_highway_sex', 'regular_anal'
+		end
+	end
+end
+
+if $ARGS[0] = 'regular_vaginal':
+	*clr & cla
+	if wl_whore['scene_repeat'] = 0:
+		if wl_scene_lick = 0:
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/main_pussy_clit.mp4"></video></center>'
+			'He hinges down the passenger seat. "Lay down," he tells you and lays done next to you. You spread your legs and he holds up your leg while you guide his cock to your entrance. Starting slow he speeds up after a few thrusts and fucks you in earnest after a minute.'  
+			*nl
+			'You''re just laying there and try to enjoy the feeling as he fucks you and plays with your clit the entire time.'
+			gs 'arousal', 'foreplay', -6, 'unknown', 'prostitution'
+		elseif wl_scene_lick = 1:
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/main_pussy'+rand(0,2)+'.mp4"></video></center>'
+			gs 'arousal', 'auto_lube', 'vaginal'
+			'He moves out of his clothes and replaces his tongue with his dick. You spread your legs even further to give him easier access and he pushes inside.'
+			'Starting slow he speeds up after a few thrusts and fucks you in earnest after a minute.' 
+		end
+	elseif wl_whore['scene_repeat'] = 1:
+		wl_pic_rand = rand(3,5)
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/main_pussy<<wl_pic_rand>>.mp4"></video></center>'
+		if wl_pic_rand < 5:
+			'After a few minutes you switch positions. He puts the passenger seat back and moves to the back of the car and pulls you with him. You get on top of him and he continues pushing inside you.'
+		elseif wl_pic_rand = 5:
+			'"Get on your knees," he orders and helps you with it in the tight confounds of the car.'
+		end
+	elseif wl_whore['scene_repeat'] = 2:
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/main_pussy6.mp4"></video></center>'
+		iif(rand(1,10) < 4, 'You can''t remember that he ever showed such stamina, but today ', 'It''s always the same with him. His stamina shows no bounds and ')+' he can''t seem to get enough of you. It takes him several more minutes until he finally seems close to the finish line.'
+	end
+	
+	gs 'arousal', 'vaginal', 6, 'unknown', 'prostitution'
+	gs 'stat'
+
+	if (wl_whore['scene_repeat'] = 0 and rand(1,6) < 4) or (wl_whore['scene_repeat'] = 1 and rand(1,6) < 3):
+		wl_whore['scene_repeat'] += 1
+		act 'Continue': gt 'mod_wlife_highway_sex' , 'regular_vaginal'
+	else
+		act 'Continue': gs 'mod_wlife_highway_sex' , 'regular_switch'
+	end	
+end
+
+if $ARGS[0] = 'regular_anal':
+	*clr & cla	
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/main_anal'+rand(0,4)+'.mp4"></video></center>'
+	
+	if wl_whore['scene_repeat'] = 0:
+		'He moves onto the backseat of the car and lies down on it. "Get on top of me."'
+		gs 'arousal', 'auto_lube', 'anal'
+		'Hands, legs, arms and feet are in the way as you make your way to the back of the car.'
+		if rand(1,10) = 1:
+			'Suddenly you loose your footing and land with your whole weight on top of him.' 
+			'"Ow!" He shouts more surprised than hurt, but he shakes his head when you utter an apology. "Don''t worry it didn''t hurt."'
+			'He helps you to get in position and you grab his dick and position it at the entrance of your ass.'
+		else
+			'But you easily manage to get on top of him. You grab his dick and position it at the entrance of your ass.'
+		end
+		'You carefully lower yourself onto his cock and forcing him past your sphincter.'
+		'"Take a moment," he suggests'+iif(pcs_horny >= 60, ', but you shake your head and' , ' and you gladly take this opportunity to get used to his dick inside your body before you')+' start to fuck him.'
+	elseif wl_whore['scene_repeat'] = 1:
+		'You switch up your routine every minute or so. Sometimes you fuck him, sometimes he fucks you or you both try to coordinate your simultaneous movements. He is clearly annoying himself and tells you that frequently.'
+		*nl
+		wl_scene_rand = rand(1,10)
+		if wl_scene_rand < 5:
+			'"My wife never let me fuck her like this," he tells you clearly '+iif(wl_scene_rand < 3, 'annoyed by this. "I should have married a whore like you <<$wl_names[''street'']>>."', 'proud about his wife. "She is a good woman, not a whore like you <<$wl_names[''street'']>>."')
+		else
+			'"You''re a special one, you know that, right?" He asks you, but you are to busy '+iif(wl_scene_rand > 8, 'fucking him', 'getting fucked by him')+' to answer. "Most of those other bitches don''t do anal.'+iif(wl_scene_rand > 8, ' If you''re a whore, you''re a whore. They should learn their place in the world, just like you did."', '"') 
+		end
+	elseif wl_whore['scene_repeat'] = 2:
+		'He has stopped talking and is, just like you, only concentrating on the action. You can feel he is getting closer and closer as the minutes tick by.'
+	end
+	
+	gs 'arousal', 'anal', 6, 'unknown', 'prostitution'
+	gs 'stat'
+
+	if (wl_whore['scene_repeat'] = 0 and rand(1,6) < 4) or (wl_whore['scene_repeat'] = 1 and rand(1,6) < 3):
+		wl_whore['scene_repeat'] += 1
+		act 'Continue': gt 'mod_wlife_highway_sex' , 'regular_anal'
+	else
+		act 'Continue': gs 'mod_wlife_highway_sex' , 'regular_switch'
+	end
+end
+
+if $ARGS[0] = 'regular_switch':
+	if $wl_client_condom = 'Yes':
+		if $wl_whore['client_scene'] = 'Vaginal':
+			gt 'mod_wlife_highway_sex', 'regular_cumshot', 'vaginal_condom' 
+		elseif $wl_whore['client_scene'] = 'Anal':
+			gt 'mod_wlife_highway_sex', 'regular_cumshot', 'anal_condom' 
+		end
+	elseif $wl_client_condom = 'No':
+		if $wl_whore['client_scene'] = 'Vaginal':
+			if $wl_client_cumshot ! 'Inside': 
+				gt 'mod_wlife_highway_sex', 'regular_cumshot', 'mouth'
+			else
+				gt 'mod_wlife_highway_sex', 'regular_cumshot', 'vaginal_creampie'
+			end
+		elseif $wl_whore['client_scene'] = 'Anal':
+			if $wl_client_cumshot ! 'Inside': 
+				gt 'mod_wlife_highway_sex', 'regular_cumshot', 'mouth'
+			else
+				gt 'mod_wlife_highway_sex', 'regular_cumshot', 'anal_creampie'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'regular_cumshot':
+	*clr & cla
+				
+	if $ARGS[1] = 'mouth':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/end_mouth.mp4"></video></center>'
+		'He pulls out of your '+iif($wl_whore['client_scene'] = 'Anal', 'ass', 'pussy')+' and take his cock into your mouth. It won''t take much for him to cum.'+iif($wl_whore['client_scene'] = 'Anal', ' You try to ignore the taste of your own ass', ' You can taste your own pussy on his dick')+' as you tease his head with your tongue. That takes him over the edge and he shoots his cum inside your mouth.'
+		
+		gs 'arousal', 'bj', 2, 'unknown', 'prostitution'
+		gs 'cum_call', 'mouth', 'a regular client'
+		swallow += 1	
+	elseif $ARGS[1] = 'vaginal_condom' or $ARGS[1] = 'vaginal_creampie':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/end_pussy.mp4"></video></center>'
+		'You carefully massage his balls as he pushes into you. "I''m cumming," he groans and shoots his cum '+iif($ARGS[1] = 'vaginal_creampie', 'deep inside you.', 'inside the condom.')
+		
+		gs 'arousal', 'vaginal', 2, 'unknown', 'prostitution'
+		if $ARGS[1] = 'vaginal_creampie': gs 'cum_call', 'vaginal', 'a regular client'	
+	elseif $ARGS[1] = 'anal_condom' or $ARGS[1] = 'anal_creampie':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/end_anal.mp4"></video></center>'
+		'With one last push he shoves his cock into you and shoots his cum '+iif($ARGS[1] = 'anal_creampie', 'deep inside you.', 'inside the condom.')
+		
+		gs 'arousal', 'anal', 2, 'unknown', 'prostitution'
+		if $ARGS[1] = 'anal_creampie': gs 'cum_call', 'anus', 'a regular client'
+	end
+			
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	act 'Get dressed': gt 'mod_wlife_highway_sex', 'regular_end_0'
+	if pcs_horny >= 80: act 'Get yourself off': gt 'mod_wlife_highway_sex', 'regular_main_lick'	
+end
+
+if $ARGS[0] = 'regular_main_lick':
+	*clr & cla
+	minut += 3
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/sex/main_lick.mp4"></video></center>'
+	'You can feel you are close and you move your hand between your legs to get yourself off.'
+	'He watches you for a few seconds before he moves between your legs. "Here, let me help you," he says and a second later you can feel his tongue between your pussy lips.'
+	$orgasm_txt = 'Within a few minutes your legs are shaking and you closes your eyes as the powerful orgasm washes over you.'
+	$orgasm_or = 'custom'
+	gs 'arousal', 'cuni', -6, 'unknown'
+	gs 'arousal', 'end'
+	gs 'stat'
+	*nl
+	'"Thanks," you say exhausted but satisfied.'
+	
+	act 'Get dressed': gt 'mod_wlife_highway_sex', 'regular_end_0'
+end
+
+if $ARGS[0] = 'regular_end_0':	
+	if rand(1,10) < 4:
+		*clr & cla
+		minut += 10
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/end_p1.mp4"></video></center>'
+		'You chat with him for some time and he tells you a little bit about himself, his life and his problems. Listening, asking some questions and faking interest in their troubles has become an important part of your job, at least with your regulars. They come to you to reduce stress and that does sometimes mean more than fucking you.'
+		*nl
+		'He suddenly moves his head back to your tits and he plants several kisses on them. "What are you doing?" You laugh. "You can''t get enough of those? Do you?"'
+		'"No never, they are perfect," he grins and suddenly looks a bit more serious as he moves back. "<<$wl_names[''street'']>>, can I kiss you?"'
+		*nl
+		'You...'
+
+		gs 'willpower', 'kiss', 'resist', iif($wl_whore['kiss'] = 'yes', 'hard', 'easy')
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr:
+			act 'Say no (<<will_cost>> Willpower)':
+				*clr & cla
+				minut += 2
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/end_p3.mp4"></video></center>'
+				'"No, sorry sweetie, but I don''t kiss anybody while im working. It has nothing to do with you, it''s a rule I have," you '+iif($wl_whore['kiss'] = 'yes', 'lie', 'say')+' to avoid upsetting him.'
+				'He doesn''t look too happy about it. "Fine, I guess I can understand that."'
+				
+				if rand(1,10) > 7: wl_whore['customer_total'] -= 1
+				
+				act 'Get out of the car': gt 'mod_wlife_highway_sex', 'regular_end_1'
+			end
+		else
+			act 'Say no (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		act 'Kiss him':
+			*clr & cla
+			pcs_mood += 10
+			if $wl_whore['kiss'] ! 'yes': $wl_whore['kiss'] = 'yes'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/end_p2.mp4"></video></center>'
+			'... kiss him. It''s a strangely sweet moment in a car next to a gas station after he has solicited you for sex.'
+			'"Thanks <<$wl_names[''street'']>>," he says and he looks happy not sexually satisfied but truly happy.'
+			
+			gs 'arousal', 'kiss', 3, 'unknown'
+			gs 'arousal', 'end'
+			gs 'stat'
+			
+			if rand(1,10) < 5: 
+				cla & *nl
+				'"Here, take this," he says and tries to hand you another 100 <b>₽</b>.'
+				
+				gs 'willpower', 'prostitution', 'resist', 'easy'
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:
+					act 'Refuse (<<will_cost>> Willpower)':
+						cla & *nl
+						minut += 1
+						pcs_mood += 5
+						wl_whore['customer_total'] += 1
+						gs 'willpower', 'pay', 'resist'
+						gs 'stat'
+						'"Oh no, I can'' take that," you say a little bit offended. It feels wrong to get payed for a kiss.'
+						'"What? Why?" He asks surprised.'
+						'You smile. "I don''t want it, not for giving you a kiss."'
+						'He looks puzzled and sits there for a moment still holding the 100 <b>₽</b> in his hand. "Sorry, I misjudged you."'
+						'"It''s fine, I guess it comes with the territory," you say.'
+						'He takes back the money and you can see in his eyes that you have earned a little bit of respect with him. A rare sight in your profession.'			
+																
+						act 'Get out of the car': gt 'mod_wlife_highway_sex', 'regular_end_1'
+					end
+				else
+					act 'Refuse (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				
+				act 'Accept':
+					cla & *nl
+					minut += 1
+					pcs_mood -= 10
+					money += 100
+					'You take it and with that you change the kiss into a simple transaction.'+iif(wl_georgiy['payment_method'] = 0, ' You don''t put it with the money for Volya and keep it for yourself. You gave him something you aren''t required to give and you feel that this money only belongs to you.', '')
+					gs 'stat'
+					
+					if rand(1,10) = 10: wl_whore['customer_total'] -= 1
+					
+					act 'Get out of the car': gt 'mod_wlife_highway_sex', 'regular_end_1'
+				end
+			else
+				act 'Get out of the car': gt 'mod_wlife_highway_sex', 'regular_end_1'
+			end
+		end		
+	else
+		gt 'mod_wlife_highway_sex', 'regular_end_1'
+	end
+end
+
+if $ARGS[0] = 'regular_end_1':
+	*clr & cla
+	minut += 2
+	wl_whore['customer_day'] += 1
+	gs 'fame', 'city', 'prostitute', 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/regular/negotiation/end_p3.mp4"></video></center>'
+	'"Bye <<$wl_names[''street'']>>, I hope I''ll seeing you again," is the last thing he says to you as you step out of the car. You close the door behind you and step back onto the parking lot of the gas station.'+iif(hour < 23, ' Your shift still isn''t over.', '')
+		
+	killvar 'wl_scene_clit'
+	killvar 'wl_scene_lick'
+	killvar 'wl_scene_rand'
+	killvar 'wl_pic_rand'
+	wl_whore['condom'] = 0
+	wl_whore['scene_repeat'] = 0
+			
+	act 'Move away from the car': gt 'mod_wlife_highway', 'work'
+end
+
+--- mod_wlife_highway_sex ---------------------------------
+
+

+ 366 - 0
locations/mod_wlife_hotelroom.qsrc

@@ -0,0 +1,366 @@
+# mod_wlife_hotelroom
+
+CLOSE ALL
+if $ARGS[0] = 'room':
+	*clr & cla	
+	$location_type = 'private'
+	$metkaM = 'room'
+	$locM = 'mod_wlife_hotelroom'
+	$metka = 'room'
+	$loc = 'mod_wlife_hotelroom'
+	$prevloc = 'HotelRoom'
+	$menu_loc = 'mod_wlife_hotelroom'
+	$menu_arg = 'room'
+	menu_off = 0
+	
+	gs 'themes', 'indoors'
+	gs 'stat'
+		
+	'<center><b><font color = maroon>Your hotel room</font></b></center>'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/room.jpg"></center>'
+	'Your hotel room is not very large, but it has everything you need and is quite stylish. The large <a href="exec:gt ''bed2''">double bed</a> takes up most of the room. Your <a href="exec:gt ''budilnik'', ''start''">alarm clock</a> stands on the bedside table. A <a href="exec:gt ''mod_wlife_hotelroom'',''safe''">safe</a> is at the bottom of a modern <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> (where you can <a href="exec: quick_dress = 1 & gt ''wardrobe'', ''default''">choose outfits</a> and organize your clothing) stands near the entrance of the room.'
+	*nl
+	'Next to the wardrobe is a small <a href="exec:gt ''mod_wlife_hotelroom'', ''desk''">desk</a> and a huge <a href="exec:gt ''mirror'',''start''">mirror</a> mirror hangs in the small hallway. The door to the <a href="exec: minut += 1 & gt ''mod_wlife_hotelroom'',''bathroom''">bathroom</a> is to the right.'
+	*nl
+	'Your hotel room also has <a href="exec:gt ''mod_wlife_hotelroom'',''beverage_tray''">tray</a> with beverages and a <a href="exec:gt ''mod_wlife_hotelroom'',''tv''">TV</a> is mounted on the wall.'+iif(komp = 1, ' Your <a href="exec: gt ''Komp'',''start''">laptop</a> is on the desk. The hotel offers all guests free Wi-Fi.', '')
+	if wl_status['hotel_bill'] > 0:
+		*nl
+		'This week your bill amounts to <<wl_status[''hotel_bill'']>> <b>₽</b>. It will be debited from your bank account on Monday. If you don''t have enough money in your account it will be added to your debt.'
+	end
+	
+	act'Go to the hotel lobby':
+		if $clothingworntype ! 'nude':
+			gt'hotelHole'
+		else
+			msg'<b><font color = red>You need to get dressed before leaving your hotel room.</font></b>'
+			gt 'mod_wlife_hotelroom', 'start'
+		end
+	end
+
+	act 'Order room service':
+		*clr & cla
+		killvar '$_drink'
+		killvar '$_eat'
+		menu_off = 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/roomservice.jpg"></center>'
+		
+		gs 'mod_wlife_hotelroom', 'roomservice_items'
+		gs 'food_menu', 'mod'
+	end
+	
+	*nl & gs 'exercise', 'start'
+end
+
+if $ARGS[0] = 'roomservice_items':
+	$_eat['0,name'] = 'Vegetarian Piroshki'
+	$_eat['0,type'] = 'pirosh'
+	$_eat['0,price'] = 100
+	$_eat['1,name'] = 'Herring Blini'
+	$_eat['1,type'] = 'blini'
+	$_eat['1,price'] = 190
+	$_eat['2,name'] = 'Golubtsy'
+	$_eat['2,type'] = 'golub'
+	$_eat['2,price'] = 210
+	$_eat['3,name'] = 'Pozharsky Cutlets'
+	$_eat['3,type'] = 'pozhar'
+	$_eat['3,price'] = 290
+	$_eat['4,name'] = 'Rueben Sandwich'
+	$_eat['4,type'] = 'reuben'
+	$_eat['4,price'] = 340
+
+	$_drink['0,name'] = 'Beer on tap'
+	$_drink['0,type'] = 'bev_bee'
+	$_drink['0,price'] = 60
+	$_drink['1,name'] = 'Vodka'
+	$_drink['1,type'] = 'bev_vod'
+	$_drink['1,price'] = 120
+	$_drink['2,name'] = 'Scotch'
+	$_drink['2,type'] = 'bev_sco'
+	$_drink['2,price'] = 140
+	$_drink['3,name'] = 'Glass of Wine'
+	$_drink['3,type'] = 'bev_win'
+	$_drink['3,price'] = 160
+	$_drink['4,name'] = 'Black Russian'
+	$_drink['4,type'] = 'bev_bla'
+	$_drink['4,price'] = 250
+end
+
+if $ARGS[0] = 'safe':
+	*clr & cla
+	$metka = 'safe'
+	$menu_arg = 'safe'
+	menu_off = 0
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/safe.jpg"></center>'
+	'You can store money in the hotel safe.'+iif(wl_status['money_safe'] > 0, ' There are <<wl_status[''money_safe'']>> <b>₽</b> inside the safe.', '')
+	
+	act 'Close the safe': gt 'mod_wlife_hotelroom', 'room'
+	
+	if money > 0:
+		act 'Put some money in the safe':
+			cla
+			minut += 1
+			menu_off = 1
+			gs 'stat'
+			wl_temp = input ("How much money do you want to put into the safe? (Your purse contains <<money>> <b>₽</b>.)")
+
+			if wl_temp <= 0 or wl_temp > money:
+				'You can''t put this amount into the drawer.'
+			else
+				wl_status['money_safe'] += wl_temp
+				money -= wl_temp
+			end
+
+			killvar 'wl_temp'
+			
+			gt 'mod_wlife_hotelroom', 'safe'
+		end
+	end
+
+	if wl_status['money_safe']> 0:
+		act 'Take some money from the safe':
+			cla
+			minut += 1
+			menu_off = 1
+			gs 'stat'
+			wl_temp = input ("How much money do you want to take from the safe? (There is <<wl_status['money_safe']>> <b>₽</b> in the safe.)")
+
+			if wl_temp <= 0 or wl_temp > wl_status['money_safe']:
+				'You can''t take this amount from your drawer.'
+			else
+				wl_status['money_safe'] -= wl_temp
+				money += wl_temp
+			end
+
+			killvar 'wl_temp'
+			
+			gt 'mod_wlife_hotelroom', 'safe'
+		end
+	end
+end
+
+if $ARGS[0] = 'desk':
+	*clr & cla
+	$metka = 'desk'
+	$menu_arg = 'desk'
+	menu_off = 0
+	gs'stat'
+	'<center><h1>Desk</h1></center>'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/room.jpg"></center>'
+	'You sit down at the desk.'
+	if mentats_have > 0: '<a href="exec:dynamic $use_mentats & gt ''mod_wlife_hotelroom'', ''desk''"><b>Take neurobooster pill.</b></a> Uses left: <<mentats_have>>. Warning on the box says not to take more than one per day.'
+	if steroid_have > 0: '<a href="exec:dynamic $use_steroids & gt ''mod_wlife_hotelroom'', ''desk''"><b>Take steroids.</b></a> Uses left: <<steroid_have>>.'
+	if aphrodisiac_have > 0: '<a href="exec:dynamic $use_aphrodisiac & gt ''mod_wlife_hotelroom'', ''desk''"><b>Chew aphrodisiac gum.</b></a> Uses left: <<aphrodisiac_have>>.'
+	
+	act 'Get up': gt 'mod_wlife_hotelroom', 'room'
+	
+	act 'Check your birth control': gt 'mod_wlife_hotelroom', 'birth_control'
+	if strapon = 1:
+		if dildo + middildo + largedildo + bigdildo + extradildo + superdildo + maddildo > 0:
+			act 'Check out your strapon harness': gt 'mod_wlife_hotelroom', 'strapon'
+		else
+			act 'Check out your strapon harness': '<br>You don''t have any dildos to attach to your strapon harness'
+		end
+	end	
+	
+	if SchoolAtestat = 0 and SchoolBlock = 0:
+	
+		gs 'willpower', 'misc', 'self', iif(grupTipe = 4 and traits['nerd_status'] = 0, 'hard', iif(traits['nerd_status'] > 0, 'easy', 'medium'))
+		if traits['nerd_status'] = 2: will_cost = will_cost / 2
+		if lernHome > 0 and (will_cost <= pcs_willpwr or traits['nerd_status'] = 3):
+			'<br>You have to your homework. Finishing everything will take <<lernHome>> hours.'
+			act 'Do your homework (1:00'+iif(traits['nerd_status'] = 3, '', ' and <<will_cost>> Willpower')+')':
+				cla & *clr
+				'<center><img <<$set_imgh>> src="images/locations/shared/apartment/homework.jpg"></center>'
+				minut += 60
+				pcs_mood += 5 * traits['nerd_status']
+				lernHome -= 1
+				lern += 1
+				gs 'willpower', 'misc', 'self', iif(grupTipe = 4, 'hard', iif(traits['nerd_status'] > 0, 'easy', 'medium'))
+				if traits['nerd_status'] = 2: will_cost = will_cost / 2
+				if traits['nerd_status'] < 3: gs 'willpower', 'pay', 'self'
+				gs'stat'
+				'It took you one hour to '+iif(lernHome = 0, 'complete', 'do a part of')+' your homework.'
+				
+				act 'Continue':	gt 'mod_wlife_hotelroom', 'desk'
+			end
+		elseif lernHome > 0 and will_cost > pcs_willpwr:
+			act 'Do your homework (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		will_cost = will_cost * lernHome
+		if lernHome > 1 and (will_cost <= pcs_willpwr or traits['nerd_status'] = 3):
+			act 'Finish all of your homework (<<lernHome>>:00'+iif(traits['nerd_status'] = 3, '', ' and <<will_cost>> Willpower')+')':
+				cla & *clr
+				'<center><img <<$set_imgh>> src="images/locations/shared/apartment/homework.jpg"></center>'
+				'It took you <<lernHome>> hours to complete your homework.'
+				minut += 60 * lernHome
+				pcs_mood += 5 * traits['nerd_status'] *lernHome
+				lern += 1 + lernHome/2
+				lernHome = 0
+				if traits['nerd_status'] < 3: gs 'willpower', 'pay', 'self'
+				gs'stat'
+				
+				act 'Continue': gt 'mod_wlife_hotelroom', 'desk'
+			end
+		elseif lernHome > 1 and will_cost > pcs_willpwr:
+			act 'Finish all of your homework (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end 
+
+if $ARGS[0] = 'strapon':
+	*clr & cla
+	$metka = 'strapon'
+	$menu_arg = 'strapon'
+	menu_off = 0
+	gs'stat'
+	'<center><h1>Desk</h1></center>'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/room.jpg"></center>'
+	if strapnumber = 0: 'Your strapon harness doesn''t have a dildo attached to it.'
+	*nl
+	if dildo = 1: iif(strapnumber = 1, 'Your 10cm dildo is attached to your strapon harness.', '<a href="exec:strapnumber = 1 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 10cm long dildo.')
+	if middildo = 1: iif(strapnumber = 2, 'Your 15cm dildo is attached to your strapon harness.','<a href="exec:strapnumber = 2 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 15cm long dildo.')
+	if largedildo = 1: iif(strapnumber = 3, 'Your 20cm dildo is attached to your strapon harness.','<a href="exec:strapnumber = 3 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 20cm long dildo.')
+	if bigdildo = 1: iif(strapnumber = 4, 'Your 25cm dildo is attached to your strapon harness.','<a href="exec:strapnumber = 4 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 25cm long dildo.')
+	if extradildo = 1: iif(strapnumber = 5, 'Your 30cm dildo is attached to your strapon harness.','<a href="exec:strapnumber = 5 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 30cm long dildo.')
+	if superdildo = 1: iif(strapnumber = 6, 'Your 35cm dildo is attached to your strapon harness.','<a href="exec:strapnumber = 6 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 35cm long dildo.')
+	if maddildo = 1: iif(strapnumber = 7, 'Your 40cm dildo is attached to your strapon harness.','<a href="exec:strapnumber = 7 & gt ''mod_wlife_hotelroom'', ''strapon''">Attach</a> your 40cm long dildo.')
+	
+	act 'Put your strapon harness away': gt 'mod_wlife_hotelroom', 'desk'
+end
+
+if $ARGS[0] = 'birth_control':
+	*clr & cla
+	$metka = 'birth_control'
+	$menu_arg = 'birth_control'
+	menu_off = 0
+	gs'stat'
+	gs 'din_bad'
+	'<center><h1>Desk</h1></center>'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/room.jpg"></center>'
+	'You store your birth control in one of the drawers of your desk.'
+	
+	act 'Close the drawer':gt 'mod_wlife_hotelroom', 'desk'
+	
+	if prezik + prezikcount + preziksabo > 0:
+		if preziktype = 2 or preziksabo > 0:
+			'You have <<iif(preziktype = 2, prezikcount, prezikcount+prezik)>> normal, and <<iif(preziktype = 2, prezik+preziksabo, preziksabo)>> sabotaged <a href="exec:dynamic $din_Table_Condom_Menu"><b>condoms.</b></a>'
+		elseif preziktype < 2 and preziksabo = 0:
+			'You have <<prezik+prezikcount>> <a href="exec:dynamic $din_Table_Condom_Menu"><b>condoms.</b></a>'
+		end
+		*nl
+	else
+		'You are out of condoms.'
+	end
+	
+	if tabletki > 0 and pillsleft[ptype] > 0:
+		'You have <<tabletki>> unopened packages of <a href="exec:dynamic $d_tabletkiedt">birth control pills</a> and <<pillsleft[ptype]>> pills left in your opened package.</b>'
+	elseif tabletki	= 0 and pillsleft[ptype] > 0:
+		'You have <<pillsleft[ptype]>> <a href="exec:dynamic $d_tabletkiedt">birth control pills</a> left.</b>'
+	elseif tabletki > 0 and pillsleft[ptype] = 0:
+		'You have <<tabletki>> unopened packages of <a href="exec:dynamic $d_tabletkiedt">birth control pills</a>.'
+	else
+		'You are out of birth control pills.'
+	end
+end
+
+if $ARGS[0] = 'beverage_tray':
+	*clr & cla
+	$metka = 'beverage_tray'
+	$menu_arg = 'beverage_tray'
+	menu_off = 0
+	gs'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/beverage_tray_'+iif(wl_status['coffee_maker'] < 2, 0, 1)+'.jpg"></center>'
+	'On the tray is is a small selection of different types of tea and an electric kettle to boil water.'+iif(wl_status['coffee_maker'] = 2, '', ' Your coffee maker stands next to it. You have '+iif(wl_status['coffee'] = 0, 'no pods left.', 'pods for <<wl_status[''coffee'']>> cups of coffee.'))
+	
+	if wl_status['coffee_maker'] = 0:
+		wl_status['coffee_maker'] = 1
+		msg 'There is enough space next to the tray for a coffee maker. The shop sells coffee makers and pods if you like coffee.'
+	end
+	
+	act 'Step back from the tray': gt 'mod_wlife_hotelroom', 'room'
+	
+	dynamic $driwater
+	if wl_status['coffee'] > 0: act 'Have a coffee (0:05)': gt 'mod_wlife_hotelroom', 'coffee'	
+	act 'Have a cup of tea (0:05)': dynamic $dritea
+	dynamic $fill_bottle
+	dynamic $fatdel
+	dynamic $lekarstvo
+	dynamic $vitamin
+end
+
+if $ARGS[0] = 'coffee':
+	*clr & cla
+	frost = 0
+	if alko > 0: alko -= 1
+	minut += 10
+	wl_status['coffee'] -= 1
+	pcs_health += 5
+	pcs_mood += 20
+	pcs_energy += 20
+	if pcs_hydra >= 100:
+		pcs_hydra += 20
+	else
+		pcs_hydra += 40
+	end
+	cumspclnt = 2
+	gs 'cum_cleanup'
+	pcs_breath = 0
+	gs 'beverage', 'afterdrink'
+
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/coffee.jpg"></center>'
+	'You enjoy a hot coffee, and<<$mtxt>>'
+	gs 'stat'
+	killvar '$_drink'
+
+	act 'Finish': gt 'mod_wlife_hotelroom', 'beverage_tray'
+end
+
+if $ARGS[0] = 'bathroom':
+	*clr & cla
+	$metkaM = 'bathroom'
+	$locM = 'mod_wlife_hotelroom'
+	$metka = 'bathroom'
+	$loc = 'mod_wlife_hotelroom'	
+	$menu_arg = 'bathroom'
+	$location_type = 'bathroom'
+	hotelShampoo = 1
+	gs 'themes', 'indoors'
+	gs'stat'
+	
+	'<center><b><font color = maroon>Bathroom</font></b></center>'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/hotelroom/bathroom.jpg"></center>'
+	'A small and unpretentious bathroom, that is nevertheless quite stylish and has everything you need.'
+	
+	act 'Leave the bathroom': hotelShampoo = 0 & gt 'mod_wlife_hotelroom', 'room'
+	
+	gs 'din_van', 'private', 'hotelroom'
+end
+
+if $ARGS[0] = 'tv':
+	*clr & cla
+	gs'stat'
+
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/watch_tv.jpg"></center>'
+	'You turn on the TV and make yourself comfortable on the bed.'
+
+	act 'Get up from the bed': gt 'mod_wlife_hotelroom', 'room'
+	act 'Watch TV (1:00)': gt 'mod_wlife_hotelroom', 'watch_tv'
+end
+
+if $ARGS[0] = 'watch_tv':
+	*clr & cla
+	minut += 60
+	pcs_mood += rand(10,20)
+	gs'stat'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/tv0,'+rand(0,4)+'.jpg"></center>'
+	'You are watching the country''s main television channel. None of their programs are really worth watching, but the distraction is welcome anyway.'
+
+	act 'Get up from the bed': gt 'mod_wlife_hotelroom', 'room'
+	act 'Watch TV (1:00)': gt 'mod_wlife_hotelroom', 'watch_tv'
+end
+
+--- mod_wlife_hotelroom ---------------------------------
+

+ 187 - 0
locations/mod_wlife_iosif.qsrc

@@ -0,0 +1,187 @@
+# mod_wlife_iosif
+
+if $ARGS[0] = 'first_meet_forced':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/street_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'		
+	'You see Shura getting up from his old armchair before you have a chance to talk to him. He clearly doesn''t see you approach and heads inside the warehouse before you have a chance to talk to him.'
+	
+	act 'Leave': gt 'mod_wlife_warehouse', 'street'
+	act 'Follow him inside': gt 'mod_wlife_iosif', 'first_meet'
+end
+
+if $ARGS[0] = 'first_meet':
+	*clr & cla
+	minut += 2
+	wl_iosif['status'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'The noise inside the warehouse is deafening. Metal screeches over metal and several guys are shouting at each other as they break down cars for spare parts. Another group of men are leaning against the cars, beer in hand and chatting loudly about football. Something about a crushing victory of Zenit Saint Petersburg over Lokomotiv Moscow. They mostly ignore you except for one of them who frowns and stares at you with a menacing look.'
+	*nl
+	'You''re sure you have met him before or, to be specific, he fucked you before. What was his name again? Something starting with an ''I'', but you can''t remember. You are only sure of one thing, he doesn''t seem happy about you being here.'
+	
+	act 'Turn around and leave':
+		*clr & cla
+		minut += 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+		'"Wait," a harsh voice shouts through the warehouse and you''re quickly surrounded by a group of slightly intoxicated men. One of them steps close to you. It''s the one which name you can''t remember. "What are you doing here? You whores aren''t suppose to be here except when you have to check in with Georgiy."'
+		
+		act 'Answer submissively':
+			*clr & cla
+			minut += 2
+			wl_stats['respect'] -= 2
+			wl_stats['loyalty'] += 1
+			gs 'pain', 4, 'armL', 'twist'
+			gs 'pain', 4, 'armR', 'stretch'
+			gs 'pain', 6, 'legR', 'slam'
+			gs 'pain', 2, 'handL', 'slam'
+			gs 'pain', 2, 'handR', 'slam'
+			gs 'pain', 10, 'hair', 'stretch'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+			'You look down to your feet. "I''m sorry, I didn''t know that," you say meekly.'
+			'A strong hand grabs your left arm. "Do you think that''s enough?"'
+			'"Nobody told me that I can''t be here," you say hastily. "I''m sorry, it won''t happen again. I promise."'
+			'He twists your arm behind your back and pulls you really close to him. "Ok, go, but next time I won''t be so nice," he whispers into your ear before pushing you towards the door. You stumble and fall hitting your right knee on the concrete floor. A sharp pain shoots up your leg and you let out a cry of pain.'
+			'The man grabs your right arm with one hand and your hair with the other before you have the chance to react. A loud scream escapes your throat and reverberates through the hall when he pulls you the last meters towards the door. "And now piss off whore."'
+								
+			act 'Continue': gt 'mod_wlife_warehouse', 'street'
+		end
+								
+		gs 'willpower', 'misc', 'self', 'hard'
+		if will_cost <= pcs_willpwr:	
+			act 'Answer confidently (<<will_cost>> Willpower)':
+				*clr & cla
+				minut += 2
+				wl_stats['respect'] += 2
+				wl_stats['loyalty'] -= 4
+				gs 'pain', 6, 'head', 'slap'
+				gs 'pain', 4, 'armR', 'stretch'
+				gs 'pain', 6, 'legR', 'slam'
+				gs 'pain', 10, 'hair', 'stretch'
+				gs 'willpower', 'pay', 'self'
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+				'"Maybe next time tell me the rules before I break them," you reply snippy while you look confidently into his eyes. Anger flares up inside them as he steps right in front of you. He doesn''t say anything instead he only stares into your eyes. Several seconds pass, but you don''t budge and keep your eyes fixated on his.'
+				'Suddenly he lifts his hand and slaps you without holding back. You fall to the ground, hitting your right knee on the concrete floor. A sharp pain shoots up your leg and you let out a cry of pain. "Don''t tell me what to do. Maybe I should teach you some respect," he screams, grabs your right arm with one hand and your hair with the other before you have the chance to react. A loud scream escapes your throat and reverberates through the hall when he pulls you towards the door. "And now piss off whore."'
+										
+				act 'Continue': gt 'mod_wlife_warehouse', 'street'
+			end
+		else
+			act 'Answer confidently (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end
+
+if $ARGS[0] = 'first_call':
+	*clr & cla
+	minut += 1
+	wl_iosif['timer'] = 1
+	wl_iosif['timer_call'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'"Hi," you say unsure what to expect.'
+	'"<<$pcs_nickname>>, I need to see you tonight." The voice sounds rough and familiar. "Iosif?" You ask hoping you''re wrong.'
+	'"Good, so I didn''t fuck your brains out completely and you remember more than my cock," he says coldly.'
+	'Nice, you think and roll your eyes. How charming. "We have to remedy that. Come to the warehouse, 23:00!" He commands and ends the call before you have a chance to reply.'
+	
+	act 'Put your phone away': gt $loc, $metka
+end
+
+if $ARGS[0] = 'regular_call':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	if wl_iosif['timer'] = 0:
+		'"Hi Iosif," you say trying to sound friendly.'
+		'"<<$pcs_nickname>>, I need to see you again. Come to the warehouse tonight, 23:00!"'
+		
+		gs 'willpower', 'prostitution', 'resist', 'hard'
+		if will_cost <= pcs_willpwr:
+			act 'Not today (<<will_cost>> Willpower)':
+				cla & *nl
+				wl_iosif['timer'] = 2
+				wl_iosif['timer_whore'] = daystart + rand(2,6)
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'"I can''t today. I''m sorry Iosif, can we meet on another day?" You inquire.'
+				'You can hear an annoyed sigh coming from him. "Fine, but the next time I call you better be ready." He tells you before ending the call.'
+				
+				act 'Put your phone away': gt $loc, $metka
+			end
+		else
+			act 'Not today (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	else
+		'"Hi Iosif," you say trying to sound friendly.'
+		'"Today is the day, bitch. Come to the warehouse, 23:00! And no excuses today."'
+	end
+	
+	act 'OK': 
+		cla & *nl
+		wl_iosif['timer'] = 1
+		wl_iosif['timer_call'] = daystart
+		'"Ok, I''ll be there," you agree.'
+		'"Perfect, can''t wait to fuck you again," he says and ends the call.'
+		
+		act 'Put your phone away': gt $loc, $metka
+	end
+end
+
+if $ARGS[0] = 'warehouse_prostitution':
+	*clr & cla
+	menu_off = 1
+	wl_iosif['timer'] = 0
+	wl_iosif['call_missed'] = 0
+	wl_iosif['call_avoid'] = 0
+	wl_iosif['timer_whore'] = daystart + rand(4,12)
+	minut += 2
+	gs 'stat'	
+	if rand (0,1) = 0 or wl_iosif['status'] = 3:
+		if wl_iosif['status'] < 4: wl_iosif['status'] = 4
+		gs 'pain', 2, 'asscheeks', 'slap'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+		'A guy whistles when you enter the warehouse and several more look at you with hungry eyes.'
+		'"<<$pcs_nickname>>, come with me," Iosif shouts from the other end of the warehouse and vanishes in the corridor that leads to the adjacent house.'
+		'You have to go through the group of guys to follow him. Left and right the guys offer lewd comments about you, your clothes and why you''re here. One of them even slaps your ass hard when you walk by him, but nobody tries to stop you.'
+		
+		act 'Follow Iosif': gt 'mod_wlife_iosif', 'couch'
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+		'The warehouse is empty except for one guy sitting near the entrance keeping a watchful eye at the door. "Are you Iosif girl?" He asks when you enter. You nod. "He''s in the back." He tells you and points towards the corridor that leads to the adjacent house.'
+		
+		act 'Go to Iosif': gt 'mod_wlife_iosif', 'couch'
+	end
+end
+
+if $ARGS[0] = 'couch':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/couch.jpg"></center>'
+	'"Damn, you look nice in that outfit.'+iif(PCloStyle = 4, ' Really brings out your inner whore."', 'A little bit to conservative for my taste, why don''t you wear something more slutty next time?"')+' He says while his eyes devour every inch of your body. "I was really looking forward to this," he adds and hands you your money.'
+	
+	act 'Take the money': money += wl_iosif['payment'] & gt 'mod_wlife_iosif_sex', 'warehouse_start'
+	
+	gs 'willpower', 'misc', 'force', 'hard'
+	if wl_iosif['haggle'] = 0 and will_cost <= pcs_willpwr:
+		act 'Demand more money (<<will_cost>> Willpower)':
+			cla & *nl
+			wl_iosif['haggle'] = 1
+			wl_iosif['payment'] += 300
+			gs 'willpower', 'pay', 'force'
+			gs 'stat'
+			'You take a deep breath and collect every ounce of courage you can find. "I need more than that!" You demand and cross your arms in front of you. "I''m worth more than this."'
+			'"Are you?" He asks and the smile he shows is dangerous, but you nod and hold your ground. "I am and you know it."'
+			'He stares at you menacingly until he shrugs and hands you 300 <b>₽</b> more. "Fine, here take it."'
+			
+			act 'Take the money': money += wl_iosif['payment'] & gt 'mod_wlife_iosif_sex', 'warehouse_start'
+		end
+	elseif wl_iosif['haggle'] = 0 and will_cost > pcs_willpwr:
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+--- mod_wlife_iosif ---------------------------------

+ 652 - 0
locations/mod_wlife_iosif_sex.qsrc

@@ -0,0 +1,652 @@
+# mod_wlife_iosif_sex
+
+if $ARGS[0] = 'shura_cuckold_0':
+	*clr & cla
+	cumnostd = 1
+	$orgasm_or = 'no'
+	gs 'boystat', 'A902'
+	gs 'arousal', 'kiss', 2, 'prostitution'
+	gs 'arousal', 'foreplay', -5, 'prostitution'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/start.mp4"></video></center>'
+	'It''s time, do your job," Iosif demands looking at you as if you are a piece of meat he wants to devour. You move away from Shura and he roughly grabs your tits. "Let''s see what you have learned on the street."'
+	if prezik > 0: '"What about a condom?" You ask, but Iosif only mets your question with a snort.'
+	'He pulls you into a rough kiss and pushes his tongue inside your mouth and your eyes flutter shut. Your tongues dance around each other as he pushes a hand between your legs. When he rubs his hand over you crotch you'+iif(pcs_horny < 60, ' fake ', ' produce ')+'a low moan. "Yeah, you like that, don''t you?" He says breaking the kiss. Then he leans forward and whispers into your ear. "He''s still watching."'
+	'You open your eyes and turn your head to see that he''s right. Shura is still here watching you two with a smile on his face that doesn''t reach his eyes.'
+	
+	act 'Continue':
+		*clr & cla
+		gs 'arousal', 'foreplay', 2, 'prostitution'
+		gs 'arousal', 'vaginal_finger', -5, 'prostitution'
+		gs 'exhibitionism', 1
+		gs 'stat'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/undress.mp4"></video></center>'
+		'Iosif can''t wait for you to get undressed. As you remove your top he moves his hand below your clothes and moves his fingers in circles around your clit never touching only teasing it. You'+iif(pcs_horny < 60, ' fake ', ' ')+'moan again.'
+		'"You smell nice," Iosif compliments you creepily as he smells your neck and kisses it. "Doesn''t she?" He taunts Shura and pushes a finger inside your cunt.'
+		'"Yeah she does," Shura replies quietly.'
+		*nl
+		'Iosif takes his time playing with your pussy, but for the most part he doesn''t look at you but Shura. The whole thing isn''t about you or the sex, it''s a weird power play between the two men. Finally, Iosif pulls his hand away. "Undress," he commands and takes of his own shirt while you slip out of the rest of your clothes. "And now get to it," he says pulling his dick out of his pants.'
+		
+		act 'Suck his cock':
+			*clr & cla
+			gs 'arousal', 'bj', 5, 'prostitution'
+			gs 'arousal', 'vaginal_finger', -5, 'prostitution'
+			gs 'exhibitionism', 4
+			gs 'pain', 4, 'asscheeks', 'slap'
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/bj.mp4"></video></center>'
+			'You don''t hesitate and take his semi-hard dick into your mouth and skillfully start to give him a blowjob. "Nice," he says and leans back to enjoy what you''re doing. After a minute or two his hand moves back between your legs and he starts again to play with your fully exposed pussy. There is no way for Shura to ignore what is happening right in front of his face and you can feel his burning gaze on your crotch.'
+			*nl
+			'Iosif slaps your ass playfully and when you keep sucking he slaps you again harder this time. "You have a really hot ass <<$pcs_nickname>>," he compliments you and roughly gropes your left ass cheek. "And I can do anything I want to it, because I own it now," he adds and slaps your ass even harder for a third time.'
+						
+			gs 'willpower', 'misc', 'resist', 'easy'
+			if will_cost <= pcs_willpwr:
+				act 'Ignore it (<<will_cost>> Willpower)':
+					cla & *nl
+					wl_stats['loyalty'] += 1
+					gs 'arousal', 'bj', -1, 'prostitution'
+					gs 'willpower', 'misc', 'resist', 'easy'
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'It''s probably safer not to answer, you think and keep sucking his cock.'
+					'"Yeah, concentrate on what is most important... my cock," he grins. "But that''s enough for now. Turn around, I want to fuck that sweet pussy of yours."' 
+					
+					act 'Get on your hands and knees': gt 'mod_wlife_iosif_sex', 'shura_cuckold_1'
+				end
+			else
+				act 'Ignore it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			gs 'willpower', 'misc', 'resist', 'hard'
+			if will_cost <= pcs_willpwr:
+				act 'Disagree (<<will_cost>> Willpower)':
+					cla & *nl
+					wl_stats['respect'] += 2
+					wl_stats['loyalty'] -= 1
+					wl_stats['acceptance'] -= 2
+					gs 'willpower', 'misc', 'resist', 'hard'
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'You let his hard cock slip out of your mouth. "Nobody owns me," you hiss and glare at him. "You paid to fuck me, that doesn''t make me your property."'
+					'"It seems you still have some fight left in you? Good for you, bitch. Don''t let the street break you to quickly," he grins. "It will be my pleasure to do it myself and now turn around, I want to fuck that sweet pussy of yours."'
+					
+					act 'Get on your hands and knees': gt 'mod_wlife_iosif_sex', 'shura_cuckold_1'
+				end
+			else
+				act 'Disagree (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Agree':
+				cla & *nl
+				wl_stats['respect'] -= 2
+				wl_stats['loyalty'] += 1
+				wl_stats['acceptance'] += 2
+				gs 'pain', 2, 'asscheeks', 'slap'
+				gs 'stat'
+				'You let his hard cock slip out of your mouth. "Yeah, I''m your whore. If you want to slap me, slap me," you say and wiggle your ass in an invitation for him to slap you again.'
+				'"You already know your place? Good for you, whore. The street breaks all the bitches," he laughs and slaps your ass again. "And now turn around, I want to fuck that sweet pussy of yours."'
+				
+				act 'Get on your hands and knees': gt 'mod_wlife_iosif_sex', 'shura_cuckold_1'
+			end
+		end		
+	end
+end
+
+if $ARGS[0] = 'shura_cuckold_1':
+	*clr & cla
+	gs 'arousal', 'vaginal', 5, 'prostitution'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/vag_1.mp4"></video></center>'
+	'"I wanted to fuck your pussy'+iif(wl_status['main'] > 6, ' again since I had the chance in the attic,"', ' since I tried your mouth in the warehouse,"')+' he says and you roll your eyes looking up at Shura. He looks back directly into your eyes and for a second you get the feeling that he''s hurt somehow. But you don''t have much time to think about it when Iosif pushes his cock inside you.'
+	'"See Shura," he grins sounding sure of himself. In his mind he has won. "I don''t have to rape a woman. Isn''t that right <<$pcs_nickname>>?"'
+	'"Yes," you manage to utter between'+iif(pcs_horny < 60, ' fake ', ' ')+'moans, but Shura doesn''t comment on your submissive behaviour. Instead he caresses your back... and you thought the situation couldn''t get any weirder.'   
+	
+	act 'Continue':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/vag_2.mp4"></video></center>'
+		'After a few minutes Iosif pulls out and you'+iif(pcs_horny < 80, ' hope ', ' worry ')+'that he''s done with you'+iif(pcs_horny < 80, ',', '. You''re too close to an orgasm to stop now,')+' but he is only switching positions. After sitting down on the couch he pulls you onto his lap, guiding his cock back inside you. "Ride me, slut," he orders you and for the next minutes you are doing all the work while his hands roam your body, touching your tits and ass.'
+		*nl
+		'You don''t know where to look. Shura is constantly staring at you and even if he''s still smiling, you know something is wrong. So you focus your mind on the feeling between your legs.'
+		*nl
+		$orgasm_or = 'custom'
+		$orgasm_txt = 'It finally hits you and you have to stop moving as your legs start to shake. Your right hand claws into Shura''s shirt and you collapse on the couch. "Fuck, yes cum for me slut," Iosif screams and pulls out of your pulsating cunt.' 	
+		gs 'arousal', 'vaginal', 5, 'prostitution'
+		gs 'arousal', 'end'
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 1
+			gs 'cum_call', 'butt', 'A902', 1
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/cum.mp4"></video></center>'
+			'"Fuck, take it," he shouts and not a second later you feel his hot cum hitting your ass. It''s a lot, you can''t stop yourself from thinking and turn your head around to look at it.'
+			'"I guess, I owe you an apology," Shura suddenly says sarcastically and your head jerks back around, but his eyes are fixed on Iosif. "You either have to rape or buy a woman to get some pussy."'
+			'"Shut up. At least I can satisfy them. Didn''t you see how she came? Her whole body was shaking," he hisses angrily. "Tell him <<$pcs_nickname>>. Tell him, how good it was to get fucked by a real man."'
+
+			act 'Do it':
+				*clr & cla
+				minut += 2
+				wl_iosif['timer_whore'] = daystart + rand(8,12)
+				cumspclnt = 15
+				gs 'cum_cleanup'
+				gs 'stat'
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/end.mp4"></video></center>'
+				'You don''t know much about Iosif, but the chance that he bashes your head in seems far greater than Shura. So you do the only thing possible. You tell him everything he wants to hear or to be more accurate that he wants Shura to hear from you. This time Shura doesn''t have anything to say. He only stares at him with a blank face.'
+				'"Now can you get off of me," you plead when he playfully slaps his cock against your ass. The orgasmic bliss has faded and you only want to get out of here. "Sure <<$pcs_nickname>>," Iosif says, leans over you and places a few tender kisses on your neck. "I bet you look forward to our next fuck as much as I am," he says before he finally gets of you, grabs his clothes and leaves the room.'
+				'"Shura," you say, but he moves quickly out of the room as well. "Fuck," you whisper and shake your head. That was insane.'
+				*nl
+				'You hastily collect your clothes. Probably not a good idea to stay naked in the warehouse. For a second you think about pulling your clothes up over the cum, but you have an idea and rub your ass against the old couch. It has so many stains that some cum won''t be noticed.'
+				
+				act 'Leave the warehouse': minut += 10 & gt 'mod_wlife_warehouse', 'street'
+			end			
+		end
+	end
+end
+
+if $ARGS[0] = 'warehouse_start':
+	*clr & cla
+	$orgasm_or = 'no'
+	gs 'boystat', 'A902'
+	gs 'arousal', 'foreplay', 2, 'rough', 'sub', 'prostitution'
+	if rand(0,2) = 0 or wl_iosif['status'] = 4:	
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/start_0.mp4"></video></center>'
+		'"Get on the fucking couch whore," he says to you and points at the filthy thing in the middle of the room. "A dirty couch for a dirty whore," he adds when he sees the disgust on your face.'
+	else
+		gs 'pain', 4, 'throat', 'choke'
+		gs 'pain', 4, 'throat', 'pull'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/start_1.mp4"></video></center>'
+		'You aren''t even fully undressed when he violently grabs your throat and pulls you towards the couch. "You like that don''t you?" He asks. "You like it when I treat you like trash." You can''t shake your head or nod and talking is out of the question with his two strong hands around your neck. He throws you onto the dirty couch and you automatically suck in a deep breath.'
+	end
+	'"Tell me what you are and what you want," he commands you as he get''s on the couch behind you.'
+	gs 'stat'
+	
+	gs 'willpower', 'humiliation', 'resist', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Stay silent (<<will_cost>> Willpower)':
+			cla & *nl
+			wl_stats['respect'] += 1
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'You keep your mouth shut. You''re not going to humiliate yourself in front of him.'
+			'"I love it that you have some self-respect left, makes it much more fun to fuck it out of you," he taunts you as he rubs his cock through your '+iif(pcs_horny < 60, 'dry', 'wet')+' slit.'
+			
+			act 'Get ravaged by him': 
+				if wl_pictures['iosif_1'] = 1 and rand(1,3) = 1 and wl_iosif['status'] > 4:
+					gt 'mod_wlife_iosif_sex', 'warehouse_part_1b'
+				else
+					gt 'mod_wlife_iosif_sex', 'warehouse_part_1a'
+				end
+			end
+		end
+	else
+		act 'Stay silent (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Do it':
+		cla & *nl
+		wl_stats['respect'] -= 1
+		gs 'arousal', 'foreplay', -2, 'rough', 'sub', 'prostitution'
+		gs 'stat'
+		'"Come on, fuck me Iosif, fuck your dirty whore," you shout as he moves the head of his cock through your '+iif(pcs_horny < 60, 'dry', 'wet')+' slit. But this doesn''t seem to satisfy him. "Push it in, please Iosif," you beg like a bitch in heat.'
+		'"As you wish," he replies in a harsh tone.'
+		
+		act 'Get ravaged by him': 
+			if wl_pictures['iosif_1'] = 1 and rand(1,3) = 1 and wl_iosif['status'] > 4:
+				gt 'mod_wlife_iosif_sex', 'warehouse_part_1b'
+			else
+				gt 'mod_wlife_iosif_sex', 'warehouse_part_1a'
+			end
+		end	
+	end
+end
+
+if $ARGS[0] = 'warehouse_part_1a':
+	*clr & cla
+	gs 'pain', 4, 'throat', 'choke'
+	gs 'arousal', 'vaginal', 2, 'rough', 'sub', 'prostitution'
+	gs 'arousal', 'vaginal', -5, 'rough', 'sub', 'prostitution'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/pussy_start.mp4"></video></center>'
+	'He forces his cock inside your cunt without any consideration for you. You''re nothing more than a hole he can use.'
+	'Painfully you can feel his weight on your back as he uses you to prop himself up. Again and again he rams his hard dick inside you and the only thing you can do is to take it.'
+		
+	act 'Let him use you':
+		if rand(0,2) < 2 or wl_iosif['status'] = 4:
+			gt 'mod_wlife_iosif_sex', 'warehouse_part_2'
+		else
+			gt 'mod_wlife_iosif_sex', 'warehouse_part_3'
+		end
+	end
+end
+
+if $ARGS[0] = 'warehouse_part_1b':
+	*clr & cla
+	$orgasm_or = 'yes'
+	wl_temp = iif(wl_iosif['anal_scene'] = 2, rand(0,1), wl_iosif['anal_scene'])
+	gs 'pain', 10, iif(wl_temp = 0, 'hair', 'throat'), iif(wl_temp = 0, 'pull', 'choke')
+	gs 'pain', 10, 'asshole', 'stretch'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/anal_<<wl_temp>>.mp4"></video></center>'
+	'He turns you around and roughly grabs your '+iif(wl_temp = 0, 'hair with one hand','throat with both hands')+' after forcing his cock abruptly into your ass. A sharp pain shoots through your body as your dry asshole is forced open without warning. You wiggle your ass trying to get away from him, but he '+iif(wl_temp = 0, 'pulls on your hair hard and keeps your body in place', 'increases the pressure on your throat and chokes you so hard that your face turns red')+' as he ravages your asshole with his dick.'
+	$orgasm_txt = 'The pain in your ass never subsidies, but after a few minutes a strange tingling sensation accompanies the pain. It intensifies by the second and suddenly Iosif '+iif(wl_temp = 0, 'flicks your swollen clit hard with one of his fingers and', 'increases the pressure on your throat and your overstimulated brain goes crazy as')+' you cum hard.'
+	
+	gs 'arousal', 'anal', 10, 'rough', 'sub', 'prostitution', 'humiliation'
+	gs 'arousal', 'end'
+	gs 'stat'
+		
+	if wl_iosif['anal_scene'] < 2: wl_iosif['anal_scene'] += 1
+	
+	act 'Continue':
+		*clr & cla
+		minut += 2
+		facial += 1
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/anal_end.mp4"></video></center>'
+		'At first you don''t even realize that he pulled his cock out of your gaping ass. Your mind is still foggy from the orgasm and only when he pulls you of the sofa and onto your knees you understand what''s going on. A huge load coats your face in semen as your quivering asshole slowly tries to close.'
+		'"Get dressed and get out," Iosif says as he takes in the sight of your cum covered face. "And don''t even think about wiping my cum from your face," he adds. Normally he quickly walks away, but this time he watches you get dressed making sure that you don''t clean your face.'
+		
+		gs 'cum_call', 'face', 'A902', 1
+		gs 'stat'
+		
+		act 'Leave': minut += 5 & gt 'mod_wlife_warehouse', 'street'
+	end
+end
+
+if $ARGS[0] = 'warehouse_part_2':
+	*clr & cla
+	gs 'pain', 4, 'hair', 'pull'
+	if wl_iosif['status'] = 4: gs 'pain', 4, 'cheeks', 'slap'
+	gs 'arousal', 'bj', 2, 'rough', 'sub', 'prostitution', 'humiliation'
+	gs 'arousal', 'bj', -5, 'rough', 'sub', 'prostitution', 'humiliation'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/bj_'+rand(0,1)+'.mp4"></video></center>'
+	'Suddenly he pulls his cock out of your cunt and you meekly lift your head when he kneels in front of you. "Do I have to do everything myself?" He shouts and grabs you by the hair to pull you toward him. You close the gap between his cock and your mouth as quickly as possible to lessen the pain and take his with pussy juice coated dick in your mouth. "Yeah, how does it taste? Good?"'
+	'With a lot of effort you manage to '+iif(wl_iosif['status'] = 4, 'nod', 'shake your head')+' between his violent thrusts into your mouth. '+iif(wl_iosif['status'] = 4, '"No! You stupid bitch. The pussy of a dirty whore like you doesn''t taste good," he corrects you and slaps your face hard. "Remember that."', '"Good girl. Remembered that your filthy hole tastes like shit? Didn''t you?" He taunts you and you use a small window between thrusts to nod.')
+	*nl
+	'After a few minutes he gets bored with your mouth and moves back to abuse his favorite hole again.'
+	
+	act 'Get ravaged again': gt 'mod_wlife_iosif_sex', 'warehouse_part_3'
+end
+
+if $ARGS[0] = 'warehouse_part_3':
+	*clr & cla
+	gs 'arousal', 'vaginal', 5, 'rough', 'sub', 'prostitution'
+	gs 'arousal', 'vaginal', -5, 'rough', 'sub', 'prostitution'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/pussy_'+rand(0,3)+'.mp4"></video></center>'
+	'The sex is fast and brutal. He never stops or takes a break instead he furiously rams his dick inside you revealing his impressive stamina. He demeans you the whole time he''s pounding your hole. Whore, slut, cunt or trash his repertoire of degrading terms seems inexhaustible.'
+	
+	gs 'willpower', 'cum_inside', 'resist'
+	if will_cost <= pcs_willpwr and wl_iosif['begged'] = 0:
+		act 'Beg him to cum outside (<<will_cost>> Willpower)':
+			cla & *nl
+			wl_iosif['begged'] = 1
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'"Please, not inside," you beg him, but he doesn''t listen to you. "You should be thankful for having the honor of taking my cum. So shut up," he snaps and continues to fuck you as hard as he can.'
+			
+			act 'Take his load': gt 'mod_wlife_iosif_sex', 'warehouse_part_4'
+		end
+	elseif will_cost > pcs_willpwr and wl_iosif['begged'] = 0:
+		act 'Beg him to cum outside <font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end	
+	
+	act 'Take his load': 
+		if wl_iosif['begged'] = 0: wl_stats['unprotected'] += 1
+		gt 'mod_wlife_iosif_sex', 'warehouse_part_4'
+	end
+end
+
+if $ARGS[0] = 'warehouse_part_4':
+	*clr & cla
+	cumnostd = 1
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/cumshot.mp4"></video></center>'
+	'He collapses on top of you, his weight pressing you into the cushions and only his hip moves as he gets closer and closer to the edge. "Take it, take it <<$pcs_nickname>>," he shouts into the room and comes.'
+	$orgasm_txt = 'The second you feel his cock throbbing violently you cum as well. Your body shakes under his weight and a long moan escapes your lips as the muscles in your pussy contract around his dick and milk every drop of cum out of it.'
+	$orgasm_or = 'custom'
+	gs 'cum_call', 'vaginal', 'A902', 1
+	gs 'arousal', 'vaginal', 2, 'rough', 'sub', 'prostitution'
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	if $wl_fetish['pissing'] = 'blocked' and $wl_fetish['pissed_on'] ! '': 
+		wl_iosif['status'] = 6
+		$wl_fetish['pissed_on'] = 'blocked'
+	end
+	
+	act 'Wait':
+		wl_temp = rand(0,4)
+		if wl_temp = 0 or wl_iosif['status'] = 4:
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_verbal.mp4"></video></center>'
+			'He violently grabs your throat again and you can feel his breath in your ear when he comes as close as possible near you. "How does it feel to have my cum inside you? Do you think you even deserve it?"'
+			'"No," you whimper while he licks the lobe of your ear. "Thanks for cumming inside me."'
+			'"Good girl, maybe there is still hope left for you that you will learn your place." He moves back and pulls his softening dick out of your cum-filled pussy. "Get dressed, we''re done here whore."'
+			
+			gs 'arousal', 'kiss', 2, 'sub', 'humiliation'
+			gs 'arousal', 'end'
+			gs 'stat'
+			
+			act 'Get dressed': gt 'mod_wlife_iosif_sex', 'warehouse_part_end'
+		elseif wl_pictures['iosif_1'] = 0:
+			*clr & cla
+			minut += 2
+			wl_pictures['iosif_1'] = 1
+			wl_pictures['count'] += 1
+			gs 'stat'
+			'<center><img height = 480 src="mod/wlife/images/sex/iosif/warehouse/creampie.jpg"></center><br>'
+			'"Wait here and don''t even think about moving a muscle," Iosif says to you sternly. You hear him rummage through some clothes, before he reappears with your phone in hand in your field of vision. "Unlock it," he commands as he holds the phone in front of you. '+iif(wl_pictures['iosif_2'] = 0, 'What does he want with your phone? You ask yourself not daring to ask him the question. Instead you slide your index finger over the screen unlocking it.', 'It''s picture time again you think as you slide your index finger over the screen unlocking it.')
+			'"Spread you cheeks, I want to see my cum dripping out of your cunt." He aims the phone at your ass as you obey grabbing your ass with both hands and pulling your asscheeks to the side to give him a better view of your creampied pussy. "Perfect," he says'+iif(wl_pictures['start'] = 1 and tatvag = 0 and wl_iosif['tattoo'] = 0, ' and takes a few moments to look at something else on your phone. Suddenly a broad grin appears on his face, but he only says,' , ',')+' "and now clean yourself up."'
+			if wl_pictures['start'] = 1 and tatvag = 0 and wl_iosif['tattoo'] = 0: wl_iosif['tattoo'] = 1
+			
+			act 'Get dressed': gt 'mod_wlife_iosif_sex', 'warehouse_part_end'
+		elseif (wl_temp > 0 and wl_temp < 4 and $wl_fetish['pissed_on'] ! 'blocked') or wl_iosif['status'] = 5:
+			*clr & cla
+			minut += 2
+			if wl_iosif['status'] < 6: wl_iosif['status'] = 6
+			gs 'sweat', 'add', 20
+			gs 'pain', 6, 'hair', 'pull'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+			'When he pulls out of you and gets up from the couch you think it''s over. You lay still for a moment to catch your breath after your mind-shattering orgasm when he suddenly grabs you by the hair and pulls your head upwards. "Look at you, enjoying your orgasm?"'
+			'"Yes," you wince.'
+			if wl_iosif['pssing'] < 2:
+				'"See how helpful and nice I can be. Making you cum should count for something," he says and makes your head nod with a pull on your hair. "Good, then let me help you again. '+iif(wl_iosif['pissing'] = 1, 'You have earned yourself another shower," he', 'You stink of sweat." More his than yours, you think. "Lets get you cleaned up, shall we?" He')+' makes your head nod again. "Then move your stupid ass." He hisses and you try to keep up as he pulls you out of the room into the bathroom.'
+			else
+				'"Good and move your stupid ass." He hisses as he pulls you out of the room into the bathroom.'
+			end
+			
+			if $wl_fetish['pissed_on'] = '':
+				'<br><font color="red">Content Warning: Getting pissed on</font>'
+				act 'Continue': gt 'mod_wlife_iosif_sex', 'warehouse_pissing'
+				act '<font color="red">Block this type of content</font>': $wl_fetish['pissed_on'] = 'blocked' & gt 'mod_wlife_iosif_sex', 'warehouse_part_end'
+			else
+				act 'Continue': gt 'mod_wlife_iosif_sex', 'warehouse_pissing'
+			end
+		else
+			gt 'mod_wlife_iosif_sex', 'warehouse_part_end'
+		end
+	end
+end
+
+if $ARGS[0] = 'warehouse_pissing':
+	*clr & cla
+	minut += 8
+	$orgasm_or = 'no'
+	gs 'pain', 6, 'hair', 'pull'
+	if wl_iosif['pissing'] = 0:
+		if pcs_mood > 10: pcs_mood = 10
+		wl_iosif['pissing'] = 1
+		gs 'arousal', 'pee', -2, 'sub', 'humiliation'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_0.mp4"></video></center>'
+		'"Get in the tub." He says with a commanding undertone, but you can hear his excitement shining through the harsh tone. He''s looking forward to whatever happens next. Do you have to shower with him? You ask yourself and mentally shrug. It wouldn''t be the worst thing that happened to you in the last weeks. So you obediently get into the tub. "Sit down and smile."'
+		'Smile? Ok... this is getting weird, but you do it and put on the most honest looking smile you can muster.'
+		'"Looking forward to it, don''t you?" He asks you without explaining what is going to happen, but you have learned it''s always best to agree with Iosif. "Definitely," you answer.'
+		'"Then lets get you cleaned up," he laughs and hits you with a stream of warm, yellow piss.'
+		'"WHAT THE FUCK?!" You scream surprised and try to back away from it, but the wall of the tub is only centimeters behind you and there is no room left to escape his warm urine. When he sees your smile falter he curls his fingers into a fist and getting showered in piss suddenly looks much better than the alternative. "THAT''S SO GOOD! MORE!" You scream and start to wash your body with it. You force the smile back onto your lips and to your relieve he relaxes his fist.'
+		gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+	elseif wl_iosif['pissing'] = 1 or wl_pictures['iosif_2'] = 0 or (wl_iosif['pissing'] = 4 and $wl_fetish['piss_drinking'] = 'blocked'):
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_1.mp4"></video></center>'
+		if wl_iosif['pissing'] < 2: 
+			wl_iosif['pissing'] = 2
+		else
+			'"Toilet or tub?" you ask him submissively and you can tell from his smile that he appreciates your initiative. He points at the tube and you '+iif($wl_fetish['pissed_on'] = 'yes', 'eagerly', 'hesitantly')+' get into it.'
+		end
+		if $wl_fetish['pissed_on'] = 'no': 
+			if pcs_mood > 10: pcs_mood = 10
+			gs 'arousal', 'pee', -1, 'sub', 'humiliation'
+			'You already know what he expects from you and so you put on your most thankful looking smile when he points his cock at you. "Let''s get you cleaned up," he says as the first drops of piss his your body. Obediently you ''wash'' your body with it, rub it into your breasts and smiling through the ordeal.'
+		else
+			gs 'arousal', 'pee', -10, 'sub', 'humiliation'
+			'You were looking forward to this and you don''t have to fake a smile for what is about to happen. The second the first drops of piss hit your tits you feel a wave of arousal spreading from your crotch through your body and you enthusiastically wash your body with his urine. "Yeah, give me more," you moan and submissively look up to him to signal him how much you like it.'
+		end
+		gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+	elseif wl_iosif['pissing'] = 2:
+		wl_stats['respect'] -= 1
+		wl_stats['loyalty'] += 1
+		wl_stats['acceptance'] += 1
+		wl_iosif['pissing'] = 3
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_3.mp4"></video></center>'
+		'"No, not in the shower," Iosif says as you go towards the tub. He instead points at the cold floor next to the toilet. "Kneel," he commands and you do. You have long given up on resisting Iosif''s demands. It''s just easier and less painful to do what he wants.'
+		'"Hold your head over the bowl." You follow his command '+iif($wl_fetish['pissed_on'] = 'yes', 'eagerly', 'hesitantly')+' and from the corners of your eye you can see him pointing his semi-hard cock at you. Warm piss hits your face from the side and you let out '+iif($wl_fetish['pissed_on'] = 'yes', 'an aroused', 'a fake')+' moan. The smell is even more intense being so much closer to your nose and you have to fight against the urge '+iif($wl_fetish['pissed_on'] = 'yes', 'to push your hand between your legs and rub your swollen clit.', 'to puke.')
+		
+		if $wl_fetish['pissed_on'] = 'no': 
+			if pcs_mood > 10: pcs_mood = 10
+			gs 'arousal', 'pee', -1, 'sub', 'humiliation'
+		else
+			gs 'arousal', 'pee', -10, 'sub', 'humiliation'
+		end
+		
+		act 'Continue':
+			*clr & cla
+			minut += 4
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_5.mp4"></video></center>'
+			'"Who''s my little piss whore?" he asks you smirking coldly.'
+			'"I am," you reply and submissively look up at him piss dripping from your face.'
+			'He bends down and slaps your face more playful than hard. "Say it."'
+			'"I am your little piss whore."'
+			'He laughs and walks away without saying another word.'
+			
+			gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+		end
+	elseif wl_iosif['pissing'] = 3:
+		wl_stats['respect'] -= 1
+		wl_stats['loyalty'] += 1
+		wl_stats['acceptance'] += 1
+		wl_iosif['pissing'] = 4
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_4.mp4"></video></center>'
+		'"Toilet or tub?" you ask him submissively and you can tell from his smile that he appreciates your initiative. He points at the toilet and you '+iif($wl_fetish['pissed_on'] = 'yes', 'eagerly', 'hesitantly')+' kneel down next to it.'
+		'"Tell me what you want." He aims his dick at your face'+iif($wl_fetish['pissed_on'] = 'yes', ' and you can feel blood rush into your sex as your pussy gets wet.', '. You tell yourself that it will only take him a minute and then it will be over.')+' "Your piss," you reply obediently.'
+		'"And why do you want it?"'
+		'"Because I''m a piss whore," and the second you utter those words his urine spills from his cock against your face.'		
+		if $wl_fetish['pissed_on'] = 'no': 
+			if pcs_mood > 10: pcs_mood = 10
+			gs 'arousal', 'pee', -1, 'sub', 'humiliation'
+		else
+			gs 'arousal', 'pee', -10, 'sub', 'humiliation'
+		end
+		
+		act 'Continue':
+			*clr & cla
+			minut += 3
+			gs 'arousal', 'bj', 3, 'sub', 'humiliation'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_5.mp4"></video></center>'
+			'"And what does a good piss whore do next?" he asks as he marvels at your piss covered face and his cock twitches excitedly. You try to think of something, anything that would satisfy him. When you don''t come up with an answer immediately, he softly slaps your face as a warning and the fear of really getting hit by him again let''s you blurt out the first thing that comes to mind...' 
+			*nl
+			'<font color="red">Future Content Warning: Piss drinking</font>'
+			'<font color="red">How will <<$pcs_firstname>> react to drinking piss?</font>'
+			
+			act 'Don''t like it': $wl_fetish['piss_drinking'] = 'no' & gt 'mod_wlife_iosif_sex', 'warehouse_piss_decision'
+			act 'Like it': $wl_fetish['piss_drinking'] = 'yes' & gt 'mod_wlife_iosif_sex', 'warehouse_piss_decision'
+			act '<font color="red">Block this type of content</font>':
+				cla & *nl
+				'... "Nothing," you say and he miraculously accepts that.' 
+				$wl_fetish['piss_drinking'] = 'blocked' & gt 'mod_wlife_iosif_sex', 'warehouse_piss_decision'
+				gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+			end
+		end
+	elseif wl_iosif['pissing'] = 4:
+		wl_stats['respect'] -= 1
+		wl_stats['loyalty'] += 1
+		wl_stats['acceptance'] += 1
+		wl_iosif['pissing'] = 5
+		gs 'pain', 10, 'head', 'slap'
+		if $wl_fetish['piss_drinking'] = 'no': 
+			if pcs_mood > 10: pcs_mood = 10
+			gs 'arousal', 'pee', -1, 'sub', 'humiliation'
+		else
+			gs 'arousal', 'pee', -10, 'sub', 'humiliation'
+		end
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_7.mp4"></video></center>'
+		'"It''s time, I think you''re ready" he says ominously and then orders you to get get down on your knees. "Open your mouth."'
+		'You can imagine what''s going to happen next, when he aims his soft cock at your face, a wave of '+iif($wl_fetish['piss_drinking'] = 'no', 'disgust and horror washes over you, but you keep your face neutral and your mouth open.', 'arousal washes over you as you stick out your tongue a bit eager to taste his piss.')
+		'And then it happens. A stream of hot liquid hits your tongue, but before you can really think about what happened you''re already closing your mouth. It''s like you''re on autopilot, instinctively doing what Iosif expects and wants from you. You swallow it. It''s disgusting. You only manage to swallow half of it down, when your stomach rebells. Piss spills from your mouth and you''re barely able to hold the content of your stomach in.'
+		'"Fucking bitch," he shouts and slaps your face hard. "You should thank me for drinking it and not spitting it out."'
+		'"I''m sorry," you''re barely able to say as you press your hand on your mouth as another wave of nausea hits you hard. "Please give me a second."'
+		'He slaps you again, harder this time. "Remember what you are."'
+		'"A piss whore," you reply while your stomach finally calms down.'
+		'"Exactly and what does a good piss whore do?"'
+		
+		act 'Open your mouth':
+			*clr & cla
+			minut += 6
+			wl_stats['respect'] -= 1
+			wl_stats['loyalty'] += 1
+			wl_stats['acceptance'] += 1
+			pcs_hydra += 10
+			gs 'arousal', 'pee', iif($wl_fetish['pissed_on'] = 'no', -1, -10), 'sub', 'humiliation'
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_8.mp4"></video></center>'
+			'Another stream of urine fills your mouth which makes this one of the most humiliating'+iif($wl_fetish['piss_drinking'] = 'no', ' and disgusting', ', but at the same time arousing')+' moments of your life.'
+			'"And now swallow," he orders you and you follow his command like the good piss whore that you are. '+iif($wl_fetish['piss_drinking'] = 'no', 'A part of you is relieved while the other part hates you for being able to', 'You feel a strange sense of pride as you')+' swallow down all of his liquid without spilling a single drop. Your mouth opens up again and he fills it again and again until he has emptied the whole content of his bladder into you.' 
+			
+			gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+		end
+	elseif wl_iosif['pissing'] > 4:
+		if wl_iosif['pissing'] = 5: wl_iosif['pissing'] = 6
+		if $wl_fetish['piss_drinking'] = 'no': 
+			if pcs_mood > 10: pcs_mood = 10
+			gs 'arousal', 'pee', -1, 'sub', 'humiliation'
+		else
+			gs 'arousal', 'pee', -10, 'sub', 'humiliation'
+		end
+		pcs_hydra += 30
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_9.mp4"></video></center>'	
+		'"Open your mouth toilet," Iosif says. "I need to piss."'
+		iif($wl_fetish['piss_drinking'] = 'no', 'You glare at him, but open your mouth anyway. You hate this so much, but there''s nothing you can do about it.', 'Your cheeks heat and you blush, when arousal flares up inside your body. Only him mentioning you being his toilet makes you wet and you open your mouth eagerly to receive his piss.')
+		'"Thank you for using your toilet," you '+iif($wl_fetish['piss_drinking'] = 'no', 'lie', 'say')+' to make him happy before his warm urine hits your sensitive taste buds. It doesn''t taste as strong as during the first time and you easily swallow one mouthful after another. You suspect that he deliberately drinks a lot of fluids to stretch out the time he can spend with his favorite toilet.'
+		
+		gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+	end
+	gs 'stat'
+end
+
+if $ARGS[0] = 'warehouse_piss_decision':
+	*clr & cla
+	minut += 4
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/warehouse/humiliation_piss_6.mp4"></video></center>'
+	'You blurt out the first thing that comes to mind. "Sucking your cock clean?"'
+	'He relaxes and the corners of his mouth twitch upward mimicking a smile. "Good girl."'
+	'You crawl to him and take his wet dick into your mouth tasting his piss for the first time. Your eyes connect as you lap up the last few drops with your tongue. He looks at you like a proud dog owner who taught his pet a new trick.'
+	if $wl_fetish['humiliation'] = 'yes': 'One part of you wants to wipe the triumphant smile of his face, but the other part loves being humiliated like this and feels a bit proud over being such a good little girl.'
+	'"Do you like it?" he asks. "Maybe you want to drink it next time? Be my toilet?"'
+	iif($wl_fetish['piss_drinking'] = 'yes', '"Yes," you say eagerly after letting his semi-hard dick slip out of your mouth.', 'Of course not, but that''s not something you can say to him. "Yes," you lie instead.')
+
+	gs 'mod_wlife_iosif_sex', 'warehouse_end_piss'
+end
+
+if $ARGS[0] = 'warehouse_end_piss':
+	if wl_pictures['iosif_2'] = 0:
+		*nl
+		minut += 2
+		wl_pictures['iosif_2'] = 1
+		wl_pictures['count'] += 1
+		gs 'stat'
+		'"Wait here and don''t even think about turning on the shower," Iosif says to you sternly and leaves the room for a few minutes. You can''t exactly tell how long he''s gone, but it feels like an eternity and sitting in a cold bathtub drenched in piss isn''t exactly comfortable. He finally returns with your phone in hand. "Unlock it," he commands as he holds the phone in front of you.'+iif(wl_pictures['iosif_2'] = 0, 'What does he want with your phone? You ask yourself not daring to ask him the question. You wipe your piss-covered fingers on a still dry part of your body before sliding your index finger over the screen unlocking it.', ' It''s picture time again you think as you slide your index finger over the screen unlocking it.')
+		'"Hold still, I want you to have a memento." He aims the phone at you. "Smile bitch." You do and he takes the photo. "Perfect," he says '+iif(wl_pictures['start'] = 1 and tatvag = 0 and wl_iosif['tattoo'] = 0, 'and takes a few moments to look at something else on your phone. Suddenly a broad grin appears on his face, but he only says, "clean yourself up,"' , 'before putting down the phone on the edge of the tub "Clean yourself up," is the last thing he says to you')+' before he leaves the bathroom.'
+		if wl_pictures['start'] = 1 and tatvag = 0 and wl_iosif['tattoo'] = 0: wl_iosif['tattoo'] = 1		
+	end
+	*nl
+	'After it''s over you take a quick shower and let the warm water rain down on you to wash away Iosif piss.'
+	'You quickly soap yourself trying not to miss any spot and then wash off.'
+	if hypnoAddict > 0: 'You have no reason to, but you carefully avoid cleaning out your pussy and ass.'
+	
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	act 'Get dressed and leave':
+		minut += 1
+		dynamic $showerdin	
+		if wl_iosif['status'] < 5: wl_iosif['status'] = 5
+		killvar 'wl_temp'
+		if week < 7:
+			gt 'mod_wlife_warehouse', 'street'
+		else
+			gt 'mod_wlife_georgiy', 'leave'
+		end
+	end
+end
+
+if $ARGS[0] = 'warehouse_part_end':
+	*clr & cla
+	minut += 2
+	if wl_iosif['status'] < 5: wl_iosif['status'] = 5
+	killvar 'wl_temp'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'His body is glistening with sweat and he looks exhausted but clearly satisfied. "That was great <<$pcs_nickname>>. I''ll call you when I need you again." This is your cue to leave. You grab your stuff and head out of the warehouse.'
+	
+	if week < 7:
+		act 'Leave': minut += 1 & gt 'mod_wlife_warehouse', 'street'
+	else
+		act 'Leave': minut += 1 & gt 'mod_wlife_georgiy', 'leave'
+	end
+end
+
+!!------ Tattoo Artist ------
+
+if $ARGS[0] = 'tattoo_start':
+	*clr & cla
+	gs 'pain', 10, 'asscheeks', 'slap'
+	gs 'npcgeneratec', 0, 'tattoo artist', 35
+	gs 'boyStat', $npclastgenerated
+	'<center><video autoplay loop src="mod/wlife/images/sex/iosif/tattoo/bj.mp4"></video></center>'
+	'The tattoo artist walks around the chair his cock hanging soft between his legs. This isn''t doing it for him. "Worthless cunt, do your job and get him hard," Iosif tells you angrily and slaps your ass hard like a rider that wants to get his horse moving. You let out a surprised yelp, but quickly regain your composure. You pull the tattoo artist closer and suck his limp dick into your mouth. This is something no man can resist and the cock in your mouth grows hard rapidly.'
+	'"Now fuck her stupid face," Iosif commands. You stop and turn your gaze upwards. Looking into his eyes you give the tattoo artist your approval with the hint of a nod. "What are you waiting for? You didn''t want to use her pussy so fuck her facehole." And he does. It''s like he''s fucking for his life. His cocks pushes roughly down your throat and it''s a completely different experience than the normal deepthroats you do. There is no careful pushing to get it all in. Instead he rams his dick in every second. You can only try to breath in and out between thrusts and keep your mouth open as tears are forced out of your eyes and saliva spills uncontrollably out of your mouth.'
+	
+	gs 'arousal', 'bj', 6, 'sub', 'rough', 'prostitution', 'deepthroat', 'humiliation'
+	gs 'stat'
+	
+	if wl_temp < 2000:
+		act 'Endure it': gt 'mod_wlife_iosif_sex', 'tattoo_end'
+	else
+		act 'Endure it':
+			*clr & cla
+			gs 'pain', 10, 'asscheeks', 'slap'
+			gs 'pain', 10, 'asscheeks', 'slap'
+			gs 'pain', 10, 'asscheeks', 'slap'
+			'<center><video autoplay loop src="mod/wlife/images/sex/iosif/tattoo/anal.mp4"></video></center>'
+			'"It''s time for the main course," Iosif reminds you two. Instantly the guy withdraws from your mouth and hurries around the chair to position himself behind you. In this moment he''s beyond reason. His conscience is suppressed by his arousal and the feeling of control fucking you gives him.'
+			iif(auto_anal_lube = 1 and lubri > 0, '"I have lube in my', '"Be caref')+'...," but it''s too late, you can already feel his dick pushing against your asshole. Even if you didn''t like his rough face fucking, now you''re glad your saliva covers every inch of his cock as he shoves his cock inside with one brutal thrust. He grants you not even a single second to adjust to this intrusion before he fucks you drunk on rough sex.'
+			'"Now we''re talking," Iosif shouts clapping his hands and laughing out loud. "Come on, slap her ass." He does. His hand comes down hard on your cheek. "Again," Iosifs commands. The guy mindlessly obeys and his hand connects again with your flesh. "Yes, hit the fuckmeat," Iosif laughs and you can feel his hand again and again until you lose count.'
+			
+			$orgasm_txt = '"Fuck me harder," you scream. "Slap me again." It''s not only him that has lost his mind. The second your orgasm turns your empty pussy in a trembling hole all the pain is forgotten. You can only feel the pleasure in your ass and the ecstasy emanating from your quivering cunt.'
+			gs 'arousal', 'anal', 9, 'sub', 'rough', 'prostitution', 'humiliation'
+			gs 'stat'
+			
+			act 'Continue': gt 'mod_wlife_iosif_sex', 'tattoo_end'			
+		end
+	end
+end
+
+if $ARGS[0] = 'tattoo_end':
+	*clr & cla
+	minut += 3
+	gs 'mod_wlife_functions', iif(wl_temp = 2000, 'std_check', 'std_check_oral')
+	'<center><video autoplay loop src="mod/wlife/images/sex/iosif/tattoo/end_'+iif($wl_fetish['atm'] = 'yes', 'atm', 'normal')+'.mp4"></video></center>'
+	if wl_temp = 2000: 
+		'Suddenly there is an empty feeling between your asscheeks when he pulls his dick out your ass leaving only behind a gaping hole. He hurries around the chair to shoot his cum all over your face.'
+	else 
+		'Suddenly there is a weird emptiness in your mouth and throat as if something was missing. You have grown so accustomed to his cock that it takes you a second to realize, he has pulled out. At the same time his warm seed already lands on your face and covers you in cum.'
+	end
+	
+	if $wl_fetish['atm'] = 'yes' and wl_temp = 2000:
+		if pcs_horny < 100: pcs_horny += 20
+		'"Suck it clean," Iosif tells you. The excitement is clearly audible in his voice, but this time it''s something you''re both excited about. Curiosity and arousal ensnare you. You eagerly close your lips around the tip of his cock. A cock that was in your ass just seconds ago. It''s so nasty, so filthy and so damn hot. You swirl your tongue around the sensitive head before running your tongue down his length and at some point even swallowing it down completely to give it a thorough cleaning. "Damn you''re such a nasty bitch," Iosif tells you, but he at the same time can''t stop watching. His eyes follow every move your tongue makes.'		
+		gs 'arousal', 'bj', -4, 'sub', 'prostitution', 'humiliation'
+	elseif $wl_fetish['atm'] = 'no' and wl_temp = 2000:
+		pcs_horny = 0
+		'"Suck it clean," Iosif tell you. The excitement is clearly audible in his voice. Something you definitely not share with him. That cock was in your ass just a second ago. You really, really, really don''t want to. "Do it!" Iosif voice cuts through your doubts like a machete. You close your lips around the tip of his cock, hold it there for a few seconds before letting it slip out again. You anxiously look to Iosif, but he seems fine with the token effort you put in. Maybe that was his only goal to force you to humiliate yourself by tasting your own ass.' 
+	end
+	gs 'cum_call', 'face', 'tattoo_artist'
+	gs 'arousal', 'end'
+	gs 'stat'
+
+	act 'Clean yourself up': 
+		minut += 3
+		cumspclnt = 20
+		gs 'cum_cleanup'
+		gt 'mod_wlife_tattoo_piercing', 'tattoo_5'
+	end
+end
+
+--- mod_wlife_iosif_sex ---------------------------------

+ 518 - 0
locations/mod_wlife_maxim.qsrc

@@ -0,0 +1,518 @@
+# mod_wlife_maxim
+
+!!------ First meet ------
+
+if $ARGS[0] = 'warehouse':
+	*clr & cla
+	minut += 2
+	if pcs_horny > 10: pcs_horny -= 10
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	if wl_maxim['status'] = 0:
+		'The warehouse is full of guys, when you return from your weekly check-in with Georgiy and you only make it halfway through the hall before a guy stops you. He''s in his late forties maybe early fifties and there is no way to describe him as handsome. His thinning hair, unshaven pudgy face and overweight body don''t fit the other guys that work for the Bely''s. They''re usually younger and leaner.'
+		'"Hi...," he says without looking at you. "I... I don''t think we have met yet," the man says insecure and holds out his hand, "I''m Maxim."'
+		'"<<$pcs_firstname>>," you reply while shaking his surprisingly soft, but sweaty and trembling hand.'
+		'"I don''t know how to say it in a nice way, so I''ll just blurt it out," he says his face turning slightly red. "You...You''re one of Georgiy''s... working girls,... right?" he asks. You sigh silently, but there''s no point in denying what you are and you acknowledge it with a nod while his face takes on the color of a fire hydrant. "So... uhm...," he stammers and nervously rubs the back of his neck with his right hand. He lacks the condescending attitude and confidence that most of the gang members project.'
+		'A few more seconds pass, but he still doesn''t manage to say anything else. It''s clear to you that he wants to, but isn''t confident enough to ask you for your services. Should you offer them to him or say goodbye?'
+		
+		act 'Say goodbye':
+			cla & *nl
+			wl_maxim['status'] = 1
+			wl_maxim['timer'] = daystart + 7
+			'"Uhm... OK, I have to go. It was nice meeting you Maxim," you tell him with a plastered on smile. He looks disappointed. "Oh,... of course. Have a nice day, <<$pcs_firstname>>," he stammers and walks away.'
+			
+			act 'Leave the warehouse': minut += 1 & gt 'mod_wlife_warehouse', 'street'
+		end
+		
+		gs 'mod_wlife_maxim', 'warehouse_act'	
+	elseif wl_maxim['status'] = 1:
+		wl_maxim['timer'] = daystart + 7
+		'You spot a familiar face on your way out. It''s Maxim. He''s standing near the exit and he takes a step in your direction, when he sees you, but doesn''t come any closer. You could just keep walking or are you going to offer your services to him?'
+		
+		act 'Leave the warehouse': minut += 1 & gt 'mod_wlife_warehouse', 'street'
+		
+		gs 'mod_wlife_maxim', 'warehouse_act'
+	end
+end
+
+if $ARGS[0] = 'warehouse_act':
+	gs 'mod_wlife_functions', 'will_acceptance', 'self'
+	if will_cost <= pcs_willpwr:
+		act 'Offer your services (<<will_cost>> Willpower)':
+			gs 'mod_wlife_functions', 'will_acceptance', 'self'
+			gs 'willpower', 'pay', 'self'
+			gt 'mod_wlife_maxim', 'first_time_0'
+		end
+	else
+		act 'Offer your services (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'first_time_0':
+	*clr & cla
+	minut += 2
+	wl_stats['respect'] -= 2
+	gs 'willpower', 'pay', 'self'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	'"'+iif(wl_maxim['status'] = 1, 'Is', 'Was')+' there a reason you came to talk to me '+iif(wl_maxim['status'] = 2, 'a few weeks ago', 'Maxim')+'?" You ask in a reassuring tone. "Maybe you want to spend some time with me?" He quickly nods, but avoids looking into your eyes. Instead his gaze is fixed on the ground. If he wasn''t fifty it would have been adorable. "I... I...," he stammers nervously.'
+	'"What''s the problem? I promise I don''t bite. Except if you want me to," you joke and he releases a nervous chuckle.'
+	'"I''m sorry, I''m not...," he stops searching for the right words. "Not good at talking to girls?" you suggest and he nods. "If talking is the problem, why don''t we skip that part? You don''t have to woo me."'
+	'"Oh, sure...," he realizes the truth behind your words and for the first time he looks up. "And how... I mean, what are the next steps?"'
+	'Next steps? Is he serious? It''s like talking to an awkward teenager and not a grown man. Suddenly a familiar voice sounds behind you. "Still here?" It''s Georgiy who seems to be on his way out. You turn around and open your mouth to answer him, when you realize that he isn''t talking to you. He''s addressing Maxim. "I thought we discussed everything or did we miss something?"'
+	'Maxim shakes his head. "No, everything is fine Mr. Bely," Maxim tells Georgiy confidently. His voice isn''t trembling like a few seconds ago. Georgiy looks at you and you can see the realization dawning on his face. "Good Choice, Maxim." Georgiy says and walks away without saying another word.'
+	'For a moment you and Maxim are silent. Both of you are waiting for Georgiy to be out of earshot. "Can we move this conversation outside away from prying eyes?" you ask him. The arrival of Georgiy has drawn the attention of the other guys. Maxim seeing the same thing nods and walks outside.'	
+	wl_maxim['status'] = 2
+				
+	act 'Follow him':
+		*clr & cla
+		minut += 2
+		wl_maxim['love'] = 1
+		wl_maxim['payment'] = 1500
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+		'"So...," Maxim says, when you are alone and outside.'+iif(wl_shura['status'] > 2, ' It seems that even Shura isn''t in his usual place. ', ' ')+'The short burst of confidence, Maxim experienced when Georgiy arrived, has drained from his body again. This is going nowhere fast. Either you take charge or you''ll have to wait a week before he can muster the strength to speak to you. "Here is the deal. You pay me upfront, we agree on the terms and do it. If we don''t agree, we walk away. OK?"'
+		'"Yes, I only want to sleep with you... nothing special... are 500 <b>₽</b>..."'
+		'"1,500 <b>₽</b>," you interject immediately with all the confidence you can muster. For a second he looks at you like a deer caught in a headlight, before he nods several times. "Of course, sorry... 1,500 <b>₽</b>."'
+		'Shit, you think. You probably could have demanded even more. He''s so insecure around woman that he would probably agree to anything. But it''s too late now. "Do you have a place, where we can go?"'
+		'"Uhm... yes, I''m booked into the hotel at the train station," he replies shyly.'
+		'"A hotel room? You aren''t living in Pavlovsk?" You inquire, but it''s futile to talk to him. He only nods and doesn''t talk to you.' 
+			
+		act 'Go to his hotel':
+			*clr & cla
+			minut += 15
+			gs 'fame', 'pav', 'prostitute', 2
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/locations/city/shared/trainstation/vokzal.jpg"></center>'
+			'The whole time during your silent walk you wonder what he''s doing for the Bely''s. He obviously isn''t living in Pavlovsk and his whole demeanor doesn''t fit. Maybe the Bely''s have operations in other cities and he came to report to Georgiy like you do? But there is no way you can get answers to your questions right now. Every time you try to talk to Maxim he shuts down again and you can''t get a word or two out of him.'
+			*nl
+			'When you reach the hotel at the train station a thought crosses your mind. It will be pretty obvious to anyone inside why you''re here. You can''t pass as his daughter and a young girl entering a hotel room with a middle aged man will look highly suspicious'+iif(PCloStyle = 4, ', especially since you''re dressed like a hooker.', '.')+' Maybe you should wait outside for a few minutes and let him go up first?'
+						
+			act '... don''t say anything':
+				cla & *nl
+				minut += 1
+				gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4, 6, 2)
+				gs 'stat'
+				'You give yourself a mental push and follow him inside. The receptionist and several people are in the lobby and a few eyes follow you from the entrance to the elevator.'
+				
+				act 'Follow him to his room': gt 'mod_wlife_maxim', 'first_time_1'
+			end
+			
+			act '... tell him you will wait a few minutes':
+				cla & *nl
+				minut += 5
+				wl_maxim['love'] -= 1
+				gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4, 3, 1)
+				gs 'stat'
+				'"Maxim, could you give me your room number? I''ll wait outside for a few minutes," you say to him.'
+				'"Why... What''s the problem? Don''t want to be seen with...," he asks meekly and you can guess that the last word he couldn''t say to you was ''me''.'
+				'"No, no. Of course not," you try to reassure him, "but it''s pretty obvious what''s going on here and we don''t want to draw any attention to it or do we?"'
+				'He shakes his head. "I get it. I''m in room 307," he tells you still a bit upset before going inside.'
+			
+				act 'Follow him to his room': gt 'mod_wlife_maxim', 'first_time_1'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'first_time_1':
+	*clr & cla
+	minut += 2
+	wl_investigation['maxim'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	'"Nice room," you say when the door is closing behind you and you take in the modern room. It''s definitely more expensive than most other rooms the hotel has to offer. On a small table stands an open laptop beside some paper folders and a calculator.'
+	'"Sorry, it''s work stuff," he apologizes closing the laptop. You can only see for a split second what''s displayed on the screen, but you''re sure it was an excel sheet with a lot of numbers. Does he have a normal job? Or maybe he''s the Bely''s numbers guy?'
+	'"What do you do for a living? It looked complicated," you say as you casually step next to him and try to open one of the paper folders. He instantiate snatches the folder away and puts everything onto a pile of clothing in an open suitcase. "You wouldn''t like it, it''s boring stuff," he mumbles as he closes the lit of the suitcase.'
+	'"Come on, try me. Maybe I find it interesting," you suggest in a flattery tone of voice, but he shakes his head several times. "No, <<$pcs_firstname>>. I''m really not suppose to. I... We could get into trouble."'
+	'Interesting, you think your eyes fixed on the suitcase as you wonder what he''s doing for the Bely''s. The spell is broken, when he steps in your field of vision holding 1,500 <b>₽</b> and a condom in his hands. Right, you think. You didn''t come here to talk.'
+	
+	gs 'mod_wlife_maxim', 'forgo_condom'
+	
+	act 'Take your money and undress':
+		minut += 1
+		money += wl_maxim['payment']
+		wl_maxim['condom'] = 1
+		gt 'mod_wlife_maxim_sex', 'hotel_first_start'
+	end
+end
+
+if $ARGS[0] = 'forgo_condom':
+	gs 'mod_wlife_functions', 'will_unprotected', 'self'
+	if will_cost <= pcs_willpwr:
+		act 'Suggest to forgo the condom (<<will_cost>> Willpower)': 
+			cla & *nl
+			minut += 1
+			wl_maxim['condom'] = 0
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"If you want, we could forget about the condom," you suggest. "You don''t seem like the kind of guy I would have to worry about... you know... stuff and I''m clean as a whistle," you '+iif(venera > 0, 'lie', 'say')+' with a sweet smile.'
+			'He opens his eyes wide in surprise and hesitates for a second before putting the condom back into his wallet while smiling like a kid in a candy store.'
+					
+			gs 'willpower', 'misc', 'force', 'easy'
+			if will_cost <= pcs_willpwr:
+				act 'Demand more money (<<will_cost>> Willpower)':
+					cla & *nl
+					minut += 1
+					wl_maxim['payment'] += 1000
+					money += wl_maxim['payment']
+					gs 'willpower', 'pay', 'force'
+					gs 'stat'
+					'"For a price of course," you add and sweep the smile from his face with those words, but you don''t care. This is a business arrangement not a charity.'
+					'"Is this OK?" he asks and hands you 1,000 <b>₽</b> more.'
+					'You hesitate for a second as if you would have to think about it. "But only because it''s you," you say as you pocket the cash and the corners of his mouth tug up again.'
+							
+					act 'Undress': gt 'mod_wlife_maxim_sex', 'hotel_'+iif(wl_maxim['status'] < 3, 'first', 'repeat')+'_start'
+				end
+			else
+				act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+
+			act 'Take your money and undress':
+				minut += 1
+				money += wl_maxim['payment']
+				wl_maxim['love'] += 1
+				gt 'mod_wlife_maxim_sex', 'hotel_'+iif(wl_maxim['status'] < 3, 'first', 'repeat')+'_end'
+			end
+		end
+	else
+		act 'Suggest to forgo the condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>' 
+	end
+end
+
+!!------ Call for the repeatable event ------
+
+if $ARGS[0] = 'call':
+	*clr & cla
+	minut += 1
+	wl_maxim['timer'] = daystart + rand(5,12)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	if wl_maxim['status'] < 3:
+		'An unknown number is calling you.'
+	
+		act 'Don''t answer it': gt $loc, $metka
+	
+		act 'Answer it':
+			cla & *nl
+			minut += 2
+			wl_maxim['status'] = 3
+			wl_maxim['week'] = week + 1
+			wl_maxim['day'] = daystart
+			gs 'stat'
+			'"Hello <<$wl_names[''maxim'']>>," the voice of a man you don''t immediately recognize greets you. "It''s Maxim."'
+			'"Oh, hi Maxim, how are you?"'
+			'Two seconds pass before you hear his reply. "Uhm... I''m fine, thanks for asking <<$wl_names[''maxim'']>>," he says in his insecure way. "I... do you... I''m in Pavlovsk tomorrow and... ."'
+			'"You want to see me?" you ask to move the conversation along.'
+			'"Yes, I''ll be in room 114 and I expect to be back in my room at 21:00. If you find the time... and I understand if you can''t, you can come visit me," he hesitates again before he adds, "I have to go, bye <<$wl_names[''maxim'']>>."'
+			'"Maxim...," you wait a second and listen before looking at your phone. He hung up. You guess it''s easier for him to just end the call. This way he doesn''t have to hear a possible rejection. You save his number and make a note in your calendar that you can visit him tomorrow if you want to.'
+			
+			act 'Put your phone away': gt $loc, $metka
+		end
+	else
+		wl_maxim['day'] = daystart
+		wl_maxim['week'] = week + 1
+		'Maxim has send you a message:'
+		'<br><i>Hello <<$wl_names[''maxim'']>>, I''ll be in Pavlovsk tomorrow. If you have time, I would like to meet you in my hotel room. I''ll be there after 21:00, number <<rand(1,3)>><<rand(0,2)>><<rand(0,9)>>.</i>'
+		
+		act 'Put your phone away': gt $loc, $metka
+	end
+end
+
+!!------ Repeatable event ------
+
+if $ARGS[0] = 'start':
+	*clr & cla
+	minut += 3
+	menu_off = 1
+	pcs_horny -= iif(pcs_horny > 20, 20, 0)
+	gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4, 3, 1)
+	wl_maxim['week'] = 0
+	if wl_maxim['status'] = 3: wl_maxim['status'] = 4
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/maxim_laptop.jpg"></center>'
+	'You knock at the door and you only have to wait a few seconds before Maxim appears and ushers you inside. The room is furnished like the other hotel room. A king size bed, two chairs and a small table stands below a wall-mounted TV. What catches your eye is the thing on the table. There are no paper folders like last time, but the laptop is back. The screen only shows a windows login screen.'
+	
+	act 'Be cold to him': wl_temp = 0 & gt 'mod_wlife_maxim', 'greet'
+			
+	act 'Be nice to him': wl_temp = 1 & gt 'mod_wlife_maxim', 'greet'		
+			
+	gs 'willpower', 'kiss', 'self', iif($wl_whore['kiss'] = 'yes', 'easy', 'medium')
+	if will_cost <= pcs_willpwr:
+		act 'Kiss him on the cheek (<<will_cost>> Willpower)':
+			wl_temp = 2
+			gs 'willpower', 'pay', 'self'
+			gt 'mod_wlife_maxim', 'greet'
+		end
+	else
+		act 'Kiss him on the cheek (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>' 
+	end
+end
+
+if $ARGS[0] = 'greet':
+	*clr & cla
+	minut += 6
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	if wl_maxim['love'] < 10:
+		'"Hello <<$wl_names[''maxim'']>>," Maxim greets you without being able to look at you. His eyes are fixed on the carpet and his hands move around nervously until he pushes them inside the pockets of his pants. It will take him more time to get comfortable around you.'
+	elseif wl_maxim['love'] < 20:
+		'"<<$wl_names[''maxim'']>>, thanks for finding the time to meet me," he beams and is clearly very happy to see you. He still has some problems looking directly at you, but maybe that''s as good as it gets. It''s a pretty huge step for him to look a girl in the eye without being on the edge of a nervous breakdown.'
+	else 
+		'"Hi <<$wl_names[''maxim'']>>, I missed you so much," he says to you while he looks directly at you without showing any signs of being nervous. It took him some time, but he seems to be perfectly comfortable around you.'
+	end
+	
+	*nl
+	
+	if wl_temp = 0:
+		if wl_maxim['love'] > 0: wl_maxim['love'] -= 1
+		'"Maxim," you say coldly and without a smile. Arms crossed in front of your chest you add, "do you have my money?"'
+		'It would be the understatement of the year to say that he looks disappointed. The corners of his mouth tug downward and his skin becomes pale. "Uhm... sure. <<$wl_names[''maxim'']>> I have it all here." He goes to the small table, picks up an envelop and hands it to you. "It''s all there. <<wl_maxim[''payment'']>> <b>₽</b>," he assures you, but you still take the time to count it to make sure.'
+	elseif wl_temp = 1:
+		wl_maxim['love'] += 1
+		'"Hi, Maxim. It''s good to see you again," you say and accompany your greeting with a warm smile. "I was really looking forward to it after our last time." His face turns red, but'+iif(wl_maxim['love'] < 20, ' he manages to look up and ', ' ')+'a gigantic smile blossoms on his face. "Me too."'
+		'"Oh...," he says as if he remembers something important and quickly goes to the table to grab an envelop. "You can count it if you want, but it''s all there," he says as he hands you the envelop. You put it into your purse without even opening it. "No, I trust you Maxim."'
+		
+		gs 'mod_wlife_maxim', 'nickname_action'
+	elseif wl_temp = 2:
+		wl_maxim['love'] += rand(1,2)
+		gs 'arousal', 'kiss', -2
+		gs 'stat'
+		'You lean in close and give him a quick peck on his chubby cheek. His face immediately turns as red as a tomato and his right hand carefully touches his cheek as if he can''t believe that you kissed him like that. "Hi, Maxim. I missed you'+iif(wl_maxim['love'] < 20, ',', ' too,')+'" you say standing very close to him.'
+		'He swallows hard and takes a step back, overwhelmed by the situation. It takes him a moment before he can speak again, but his voice sounds a lot more confident than usual. '+iif(wl_maxim['love'] < 20, '"I missed you too."', '"I couldn''t wait to see you again. I hate every day that I can''t spend with you."')
+		'"Oh...," he says as if he remembers something important and quickly goes to the table to grab an envelop. "You can count it if you want, but it''s all there," he says as he hands you the envelop. You put it into your purse without even opening it. "No, I trust you Maxim," you reply and give him another kiss on the cheek.'
+		gs 'mod_wlife_maxim', 'nickname_action'
+	end
+	
+	gs 'mod_wlife_maxim', 'undress_action'	
+end
+
+if $ARGS[0] = 'undress_action':
+	if wl_maxim['condom'] = 1 or wl_maxim['status'] < 4: gs 'mod_wlife_maxim', 'forgo_condom'
+	
+	act 'Pocket the cash and undress':
+		minut += 1
+		money += wl_maxim['payment']
+		gt 'mod_wlife_maxim_sex', 'hotel_repeat_start'
+	end
+end
+
+if $ARGS[0] = 'nickname_action':
+	if (wl_maxim['bonus'] = 0 and wl_maxim['love'] > 10) or (wl_maxim['bonus'] = 1 and wl_maxim['love'] > 20):
+		wl_maxim['bonus'] += 1
+		wl_maxim['payment'] += 500
+		'"Oh, I put some extra in there. Not much, but you really deserve it." This changes your mind and you quickly check the sum. There are 500 <b>₽</b> more inside.'
+	end
+	
+	if $wl_names['maxim'] ! $pcs_nickname:
+		act 'Tell him to call you <<$pcs_nickname>>':
+			cla & *nl
+			wl_maxim['love'] += 1
+			$wl_names['maxim'] = $pcs_nickname
+			'"By the way," you say offering him a bright smile. "Why don''t you call me <<$pcs_nickname>>? All my friends call me that."'
+			'"Sure, <<$pcs_nickname>>. I would like that," Maxim replies a bit shyly like always, but also clearly happy that you suggested it.'
+				
+			gs 'mod_wlife_maxim', 'undress_action'
+		end
+	end
+end
+
+if $ARGS[0] = 'cuddle':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	if wl_maxim['status'] = 4:
+		minut += 4
+		wl_maxim['status'] = 5
+		gs 'stat'
+		'Exhausted he falls back onto the bed. His face and body look sweaty and he''s still breathing heavily as if he has run a marathon. This is definitely more exercise than he get''s in any given month. But something is wrong, something is different than usual. His breathing becomes even more shallow. "Are you alright?" you ask concerned. Even if he isn''t dying, a medical emergency could lead to series of awkward questions by the EMTs. It won''t be easy to explain why a'+iif(age < 18, 'n underage ', ' ')+'girl was with a naked middle aged man in a hotel room.'
+		'To your horror he shakes his head. "No," he wheezes. "Asthma. My inhaler." He points at the bathroom door while he''s barely able to sit up.'
+		'Shit, shit, shit... you jump up and hurry to the bathroom having no idea what exactly you''re looking for. "Inhaler, inhaler," you mumble while you look around. There''s a toiletry bag sitting next to the sink and opening it up reveals a white and blue inhaler. You grab it, hurry back to him. "This?" He nods and grabs it from you open hand. One push at the top and the live saving drugs flood his lungs and only a few seconds later the wheezing stops and his breathing normalizes. "Thanks," he says sounding incredibly grateful. You smile and let out a sigh of relieve. You sit down next to him and stroke his back.'
+		
+		act 'Stay with him a while longer':
+			*clr & cla
+			minut += 12
+			wl_maxim['love'] += 3
+			wl_investigation['maxim'] = 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+			'"You gave me quite the scare," you tell him. "Are you sure you''re alright now?"'
+			'He nods and leans back against the headboard. "I''m fine now. You don''t have to worry about me, you can go," he says absolving you of having to stay, but you shake your head. You''re not leaving now. A few minutes more can''t hurt. So instead of getting ready to leave, you put your head on his shoulder. His body tenses for a moment, but he doesn''t complain.'
+			'You turn your body to face him, your youthful breasts brushing against his side. "Does this happen often?" You ask putting your right hand on his chest directly above his lungs.'
+			'"Sometimes," he answers evasively. "Most of the time it''s fine."'
+			'"I bet it makes it easier, that you don''t have to exert yourself like this at your job," you smile and stroke his chest like a seductive minx. You just had an idea. This could be the best opportunity to coax some information out of him. "Not that it isn''t stressful, but not in a physical kind of way," you wait two seconds before adding casually, "what was is you''re doing? Something complicated with numbers, right?"'
+			
+			act 'Continue':
+				*clr & cla
+				minut += 6
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+				'"Something with numbers? You could say that. But I don''t want to bore you. It''s really not that exiting," he says self-depreciatingly.'
+				'"Don''t sell yourself short," you note. "It''s maybe not ''cool''," you roll your eyes to emphasize your words, "but doing such complicated stuff is still impressive."'
+				'"But...," he tries to say, but you put one finger on his lips to shut him up. "Why don''t you tell me about it and let me be the judge if it''s exciting?"'
+				'He hesitates and his cheeks slightly turn pink. "Uhm... but only if you really want to." You nod. It would be so much easier if he was more like the typical guy, boasting and bragging about how great he was. "I''m only an accountant. I take care of the Belys financial interests, their taxes and similar things." Booooooring... you think stretching out the word in your mind as he looks at you sceptically, but he continues, when you don''t say anything to stop him. "I manage all their official payments for their legitimate businesses."'
+				'"They have legitimate businesses?" you ask. "Why?"'
+				'He hesitates, but he either thrusts you or doesn''t see a <<age>> year old girl as a threat. "Since most of their income comes from... let''s say questionable sources, they need a way to turn that cash into legal income. Buying cars, houses and businesses with cash attracts unwanted attention, even in Russia." He pauses for a moment to think about what he said. "Maybe I shouldn''t talk to you about such things." This isn''t a good moment to push further. It''s better to reassure him that everything is OK, so you say, "if you don''t want to talk about it, you don''t have to. I only wanted to know a bit more about you."'
+					
+				act 'Clean up and get ready to leave': gt 'mod_wlife_maxim', 'cuddle_end'
+			end
+		end
+	elseif wl_maxim['status'] > 4:
+		minut += 3
+		wl_maxim['love'] += 1
+		gs 'stat'
+		'Both of you slump down on the bed, Maxim way more exhausted than you. He needs a few minutes to catch his breath as you snuggle against him. "<<$wl_names[''maxim'']>>," he says sounding unsure.'
+		'"Yes?" you ask lifting your head, that was resting on his chest, to look at him. "Something on your mind?"'
+		'He opens his mouth, but only closes it again to shake his head. "No, it''s nothing," he says and wriggles free from your embrace. "Bathroom," he explains and rushes out of the room.'
+		
+		act 'Get ready to leave': wl_temp = 1 & gt 'mod_wlife_maxim', 'no_cuddle_end' 
+		act 'Wait for him': gt 'mod_wlife_maxim', 'cuddle_part2'		
+		
+		gs 'willpower', 'misc', 'self', 'easy'
+		if wl_investigation['maxim'] < 4 and will_cost <= pcs_willpwr: 
+			act 'Take a look at his laptop (<<will_cost>> Willpower)':
+				gs 'willpower', 'pay', 'self'
+				gt 'mod_wlife_maxim', 'password_check'
+			end
+		elseif wl_investigation['maxim'] < 4 and will_cost > pcs_willpwr:
+			act 'Take a look at his laptop (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>' 
+		end
+	end
+end
+
+if $ARGS[0] = 'password_check':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/login_screen.png"></center>'
+				
+	act 'Go back on the bed': gt 'mod_wlife_maxim', 'cuddle_part2'	
+		
+	if wl_maxim['password_known'] = 0:
+		'You could try to get access to his computer, but you''ll have to guess his password.'
+		if wl_maxim['password_0'] = 0: act '123456': wl_maxim['password_0'] = 1 & gt 'mod_wlife_maxim', 'password_fail'
+		if wl_maxim['password_1'] = 0: act '654321': wl_maxim['password_1'] = 1 & gt 'mod_wlife_maxim', 'password_fail'
+		if wl_maxim['password_2'] = 0: act 'Password': wl_maxim['password_2'] = 1 & gt 'mod_wlife_maxim', 'password_fail'
+		if wl_maxim['passwords_known'] = 1: 
+			act 'Arthur, his dogs name': gt 'mod_wlife_maxim', 'password_success'
+			if wl_maxim['password_3'] = 0: act 'Marina, his mothers name': wl_maxim['password_3'] = 1 & gt 'mod_wlife_maxim', 'password_fail'
+			if wl_maxim['password_4'] = 0: act 'Elena, his first love': wl_maxim['password_4'] = 1 & gt 'mod_wlife_maxim', 'password_fail'
+		end
+	elseif wl_maxim['password_known'] = 1 and wl_status['usb'] = 2:
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/usb_drive.jpg"></center>'
+		'You already know the password, it''s Arthur his dog''s name. Now is the time to copy all of Maxim''s files onto your usb-drive.'
+				
+		act 'Copy the files': gt 'mod_wlife_maxim', 'copy_files'
+	end
+			
+	if wl_status['usb'] < 2:
+		wl_status['usb'] = 1
+		'<br>You need to buy an usb-drive if you want to copy any data you find. You know that the local shop in the commercial area of Pavlovsk sells them.'
+	end
+end
+
+if $ARGS[0] = 'password_fail':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/login_screen.png"></center>'
+	'A message appears: <i>The password is incorrect. Please try again.</i>'
+	
+	if wl_maxim['password_checks'] < 2:
+		wl_maxim['password_checks'] += rand(0,2)
+		act 'Try again': gt 'mod_wlife_maxim', 'password_check'
+	else
+		wl_maxim['password_checks'] = 0
+		'<br>You can hear him flush the toilet. You have run out of time.'
+		act 'Go back on the bed': gt 'mod_wlife_maxim', 'cuddle_part2'
+	end
+end
+
+if $ARGS[0] = 'password_success':	
+	*clr & cla
+	minut += 1
+	wl_investigation['maxim'] = 3
+	wl_maxim['password_known'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/desktop.jpg"></center>'
+	'It worked! You''re in. Now you have to be quick. You open up excel and check the list of the last files he opened. It makes sense that those are the ones about the Belys since he met with them this evening. You don''t pay any attention to the content of the files. For now you''re only interested in the location where he saved them.'
+	
+	if wl_status['usb'] = 2:
+		act 'Copy the files': gt 'mod_wlife_maxim', 'copy_files'
+	else
+		'<br>You need to buy an usb-drive if you want to copy the files. You know that the local shop in the commercial area of Pavlovsk sells them.'
+		act 'Go back on the bed': gt 'mod_wlife_maxim', 'cuddle_part2'
+	end
+end
+
+if $ARGS[0] = 'copy_files':
+	*clr & cla
+	minut += 2
+	wl_investigation['maxim'] = 4
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/usb_drive.jpg"></center>'
+	'You quickly get your usb-drive from your purse and copy all folders that have something to do with the Bely''s onto your usb-drive. Thank god excel-sheets are so small. It takes only a few seconds for the process to complete. You pull out your usb-drive, put it back in your purse and...'
+					
+	act '... get back on the bed': gt 'mod_wlife_maxim', 'cuddle_part2'
+end
+
+if $ARGS[0] = 'cuddle_part2':
+	*clr & cla
+	pcs_mood += 10
+	minut += rand(15,30)
+	if rand(0,100) > 95: willpowermax += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	'Maxim and you stay in bed for some time and talk about everything. He finally has opened up to you and talks about his personal and professional life. He tells you about his controlling mother Marina who died a few years ago, but his made his childhood hell. He bitches about his job and his annoying colleagues who don''t respect his work. That seems to be one of the reasons why he''s working for the Belys. They appreciate his talents. At the end his mind wanders back again to his childhood and he tells you about his first girlfriend Elena. Who constantly abused him verbally like his mother. The only thing that really makes him happy is talking about his dog Arthur.'
+	'It''s a bit sad, you''re probably the only girl he can talk to and even if it''s not the most interesting conversation you had, you feel a bit better about yourself. This is more than just sex for him and you clearly brighten his day by listening to him.'
+
+	if wl_maxim['passwords_known'] = 0: 
+		wl_maxim['passwords_known'] = 1
+		'<br>There are three names in the conversation that stick out to you, Arthur, Marina and Elena. Maybe one of those is his password?'
+	end
+		
+	act 'Clean up and get ready to leave': gt 'mod_wlife_maxim', 'cuddle_end'
+end
+
+if $ARGS[0] = 'cuddle_end':
+	*clr & cla
+	minut += 10
+	cumspclnt = 20
+	gs 'cum_cleanup'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	'Maxim is already dressed and sitting on the edge of the bed, when you leave the bathroom a few minutes later. "I''m heading out," you say.'
+	'"Thanks for seeing me and especially for staying with me. You didn''t have to."'
+	iif(wl_maxim['kiss'] = 1, 'You walk to him and give him a quick peck on the cheek. ','')+'"I didn''t have to, but I wanted to." He smiles wide and his eyes filled with content follow you as you walk outside.'
+								
+	act 'Say goodbye and leave': gt 'mod_wlife_maxim', 'leave_end'
+end
+
+if $ARGS[0] = 'no_cuddle_end':
+	*clr & cla
+	minut += 10
+	cumspclnt = 20
+	gs 'cum_cleanup'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	'Maxim is already dressed and sitting on the edge of the bed, when you leave the bathroom a few minutes '+iif(wl_temp = 1, 'after him', 'later')+'. "I''m heading out," you say.'
+	'"Thanks for seeing me, I really '+iif(wl_maxim['love'] < 10, 'liked', 'loved')+' it."'
+			
+	killvar 'wl_temp'		
+			
+	act 'Say goodbye and leave': gt 'mod_wlife_maxim', 'leave_end'
+end
+
+if $ARGS[0] = 'leave_end':
+	minut += 5
+	wl_maxim['timer'] = daystart + iif(wl_investigation['maxim'] < 4, rand(5,15), rand(10,25))
+	if home_owned[6] = 1 and wl_status['hotel'] = 1 and hotelroom = 1:
+		gt 'mod_wlife_hotelroom', 'room'
+	else
+		gt 'pav_train'
+	end
+end
+
+--- mod_wlife_maxim ---------------------------------
+
+

+ 312 - 0
locations/mod_wlife_maxim_sex.qsrc

@@ -0,0 +1,312 @@
+# mod_wlife_maxim_sex
+
+!!--- First time ------
+
+if $ARGS[0] = 'hotel_first_start':
+	*clr & cla
+	$orgasm_or = 'no'
+	minut += 3
+	cumnostd = 1
+	gs 'boystat', 'A906'
+	if npc_sex['A906'] = 0: guy += 1 & npc_sex['A906'] = 1
+	pcs_horny -= iif(pcs_horny > 20, 20, 0)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+	'You would have guessed that he would be more shy about undressing in front of you, but he removes his clothes without a second thought and lies down on the bed before you have even removed your shoes. You stop for a moment to look at him and he''s as unattractive as you have imagined. He has never exercised a day in his life or spent a large amount of time outside judging from his pale and pudgy body. You smile at him regardless and continue undressing as he watches every move you make, every inch of skin you reveal intensely. '+iif(wl_maxim['condom'] = 1, 'He only takes his eyes of you to put the condom on his small cock.', 'His small cock twitching in anticipation of what is about to happen')
+	
+	act 'Get on the bed':
+		*clr & cla
+		gs 'arousal', 'foreplay', 1, 'prostitution'
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/start_rubbing.mp4"></video></center>'
+		'"You like what you see?" you tease him as you kneel next to him on the bed. His only response is a appreciative ''yes'' as he stretches out a meaty hand to touch you, but pulls back an inch before he reaches you. You force yourself to not roll your eyes and instead plaster an understanding expression on your face. If this is going to happen, you''ll have to take the initiative again. "It''s OK, you can touch me, you have paid for it. Remember?" you remind him, take his soft hand and move it between your legs. You let go of his hand the moment his skin connects with your pussy, but he seems to finally found a drop of confidence and he moves his fingers back and forth between your pussy lips on his own. His cock twitches without you having touched it even once. This will be over quick.'
+		'"Let''s get to the good part," you tell him as you lie down next to him.'
+		
+		act 'Tell him to get on top of you':
+			*clr & cla
+			'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/start_pussy.mp4"></video></center>'			
+			'"Get on top of me," you command as you spread your legs invitingly. You don''t have to tell him twice. He moves on top of you with a speed you didn''t think he was capable of and positions the tip of his cock at the entrance to your hole. He pushes forward, misses, tries again, fails again until he takes his hand to guide his small dick into your slit. He moans and starts to move back and forth, but you know this will be one of those fucks where you wish you could surf on your phone and didn''t have to wait and be bored while the guy goes through the motions. You could just fake it to get it over more quickly and he''ll probably love it, when he thinks he gave you an orgasm.'
+			
+			gs 'arousal', 'vaginal', 2, 'prostitution'
+			gs 'stat'
+			
+			gs 'mod_wlife_maxim_sex', 'fake_actions'
+		end
+	end
+end
+
+if $ARGS[0] = 'hotel_first_end':
+	gs 'mod_wlife_maxim_sex', 'cumshot'
+	
+	act 'Clean up and get dressed':
+		*clr & cla
+		minut += 10
+		cumspclnt = 20
+		gs 'cum_cleanup'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/maxim.jpg"></center>'
+		'Maxim is already dressed and sitting on the edge of the bed, when you leave the bathroom a few minutes later. He''s not looking up, when the door shuts with a soft click behind you. He has reverted back to his introverted self. His finger tremble slightly as if he was nervous about something. Even sleeping together doesn''t seem to do the trick and get him completely out of his shell. "I''m heading out," you say with a pause to see if he reacts. He doesn''t. "It was nice meeting you," you add and after waiting a few additional moments you head for the door.'
+		'"Wait," he says, when it finally bursts out of him and he jumps up to follow you to the door. "I really '+iif(wl_maxim['love'] < 2, 'liked', 'loved')+' meeting you <<$pcs_firstname>>. Could I maybe have your phone number? So I could call you, when I''m back in Pavlovsk?" he blurts out quickly to get it all out there before his courage abandons him again.'
+		*nl
+		'Should you say yes? You don''t get the feeling that he''s a bad guy and the money wasn''t bad for the amount of work you had to do. Or you could just say no and walk away. The sex wasn''t great after all.'
+
+		act 'Yes and be nice about it':
+			cla & *nl
+			wl_maxim['love'] += 1
+			$wl_names['maxim'] = $pcs_nickname
+			'"Of course, Maxim," you say offering him a bright smile after you have dictated him your phone number. "Make sure to save it under <<$pcs_nickname>>. All my friends call me that," you tell him before you close the door behind you.'
+			'"Sure, <<$pcs_nickname>>. I would like that," Maxim replies a bit shyly like always, but also clearly happy that you suggested it.'
+			
+			act 'Leave the hotel': gt 'pavtrain'
+		end
+		
+		act 'Yes and be transactional about it':
+			cla & *nl
+			$wl_names['maxim'] = $pcs_firstname
+			'"Of course, Maxim," you say before dictating him your phone number. "But make sure you can pay, when you call me," you remind him before you close the door behind you.'
+			
+			act 'Leave the hotel': gt 'pavtrain'
+		end
+		
+		gs 'willpower', 'prostitution', 'resist', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'No (<<will_cost>> Willpower, Warning: Blocks all future content with him)':
+				cla & *nl
+				wl_maxim['status'] = -1
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'You shake your head and reply coldly. "Sorry Maxim, but no. This was a one time thing."'
+				
+				act 'Leave the hotel': gt 'pavtrain'
+			end
+		else
+			act 'No (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end
+
+!!------ Repeatable ------
+	
+if $ARGS[0] = 'hotel_repeat_start':
+	*clr & cla
+	minut += 3
+	cumnostd = 1
+	$orgasm_or = 'no'
+	gs 'boystat', 'A906'
+	npc_sex['A906'] = 1
+	pcs_horny -= iif(pcs_horny > 20, 20, 0)
+	'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/start_rubbing.mp4"></video></center>'
+	iif(wl_temp = 0, 'You undress quickly and efficiently, but', 'You smile at him as you give him a little show,')+' he watches every move you make, every inch of skin you reveal intensely. '+iif(wl_maxim['condom'] = 1, 'He only takes his eyes of you to put the condom on his small cock.', 'His small cock twitching in anticipation of what is about to happen')
+	if wl_maxim['love'] < 10:
+		'He stretches out a meaty hand to touch you, but pulls back an inch before he reaches you. You force yourself not roll your eyes. This again? Didn''t you already establish last time that he can touch you. You try not to show your annoyance and instead plaster an understanding expression on your face. "It''s OK, you can touch me, remember?" you remind him, take his soft hand and move it between your legs. You let go it when his skin connects with your pussy, but he seems to finally found a drop of confidence and he moves his fingers back and forth between your pussy lips on his own. His cock twitches without you having touched it even once. This will be over quick again.'
+	else
+		'He doesn''t need an invitation to touch you. He has build up enough confidence to touch you on his own. He moves his meaty fingers back and forth between your pussy lips and even dips a finger inside your hole. He wiggles it around before pulling it out and sticking it in his own mouth. "You taste like heaven," he murmurs with his finger still in his mouth.'
+	end
+	
+	gs 'arousal', 'foreplay', 1, 'prostitution'
+	gs 'stat'
+	
+	act 'Lie down on your back': killvar 'wl_temp' & gt 'mod_wlife_maxim_sex', 'repeat_pussy_0'
+	
+	gs 'willpower', 'kiss', 'self', iif($wl_whore['kiss'] = 'yes', 'easy', 'hard')
+	if will_cost <= pcs_willpwr:
+		act 'Kiss him (<<will_cost>> Willpower)':
+			*clr & cla
+			pcs_horny -= iif(pcs_horny > 20, 20, 0)			
+			gs 'willpower', 'pay', 'self'
+			'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/start_kissing.mp4"></video></center>'
+			if wl_maxim['kiss'] = 0:
+				wl_maxim['kiss'] = 1
+				wl_maxim['love'] += 4
+				'Maxim moves his head slightly to the side and looks away, when you move in closer. "Uhm... <<$wl_names[''maxim'']>>, what are you doing?" You gently put a hand on his face and turn his head so he''s facing you again. "I want to kiss you, do you have a problem with that?"'
+				'Confusion flickers in his eyes. "I... Of course not, but I though whor... girls like you don''t really kiss?'+iif(wl_temp = 2, ' Maybe a peck on the cheek, but no real kissing."', '"')
+				'"You''re a special case," you '+iif($wl_whore['kiss'] = 'yes', 'lie', 'tell him')+' and lean even closer. This time he doesn''t fight it and his eyes flutter shut as your soft lips meet his. You push against his lips with your tongue and after a few tries Maxim understands what you''re trying to do and parts his lips as well. He keeps his eyes closed as your tongues dance around each other.'
+				'His eyes look soft and dreamy, when they slowly open up again. "I really love it, when you do that."'
+				
+				if $wl_whore['kiss'] ! 'yes': $wl_whore['kiss'] = 'yes'
+			else
+				wl_maxim['love'] += 2
+				'He doesn''t fight it. Instead he immediately embraces your kiss and his eyes flutter shut as your soft lips meet his. You push against his lips with your tongue and after a few tries Maxim understands what you''re trying to do and parts his lips as well. He keeps his eyes closed as your tongues dance around each other.'
+				'His eyes look soft and dreamy, when they slowly open up again. "I really love it, when you do that."'
+			end
+		
+			gs 'arousal', 'kiss', 2, 'prostitution'
+			gs 'stat'
+			
+			act 'Lie down on your back': killvar 'wl_temp' & gt 'mod_wlife_maxim_sex', 'repeat_pussy_0'
+		end
+	else
+		act 'Kiss him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'repeat_pussy_0':
+	*clr & cla
+	pcs_horny -= iif(pcs_horny > 20, 20, 0)
+	'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/start_pussy.mp4"></video></center>'	
+	'"Get on top of me," you command as you spread your legs invitingly. You don''t have to tell him twice. He moves on top of you with a speed you didn''t think he was capable of and positions the tip of his cock at the entrance to your hole. He pushes forward, misses, tries again, fails again until he takes his hand to guide his small dick into your slit. He moans and starts to move back and forth, but you know this will be one of those fucks where you wish you could surf on your phone and didn''t have to wait and be bored while the guy goes through the motions.'
+	'He tries so hard, but still fails. It''s not about how he looks or his comparably small penis or his efforts. He''s just not good at it. His technique is lacking any finesse and he never manages to hit the right spots. The worst thing is he knows it. Even if he clearly enjoys it, you can see the doubt in his eyes about his performance. You could just fake it to get it over more quickly and he''ll probably love it, when he thinks he gave you an orgasm.'
+			
+	gs 'arousal', 'vaginal', 2, 'prostitution'
+	gs 'stat'
+	
+	gs 'mod_wlife_maxim_sex', 'fake_actions'
+	
+	gs 'willpower', 'kiss', 'force', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Tell him to kiss you (<<will_cost>> Willpower)':
+			*clr & cla
+			gs 'willpower', 'pay', 'force'
+			wl_maxim['love'] += 2
+			'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/pussy_kissing_0.mp4"></video></center>'
+			'"Kiss me," you tell him on a whim. Lifting your head up a bit you repeat the command. "Please, kiss me." And he does. His lips meet yours in a tender kiss. His movements slow down when his concentration shifts to your mouth. Your tongue meets his, your eyes close and in this moment fucking transforms for him into making love. "<<$wl_names[''maxim'']>>," he moans when he breaks the kiss for a second to catch his breath before he dives back in and your tongues dance around each other.'
+			
+			gs 'arousal', 'kiss', 2, 'prostitution'
+			gs 'arousal', 'vaginal', 2, 'prostitution'
+			gs 'stat'
+			
+			act 'Switch positions':
+				*clr & cla
+				'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/pussy_kissing_'+rand(1,2)+'.mp4"></video></center>'
+				'You switch positions, but the two of you only break the kiss when it''s absolutely necessary. His stamina still isn''t great, but he lasts a bit longer than during your first time. Slowing down and letting him kiss you clearly helped. When he finally breaks the kiss, you open your eyes and see that all his concerns have vanished from his eyes. Instead they are filled with lust, love and longing.'
+				
+				gs 'arousal', 'kiss', 2, 'prostitution'
+				gs 'arousal', 'vaginal', 2, 'prostitution'
+				gs 'stat'
+				
+				gs 'mod_wlife_maxim_sex', 'cumshot_actions'
+			end
+		end
+	else
+		act 'Tell him to kiss you (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'hotel_repeat_end':
+	gs 'mod_wlife_maxim_sex', 'cumshot'
+
+	act 'Clean up and get ready to leave':
+		if wl_maxim['love'] > 15 and wl_maxim['status'] = 4:
+			gt 'mod_wlife_maxim', 'cuddle'
+		else
+			wl_temp = 0 & gt 'mod_wlife_maxim', 'no_cuddle_end'
+		end
+	end
+	
+	if wl_maxim['status'] > 4:
+		gs 'willpower', 'misc', 'self', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Cuddle with him (<<will_cost>> Willpower)':
+				minut += 2
+				cumspclnt = 20
+				gs 'cum_cleanup'
+				gs 'willpower', 'pay', 'self'
+				gt 'mod_wlife_maxim', 'cuddle'
+			end
+		else
+			act 'Ask him to cuddle (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end
+
+!!------ Repeatable and first scene ------
+
+if $ARGS[0] = 'fake_actions':
+	act 'Don''t fake it':
+		*clr & cla
+		minut += 6
+		'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/pussy_'+iif(wl_maxim['status'] < 4, 1, rand(0,3))+'.mp4"></video></center>'
+		'You aren''t in the mood to put on a show for him. He paid to stick his dick inside you, not for you to perform like a pornstar. If he wants you moaning like a bitch in heat, he should try to be actually good in bed.'
+		'Maxim doesn''t seem to care that you just lie there like a doll or at least he isn''t showing it'+iif(wl_maxim['status'] < 4, '  and after a few more minutes his movements become erratic and you know he''s close.', '.')
+			
+		gs 'arousal', 'vaginal', -2, 'prostitution'
+		gs 'stat'
+			
+		gs 'mod_wlife_maxim_sex', 'cumshot_actions'
+	end
+			
+	gs 'willpower', 'misc', 'self', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Fake it (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 3
+			wl_maxim['love'] += 1
+			gs 'willpower', 'misc', 'self', 'easy'
+			gs 'willpower', 'pay', 'self'
+			'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/pussy_'+iif(wl_maxim['status'] < 4, 0, rand(0,3))+'.mp4"></video></center>'
+			'You let out a moan. It''s soft and quiet, but you immediately have his attention, when a second more intense moan leaves your lips and you start to squirm in fake delight. "Yes, fuck me," you say and his eyes shoot up and stare at you as if he has never seen a woman enjoying sex. And maybe he hasn''t, you think, but shove the thought aside and concentrate on your performance. "Fuck me harder," you shout and throw your head back and to your surprise he actually manages to increase his rhythm. But there is no way that he''ll manage to give you a real orgasm.'+iif(wl_maxim['status'] < 4, ' His movements already become a bit more erratic and you know he''s close.', '') 
+				
+			gs 'arousal', 'vaginal', -2, 'prostitution'
+			gs 'stat'
+			
+			gs 'mod_wlife_maxim_sex', 'cumshot_actions'
+		end
+	else
+		act 'Fake it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'cumshot_actions':
+	if wl_maxim['condom'] = 1:
+		wl_maxim['internal'] = 0
+		act 'Continue': gt 'mod_wlife_maxim_sex', 'hotel_'+iif(wl_maxim['status'] < 4, 'first', 'repeat')+'_end'
+	else
+		act 'Don''t say anything':
+			wl_maxim['internal'] = 0
+			wl_stats['unprotected'] += 1
+
+			gt 'mod_wlife_maxim_sex', 'hotel_'+iif(wl_maxim['status'] < 4, 'first', 'repeat')+'_end'
+		end	
+		gs 'willpower', 'cum_inside', 'resist', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Tell him to pull out (<<will_cost>> Willpower)':
+				wl_maxim['internal'] = -1
+				gs 'willpower', 'cum_inside', 'resist', 'easy'
+				gs 'willpower', 'pay', 'resist'
+				gt 'mod_wlife_maxim_sex', 'hotel_'+iif(wl_maxim['status'] < 4, 'first', 'repeat')+'_end'
+			end
+		else
+			act 'Tell him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		gs 'willpower', 'cum_inside', 'self', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Tell him to cum inside you (<<will_cost>> Willpower)': 
+				wl_maxim['internal'] = 1
+				wl_stats['unprotected'] += 1
+				gs 'willpower', 'cum_inside', 'self', 'easy'
+				gs 'willpower', 'pay', 'self'
+				gt 'mod_wlife_maxim_sex', 'hotel_'+iif(wl_maxim['status'] < 4, 'first', 'repeat')+'_end'
+			end
+		else
+			act 'Tell him to cum inside you (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end
+
+if $ARGS[0] = 'cumshot':
+	*clr & cla
+	minut += 2
+	wl_maxim['love'] += 1
+	if wl_maxim['condom'] = 1 or wl_maxim['internal'] = -1:
+		gs 'cum_call', 'breasts', 'A906', 1
+		gs 'cum_call', 'stomach', 'A906', 1
+		'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/end_'+iif(wl_maxim['condom'] = 1, 0, 1)+'.mp4"></video></center>'
+		iif(wl_maxim['condom'] = 1, '"Pull out," you warn him not a moment too soon. His cock twitches the second he pulls out of your hole', 'After one last push inside you, he pulls out and his cock twitches the seconds he tears the condom of')+' and warm cum hits your breasts and stomach. "Oh, god," he moans as '+iif(wl_maxim['condom'] = 1, 'your', 'his')+' hand grabs his cock and drains the last drops of cum with a few gentle strokes land on your labia.'
+		if wl_maxim['status'] < 4: '"Wow," you say amazed by the huge amount of cum that forms a tiny lake on your chest.'
+	else
+		if wl_maxim['internal'] = 1: wl_maxim['love'] += 1
+		gs 'cum_call', 'vaginal', 'A906', 1
+		'<center><video autoplay loop src="mod/wlife/images/sex/maxim/hotel/end_2.mp4"></video></center>'
+		iif(wl_maxim['internal'] = 1, '"Do it," you order him and look directly into his eyes. "Cum inside me, fill me up," you encourage him.', 'You decide not to say anything and leave the decision to him.')+' Only a few seconds later you can feel him twitch inside you for the first time and again and again and again. It doesn''t seem to end as his his cock shots one large spurt of cum after another inside your cunt.'	
+	end
+	if wl_maxim['status'] < 4:
+		'"Wow," you say amazed by the hug amount of cum '+iif(wl_maxim['condom'] = 1 or wl_maxim['internal'] = -1, 'that pools between your breasts and near your belly button', 'that flows out of your pussy')+' and some primal instinct moves your hand to your '+iif(wl_maxim['condom'] = 1 or wl_maxim['internal'] = -1, 'chest', 'crotch')+' to stick your fingers into '+iif(wl_maxim['condom'] = 1 or wl_maxim['internal'] = -1, 'the gooey lake.', 'your gooey hole.')
+		'"Wow?" he asks starring at you like a confused puppy. "Did I do something wrong?"'
+		'You laugh and shake your head. "No silly, it''s just that I have never ever seen one man producing so much cum. It''s...," you take a moment to look for the right words as you watch the cum drip from your sticky fingers, "weirdly fascinating."'
+	end
+	
+	gs 'arousal', 'end'
+	gs 'stat'
+end
+
+--- mod_wlife_maxim_sex ---------------------------------

+ 191 - 0
locations/mod_wlife_misc.qsrc

@@ -0,0 +1,191 @@
+# mod_wlife_misc
+
+if $ARGS[0] = 'usb_drive':
+	act 'Buy an usb drive':
+		*clr & cla
+		minut += 1
+		menu_off = 1
+		$location_type = 'public_indoors'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/usb_drive.jpg"></center>'
+		'The store sells 64gb usb-drives for 600 <b>₽</b>.'
+		
+		act 'Go back': gt 'shop', 'move'
+		
+		if money >= 600: 
+			act 'Buy one':
+				money -= 600
+				wl_status['usb'] = 2
+				gt 'shop', 'move'
+			end
+		else
+			'You don''t have enough money to buy an usb-drive.'
+		end
+	end
+end
+
+if $ARGS[0] = 'coffee_maker':
+	act 'Buy a coffee maker':
+		*clr & cla
+		minut += 1
+		menu_off = 1
+		$location_type = 'public_indoors'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/coffee_maker.png"></center>'
+		'The shop sells coffee makers for 3350 <b>₽</b>.' 
+	
+		act 'Go back': gt 'shop', 'move'
+		
+		if money >= 3350: 
+			act 'Buy it (Cash)':
+				money -= 3350
+				wl_status['coffee_maker'] = 2
+				wl_status['coffee'] += 16
+				gt 'shop', 'move'
+			end
+		end
+		
+		if karta >= 3350: 
+			act 'Buy it (card)':
+				karta -= 3350
+				wl_status['coffee_maker'] = 2
+				wl_status['coffee'] += 16
+				gt 'shop', 'move'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'coffee':
+	act 'Buy pods for your coffee maker':
+		*clr & cla
+		minut += 1
+		menu_off = 1
+		$location_type = 'public_indoors'
+		gs 'stat'	
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/coffee.png"></center>'
+		'The shop sells pods for your coffee maker. One pack with 16 pods costs 295 <b>₽</b>.' 
+		
+		act 'Go back': gt 'shop', 'move'
+		
+		if money >= 295: 
+			act 'Buy a pack (295 <b>₽</b>)':
+				money -= 295
+				wl_status['coffee'] += 16
+				gt 'shop', 'move'
+			end
+		end
+		
+		if money >= 590: 
+			act 'Buy two packs (590 <b>₽</b>)':
+				money -= 590
+				wl_status['coffee'] += 32
+				gt 'shop', 'move'
+			end
+		end
+		
+		if money >= 1475: 
+			act 'Buy five packs (1475 <b>₽</b>)':
+				money -= 1475
+				wl_status['coffee'] += 70
+				gt 'shop', 'move'
+			end
+		end		
+	end
+end
+
+if $ARGS[0] = 'komp_maxim':
+	act 'Check out Maxim''s files (03:00)':
+		*clr & cla
+		minut += 180
+		menu_off = 1
+		wl_investigation['maxim'] = 5
+		wl_investigation['points'] += 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/using_laptop.jpg"></center>'
+		'You put your usb-drive into your laptop and open the folders you copied of Maxim''s laptop. You work without a break for several hours searching every file for clues and incriminating evidence. Finally after an hour you find something, a single line in an excel sheet called ''freelancers''. The single line is you. Every weekly payment you made to Georgiy and every debt you had is meticulously listed here. If that line is you, are the others all girls that work for the Belys?'
+		'You scroll down and find 528 lines. Some are marked red and every line has several abbreviations. The first are the initials of each girl and where they live or where they were recruited. That''s easy to deduce from the information Maxim listed about you. For you it''s ''Pav'' for Pavlovsk. Next to ''Pav'' Maxim wrote ''GT-STP-M-2''. What''s that suppose to mean? GT? STP? You bite down on you lower lip and think hard. Then you understand it. It''s where you work. ''Gas Station-St.Petersburg-Moscow-3''. The second gas station on the highway between St. Petersburg and Moscow. You sort the excel sheet and realize that you''re the only girl working there. There are some other girls working at gas stations, but most just have an ''STP'' next to their initials.'
+		'The last thing you look for are the initials of Zoya Stepanova. The dead girl from the newspaper. You find her initials a few lines above your own. Her name is one of the 21 names that are marked red.'
+		
+		act 'Shut down your laptop': gt $loc, $metka
+	end
+end
+
+if $ARGS[0] = 'school_shower':
+	*nl
+	minut += 5
+	if $wl_brand['school_shower'] = '':
+		pcs_mood = 0
+		gs 'fame', 'pav', 'sex', 10
+		grupvalue[1] -= 5
+		grupvalue[2] -= 5
+		grupvalue[3] -= 10
+		grupvalue[4] -= 2
+		$wl_brand['school_shower'] = 'triggered'
+		'One of the girls points with her finger at you, when you leave the shower. "Oh my god, check out <<$pcs_nickname>>," she shouts and you feel dozens of eyes stare at you. "<<$wl_brand[''text_pubic'']>>... what a slut," another girl shouts as someone grabs your arms from behind to prevent you from covering up your slutty tattoo.'
+		'"Hey, let me go," you shout as you struggle against the other girl. "Leave me alone." You break free and hurry back to your locker while you hear the girls laughing behind you.'
+	elseif $wl_brand['school_shower'] ! '' and gymshower > 3:
+		gs 'fame', 'pav', 'sex', 2
+		pcs_mood -= 20
+		grupvalue[1] -= 1
+		grupvalue[2] -= 1
+		grupvalue[3] -= 2
+		grupvalue[4] -= rand(0,1)
+		'"What a slut," you hear one of the girls say as she looks at you disapprovingly. "What kind of girl inks ''<<$wl_brand[''text_pubic'']>>'' on their body?" she says to another girl who stares at your tattoo. You quickly grab your stuff and hurry back to your locker.'
+	end	
+end
+
+if $ARGS[0] = 'school_grades':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	wl_status['school_grades_warning'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/letter.jpg"></center>'
+	'A letter has been delivered to you. It''s from your school.'
+	*nl
+	'<i>Dear Miss <<$pcs_lastname>>,'
+	'I have to inform you that you have failed several tests in the last few weeks and I''m obliged to remind you bad performance won''t be tolerated. If you don''t improve your grades, I''ll be forced to expel you.'
+	'Sincerely,'
+	'Headmistress Volkov'
+	
+	act 'Continue': gt $loc, $metka
+end
+
+if $ARGS[0] = 'school_skip':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	wl_status['school_skip_warning'] += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/letter.jpg"></center>'	
+	'A letter has been delivered to you. It''s from your school.'
+	*nl
+	'<i>Dear Miss <<$pcs_lastname>>,'
+	'I have to inform you that you have failed several times to attend classes and I''m obliged to remind you attendance is mandatory. If you don''t change your behavior, I''ll be forced to expel you.'
+	'Sincerely,'
+	'Headmistress Volkov'
+	
+	act 'Continue': gt $loc, $metka
+end
+
+if $ARGS[0] = 'school_expelled':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	pcs_grades = 0
+	SchoolBlock = 1
+	wl_status['school_expelled'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/letter.jpg"></center>'
+	'A letter has been delivered to you. It''s from your school.'
+	*nl
+	'<i>Dear Miss <<$pcs_lastname>>,'
+	'you are hereby expelled from school. Please refrain from entering the premises again. I hope this will be a wake-up call for you to change your behavior to become a productive member of society. I wish you all the best.'
+	'Sincerely,'
+	'Headmistress Volkov'
+	
+	act 'Continue': gt $loc, $metka
+end
+
+--- mod_wlife_misc ---------------------------------

+ 214 - 0
locations/mod_wlife_mother.qsrc

@@ -0,0 +1,214 @@
+# mod_wlife_mother
+
+if $ARGS[0] = 'mother_shift_start':
+	*clr & cla
+	menu_off = 1
+	wl_mother['clothes_timer'] = daystart
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/mom/mother.jpg"></center>'
+	if npc_QW['A29'] < 2 and wl_mother['acceptance_clothes'] = 0:
+		minut += 4
+		wl_mother['acceptance_clothes'] = 1
+		if npc_rel['A29'] > 10: npc_rel['A29'] -= 10
+		gs 'stat'
+		if $loc = 'pav_complex':
+			'Shit, you think, when you leave the apartment complex and run into your mother coming home from work. "<<$pcs_nickname>>?" Her stern voices echoes over the courtyard as she quickly approaches you. "What are you wearing?"'	
+		else
+			'"<<$pcs_nickname>>? Is that you?" The stern voice of your mother sounds in the nearby kitchen. "Could you please come in here for a second?"'
+			'Shit, you have to go and meet Volya. You look at your phone to check the time asking yourself if you should pretend you didn''t hear her and just go? But it''s too late, your mother is already walking out of the kitchen drying her hands with a dishtowel. "Could you help...," her brows narrow. "<<$pcs_firstname>> what are you wearing?"'
+		end
+		'"Uhm... clothes? Why?" you ask as if nothing about your clothes is out of the ordinary.'
+		'"You look like a cheap hooker," your mom says with a mixture of disappointment and anger. "Put on something else."'
+		'"Could you please not make such a big deal out of it? All girls wear stuff like this," you lie.'
+		'"I really doubt that. You will go back to your room and put on something else. Right now young lady! I''ll not repeat myself."'
+		'"Sorry Mom, I really can''t. I''m meeting a friend and I''m already late."'
+		'She puts her hands on her hips. "You will not '+iif($loc = 'pav_complex', 'walk around', 'leave this house')+', dressed like that!"'
+		'"But Mom," you plead. "I promised I go."'
+		'"No, it''s out of the question. You won''t go outside wearing that," she says pointing dismissively at your outfit. "And you can''t go anyway I need your help today." She points sternly '+iif($loc = 'pav_complex', 'at the entrance of the apartment complex. "Go back inside, right now!"', 'at the kitchen door. "Go into the kitchen, right now!"')
+		'You hold up your phone. "Can I at least tell my friends that I won''t be able to make it?" She nods and '+iif($loc = 'pav_complex', 'walks inside after saying. "I''ll be waiting for you in the kitchen. I need your help today."', 'returns to the kitchen.')+' You follow her after sending Volya a short message that your Mom is a pain in the ass and you can''t make it.'
+								
+		act 'Continue': 
+			*clr & cla
+			wl_stats['loyalty'] -= 1
+			wl_whore['shifts_message'] = 0
+			minut += rand(120,150)
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/home/kuhrpar.jpg"></center>'
+			'Every time you finish one task she finds something else for you to do. In the end your mother keeps you busy for over two hours. The whole time she preaches how a good girl is supposed to dress, asking you what the neighbors would think if they saw you like that and tells you have the wrong friends, when they wear slutty outfits like this.'
+						
+			act 'Leave the kitchen': gt $loc, $metka
+		end	
+	elseif npc_QW['A29'] < 2 and wl_mother['clothes_counter'] < 3:
+		'"<<$pcs_firstname>> <<$pcs_lastname>>!" The voice of your mother thunders '+iif($loc = 'pav_complex', 'over the courtyard', 'through the hallway')+'. She''s furious. "What did I tell you about wearing such an outfit? I won''t tolerate such things. Get '+iif($loc = 'pav_complex', 'back inside', 'into the kitchen')+', right now!"'
+		'You hold up your phone. "Can I at least tell my friends that I won''t be able to make it?" She nods and returns to the kitchen. You send Volya a short message that your Mom is a pain in the ass again and you won''t be able to make it.'
+			
+		act 'Follow her inside': 
+			*clr & cla			
+			wl_mother['clothes_counter'] += 1
+			wl_whore['shifts_message'] = 0
+			minut += rand(120,150)
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/home/kuhrpar.jpg"></center>'
+			'She makes you do chores again and every time you finish one task she finds something else for you to do. In the end your mother keeps you busy for over two hours. The whole time she preaches about how a good girl is supposed to dress, asking you what the neighbors would think if they saw you like this and that you have the wrong friends if they also wear slutty outfits like this.'
+						
+			act 'Leave the kitchen': gt $loc, $metka
+		end	
+	elseif npc_QW['A29'] < 2 and wl_mother['clothes_counter'] < 6:
+		'"<<$pcs_nickname>>, again?" your mother sighs and shakes her head. "Why can''t you dress like a normal girl?" She doesn''t sound angry anymore, just disappointed.'
+		'You answer with a noncommittal shrug. "No particular reason. It''s just the way I dress." Your answer doesn''t seem to satisfy her and you expect another tirade, but to your surprise she just nods. "OK, could you maybe help me in the kitchen today? I have so much to do and I would appreciate some support."'
+
+		gs 'willpower', 'misc', 'self', iif(motherKnowWhore = 0 and motherKnowSpravka = 0, 'easy', 'hard')
+		if will_cost <= pcs_willpwr:
+			act 'Don''t help her (<<will_cost>> Willpower)':
+				cla & *nl
+				minut += 5
+				npc_rel['A29'] -= 10
+				wl_mother['clothes_counter'] += 1
+				gs 'willpower', 'pay', 'self'
+				gs 'stat'
+				'"I have a life too, you know. I can''t just drop everything, when you need me. My friends also depend on me."'
+				'"But why in those clothes?" Your refusal to help her has ignited her anger again. "Can''t you wear something nice that doesn''t scream ''whore''?"'
+				'"You''re overreacting. Clothes are simply just clothes."'
+				'"Fine," she hisses and throws up her hands. "Fine. Be that way. I''m only trying to help you." She walks back into the kitchen shaking her head along the way.'					
+										
+				act 'Continue': gt $loc, $metka
+			end
+		else
+			act 'Don''t help her (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+				
+		act 'Help her':
+			cla & *nl
+			npc_rel['A29'] += 5
+			wl_whore['shifts_message'] = 0
+			minut += rand(120,150)
+			gs 'stat'
+			'"Fine," you sigh. "I''ll be there in a second." You hastily pull out your phone and write a quick message to Volya.'
+			'<i>Sorry, can''t make it. My mom needs me at home again.</i>'
+			*nl					
+			'Your mother keeps you busy for over two hours. Every time you finish one task she finds something else for you to do. You suspect she is keeping you busy intentionally. She''s even nice to you the whole time, but you get the feeling this is only an act. Her anger didn''t dissipate she''s only faking it to keep your from going out dressed like this.'
+						
+			act 'Leave the kitchen': gt $loc, $metka
+		end
+	else
+		minut += 1
+		wl_mother['acceptance_clothes'] = 2
+		'Your mother and you enter the '+iif($loc = 'pav_complex', 'courtyard', 'hallway')+' nearly at the same time. Her judgmental gaze rests on your slutty clothes and she opens her mouth as if she''s going to say something, but she changes her mind, shakes her head and walks '+iif($loc = 'pav_complex', 'inside the building', 'into the kitchen')+'. It looks like she has given up.'
+	
+		act 'Continue': gt $loc, $metka
+	end
+		
+end
+
+if $ARGS[0] = 'mother_knows':
+	*clr & cla
+	minut += 10
+	menu_off = 1
+	wl_mother['knows'] = 2
+	pcs_mood = 5
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/stairwell.jpg"></center>'
+	'"What the...," you mumble, when you see several boxes standing in the hallway outside of your parents apartment. You pull out your key and walk towards the door, when you see a note taped to the door.'
+	*nl
+	'<i>Your stuff is in the boxes <<$pcs_firstname>>. I never want to see you again. You''re a disgrace and I''m ashamed to ever have called you my daughter. Stay away from me, your brother and the rest of the family.</i>'
+	*nl
+	'That has to be a joke? Right? Some stupid prank Kolka is playing on you. You stick the key into the keyhole, but it doesn''t fit. "No," you say as panic starts to build up inside you, but the key won''t fit. Your mother must have switched out the locks.'
+	'"Mom!" you scream and bang your fist against the door. "Please, open the door." But nothing happens. "MOM!" You keep banging both fists against the door. "YOU CAN''T DO THAT TO ME. PLEASE OPEN THE DOOR!" you scream as tears well up in your eyes.'
+	*nl
+	'Still nothing...'
+	*nl
+	'You pull out your phone and call your mother... your step-father... your brother... your sister...'
+	
+	act 'Wait for a response':
+		*clr & cla
+		minut += 20
+		wl_stats['acceptance'] += 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+		'With every passing minute dread builds up in every cell of your body. This can''t be happening. It''s not fair, it isn''t your fault. How can she be so cruel? Couldn''t she have talked to you first? You ask yourself as you stare at the phone for ten minutes, but nobody calls you back.'
+		*nl
+		'That''s it. It''s really happening. You wipe away the tears as you try to figure out what to do next. You have to be strong now. You can do this. You managed all the stuff the Belys have thrown at you and you''ll weather this storm as well, you tell yourself as you call the one person you can think of, who can help you now.'
+		*nl
+		'"Hi <<$pcs_nickname>>," Volya says after picking up the phone. "What''s up?"'
+		'"My mom threw me out," you say as you rub your teary eyes.'
+		'"What why?" he asks concerned.'
+		'"I have no idea, I guess she somehow found. I don''t know. What should I do now?"'
+		'"Go to the hotel at the train station, the Belys own it. I''ll text Georgiy and he''ll reserve a room for you."'
+		'"What about my stuff? My mother stuffed it all in boxes and put everything in the stairwell."'
+		'"Don''t worry about that. I''ll get it and bring it to the hotel. Everything will be fine, trust me," he reassures you, before he ends the call.'
+	
+		gs 'mod_wlife_mother', 'hotel_room'
+	end
+end
+
+if $ARGS[0] = 'mother_school':
+	*clr & cla
+	pcs_grades = 0
+	SchoolBlock = 1
+	minut += 10
+	wl_mother['school'] = 1
+	wl_status['school_expelled'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/mom/mother.jpg"></center>'
+	'"What the...," you mumble, when you see several boxes standing in the hallway outside of your parents apartment. As you enter the hallway, you find your mother there waiting for you. You have never seen her this furious. "<<$pcs_nickname>>? I just got off the phone with the school, they told me they expelled you. I''ve had it with you! I''ve warned you, you have to finish school or...," she says and points at the boxes. She waits for a second to let the words sink. "Go ahead, live your irresponsible life the way you want. You''re no longer welcome here."'
+	'You open your mouth, but she roughly shoves a bag into your hands and angrily points at the boxes again. "Now get out," she shouts and pushes you out the door and slams it shut in your face.'
+	*nl
+	'"Mom!" you scream and bang your fist against the door. "Please, open the door." But nothing happens. "MOM!" You keep banging both fists against the door. "YOU CAN''T DO THAT TO ME. PLEASE OPEN THE DOOR!" you scream as tears well up in your eyes.'
+	*nl
+	'Still nothing...'
+	*nl
+	'You pull out your phone and call your mother... your step-father... your brother... your sister...'
+	
+	act 'Wait for a response':
+		*clr & cla
+		minut += 20
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+		'With every passing minute dread builds up in every cell of your body. This can''t be happening. How can she be so cruel? Couldn''t she have talked to you first? You ask yourself as you stare at the phone for ten minutes, but nobody calls you back.'
+		*nl
+		'That''s it. It''s really happening. You wipe away the tears as you try to figure out what to do next. You have to be strong now. You can do this. You managed all the stuff the Belys have thrown at you and you''ll weather this storm as well, you tell yourself as you call the one person you can think of, who can help you now.'
+		*nl
+		'"Hi <<$pcs_nickname>>," Volya says after picking up the phone. "What''s up?"'
+		'"My mom threw me out," you say as you rub your teary eyes.'
+		'"What why?" he asks concerned.'
+		'"My fucking school expelled me. I don''t know what do to. Can you help me?"'
+		'"Go to the hotel at the train station, the Belys own it. I''ll text Georgiy and he''ll reserve a room for you."'
+		'"What about my stuff? My mother stuffed it all in boxes and put everything in the stairwell."'
+		'"Don''t worry about that. I''ll get it and bring it to the hotel. Everything will be fine, trust me," he reassures you, before he ends the call.'
+	
+		gs 'mod_wlife_mother', 'hotel_room'	
+	end
+end
+
+if $ARGS[0] = 'hotel_room':
+	act 'Go to the hotel':
+		*clr & cla
+		minut += 20
+		hotelroom = 1
+		home_owned[2] = 0
+		home_owned[6] = 1
+		$wl_loc[0] = 'pavtrain'
+		$wl_loc[1] = ''
+		$wl_loc[2] = 'Pavlovsk''s Hotel'
+		gs 'set_home', 6
+		hotelroom1day = daystart
+		hotelroom1day += 8 - week
+		if stolmoney > 0:
+			money += stolmoney
+			stolmoney = 0
+		end
+		wl_status['hotel'] = 1
+		gs 'stat'
+		'<center><H4>Hotel reception</H4></center>'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/resep.girl0,'+rand(0,10)+'.jpg"></center>'	
+		'Are you really going to be living here? In a hotel? You think as you walk to the reception area.'
+		'"Good evening. Are you Miss '+iif(wl_passport = 1, '<<$wl_names[''last'']>>?" The woman asks using your fake last name. "', '<<$pcs_lastname>>')+'Somebody reserved a room in your name and said you''ll be here shortly.'
+		'"Uhm... yes that''s me," you say pulling out your fake passport. She takes it from you, types a minute on her keyboard until a printer starts behind her. "I need your signature and then you can have your key," she explains handing you the paper. "Alright," she says one swift stroke of the pen later. "The room has been paid for the rest of the week. Starting Monday, you''ll have to pay 500 <b>₽</b> a night. You''ll have to pay your bill every Monday, but Mr. Bely informed me, he''ll cover you and you can pay him back later if you can''t pay."'
+		'500 <b>₽</b> a night, which means 3,500 <b>₽</b> per week. You sigh, but it won''t help if you complain to the receptionist. Instead you just thank her and take the key.'
+			
+		act 'Go up to your room': gt 'mod_wlife_hotelroom', 'room'
+	end
+end
+
+--- mod_wlife_mother ---------------------------------
+
+

+ 31 - 0
locations/mod_wlife_nikita.qsrc

@@ -0,0 +1,31 @@
+# mod_wlife_nikita
+
+if $ARGS[0] = 'first_meet':
+	*clr & cla
+	menu_off = 1
+	minut += 2
+	wl_nikita['status'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/warehouse.jpg"></center>'
+	'It seems that you and Georgiy are the only ones inside the house. The hallway is empty, nobody is sitting inside the small common room and even the warehouse is completely abandoned. Normally you see at least two or three of Georgiy''s henchman working inside, but today there is only silence accompanying you on your way out.'
+		
+	act 'Open the door':
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/nikita_alexev.jpg"></center>'
+		'Suddenly the door flies open at the same time you stretch out your hand to open it. A group of guys, clearly drunk, stumbles inside talking loudly too each other. Startled you don''t move an inch. Some of the guys greet you, a few even by name, but nobody seems to really care that you''re here. They just pass by you, picking up their tools or going to the fridge at the back of the hall to get another beer.'
+		*nl
+		'You''re about to leave, when a familiar face walks through the door. It''s the young teenage boy that was one of the guys that used you on that fateful day, when Vadim left you tight up in the attic. For a second the scene replays on fast-forward in your head. The rope tearing into your wrists, him shooting his cum all over your face, but you especially remember that weird moment at the end, when he thanked you for basically raping you. Looking back you already guessed that he was younger than the rest of the guys, but he can''t be older than sixteen. His short hair, his lean figure and his eyes remind you of Kolka and you wonder if he''s in one of his classes, but you can''t remember ever seeing him in school.'
+		'"You...," he stammers while the colour drains from his face. Is it shame? Does he regret, what he did?'
+		'"Yeah, me...," you reply coldly as his face grows even paler. He turns around and storms out of the warehouse.'
+		*nl
+		'"What was that all about?" One of the older guys asks. You shrug and shake your head. It''s always best to keep your mouth shut. Especially in front of guys you don''t know. "Just a misunderstanding," you answer and...'
+		
+		act '... walk out of the warehouse': gt 'mod_wlife_warehouse', 'street'
+	end		
+end
+
+--- mod_wlife_nikita ---------------------------------
+
+

+ 173 - 0
locations/mod_wlife_npc.qsrc

@@ -0,0 +1,173 @@
+# mod_wlife_npc
+
+npctemp = 900
+$npc_dna['A<<npctemp>>'] = '1774396206 1848301631 1697225452 1143268439 1252055647 2110725762 1260967419'
+$npc_firstname['A<<npctemp>>'] = 'Vadim'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Bely'
+$npc_usedname['A<<npctemp>>'] = 'Vadim Bely'
+$npc_notes['A<<npctemp>>'] = 'He looks truly intimidating, his entire body covered in criminal gang tattoos. He''s the local crime lord of Pavlovsk.'
+npc_dob['A<<npctemp>>'] = 19700603
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'well proportioned'
+npc_dick['A<<npctemp>>'] = 15
+
+npctemp = 901
+$npc_dna['A<<npctemp>>'] = '1774396205 1848301631 1697225452 1143268439 1252055647 2110725762 1260967419'
+$npc_firstname['A<<npctemp>>'] = 'Georgiy'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Bely'
+$npc_usedname['A<<npctemp>>'] = 'Georgiy Bely'
+$npc_notes['A<<npctemp>>'] = 'Vadim Bely''s younger brother. Covered in gang tattoos much like his brother.'
+npc_dob['A<<npctemp>>'] = 19730717
+npc_gender['A<<npctemp>>'] = 0
+gs 'npcstaticdefaults', 'defaults'
+$npc_thdick['A<<npctemp>>'] = 'massive'
+npc_dick['A<<npctemp>>'] = 21
+
+npctemp = 902
+$npc_dna['A<<npctemp>>'] = '1074209213 1187173282 1211031753 1535474248 1134590256 1026540873 1721369948'
+$npc_firstname['A<<npctemp>>'] = 'Iosif'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Orlov'
+$npc_usedname['A<<npctemp>>'] = 'Iosif Orlov'
+$npc_notes['A<<npctemp>>'] = 'One of Vadim Bely''s henchmen.'
+npc_dob['A<<npctemp>>'] = 19920420
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'thick'
+npc_dick['A<<npctemp>>'] = 18
+
+npctemp = 903
+$npc_dna['A<<npctemp>>'] = '1542399937 1905241817 1701426477 1002823534 1464267474 1011697976 1988839911'
+$npc_firstname['A<<npctemp>>'] = 'Shura'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Azarov'
+$npc_usedname['A<<npctemp>>'] = 'Shura Azarov'
+$npc_notes['A<<npctemp>>'] = 'One of Vadim Bely''s henchmen.'
+npc_dob['A<<npctemp>>'] = 19910223
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'thick'
+npc_dick['A<<npctemp>>'] = 17
+
+npctemp = 904
+$npc_dna['A<<npctemp>>'] = '4385890137 1039500933 2093317210 9463537441 0814554052 2193368258 8912790484'
+$npc_firstname['A<<npctemp>>'] = 'Volya'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Sokolov'
+$npc_usedname['A<<npctemp>>'] = 'Volya Sokolov'
+$npc_notes['A<<npctemp>>'] = 'He is one of Vadim Bely''s goons.'
+npc_dob['A<<npctemp>>'] = 19881227
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'long'
+npc_dick['A<<npctemp>>'] = 19
+
+npctemp = 905
+$npc_dna['A<<npctemp>>'] = '0609072364 2781113310 4948207365 1280367851 3823903968 7189587813 6867323043'
+$npc_firstname['A<<npctemp>>'] = 'Nikita'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Alexev'
+$npc_usedname['A<<npctemp>>'] = 'Nikita Alexev'
+$npc_notes['A<<npctemp>>'] = 'One of Vadim Bely''s henchmen.'
+npc_dob['A<<npctemp>>'] = 20000326
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'long'
+npc_dick['A<<npctemp>>'] = 14
+
+npctemp = 906
+$npc_dna['A<<npctemp>>'] = '4009913982 5491007336 7122636987 4942878316 7223431546 8447711451 0638969931'
+$npc_firstname['A<<npctemp>>'] = 'Maxim'
+$npc_nickname['A<<npctemp>>'] = 'Maxim'
+$npc_lastname['A<<npctemp>>'] = 'Shurov'
+$npc_usedname['A<<npctemp>>'] = 'Maxim Shurov'
+$npc_notes['A<<npctemp>>'] = 'Vadim and Georgiy Bely''s accountant.'
+npc_dob['A<<npctemp>>'] = 19780209
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'small'
+npc_dick['A<<npctemp>>'] = 14
+
+npctemp = 907
+$npc_dna['A<<npctemp>>'] = '8585300978 5471558413 2579994957 8988546970 4624277643 7172930712 5740667413'
+$npc_firstname['A<<npctemp>>'] = 'Tomas'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Latrov'
+$npc_usedname['A<<npctemp>>'] = 'Tomas Latrov'
+$npc_notes['A<<npctemp>>'] = 'Clerk at the gas station.'
+npc_dob['A<<npctemp>>'] = 19790207
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'well proportioned'
+npc_dick['A<<npctemp>>'] = 9
+
+npctemp = 908
+$npc_dna['A<<npctemp>>'] = '9067418879 7488531096 3005420664 8134962062 0817612925 7015146320 5748472897'
+$npc_firstname['A<<npctemp>>'] = 'Henri'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Okoro'
+$npc_usedname['A<<npctemp>>'] = 'Henri Okoro'
+$npc_notes['A<<npctemp>>'] = 'The older of the french Okoro brothers.'
+npc_dob['A<<npctemp>>'] = 19800710
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'thick'
+npc_dick['A<<npctemp>>'] = 27
+
+npctemp = 909
+$npc_dna['A<<npctemp>>'] = '9886474736 3679497018 6233828721 5803972459 1950810547 2087533248 5617475860'
+$npc_firstname['A<<npctemp>>'] = 'Léon'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Okoro'
+$npc_usedname['A<<npctemp>>'] = 'Léon Okoro'
+$npc_notes['A<<npctemp>>'] = 'The younger of the french Okoro brothers.'
+npc_dob['A<<npctemp>>'] = 19900611
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'thick'
+npc_dick['A<<npctemp>>'] = 25
+
+npctemp = 910
+$npc_dna['A<<npctemp>>'] = '5122097805 5553895979 0195900535 5931363595 3797149417 7995178303 7582414852'
+$npc_firstname['A<<npctemp>>'] = 'Adrian'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Mikhailov'
+$npc_usedname['A<<npctemp>>'] = 'Adrian Mikhailov'
+$npc_notes['A<<npctemp>>'] = 'A homeless man.'
+npc_dob['A<<npctemp>>'] = 19900611
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'thick'
+npc_dick['A<<npctemp>>'] = 22
+
+npctemp = 911
+$npc_dna['A<<npctemp>>'] = '8085464072 8412234224 9126178969 1259408503 3617263270 2354960300 8611927311'
+$npc_firstname['A<<npctemp>>'] = 'Sacha'
+$npc_nickname['A<<npctemp>>'] = 0
+$npc_lastname['A<<npctemp>>'] = 'Andrejev'
+$npc_usedname['A<<npctemp>>'] = 'Sacha Andrejev'
+$npc_notes['A<<npctemp>>'] = 'Small time drug dealer.'
+npc_dob['A<<npctemp>>'] = 20000611
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'normal sized'
+npc_dick['A<<npctemp>>'] = 15
+
+npctemp = 912
+$npc_dna['A<<npctemp>>'] = '9403068756 2124694727 0370373600 5096786804 0601547121 8531520869 7037475156'
+$npc_firstname['A<<npctemp>>'] = 'Nicholai'
+$npc_nickname['A<<npctemp>>'] = 'Nicholai'
+$npc_lastname['A<<npctemp>>'] = 'Azov'
+$npc_usedname['A<<npctemp>>'] = 'Nicholai Azov'
+$npc_notes['A<<npctemp>>'] = 'One of the Bely''s gang member.'
+npc_dob['A<<npctemp>>'] = 19920302
+gs 'npcstaticdefaults', 'defaults'
+npc_gender['A<<npctemp>>'] = 0
+$npc_thdick['A<<npctemp>>'] = 'well proportioned'
+npc_dick['A<<npctemp>>'] = 22
+
+
+--- mod_wlife_npc ---------------------------------

+ 142 - 0
locations/mod_wlife_okoro.qsrc

@@ -0,0 +1,142 @@
+# mod_wlife_okoro
+
+if $ARGS[0] = 'call':
+	*clr & cla
+	menu_off = 1
+	wl_okoro['timer'] = daystart	
+	if wl_okoro['status'] = 4:
+		minut += 6
+		pcs_mood += 20
+		wl_okoro['status'] = 5
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/henri/chats/chat_0.mp4"></video></center>'
+		'"<i>Bonjour nana</i>," Henri greets you in his deep soothing voice as his face appears on the screen of your phone. "It''s good to see you again." The smile that is slowly forming on his lips seems genuine and you wonder why he seems so smitten with you. It''s like from the moment he laid eyes on you he saw something in you, but you don''t know what. Still, it feels good to feel appreciated for something more than your holes.'
+		'"Likewise, Henri. Are you back in France?" you ask returning the smile.'
+		'"See for yourself." He stands up and walks to a nearby window. He turns the phone away from him and you can see something small in the distant towering over the rooftops, but you immediately recognize it. It''s the Eiffel Tower.'
+		'"It''s beautiful," you say in awe. It''s a pity that your parents are so poor and never could afford a trip to a city like Paris.'
+		'Henri turns the phone back to him. "Not as beautiful as you my <i>jeune fille</i>."'
+		'You blush. You actually blush as if you''re a thirteen year old school girl and not a experienced prostitute that probably slept with more guys than all the girls in your school combined. '+iif(hotcat < 5, '"I''m really really not."', '"You''re exaggerating."')
+		iif(hotcat < 5, '"Of course, you are,"', '"I''m not,"')+' he replies and looks serious. "Maybe there are more beautiful girls out there," he shrugs, "but that doesn''t matter. At least not to me. What people perceive as beauty is only skin deep. There is something about you... An inner strength. I immediately recognized it."'
+		'"What do you mean?" you ask, but at the same time you hear a loud knock in the background and somebody saying something in french.'
+		'"Sorry <<$wl_names[''okoro'']>>, I have to take care of something," he says and his apology seems genuine. "Maybe call me again next week)"'
+		'"Sure," you say before his face disappears and the call ends.'
+		
+		act 'Put your phone away': gt $loc, $metka
+	elseif wl_okoro['status'] = 5:
+		minut += 6
+		pcs_mood += 20
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/henri/chats/chat_0.mp4"></video></center>'
+		'You call Henri through the video chat app, but he doesn''t pick up at first. Only when your finger moves towards the red symbol to hang up the call, he picks up. He looks really exhausted, but he still manages to smile. "Hi, Henri. I hope I don''t catch you at a bad time," you say apologetic.'
+		'"No, no," he says and shakes his head. His French accent is even thicker than usual as if it''s too taxing for his tired brain to pronounce the words correctly. "I''m just a bid tired."'
+		'"A bid?" you asks sceptically. "Did you sleep at all? Not to sound harsh, but you look like you could play a zombie on the Walking Dead," you tell him, but soften your words with a wink.'
+		'He grins. "Is it so bad?" You nod as he closes his eyes for a second to rub them with his fingers. He continues on a much more serious note. "We had a major...," he pauses for a second before choosing his words carefully, "... ''party'' with a lot of guests. It was all carefully planned, but one of my... ''neighbors'' ratted me out to the cops and filed a noise complaint."'
+		'"Oh..., that sounds bad. Did they ruin the whole ''party''?" you ask pretty sure that you aren''t talking about parties, but some kind of shady deal gone bad.'
+		'"No, everything is fine, but it was a bit hectic the last few days and I have barely slept... still, thanks for calling. Hearing your voice and seeing you smile made my day a whole lot better."'
+		'"Ok...," you say a bit disappointed that the call ends so soon again and you''re about to say goodbye, when a stray thought plops into your head. If he liked your smile, you have an idea what could brighten his day even more.'
+						
+		act 'Tease him':
+			*clr & cla
+			minut += 2
+			pcs_horny += 40
+			wl_okoro['status'] = 6
+			wl_okoro['tease'] = iif($braworntype ! '', 1, 2)
+			gs 'exhibitionism', 1
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/henri/chats/tease_'+iif($braworntype ! '', 0, 1)+'.mp4"></video></center>'
+			'"Hm... if that''s the case, maybe I can show you something that will make you even happier," you say lasciviously. '+iif($clothingworntype = 'nude', 'You', '"Just give me one second." You quickly take of your top and')+' tilt your phone downwards to reveal your '+iif($braworntype ! '', 'bra.', 'tits.')
+			'"Beautiful," he mumbles more to himself than to you and you tilt your phone back.'
+			'You wink and softly bite down on your lower lip. "Maybe I''ll you show you more next week," you tease.'
+			'Desire burns in his eyes as he says, "can''t wait to talk to you next...," he stops. "<i>Merde!</i> I nearly forgot to tell you something. My brother, Léon... You remember Léon, right?" You nod. How could you forget Léon and his big black cock that fucked you stupid. Just thinking about it is letting your pussy tingle in anticipation. "He''s going to visit our mutual friend next week. He''ll be staying at the hotel in your beautiful hometown. Maybe you could pay him a visit in the evening and cheer him up? You maybe know how our mutual friend is and what he thinks of people like me." He''s meeting with Georgiy not Vadim, you realize. "He reminded me several times to tell you, because he really is looking forward to meeting you again."'
+			'"When does he arrive?"'
+			'"He arrives on Tuesday and his flight back is on Sunday. You''ll probably be able to meet him between those days, since he won''t be hanging out with our mutual friend after business has concluded."'
+			'You end the call after telling Henri that you''ll...'
+	
+			gs 'willpower', 'prostitution', 'resist', 'easy'
+			if will_cost <= pcs_willpwr:
+				act '... not be able to visit him (<<will_cost>> Willpower)':
+					wl_okoro['week'] = -1
+					gs 'willpower', 'pay', 'resist'
+					gt $loc, $metka
+				end
+			else
+				act '... not be able to meet him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act '... meet him on Wednesday': wl_okoro['week'] = 3 & gt $loc, $metka		
+			act '... meet him on Thursday': wl_okoro['week'] = 4 & gt $loc, $metka	
+			act '... meet him on Friday': wl_okoro['week'] = 5 & gt $loc, $metka
+			act '... meet him on Saturday': wl_okoro['week'] = 6 & gt $loc, $metka
+		end
+	elseif wl_okoro['status'] = 6 or wl_okoro['status'] = 7:
+		
+		'Developer Note: Sorry, this is the end for now, but this story will be expanded in future updates.'
+		
+		act 'Contine': gt $loc, $metka
+		
+!!		wl_okoro['status_leon'] = iif(wl_okoro['status'] = 6, 1, 2)
+!!		'Henri picks up immediately, when you call him through the video chat app. A big smile blossoms on his face, when he sees you. "Bonjour <<$wl_names[''okoro'']>>, nice to see you again. Léon '+iif(wl_okoro['status'] = 6, ' was a bit disappointed that you couldn''t meet him."', ' told me you two had a great time together."')
+!!		if wl_okoro['status'] = 6:
+!!			
+!!		else
+!!			
+!!		end
+!!				
+!!		act 'Contine':
+!!			wl_okoro['status'] = 8
+!!			gt $loc, $metka
+!!		end	
+!!	elseif wl_okoro['status'] = 8:
+		
+		
+	end	
+	
+	menu_off = 1
+	gs 'stat'
+end
+
+!!------ Leon Hotel ------
+
+if $ARGS[0] = 'leon_hotel':
+	*clr & cla
+	minut += 6
+	menu_off = 1
+	wl_okoro['week'] = -1
+	wl_okoro['status'] = 7
+	if pcs_horny < 30:
+		pcs_horny = 40
+	else
+		pcs_horny += 10
+	end
+	gs 'fame', 'pav', 'prostitute', PCloStyle
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/leon_okoro.jpg"></center>'
+	'You knock on the door and wait... and wait... before you knock again, but Léon still isn''t responding. The room number and the time is correct, you think after checking the message Henri send you today. Should you leave? No, you shake your head, maybe he''s in the shower or something.'
+	'You wait a moment longer and lift your hand for a third time, when a voice to your left stops you. "Sorry, <<$wl_names[''okoro'']>>," Léon says with an even thicker French accent than his brother. He''s not wearing a perfectly tailored suit like last time, but a more casual outfit that wouldn''t stick out like a sore thumb at the warehouse. "<i>Georgiy n''arrêtait pas de parler,</i>" he says as he roles his eyes and makes a talking hand motion to explain, what he''s trying to say. It''s probably some kind of explanation why he''s late. At least his facial expression tells you as much. "It''s fine," you reply switching from Russian to English hoping that he understands it at least a little bit.'
+	*nl
+	'He swoops you up into a big hug. Literally lifts your feet from the ground and you let out a surprised squeal. After the initial surprise fades you return the hug and for a moment you can only feel his strong muscles, smell his expensive cologne and something stirs between your legs as your brain connects the smell with the memory of one of the most intense fucks you ever had. The arousal doesn''t build up slow, it hits you with the force of an incoming train and your brain happily takes a backseat and leaves your pussy in control, when Léon let''s you down and opens door.'
+		
+	act 'Enter the room':
+		*clr & cla
+		if pcs_horny < 40:
+			pcs_horny = 50
+		else
+			pcs_horny += 10
+		end
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/start_0.mp4"></video></center>'
+		'You aren''t subtle about what you want and he immediately picks up on it without you two having to exchange another word. He barely is able to shut the door behind you before you pull him to the bed. There won''t be any discussion about money, condoms or the limits of their sexual encounter. This is clear to you the moment you turn around and see your own burning desire mirror in his own eyes. Last time they insisted on not using condoms and you went along with it. They paid you without discussing it beforehand. This unconsciously leaves you open to freely act on your need.'
+		
+		act 'Get on your knees': gt 'mod_wlife_okoro_sex', 'leon_hotel_bj_0'
+		
+		gs 'willpower', 'cuni', 'force', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Order him to lick your pussy (<<will_cost>> Willpower)': 
+				gs 'willpower', 'pay', 'force'
+				gt 'mod_wlife_okoro_sex', 'leon_hotel_cuni'
+			end
+		else
+			act 'Order him to lick your pussy (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end	
+end
+
+--- mod_wlife_okoro ---------------------------------
+

+ 148 - 0
locations/mod_wlife_okoro_sex.qsrc

@@ -0,0 +1,148 @@
+# mod_wlife_okoro_sex
+
+if $ARGS[0] = 'leon_hotel_cuni':
+	*clr & cla
+	minut += 4
+	wl_temp = 1
+	gs 'boystat', 'A909'
+	$orgasm_or = 'custom'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/start_1.mp4"></video></center>'	
+	'Waiting for him to undress would take too much time, your cunt needs attention now. You '+iif(CloPantsShortness = 0, 'pull up your skirt', 'pull down your pants')+' and sit down on a small table. "<i>Magnifique</i>," he says as he steps closer staring at the moistures glistening between your legs.'
+	'You snap your finger to get his attention. "Lick it," you order him with a lasciviously tone. For a moment he looks confused, but when you stick out your tongue and wiggle it around a bit he grins and kneels between your legs.'
+	'The first touch of his tongue on your sensitive clit is like an electric shock and your fingers claw around the edge of the table.'
+	$orgasm_txt = 'You never came so hard and fast in your life. It can''t be a minute or two before you throw your head back, nearly hitting the wall behind you, pushing your hips forward against his hungry mouth and letting out a scream of pleasure.'
+	gs 'arousal', 'cuni', -6, 'prostitution'
+	gs 'stat'
+		
+	act 'Return the favor': gt 'mod_wlife_okoro_sex', 'leon_hotel_bj_0'	
+end
+
+if $ARGS[0] = 'leon_hotel_bj_0':
+	*clr & cla
+	minut += 4
+	gs 'boystat', 'A909'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/start_2.mp4"></video></center>'	
+	'You push him into a nearby chair and drop down between his legs without explaining what you''re going to do, but there''s no need for it anyway. He understands perfectly and the second he lifts his ass a centimeter of the chair you grab his belt and pull his pants down, but not all the way down. His cock stops you as it draws your gaze, when it jumps to attention. Hard, big and thick it pulls your mouth towards it like a magnet. You lick around the sensitive tip before you take nearly half of it into your mouth and eagerly start to bob your head up and down.'
+	'After two minutes of slobbering over his cock, you pull back for a moment to rest your jaw. "Like it?" you grin and stroke his cock as you ponder what you should do next. He takes the change to shift position a bit and for a second your eyes spot the dark asshole below his balls'+iif($wl_fetish['rimjob'] = 'yes', '. It looks really inviting and maybe he would like it if you use your tongue to toy with it a bit.', iif($wl_fetish['rimjob'] = 'blocked', ', but you would never do anything with it. Especially not with your tongue.', '. It''s not as if it''s something you like to do, but maybe he would like it if you give him a rimjob.'))
+	gs 'arousal', 'bj', -6, 'prostitution'
+	gs 'stat'
+		
+	act 'Continue the blowjob': gt 'mod_wlife_okoro_sex', 'leon_hotel_bj_1'
+				
+	gs 'mod_wlife_functions', 'will_rimming', 'self', iif($wl_fetish['rimjob'] = 'yes', 'easy', 'hard')
+	if $wl_fetish['rimjob'] ! 'blocked' and $wl_fetish['rimjob'] ! '' and will_cost <= pcs_willpwr:
+		act 'Lick his ass (<<will_cost>> Willpower)':
+			gs 'willpower', 'pay', 'self'
+			gt 'mod_wlife_okoro_sex', 'leon_hotel_rj'
+		end
+	elseif $wl_fetish['rimjob'] ! 'blocked' and $wl_fetish['rimjob'] ! '' and will_cost > pcs_willpwr:
+		act 'Lick his ass (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'leon_hotel_bj_1':
+	*clr & cla
+	minut += 4
+	gs 'arousal', 'bj', -6, 'prostitution', 'deepthroat'
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/start_bj.mp4"></video></center>'
+	iif($wl_fetish['rimjob'] ! 'blocked' and $wl_fetish['rimjob'] ! '', 'There won''t be any asslicking today, you decide and discard the idea. Instead you', 'You')+' help him take the rest of his clothes of and return to the task at hand.'
+	'"Oh... <<$wl_names[''okoro'']>>," Léon whispers with his eyes closed, clearly enjoining the way you work his cock with your mouth. It''s not an easy task. The size, especially the girth, stretches your mouth and your jaw and throat soon start to hurt, when you try to force the whole length into your mouth. You barely manage it a few times, holding it as deep inside as possible. Only when tears start to form in your eyes while huge amounts of saliva run down his cock, you come up for air and switch back to a more doable blowjob.'
+	'You continue for a few minutes until Léon suddenly says, "stop," before lifting you off the ground as if you are light as a feather and carries you towards the bed.'
+	
+	act 'Let him take control': gt 'mod_wlife_okoro_sex', 'leon_hotel_pussy'
+end
+
+if $ARGS[0] = 'leon_hotel_rj':
+	*clr & cla
+	minut += 4
+	gs 'arousal', 'rimming_give', iif($wl_fetish['rimjob'] = 'yes', -6, -1), 'prostitution'
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/start_rj.mp4"></video></center>'
+	'You signal to him to move his legs up and after a moment hesitation he does so and your target is clearly visible. You don''t wait and move forward'+iif($wl_fetish['rimjob'] = 'yes', ' eagerly', ', even if it''s not something you like to do')+'. Your tongue connects with the sensitive flesh of his anus and teases out of Léon a satisfied moan. You look up to him with your mouth buried between his asscheeks and '+iif($wl_fetish['rimjob'] = 'yes', 'force your tongue against his asshole.', 'continue licking his taboo flesh.')
+	'You continue for a few minutes until Léon suddenly says, "stop," before lifting you off the ground as if you are light as a feather and carries you towards the bed.'
+	
+	act 'Let him take control': gt 'mod_wlife_okoro_sex', 'leon_hotel_pussy'
+end
+
+if $ARGS[0] = 'leon_hotel_pussy':
+	*clr & cla
+	minut += 6
+	if pcs_horny < 50: pcs_horny = 50
+	$orgasm_or = 'custom'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/end_0.mp4"></video></center>'
+	'"Fuck," you shout and your eyes grow wide as he plunges his cock in one swift move as deep as he possibly into your dripping cunt. A jolt of pain shoots through your body, but it''s quickly replaced with an intense feeling of pleasure. What he does in the next few minutes drives you nearly insane. He doesn''t fuck you hard like the last time. Instead he uses long slow strokes. First, his cock fills you to the brim, before he slowly pulls out until only the tip is barely inside you. But you only experience this agonizing feeling of emptiness for half a second before he slowly pushes his meat back inside.'
+	$orgasm_txt = 'You don''t know how long he fucks you in this teasing kind of way, but you never complain. Instead you moan like a bitch in heat, when he is fully inside you and squeal in frustration, when he isn''t. Still you manage to orgasm and the slow buildup makes it even more intense. You completely lose control of your faculties and your mind goes blank.'
+	
+	gs 'arousal', 'vaginal', -12, 'prostitution'
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 8
+		cumnostd = 1
+		$orgasm_or = 'custom'
+		wl_stats['unprotected'] += 1
+		if pcs_horny < 100: pcs_horny = 100
+		gs 'cum_call', 'vaginal', 'A909'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/partners/french/leon/hotel/end_1.mp4"></video></center>'
+		'He''s still fucking you, when your senses return, but he somehow switched positions. How you managed to keep yourself in the cowgirl position is beyond your comprehension, because the last few seconds... or was it minutes... are a total blur. It''s as if he manages to make you cum and then kept you in your orgasmic state with faster and harder strokes and already you feel another orgasm approaching fast.'
+		$orgasm_txt = '"Fuck, what are you doing to me," you blurt out in Russian as your eyes roll upwards and your consciousness is again pushed aside by primal pleasure as you cum for the '+iif(wl_temp = 1, 'third', 'second')+' time. Your vaginal muscles contract around his dick and what''s left of your consciousness registers his sperm shooting deep inside your womb. "Yes, cum inside me, fill me up," you scream deliriously.'
+		gs 'arousal', 'vaginal', -2, 'prostitution'
+		gs 'arousal', 'end'
+		gs 'stat'
+				
+		act 'Freshen up and get dressed':
+			*clr & cla
+			minut += 10
+			money += 2000
+			cumspclnt = 20
+			gs 'cum_cleanup'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/objects/box.jpg"></center>'
+			'"<<$wl_names[''okoro'']>>," Léon says, when you leave the bathroom. He takes your hand and softly pulls you towards a white box that sits on the bed. "<i>Un petit cadeau</i>," he says in French and adds in horrible English. "A gift." Inside is a dress and it''s not what a loving husband would give his wife. This is slutty and definitively something you could wear, when you work at the gas station.'
+			'"Thanks," you say as you take it out of the box. Only now you see the 2.000 <b>₽</b> that were lying on top of it. The money falls to the ground, but Léon quickly picks it up and pushes it inside your pockets. "Thanks," you say again as you smile at him. He then points at the dress, then at you several times until you understand, what he wants. He wants for you to try it on. You see no reason why not and oblige. After modeling the outfit for him, you say goodbye to him and leave the hotel.'
+			
+			*nl
+			'<center>Click on the outfit he has bought for you.</center>.' 
+			i = 0
+			j = 0
+			
+			$wl_shop = '<center><table><tr>'
+			
+			:wl_jump_okorooutfit
+			i += 1
+								
+			gs 'clothing_attributes', 'average', i
+			if i < 523 and (average[i] = 1 or CloStyle ! 4 or CloBimbo ! 0 or CloInhibit > pcs_inhib): 
+				jump 'wl_jump_okorooutfit'
+			elseif i < 523:
+				j += 1
+				$wl_shop += '<td><a href="exec: average[<<i>>] = 1 & averageH[<<i>>] = 50 & averageB[<<i>>] = pcs_hips & gt ''mod_wlife_okoro_sex'', ''hotel_leave''"><img title="Click on the picture to choose this outfit." height="250" src="images/pc/clothing/2average/<<i>>.jpg"></a></td>'
+				if j = 4: j = 0 & $wl_shop += '</tr><tr>'
+				jump 'wl_jump_okorooutfit'
+			elseif $wl_shop = '<center><table><tr>':
+				money += 2000
+				gs 'stat'
+				'Developer Note: It seems you have run into a problem, it could be that you already own all possible prostitution outfits that are available from this shop and Léon couldn''t have bought you one. You get an additional 2000 <b>₽</b>.'
+				act 'Look for a pair of high heels': gt 'mod_wlife_okoro_sex', 'hotel_leave'	
+			else
+				$wl_shop += '</tr></table></center>'
+				$wl_shop += '<br>Click on the outfit he bought you.'
+				$wl_shop
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'hotel_leave':
+	if home_owned[6] = 1 and wl_status['hotel'] = 1 and hotelroom = 1:
+		gt 'mod_wlife_hotelroom', 'room'
+	else
+		gt 'pavtrain'
+	end
+end
+
+--- mod_wlife_okoro_sex ---------------------------------
+
+

+ 801 - 0
locations/mod_wlife_phone.qsrc

@@ -0,0 +1,801 @@
+# mod_wlife_phone
+
+if $ARGS[0] = 'start':
+	*clr & cla
+	menu_off = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	
+	act 'Put your phone away': gt $loc, $metka
+		
+	if wl_wine = 1 and wine = 0: 'Claim the bottle of <a href="exec: wl_wine = 0 & wine = 1 & gt ''mod_wlife_phone'', ''start''">wine</a> Henri gave you as a present.'
+		
+	if wl_georgiy['payment_method'] = 1:
+		'<br>You have to pay <<wl_georgiy[''lump_sum'']>> <b>₽</b>'+iif(wl_debt['amount'] = 0, '.', ' while you already owe the Belys <<wl_debt[''amount'']>> <b>₽</b>.')+' If you want to work at the gas station, you''ll have to take a bus from the industrial train station in St. Petersburg.'
+	elseif week < 7:
+		'<br>You have to work <<wl_whore[''shifts_week'']>> shifts for Mr. Bely and have worked <<wl_whore[''shifts_done'']>> this week.'+iif(wl_prison['status'] > 0 and wl_prison['shift'] = 0, ' You have to work one of those shifts at the prison', ' ')+iif(wl_whore['shifts_message'] = 0, 'If you want to work at the gas station'+iif(wl_prison['status'] > 0, ' or at the prison,', ',')+' you have to send Volya a message before 16:00.', iif(hour < 17, '<br>Volya will pick you up outside your parents apartment building between 16:00 and 17:00.', ''))
+	elseif week = 7 and wl_georgiy['timer_day'] ! daystart:
+		'<br>You have to report to Georgiy at the warehouse today. He is at the warehouse after 20:00. You '+iif(wl_whore['shifts_done'] < wl_whore['shifts_week'], 'haven''t', 'have')+' fulfilled this weeks obligation.'
+	elseif week = 7 and wl_georgiy['timer_day'] = daystart:	
+		'<br>You have reported to Georgiy. Next week you have to work <<wl_whore[''shifts_week'']>> shifts.'
+	end
+			
+	!!Earnings Check
+	if wl_georgiy['payment_method'] = 0:
+		if wl_whore['shifts_done'] > 0: 	
+			wl_whore['earnings_check'] = wl_whore['earnings_week'] / wl_whore['shifts_done']
+			
+			wl_whore['earnings_check_unmod'] = wl_whore['earnings_check']
+			
+			if wl_whore['shifts_minimum'] = 3 and wl_whore['shifts_done'] > wl_whore['shifts_week']: wl_whore['earnings_check'] += 750 * (wl_whore['shifts_done'] - wl_whore['shifts_week'])
+			
+			if wl_whore['earnings_check'] < 1500:
+				$wl_whore['performance'] = 'a very weak'
+			elseif wl_whore['earnings_check'] < 2250:
+				$wl_whore['performance'] = 'a weak'
+			elseif wl_whore['earnings_check'] < 3250:
+				$wl_whore['performance'] = 'a slightly below average'
+			elseif wl_whore['earnings_check'] < 4750:
+				$wl_whore['performance'] = 'an average'		
+			elseif wl_whore['earnings_check'] < 6500:
+				$wl_whore['performance'] = 'an slightly above average'
+			elseif wl_whore['earnings_check'] < 9000:
+				$wl_whore['performance'] = 'a strong'
+			else
+				$wl_whore['performance'] = 'a very strong'
+			end
+					
+			'<br>This week you have earned <<wl_whore[''earnings_check_unmod'']>> <b>₽</b> per shift. This is <<$wl_whore[''performance'']>> performance.'
+		end
+		
+		if wl_debt['amount'] > 0:
+			'<br>Currently you only get <<wl_whore[''share_player''] - 20>>% of your earnings. Volya keeps 20% to pay down your debts.'
+		else
+			'<br>Currently you get <<wl_whore[''share_player'']>>% of your earnings.'
+		end
+		
+		'<br>Volya will pick you up and drop you off in <<$wl_loc[2]>>. (<a href="exec: gt ''mod_wlife_phone'', ''loc_change''">Change it</a>)'
+		
+		if wl_whore['shifts_message'] = 0 and wl_whore['shifts_message_timer'] ! daystart and hour < 16 and week ! 7 and wl_georgiy['timer_week'] ! week: 
+			if wl_whore['shifts_done'] >= wl_whore['shifts_week']:
+				if wl_stats['acceptance'] < 10:
+					'<br>You haven''t accepted your life as a whore and are very hesitant to work an additional shift.'
+					gs 'willpower', 'prostitution', 'self', 'hard'
+					will_cost = will_cost * 2
+				elseif wl_stats['acceptance'] < 20:
+					'<br>You haven''t accepted your life as a whore and are hesitant to work an additional shift.'
+					gs 'willpower', 'prostitution', 'self', 'hard'
+				elseif wl_stats['acceptance'] < 40:
+					'<br>You haven''t accepted your life as a whore, but you are slowly getting used to it. It''s still difficult to motivate you to work an additional shift.'
+					gs 'willpower', 'prostitution', 'self'
+				else
+					gs 'willpower', 'prostitution', 'self', 'easy'
+				end
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:
+					act 'Text Volya that you will work today (<<will_cost>> Willpower)': 
+						minut += 1
+						wl_whore['shifts_message'] = 1
+						wl_whore['shifts_message_timer'] = daystart					
+						gs 'willpower', 'pay', 'self'
+						gt 'mod_wlife_phone', 'start'
+					end
+				else
+					act 'Text Volya that you will work today (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			elseif wl_whore['shifts_done'] < wl_whore['shifts_week']:
+				act 'Text Volya that you will work today': 
+					minut += 1
+					wl_whore['shifts_message'] = 1
+					wl_whore['shifts_message_timer'] = daystart
+					gt 'mod_wlife_phone', 'start'
+				end
+			end
+		elseif wl_whore['shifts_message'] = 1 and wl_whore['shifts_message_timer'] = daystart and hour < 17:
+			act 'Text Volya that you can''t make it':
+				minut += 1
+				wl_whore['shifts_message'] = 0
+				gt 'mod_wlife_phone', 'start'
+			end
+		elseif $loc = 'mod_wlife_highway':
+			act 'Text Volya to pick you up': wl_temp = 1 & gt 'mod_wlife_volya', 'shift_premature_end'
+		end
+	end
+	
+	if wl_iosif['timer'] = 1: '<br>You have to visit Iosif at the warehouse at 23:00.'
+		
+	if wl_georgiy['timer_week'] < week and wl_demand['party'] = 1:
+		'<br>You have to go to the party at Vadim Bely''s house next saturday.'
+	elseif wl_georgiy['timer_week'] = week and wl_demand['party'] = 1:
+		'<br><font color="red">You can''t work today. You have to go to Volya''s apartment today (19:00) to get ready for the party at Vadim Bely''s house</font>.'
+	end
+		
+	if wl_status['main'] > 4 and PCloStyle = 4 and ShoHeels > 3 and (wl_whore['pirsA'] = 0 or (wl_whore['pirsA'] > 0 and pirsA < 10000)): 
+		'<br>You are ready to work. Outfit'+iif(wl_whore['pirsA'] > 0, ', heels and tongue piercing', ' and heels')+' are an appropriate choice to work as a street whore.'
+	elseif wl_status['main'] > 4:
+		iif(PCloStyle = 4, '<br>Your outfit is an appropriate choice for a prostitute.', '<br>You need to change your outfit to work as a prostitute.')+iif(pirsA < 10000, '', iif(wl_whore['pirsA'] > 0, ' You''ll have to wear your tongue piercing to be able to work.', ''))
+		iif(ShoHeels > 3, 'Your shoes are a good choice', 'You should think about your choice of shoes')+' if you want to go to work today.'
+	end
+						
+	if $wl_names['street'] ! '' and wl_thought['pissing'] = 1: act 'Check your personal information': gt 'mod_wlife_phone', 'character'
+	
+	if wl_status['main'] > 4: act 'Check your information about the Bely''s operation': gt 'mod_wlife_phone', 'investigation'
+
+	if wl_pictures > 0:
+		act 'Look at '+iif(wl_pictures['count'] > 1, 'your degrading pictures', 'the degrading picture')+'':
+			*clr & cla
+			if wl_pictures['start'] = 1:
+				*nl & '<center><b>The fateful day</b></center>'
+				'<center><img src="mod/wlife/images/sex/story/start/start.jpg"></center>'
+			end
+			
+			if wl_pictures['iosif_1'] = 1:
+				*nl & '<center><b>Iosif marking his territory'+iif(wl_pictures['iosif_2'] = 1 or wl_pictures['iosif_3'] = 2, ' (Part 1)', '')+'</b></center>'
+				'<center><img src="mod/wlife/images/sex/iosif/warehouse/creampie.jpg"></center>'
+			end
+			
+			if wl_pictures['iosif_2'] = 1:
+				*nl & '<center><b>Iosif marking his territory (Part 2)</b></center>'
+				'<center><img src="mod/wlife/images/sex/iosif/warehouse/piss_whore.jpg"></center>'
+			end
+			
+			if wl_pictures['iosif_3'] = 2: 
+				*nl & '<center><b>Iosif marking his territory (Part '+iif(wl_pictures['iosif_2'] = 1, '3', '2')+')</b></center>'
+				'<center><img src="mod/wlife/images/prostitution/party/iosif/iosif_facial.jpg"></center><br>'
+			end	
+			
+			act 'Go back': gt 'mod_wlife_phone', 'start'
+		end
+	end
+		
+	if wl_okoro['status'] = 3: 
+		act 'Reply to Henri Okoro': gt 'mod_wlife_phone', 'okoro_reply'
+	elseif wl_okoro['status'] > 3 and wl_okoro['timer'] ! daystart and week = 7:
+		act 'Call Henri Okoro':
+			if ($loc ! 'bedr' and $loc ! 'bedr2x' and $loc ! 'bedrPar' and $loc ! 'pavSharedApt' and $loc ! 'mod_BroMod_bedrPar' and $loc ! 'mod_wlife_hotelroom') or (sisterHere = 1 and ($loc = 'bedrPar' or $loc = 'mod_BroMod_bedrPar')):
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+				'Henri said to call him on a Sunday and you should probably be in your bedroom'+iif(sisterHere = 1 and $loc = 'bedrPar', ', when your sister isn''t here.', '.')
+				
+				act 'Go back': gt 'mod_wlife_phone', 'start'
+			else
+				gt 'mod_wlife_okoro', 'call'
+			end
+		end
+	end	
+	
+	if wl_homeless['video_count'] > 0:
+		act 'Visit youporn.com to see your video':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/youporn.jpg"></center>'
+			if wl_homeless['video_timer'] ! daystart:
+				wl_temp = daystart - wl_homeless['video_timer']
+				wl_homeless['video_count'] += rand(500,1500) * wl_temp
+				wl_homeless['video_timer'] = daystart
+				killvar 'wl_temp'
+			end
+			gs 'arousal', 'porn', 2
+			gs 'stat'
+			'You look at the number of views. It '+iif(wl_homeless['video_count'] = 70000, 'still is', 'has gone up to')+' <<wl_homeless[''video_count'']>>.'
+			
+			act 'Close your browser': gs 'arousal', 'end' & gt 'mod_wlife_phone', 'start'
+			
+			act 'Click play':
+				*clr & cla
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/pussy_1.mp4"></video></center>'
+				wl_homeless['video_count'] += 1
+				gs 'arousal', 'porn', 6
+				gs 'arousal', 'end'
+				gs 'stat'
+				'You watch yourself getting fucked.'
+				
+				act 'Close your browser': gs 'arousal', 'end' & gt 'mod_wlife_phone', 'start'
+			end
+		end
+	end
+	
+	act 'Enter the cheatmenu': gt 'mod_wlife_cheatmenu', 'start'
+end
+
+if $ARGS[0] = 'loc_change':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Text him the new address where he should pick you up and drop you off after work.'
+	
+	act 'Don''t change the address': gt 'mod_wlife_phone', 'start'
+	
+	act 'Pavlovsk':
+		$wl_loc[0] = 'pav_complex'
+		$wl_loc[1] = 'start'
+		$wl_loc[2] = 'Pavlovsk'
+		gt 'mod_wlife_phone', 'start'
+	end
+	
+	act 'Pavlovsk''s Hotel':
+		$wl_loc[0] = 'pavtrain'
+		$wl_loc[1] = ''
+		$wl_loc[2] = 'Pavlovsk''s Hotel'
+		gt 'mod_wlife_phone', 'start'
+	end
+	
+	act 'St. Petersburg':
+		$wl_loc[0] = 'street'
+		$wl_loc[1] = ''
+		$wl_loc[2] = 'St. Petersburg'
+		gt 'mod_wlife_phone', 'start'
+	end
+	
+	act 'Pushkin/Old Town':
+		'street'
+		$wl_loc[0] = 'liam'
+		$wl_loc[1] = ''
+		$wl_loc[2] = 'Pushkin/Old Town'
+		gt 'mod_wlife_phone', 'start'	
+	end
+	
+	act 'Gadukino':
+		'street'
+		$wl_loc[0] = 'gadukino'
+		$wl_loc[1] = ''
+		$wl_loc[2] = 'Gadukino'
+		gt 'mod_wlife_phone', 'start'	
+	end
+end
+
+if $ARGS[0] = 'character':
+	*clr & cla
+	'<center><img src="<<func(''$face_image'')>>"></center>' 
+	
+	'<b>Names:</b>'
+	if $wl_names['street'] ! '': 'The name you tell your clients is: <<$wl_names[''street'']>> <a href="exec: gt ''mod_wlife_phone'', ''change_name_street''">(Change it)</a>'
+	if $wl_names['okoro'] ! '': 'You gave the Okoro brothers your '+iif($wl_names['okoro'] = $pcs_firstname, 'real', 'fake')+' name.'
+	if $wl_names['first'] ! '': 'The first name in your fake passport is: <<$wl_names[''first'']>> <a href="exec: gt ''mod_wlife_phone'', ''change_name_passport''">(Change it)</a>'
+	if $wl_names['last'] ! '': 'The last name in your fake passport is: <<$wl_names[''last'']>> <a href="exec: gt ''mod_wlife_phone'', ''change_name_passport''">(Change it)</a>'
+		
+	*nl
+	
+	'<b>Fetishes</b>'
+	'Do you like the following fetishes?'
+	if $wl_fetish['humiliation'] ! '': '- Being humiliated: '+iif($wl_fetish['humiliation'] = 'yes', '<b>Yes</b>', '<a href="exec: $wl_fetish[''humiliation''] = ''yes'' & gt ''mod_wlife_phone'', ''character''">Yes</a>')+'|'+iif($wl_fetish['humiliation'] = 'no', '<b>No</b>', '<a href="exec: $wl_fetish[''humiliation''] = ''no'' & gt ''mod_wlife_phone'', ''character''">No</a>')  
+	if $wl_fetish['pissing'] ! '': '- Pissing: '+iif($wl_fetish['pissing'] = 'yes', '<b>Yes</b>', '<a href="exec: $wl_fetish[''pissing''] = ''yes'' & gt ''mod_wlife_phone'', ''character''">Yes</a>')+'|'+iif($wl_fetish['pissing'] = 'no', '<b>No</b>', '<a href="exec: $wl_fetish[''pissing''] = ''no'' & gt ''mod_wlife_phone'', ''character''">No</a>')+'|'+iif($wl_fetish['pissing'] = 'blocked', '<b>Blocked</b>', '<a href="exec: $wl_fetish[''pissing''] = ''blocked'' & gt ''mod_wlife_phone'', ''character''">Blocked</a>')
+	if $wl_fetish['pissed_on'] ! '': '- Getting pissed on: '+iif($wl_fetish['pissed_on'] = 'yes', '<b>Yes</b>', '<a href="exec: $wl_fetish[''pissed_on''] = ''yes'' & gt ''mod_wlife_phone'', ''character''">Yes</a>')+'|'+iif($wl_fetish['pissed_on'] = 'no', '<b>No</b>', '<a href="exec: $wl_fetish[''pissed_on''] = ''no'' & gt ''mod_wlife_phone'', ''character''">No</a>')+'|'+iif($wl_fetish['pissed_on'] = 'blocked', '<b>Blocked</b>', '<a href="exec: $wl_fetish[''pissed_on''] = ''blocked'' & gt ''mod_wlife_phone'', ''character''">Blocked</a>')
+	if $wl_fetish['piss_drinking'] ! '': '- Drinking piss: '+iif($wl_fetish['piss_drinking'] = 'yes', '<b>Yes</b>', '<a href="exec: $wl_fetish[''piss_drinking''] = ''yes'' & gt ''mod_wlife_phone'', ''character''">Yes</a>')+'|'+iif($wl_fetish['piss_drinking'] = 'no', '<b>No</b>', '<a href="exec: $wl_fetish[''piss_drinking''] = ''no'' & gt ''mod_wlife_phone'', ''character''">No</a>')+'|'+iif($wl_fetish['piss_drinking'] = 'blocked', '<b>Blocked</b>', '<a href="exec: $wl_fetish[''piss_drinking''] = ''blocked'' & gt ''mod_wlife_phone'', ''character''">Blocked</a>') 
+	if $wl_fetish['rimjob'] ! '': '- Giving rimjobs: '+iif($wl_fetish['rimjob'] = 'yes', '<b>Yes</b>', '<a href="exec: $wl_fetish[''rimjob''] = ''yes'' & gt ''mod_wlife_phone'', ''character''">Yes</a>')+'|'+iif($wl_fetish['rimjob'] = 'no', '<b>No</b>', '<a href="exec: $wl_fetish[''rimjob''] = ''no'' & gt ''mod_wlife_phone'', ''character''">No</a>')+'|'+iif($wl_fetish['rimjob'] = 'blocked', '<b>Blocked</b>', '<a href="exec: $wl_fetish[''rimjob''] = ''blocked'' & gt ''mod_wlife_phone'', ''character''">Blocked</a>') 
+	if $$wl_fetish['atm'] ! '': '- Ass to mouth: '+iif($wl_fetish['atm'] = 'yes', '<b>Yes</b>', '<a href="exec: $wl_fetish[''atm''] = ''yes'' & gt ''mod_wlife_phone'', ''character''">Yes</a>')+'|'+iif($wl_fetish['atm'] = 'no', '<b>No</b>', '<a href="exec: $wl_fetish[''atm''] = ''no'' & gt ''mod_wlife_phone'', ''character''">No</a>')+'|'+iif($wl_fetish['atm'] = 'blocked', '<b>Blocked</b>', '<a href="exec: $wl_fetish[''atm''] = ''blocked'' & gt ''mod_wlife_phone'', ''character''">Blocked</a>') 
+	if $wl_brand['type'] ! '' or wl_whore['pirsA'] > 0:
+		*nl
+		'<b>Tattoos and Piercings:</b>'
+		if $wl_brand['type'] ! '': 'You have been branded as a whore with a <a href="exec: gt ''mod_wlife_phone'', ''tattoo'', ''brand''"><<$wl_brand[''type'']>> tattoo</a>.'
+		if $wl_brand['text_pubic'] ! '': 'Iosif forced you to get a <a href="exec: gt ''mod_wlife_phone'', ''tattoo'', ''iosif''">pubic tattoo</a>.'
+		if wl_whore['pirsA'] > 0: 'The Bely''s forced you to get a tongue <a href="exec: gt ''mod_wlife_phone'', ''tongue_piercing''">piercing</a>.'
+	end
+	
+	*nl
+	
+	act 'Go back': gt 'mod_wlife_phone', 'start'
+end
+
+if $ARGS[0] = 'investigation':
+	*clr & cla	
+	minut += 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	
+	if wl_status > 4:
+		'<b>Properties:</b>'
+		'- They own a warehouse in Pavlovsk''s industrial area'
+		if wl_status['hotel']: '- The hotel near the train station is owned by the Belys'
+		*nl
+	end
+	
+	if wl_medical['status'] = 2:
+		'<b>Doctor Mikhailov:</b>'
+		'- As far as you know all whores have to check-n with Doctor Mikhailov at the clinic in Pavlovsk'
+		'- Doctor Mikhailov works for the Belys and maybe has files on all the girls working for the Belys'
+		*nl
+	end
+
+	if wl_investigation['shura'] > 0:
+		'<b>Shura Azarov:</b>'
+		'- He''s the one in charge or one of the higher ups of a drug dealing operation'
+		if wl_drugs['status'] = 2: '- Sacha, an ex-classmate of yours, is selling weed in the park for Shura'
+		if wl_shura['talk_hard_drugs'] = 1: '- Shura and the Belys sell hard drugs like heroin and cocaine'
+		if wl_shura['ignore_counter'] > 6: '- The Belys store at least some of the drugs at the warehouse'
+		*nl
+	end
+	
+	if wl_investigation['okoro'] > 0: 
+		'<b>Okoro brothers:</b>'
+		'- The Okoro brothers shipped 1,000 kilos of an unknown substance (drugs???) through the St. Petersburg port'
+		*nl
+	end
+	
+	if wl_investigation['maxim'] > 0:
+		'<b>Maxim:</b>'
+		if wl_investigation['maxim'] = 1:
+			'- You could see excel-sheets on Maxim''s laptop. Maybe he works as some kind of numbers guy for the Bely''s'
+		elseif wl_investigation['maxim'] > 1:
+			'- The Belys have legitimate businesses they use to launder their illegal incomes'
+			'- Maxim is an accountant and manages the financial side of the Bely''s legitimate businesses'
+			if wl_investigation['maxim'] = 3:
+				'- You know the password for Maxim''s laptop. It''s Arthur his dog''s name.'
+			elseif wl_investigation['maxim'] = 4:
+				'- You have copied Maxim''s files onto my usb-drive. You need to '+iif(komp = 0, 'buy a laptop to check the files.', 'check the files on your laptop')
+			elseif wl_investigation['maxim'] = 5:
+				'- You have all financial information about the legal and illegal parts of the Bely''s business'
+			end
+		end
+		*nl
+	end
+	
+	act 'Go back': gt 'mod_wlife_phone', 'start'
+	if wl_investigation['points'] > 0:
+		act 'Send the information to the police':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+			'Developer Note: For now the information you have collected is enough to get the Belys arrested, since the other investigations aren''t finished yet. Sending the information will block all content, like the cheat. Right now there is also no ''end scene'' or something similar. You can also revert your decision later if you want to. This will not be possible, when I have added more investigations and a proper end.'
+			
+			act 'Wait for now': gt 'mod_wlife_phone', 'investigation'
+			act 'Send the information': 
+				wl_status['stored'] = wl_status['main']
+				wl_status['main'] = -1
+				gt $loc, $metka
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'change_name_street':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	$wl_names['street'] = ''
+	$wl_names['street'] = input("What name do you want to tell your clients? (Leave blank for <<$pcs_nickname>>)")
+	if $wl_names['street'] = '': $wl_names['street'] = $pcs_nickname
+	act 'Continue': gt 'mod_wlife_phone', 'character'
+end
+
+if $ARGS[0] = 'change_name_passport':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	$wl_names['first'] = ''
+	$wl_names['first'] = input("What is your name in your fake passport? (Leave blank for <<$pcs_firstname>>)")
+	if $wl_names['first'] = '': $wl_names['first'] = $pcs_firstname
+	if $wl_names['okoro'] ! '' and $wl_names['okoro'] ! $pcs_firstname: $wl_names['okoro'] = $wl_names['first']
+	act 'Continue': gt 'mod_wlife_phone', 'character'
+end
+
+if $ARGS[0] = 'passport_pay':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_debt['amount'] += 18000
+	wl_debt['amount'] += wl_brand['price']
+	wl_passport_pay = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Volya send you a message.'
+	*nl
+	'<i>Hi <<$pcs_nickname>>, I totally forgot to tell you the good news, when I gave you the passport. It normally costs 30,000 <b>₽</b>, but Georgiy agreed that you don''t have to pay the full amount. I managed to beat down the price to 18,000 <b>₽</b>.</i>'
+	*nl
+	'18,000 <b>₽</b>? And you also have to pay for getting branded? You read the message again, but the amount didn''t change. You sigh and shake your head. Yeah, that''s really great, you think sarcastically and put your phone away.'
+	
+	act 'Continue': gt $loc, $metka
+end
+
+if $ARGS[0] = 'tattoo':
+	*clr & cla
+	if $ARGS[1] = 'brand':
+		'<center><img src="<<$wl_brand[''image'']>>"></center>'
+		'The tattoo on your <<$wl_brand[''type'']>> is your whore brand.'
+	elseif $ARGS[1] = 'iosif':
+		'<center><img src="<<$wl_brand[''image_pubic'']>>"></center>'
+		'Iosif forced you to get the word ''<<$wl_brand[''text_pubic'']>>'' inked on your pubic area.'
+	end
+	
+	act 'Continue': gt 'mod_wlife_phone', 'start'
+end
+
+if $ARGS[0] = 'tongue_piercing':
+	*clr & cla
+	'<center><img  height = 334 src="images/pc/body/piercings/a<<wl_whore[''pirsA'']>>.jpg"></center>'
+	'The Bely''s forced you to buy this piercing.'
+	
+	act 'Continue': gt 'mod_wlife_phone', 'start'
+end
+
+if $ARGS[0] = 'start_aftermath_picture':
+	*clr & cla
+	menu_off = 1
+	minut += 1
+	wl_status['main'] = 3
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. You have received a message from an unknown number.'
+	gs 'stat'
+	
+	act 'Open it':
+		*clr & cla
+		minut += 1
+		'<center><img <<$set_imgh>> src="mod/wlife/images/sex/story/start/start.jpg"></center>'
+		'It''s a picture of you as one of the guys shoots his load directly into your mouth.'
+		'Shortly after the picture a second message appears: <i>A little memento of your special day</i>.'
+		'You click on the message and ...'
+		gs 'stat'
+		
+		act 'Delete the picture':
+			cla & *nl
+			wl_pictures['start'] = 0
+			'You angrily delete the picture. Why would you ever want to remember that day?'
+			
+			act 'Put your phone away': gt $loc, $metka
+		end
+		
+		act 'Save the picture':
+			cla & *nl
+			inhib_exp += 2
+			wl_pictures['start'] = 1
+			wl_pictures['count'] += 1
+			'You save the picture. Maybe you save it as evidence, maybe because you really want to, but whatever your reasons are, you keep it on your phone.'
+			
+			act 'Put your phone away': gt $loc, $metka
+		end
+	end
+end
+
+if $ARGS[0] = 'start_aftermath_volya':
+	*clr & cla
+	menu_off = 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. You are getting a call from an unknown number.'
+	
+	act 'Answer it': gt 'mod_wlife_volya', 'introduction_start'
+end
+
+if $ARGS[0] = 'volya_missed':
+	*clr & cla
+	menu_off = 1
+	wl_whore['shifts_message'] = 0
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Volya send you a message.'
+	*nl
+	if wl_shift_missed = 0:
+		wl_shift_missed = 1
+		'<i>Hi <<$pcs_nickname>>. If you aren''t going to make it, send me a message next time.</i>'
+	else
+		wl_stats['loyalty'] -= rand(0,1)
+		'<i>Come on <<$pcs_nickname>>, next time tell me, when you aren''t going to make it. Don''t stand me up like this.</i>'
+	end
+	
+	act 'Put your phone away': gt $loc, $metka
+end 
+
+if $ARGS[0] = 'iosif_work_first':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. You are getting a call from an unknown number.'
+	
+	act 'Answer it': gt 'mod_wlife_iosif', 'first_call'
+end
+
+if $ARGS[0] = 'iosif_work_regular':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. You are getting a call from Iosif.'
+	
+	gs 'willpower', 'prostitution', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Don''t answer it (<<will_cost>> Willpower)': 
+			wl_stats['loyalty'] -= rand(0,1)
+			wl_iosif['call_avoid'] += 1
+			wl_iosif['timer_whore'] = daystart + rand(0,3)
+			gt $loc, $metka
+		end
+	else
+		act 'Don''t answer it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+		
+	act 'Answer it': wl_iosif['call_avoid'] = 0 & gt 'mod_wlife_iosif', 'regular_call'
+end
+
+if $ARGS[0] = 'iosif_party_pic':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_pictures['count'] += 1
+	wl_pictures['iosif_3'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Iosif has send you a picture.'
+	
+	act 'Open it': 
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><img src="mod/wlife/images/prostitution/party/iosif/iosif_facial.jpg"></center><br>'
+		'A small message accompanies the picture: <i>Slut look what I found. Isn''t it a great picture? I sifted through all the footage I could get my hands on. I hope you like it.</i>'
+		
+		act 'Continue': gt $loc, $metka
+	end
+end
+
+if $ARGS[0] = 'iosif_missed':
+	*clr & cla
+	menu_off = 1
+	wl_iosif['call_missed'] += 1
+	wl_stats['loyalty'] -= rand(2,6) * wl_iosif['call_missed']
+	wl_iosif['timer_whore'] = daystart + rand(2,4)
+	wl_iosif['timer'] = 0
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Iosif send you a message.'
+	*nl
+	if wl_iosif['call_missed'] > 1 and wl_bad['status_punishment'] = 0:
+		wl_bad['status_punishment'] = 1
+		wl_bad['iosif'] = 1
+		wl_iosif['call_missed'] = 0
+		'<i>This was the last time that you ignored me. I called Georgiy and told him what a bitch you were. Good luck on Sunday.</i>'
+	elseif rand(0,1) = 0:
+		'<i>Who do you think you are? You fucking cunt. Next time, when I tell you to get your ass to the warehouse, you''ll get your fucking ass to the warehouse!</i>'
+	else
+		'<i>I told you to come to the warehouse you stupid bitch. Move your ass next time or you''ll fucking regret it.</i>'
+	end
+	
+	act 'Put your phone away': gt $loc, $metka
+end
+
+if $ARGS[0] = 'iosif_avoid':
+	*clr & cla
+	menu_off = 1
+	wl_iosif['call_missed'] += 1
+	wl_stats['loyalty'] -= rand(2,6) * wl_iosif['call_missed']
+	wl_iosif['timer_whore'] = daystart + rand(2,4)
+	wl_iosif['call_avoid'] = 0
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Iosif send you a message.'
+	*nl
+	if wl_iosif['call_missed'] > 1 and wl_bad['status_punishment'] = 0:
+		wl_bad['status_punishment'] = 1
+		wl_bad['iosif'] = 1
+		wl_iosif['call_missed'] = 0
+		'<i>This was the last time that you ignored me. I called Georgiy and told him what a bitch you were. Good luck on Sunday.</i>'
+	elseif rand(0,1) = 0:
+		'<i>Fucking lazy bitch, answer your fucking phone, when I call you.</i>'
+	else
+		'<i>Pick up, when I fucking call you!</i>'
+	end
+	
+	act 'Put your phone away': gt $loc, $metka
+end
+
+if $ARGS[0] = 'volya_party_warning':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_party_warning_day = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Volya send you a message.'
+	*nl
+	'<i>Hi <<$pcs_nickname>>, remember to be at my apartment at 19:00 to go to Vadim''s party. This is important!</i>'
+	
+	act 'Put your phone away': gt $loc, $metka
+end
+
+if $ARGS[0] = 'okoro':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_okoro['status'] = 3
+	wl_okoro['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. An unknown number send you a message.'
+	*nl
+	'<i>Hello <<$wl_names[''okor'']>>. I hope you don''t mind, but I asked Vadim for your number. If you ever want to chat, send me a message. I typically have some free time on Sundays.
+	- Henri Okoro</i>'
+	
+	act 'Put your phone away': gt $loc, $metka
+	act 'Reply': gt 'mod_wlife_phone', 'okoro_reply' 
+end
+
+if $ARGS[0] = 'okoro_reply':
+	*clr & cla
+	menu_off = 1
+	minut += rand(3,7)
+	wl_okoro['status'] = 4
+	wl_okoro['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'You type a quick message to Henri that you would like to chat with him someday. It only takes a few minutes for Henri to reply: <i>There is a video chat app I always wanted to give a try if you''re up for it. Talking would be fine, but I really want to see you.</i>'
+	
+	act 'Install the app': 
+		cla & *nl
+		minut += 1
+		gs 'stat'
+		'You quickly download the app and install it. You can now call Henri on a Sunday.'
+		
+		act 'Put your phone away': gt $loc, $metka
+	end
+end
+
+if $ARGS[0] = 'leon_reminder':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_okoro['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. Henri Okoro send you a message.'
+	*nl
+	'<i>Hello <<$wl_names[''okoro'']>>. Léon is looking forward to tonight and he wanted me to tell you, that he''s in room 309 and should be back in his room after ten.</i>'
+	*nl
+	'You wonder for a second why Henri and not Léon is texting you, but then you remember that his brother doesn''t speak Russian, not even English. Why would Henri send his brother to Georgiy instead of going himself, when he doesn''t speak either of those languages? Maybe Georgiy speaks French? But you somehow doubt it. And then you realize that you also won''t be able to talk to him. Not that you expect a lot of talking, but still it could make it more complicated.' 
+	
+	act 'Put your phone away': gt $loc, $metka
+end
+
+if $ARGS[0] = 'homeless_aftermath':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_homeless['video_count'] = 70000
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	'Your phone vibrates in your '+iif(bag = 1, 'purse', 'pocket')+'. The unknown person, who send you the picture of getting blowbanged in the warehouse, send you another message.'
+	*nl
+	'<i>Nice work <<$pcs_nickname>>, you really fucked him good. See for yourself, I''m not the only one saying that: <a href="exec: minut += 2 & gt ''mod_wlife_phone'', ''homeless_aftermath_link''">https://www.youporn.com/watch/15288211/young-russian-whore-makes-a-bum-s-day</a>'
+	'See you next Sunday, Georgiy</i>'
+	
+	act 'Click on the link': gt 'mod_wlife_phone', 'homeless_aftermath_link'
+end
+
+if $ARGS[0] = 'homeless_aftermath_link':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/youporn.jpg"></center>'
+	wl_homeless['video_timer'] = daystart
+	gs 'arousal', 'porn', 2
+	gs 'stat'
+	'With trembling hands you click on the link praying that it isn''t what it obviously is.'
+	'Oh... my... god... they really made a video. It''s short, only two minutes, but it isn''t a problem for you to recognize yourself even if your face isn''t visible. There is no doubt about it.'
+	*nl
+	'Why would they do that? Isn''t it enough for you to get pounded by a hobo? Why do they need to publicly humiliate you? But while you''re pondering those questions the only possible answer is already forming in your mind. It''s not about humiliating you, it''s blackmail material. You bet your life on it, that this isn''t all there is. They probably took a longer video where your face is visible in some part of it.'
+		
+	act 'Watch it again': wl_temp = 1 & gt 'mod_wlife_phone', 'homeless_aftermath_watch'
+	act 'Read the comments': wl_temp = 1 & gt 'mod_wlife_phone', 'homeless_aftermath_comments'
+end
+
+if $ARGS[0] = 'homeless_aftermath_watch':
+	*clr & cla
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/pussy_1.mp4"></video></center>'
+	gs 'arousal', 'porn', 6
+	gs 'stat'
+	'Seeing it again comes with a bunch of different emotions. It''s humiliating, frustrating, enraging and so much more. Your mind can''t decide what to focus on and so you watch it again and again and again...'
+	*nl
+	'Three things stand out from the confusing mix of emotions: disgust, arousal and pride.'
+	'You are disgusted by it, when you remember the smell, how his filthy hands felt on your body and his dick inside you. But a hint of arousal also flares up inside you, when you remember how degrading the whole experience was and a little bit of pride manifests itself, when you think about how you gave him a happy memory to hold on to in what must be a miserable existence.'
+	*nl
+	'In the end one of the three dominates your reaction to the video...'
+	
+	act 'Disgust':
+		cla & *nl
+		wl_homeless['bad'] -= 1
+		wl_homeless['good'] -= 1
+		'That whole experience was one of the worst days of your life and you hope to never have to repeat it.'
+		
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'watch'
+	end
+	
+	act 'Pride':
+		cla & *nl
+		wl_homeless['good'] += 1
+		pcs_mood = 100
+		gs 'stat'
+		'You really did it and stepped up. In the end you conquered your own fear and revulsion. Yeah, it was disgusting, but you''re proud of yourself to be able to get through it and that in the process you actually did something nice for somebody.'
+		
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'watch'
+	end
+	
+	act 'Arousal':
+		cla & *nl
+		wl_homeless['bad'] += 1
+		if pcs_horny < 60: pcs_horny = 60
+		gs 'stat'
+		'At some point you have to deal with those weird flashes of arousal that spark inside you whenever you''re being degraded. You should be ashamed of yourself, the conscious part of your brain tells you, but your perverted subconscious relishes those memories like getting fucked by a homeless men'+iif($wl_fetish['pissed_on'] = 'yes', ' or being pissed on by Iosif.', '.') 
+		
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'watch'
+	end
+end
+
+if $ARGS[0] = 'homeless_aftermath_comments':
+	*clr & cla
+	minut += 3
+	wl_adrian['timer'] = daystart + rand(2,5)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/youporn.jpg"></center>'
+	'It already has over 70,000 views... "70,000?" you whisper and shake your head in disbelieve. You scroll down to take a look at the comments'
+	*nl
+	'<i>1. That girl knows her place.</i>'
+	iif($wl_homeless['condom'] = 'yes' or $wl_homeless['condom'] = 'broke', '<i>2. Such a vile whore doesn''t deserve a condom, she should have let him fuck her raw.</i>', '<i>2. She isn''t even using a condom. Such a piece of trash. Probably is riddled with diseases.</i>')
+	'<i>3. Doing her good deed for the day...</i>'
+	'<i>4. Where is the rest??? I want to see more of her!!</i>'
+	'<i>5. Only thinking about it makes me cum... again.</i>'
+	iif($wl_homeless['condom'] = 'yes' or $wl_homeless['condom'] = 'broke', '<i>6. I hope the condom broke that bitch doesn''t deserve it any better.</i>', '<i>6. I hope he came inside her. That bitch deserves a bum-baby.</i>')
+	'<i>7. Shut up you haters. That bitch is hot. Girls who fuck everything that moves are the best.</i>'
+	'<i>8. Probably the best day of his life.'
+	'<i>9. I bet she''s hot as fuck, just look at her legs... somebody knows who she is????</i>'
+	'<i>10. Damn I wish there was more...</i>'
+	'<i>11. He''s the happiest bum in the whole world.</i>'
+	*nl
+	'After reading the first comments, you liked...'
+	
+	act 'None of them':
+		cla & *nl
+		wl_stats['acceptance'] -= 1
+		wl_homeless['bad'] -= 1
+		wl_homeless['good'] -= 1
+		'Why would you like any of them? Those men all are fucked up perverts and can go to hell.'
+		
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'comments'	
+	end
+	
+	act '4, 5, 7, 9 and 10':
+		cla & *nl
+		wl_stats['acceptance'] += 2
+		'You know that you shouldn''t care what random men on the internet think about you, but you feel validated by their comments about wanting to see more and masturbating to you.'
+		
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'comments'	
+	end
+	
+	act '3, 8 and 11':
+		cla & *nl
+		wl_homeless['good'] += 1
+		'It''s not a very healthy reaction, your brain tells you, but that can''t stop your heart from beating a bit faster, when you read those comments. Helping the needy is something everybody should do, it isn''t something bad.'
+		
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'comments'
+	end
+	
+	act '1, 2, 6 and 8':
+		cla & *nl
+		wl_homeless['bad'] += 1
+		if pcs_horny < 60: pcs_horny = 60
+		gs 'stat'
+		'You feel ashamed, but can''t lie to yourself, when your eyes keep going back to the degrading comments, that you''re nothing more than trash. They trigger something inside you that lay dormant until you have been exposed to more and more degrading situation like getting fucked by strangers in their cars'+iif(wl_vadim['rough'] = 2, ' or begging Vadim to fuck you in the attic.', '')
+				
+		gs 'mod_wlife_phone', 'homeless_aftermath_actions', 'comments'
+	end
+end
+
+if $ARGS[0] = 'homeless_aftermath_actions':
+	if $ARGS[1] = 'watch':
+		if wl_temp < 2: 
+			act 'Read the comments': wl_temp = 2 & gt 'mod_wlife_phone', 'homeless_aftermath_comments'
+		else
+			act 'Put your phone away': 
+				killvar 'wl_temp'
+				gs 'arousal', 'end'
+				gt $loc, $metka
+			end
+		end
+	else
+		if wl_temp < 2: 
+			act 'Watch it again': wl_temp = 2 & gt 'mod_wlife_phone', 'homeless_aftermath_watch'
+		else
+			act 'Put your phone away': 
+				killvar 'wl_temp'
+				gs 'arousal', 'end'
+				gt $loc, $metka
+			end
+		end
+	end
+end
+
+--- mod_wlife_phone ---------------------------------

+ 360 - 0
locations/mod_wlife_prison.qsrc

@@ -0,0 +1,360 @@
+# mod_wlife_prison
+
+!!ToDo: Add prison information to the phone
+
+if $ARGS[0] = 'start':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	wl_prison['shift'] = 1
+	if wl_georgiy['payment_method'] = 0 and wl_whore['shifts_week'] > 0: wl_whore['shifts_week'] -= 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	if wl_prison['status'] = 1:
+		'"It''s your first time going there, right?" Volya asks as he starts the car.'
+		'"Is it that obvious?" You reply with a small laugh but he doesn''t seem to find anything funny as he focuses on the road ahead with a blank expression.'
+		'"This is a special job Georgiy gave you, <<$pcs_nickname>>. Don''t do anything to embarrass him." Volya glances your way briefly as he waits for an answer. "Understand?"'
+		'"Right, I''ll be on my best behavior." You figure the conversation is over as the two of you ride in silence, but he has one last thing to say to you.'
+		'"Try not to look like a scared deer in there, otherwise they''ll eat you alive like wolves."'
+	else
+		wl_prison['status'] += 1
+		'"Good, I''ll be sure to let Georgiy know you went this week," Volya replies as he starts the long drive to the prison. "The sooner you work there, the better. Waiting until the last day of the week to go... well, you don''t want Georgiy to get anxious and think you aren''t doing as you''re told."'
+	end
+	
+	act 'Ride in silence':
+		*clr & cla
+		minut += 25
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_day.jpg"></center>'
+		'You pull out your phone to take your mind of things.'
+
+		act 'Leave the car': gt 'mod_wlife_prison', 'arrival'
+	end
+	
+	act 'Ask him a question': cla & gs 'mod_wlife_prison', 'questions'
+end
+
+if $ARGS[0] = 'questions':	
+	if wl_prison['questions_0'] = 0:
+		act 'Where is the prison?':
+			*clr & cla
+			minut += 45
+			wl_prison['questions_0'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'You ask Volya where the prison is located as you watch the scenery outside your window change into unfamiliar streets.'
+			'"It''s outside St. Petersburg, on the outskirts of the city," he replies without taking his eyes off the road ahead. You pass through a small residential, then through the city center with all it''s office buildings and stores. Eventually, you leave behind the sounds and sights of the city for the grungy atmosphere of the industrial district that sits on the outskirts.'
+			'"How much further do we have to go?" You start to wonder as you start to see parts outside of the city you''ve never really explored. Truck and cargo yards, grey and brown factory buildings, various kinds of machinery. It all passes you by during the car ride to the prison.'
+			'"It''s just across this bridge," Volya replies as you feel a bump in the road when you cross over onto the bridge. "People want them as far away as possible, so they never have to think about them, beyond the thought of them being unredeemable trash."'
+			'The way he talks about it makes him sound bitter and almost resentful but before you can ask anymore questions, he interrupts your thoughts. "Here we are," he points out as the car come to a stop in front of the prison gates.'
+			
+			act 'Leave the car': gt 'mod_wlife_prison', 'arrival'
+		end
+	
+		act 'What should I expect in there?':
+			*clr & cla
+			minut += 45
+			wl_prison['questions_0'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			if (shplft_booked + prst_booked) > 0:
+				'"What exactly should I expect in there?" You break the silence finally when you ask Volya a question. You see that his brows are furrowed when he gives you a sideways glance.'
+				'"Haven''t you been arrested before? You should know," he answers pointedly.'
+				'Rolling your eyes, you let out an exasperated sigh. "Yeah, I''ve been arrested but I''ve never been to prison before. Definitely not an all male prison!"'
+				'"It''s not an all male prison," Volya corrects you. "It''s mixed, there''s a male and female wing, but I imagine you''re going to be spending your time with the men."'
+			else
+				'"What exactly should I expect in there?" You break the silence finally when you ask Volya a question.'
+				'Volya''s brows furrow for a moment before his expression relaxes into slight shock. "That''s right, you''ve never been arrested before. Apart from the small incident with the cop." He sounds surprised by that revelation which makes you feel a tad bit annoyed.'
+				'"Is that really so surprising?" You cross your arms and huff. Volya''s response is to shrug his shoulders indifferently.'
+				'"Most working girls end up getting picked up at least once," he tells you.'
+				'Seeing your chance to rub it in his face, you reply with a grin. "Well, I''m not like most girls!"'
+				'Unimpressed with your bragging, Volya continues on. "To answer your question, it''s a mixed prison. There''s a male and female wing, but I imagine you''re going to be spending your time with the men."'
+			end
+			'"Really? Isn''t it dangerous to have the men with the women?"'
+			'From the back of his throat, Volya lets out an annoyed groan. "Besides keeping them separated at all times, It''s a minimum security prison. The inmates there are relatively low risk. They''re usually first time offenders arrested for petty crimes."'
+			'You relax back into your seat with a relieved sigh. "So, it''s not killers or rapists... that''s a relief!"'
+			'"Oh, there''s likely to be a few there," Volya is quick to answer. "Inmates that are close to their release, no matter their crime, get sent there to wait out the rest of their sentence. Could be your luck that you find yourself with a murderer. It''s a good idea to be on your <b>best</b> behavior while you''re in there, <<$pcs_nickname>>."'
+			'With perfect timing, the car comes to a stop and you realize you''re parked outside the prison gates. You give one last look to Volya and notice the slightest bit of a smile on his face as he waits for you to get out and get to work.'
+					
+			act 'Leave the car': gt 'mod_wlife_prison', 'arrival'
+		end
+	end
+end
+
+if $ARGS[0] = 'arrival':
+	*clr & cla
+	minut += 3
+	gs 'stat'
+	if wl_prison['status'] = 1:
+		wl_prison['status'] = 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/singles/prison.jpg"></center>'
+		'Seeing the bleak and fading prison building for the first time fills you with dread. Even the surrounding area, well beyond its concrete walls and barbwire fences, seems affected by its foreboding presence. You know that at the end of the day, you get to leave this place but you still can''t shake this feeling that you''ll be locked up like the rest.'
+	
+		act 'Go to the gate':
+			*clr & cla
+			minut += 20
+			$location_type = 'privat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_0.mp4"></video></center>'
+			'"Come on, this way," a man in a black uniform calls to you from gate. He leads you inside and when you reach the metal detectors, he stops you. "You''ll have to be searched each time your visit. Anything that''s metal, like your phone or jewelry, will need to be put in here," he tells you, pointing to a plastic bin sitting on the table behind him.'
+			'Doing as he said, you hand over your phone and anything else not allowed into the prison before stepping through the metal detector. The guard does one final search, this time using his hands to pat down every inch of your body. In certain areas, it feels like he''s being <i>particularly</i> thorough as his hands linger over your breasts and ass a bit longer before moving on. All you can do is stand there and take it until he''s finished and declares you safe for entry.'
+			*nl
+			'"Alright, here''s your ID, Miss <<$wl_names[''last'']>>. This needs to be on you at all times, understand?" The guard hands you a laminated ID with your picture and fake name. How they managed to get a picture of you is a mystery but you don''t have time to think about it more as the guard ushers you further into the prison to meet the warden.'
+			
+			act 'Follow the guard':
+				*clr & cla
+				minut += 4
+				gs 'stat'
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_1.mp4"></video></center>'
+				'You enter a rather empty and bleak looking room. The walls are made of brick painted gray and completely bare, at least from what you can tell in the dim light. There''s a yellow light flickering down a hall on the other side of a barred door but other than that the only other light in the room is from a small lamp on a desk near the back wall. Sitting behind it is a man who stands to greet you. You''d guess he''s in his mid to late 30s, but with the bad lighting, scruffy facial hair and tired look on his face, he appears a lot older.'
+				*nl
+				'"Welcome, welcome," the Warden greets while giving you a firm handshake. "Take a seat Miss <<$wl_names[''last'']>>. I''m Warden Saveli and I''m happy to have you doing volunteer work with our prison."'
+				'"Oh, uh, volunteer work?" You ask as you sit. You don''t recall any mention of this "volunteer work" he''s talking about. Saveli is quick to pick up on your confusion and with an awkward laugh, he glances past you and gives the guard a silent nod. There''s a hard bang as the door to the office is closed, leaving you alone with the guard and the Warden.'
+				
+				act 'Mention Georgiy sending you':
+					*clr & cla
+					minut += 3
+					gs 'stat'
+					'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_2a.mp4"></video></center>'
+					'"Georgiy sent me here, to take care of his guys," You tell the Warden. To your surprise, the friendly demeanor he had just moments ago is dropped and his tone becomes tired, almost sounding annoyed when he speaks.'
+					'"I know why you''re here, and so does Adrik," he nods towards the guard who led you here. "But I can''t have a kid running around my prison, spreading her legs for Georgiy''s men." Saveli points with his pen to the ID dangling from your neck, "As far as anyone is concerned, you''re twenty-four years old and you''re here on volunteer work. If you say otherwise, you''ll end up locked up like the rest of these animals... if Georgiy doesn''t get to you first that is. You got that?"'
+					
+					act 'Nod in understanding':
+						*clr & cla
+						minut += 6
+						gs 'stat'
+						'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_3.mp4"></video></center>'
+						'Saveli shakes his head and sighs, reluctantly accepting the situation he''s in. "Well then... like I said before, I know why you''re really here and so does Adrik. He''ll be the one looking after you on your "shifts", so if you ever need anything, speak privately to him and he''ll know what to do."'
+						'At the mention of the guard, you glance behind you to see Adrik give you a small smile but it doesn''t seem all that friendly when you think about how he touched you during the search earlier.'
+						'Saveli clears his throat to get your attention again. "Now, your work today is simple: you''ll be helping medical check-in two new inmates. They''re some of Georgiy''s men so it''ll be just you alone with them. Adrik will keep lookout to make sure you''re not interrupted. I''m sure they can''t wait to meet you so he''ll take you to get changed into your uniform now. Any questions?"'
+						'"No, none at all!" You answer quickly when you realize he isn''t looking to drag this out any longer. With that done, Warden Saveli dismisses you, leaving you under Adrik''s supervision.'
+						
+						act 'Go get changed': gt 'mod_wlife_prison', 'first_day_0'
+					end
+				end
+				
+				act 'Remain silent':
+					*clr & cla
+					minut += 8
+					gs 'stat'
+					'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_2b.mp4"></video></center>'
+					'Warden Saveli notices your silence and smiles slightly. "Good, it''s better that you keep your lips shut unless they''re around some guy''s cock. Makes my job a lot easier when I don''t have to worry about you blowing your cover and getting us all in trouble."'
+					'You''re not sure how to take that but talking back now doesn''t seem like best choice, so you continue to remain quiet.'
+					'"Speaking of your cover," Saveli points with his pen to the ID hanging from your neck. "If anyone does ask, you''re a twenty-four year old volunteer. Adrik and I are the only ones that know why you''re really here and it should stay that way." At the mention of Adrik, Saveli motions to the guard, leading you to glance back and see him giving you a small smile but it doesn''t seem all that friendly when you think about how he touched you during the search earlier. "He''ll be looking after you on your "shifts", so if you need anything you should talk to him privately."'
+					'You look back to the Warden to see him shuffling around some papers on his desk. "The work is simple, especially since we all know the only thing you''re good at is lying on your back. You''ll be helping medical check-in two new inmates. They''re some of Georgiy''s men so it''ll be just you alone with them. Adrik will keep lookout to make sure you''re not interrupted. I''m sure they can''t wait to meet you so he''ll take you to get changed into your uniform now. Any questions?"'
+					'"No, none at all!" You answer quickly when you realize he isn''t looking to drag this out any longer. With that done, Warden Saveli dismisses you, leaving you under Adrik''s supervision.'
+					
+					act 'Go get changed': gt 'mod_wlife_prison', 'first_day_0'
+				end
+			end
+		end
+	else
+		$location_type = 'privat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_0.mp4"></video></center>'
+		'You arrive at the prison and as usual, you go through the metal detectors and give up your phone along with anything else not allowed inside before being searched again by Adrik. Once he''s finished, you''re given your ID and he leads you to Warden Saveli''s office.'
+		
+		act 'Follow Adrik':
+!!ToDo: Continue		
+		end
+	end
+end
+
+if $ARGS[0] = 'first_day_0':
+	*clr & cla
+	minut += 9
+	gs 'npcgeneratec', 0, 'prisoner', rand(21,28)
+	gs 'boyStat', $npclastgenerated
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_0.mp4"></video></center>'
+	'The thin fabric of the nurse uniform clings to your body, threatening to expose you at any moment as Adrik leads you into the male wing of the prison. The cells you pass all have solid metal doors with no way for the inmates to peep through and see you, something you''re not sure is good or bad. You wonder how they''d react to seeing a girl like you walking by in a tight skirt and top that is barely staying button closed.'
+	'"Here they are," Adrik stops in front of a cell and unlocks it to show two men in orange waiting on the other side. "I''ve already searched them and the room so you''re free to do your job."'
+	'"Thanks, I''ll try not to take too long," You tell him as you step into the room.'
+	'"Lucky them..." Adrik mutters under his breath but you don''t hear him over the squeal of the door being closed behind you.'
+	'Now that you''re alone with the two men, it comes to mind that they''re here because they were caught breaking the law. What exactly they did to end up here, you don''t know, which leaves you feeling uneasy as you watch them look you over like hungry dogs. Taking a deep breath, you hide your nervousness with a smile as you reassure yourself that Georgiy wouldn''t put you in any kind of danger.'
+	
+	act 'Start the examination':
+		*clr & cla
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_1.mp4"></video></center>'
+		$orgasm_or = 'no'
+		'"I need you to take off your shirts, so I can record your vitals..." You''ve barely finished your sentence when the two men are tugging off their tops and tossing them aside. They stand there silently, watching you intensely as you slowly move closer. You continue to keep up the act, pulling knowledge of what to do from a few scenes you''ve seen on TV. Tugging the stethoscope from around your neck, you place the cold metal end against the first man''s chest. You feel him tense, his muscles flexing as you listen to his heartbeat. It''s thumping loudly in your ears and the speed of it quickens the longer you''re near him. He''s getting excited, making you expect him to pounce on you at any moment... but he remains perfectly still, letting you finish checking him before moving on to the other guy behind him.'
+		*nl
+		'You repeat the examination again on the other man. Unlike his partner, he isn''t able to wait and leans down to breathe your sweet scent in deep. "Mm... I heard Georgiy always sends the best girls. Makes some of the guys on the outside jealous that they consider getting locked up on a light charge just to have a taste. Ain''t that right, Ilya?" he whispers to you.'
+		*nl
+		'"That''s right, Osyen. Girls like this really make the stay here feel shorter when they come to visit," the first man known as Ilya moves in closer behind you, making it clear to you now that this is what he was waiting for; to trap you between them with no way to escape. You look between them and smile when you notice the growing bulge in their pants.'	
+		
+		gs 'arousal', 'foreplay', 12, 'prostitution'
+		gs 'stat'
+		
+		act 'Administer some "first aid"':
+			*clr & cla
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_2.mp4"></video></center>'
+			'You glance behind you to see Ilya''s hands busy stroking his stiff cock through his sweats. "Don''t worry, I can take care of that," you say while leading his hands to your ass. He gropes and massages your ass cheeks until he has your skirt up around your waist. With your backside exposed, you grind against him, letting out an excited gasp when you feel his dick pressing against you. Osyen wastes no time undoing the front of your blouse, yanking it open hard enough to send one of the buttons flying.'
+			*nl
+			'"Fuck, look at these!" Osyen growls hungrily before sinking his teeth into the parts of your breasts spilling out of your bra.'
+			'"You''re going to leave a mark," You tell him but he doesn''t stop until he has his lips sealed around your sensitive nipple. Osyen flicks and swirls his tongue until your nipple is left hard and swollen before finally pulling away with a loud, wet <b>pop!</b> Looking down, you can see the red marks he''s left behind on your tender skin.'
+			'"You forgetting something?" Ilya is quick to remind you of his hard cock you''ve been neglecting when he forces your hand to grip it. "Show me what that pretty mouth can do," he demands impatiently.'
+				
+			gs 'arousal', 'foreplay', 12, 'rough', 'prostitution'
+			gs 'stat'
+							
+			act 'Focus on Ilya':
+				*clr & cla
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_3.mp4"></video></center>'
+				'Acting like a nurse no longer matters now that you''re being ordered around like the whore that you are. Ilya has his hand on the back of your head to guide your mouth to his cock but it really isn''t needed. Within seconds, your soft lips are wrapped around the tip of his dick. You work your hand up and down his shaft in time with the way you move your head, making sure that you''re stroking the parts your mouth can''t reach.'
+				'"That''s it... good girl," Ilya groans from above you.'
+				'"You look like a school girl but suck cock like a true slut! Is this what they''re teaching in schools now? Maybe I shouldn''t have dropped out," Osyen lets out a rough laugh as he gives your exposed ass a quick smack.'
+				'"Man, they grow up so fast," Ilya chuckles when he sees you glancing up to him. The way they''re talking about you gets your body hot and your pussy wetter. '+iif(wl_stats['acceptance'] < 60, 'For', 'It fills you with pride knowing you''re making them feel this good, and for')+' a moment their comments make you wonder if there''s any girls in your class that can suck dick as good as you.'
+				*nl
+				'No, probably not.'
+				*nl
+				'"Ooh, look at your panties, they''re getting soaked!" Osyen notices the growing wet spot on your panties and grins. "C''mon, stick that ass out more," he orders with another smack to your reddening ass cheek.'
+				
+				gs 'arousal', 'bj', 6, 'prostitution'
+				gs 'arousal', 'hj', -6, 'prostitution'
+				gs 'stat'
+				
+				act 'Stick your ass out more':
+					*clr & cla
+					'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_4.mp4"></video></center>'
+					'You do as you''re told, all while you continue to run your mouth up and down Ilya''s cock. "Mmmf...!" You moan as you feel your panties pulled aside. The cool air on your wet pussy lips makes you shiver but it doesn''t last long as you feel Osyen''s hot fingers running over your slit. He teases you like this for a few, enjoying the way you tremble and twitch each time he dips his fingers deeper to rub your clitty.'
+					'"She ready?" Ilya asks his partner between grunts of pleasure, his hips never pausing as he drives his dick deeper down your throat.'
+					'"Hm... I don''t know," Osyen answers. At first you''re not sure what he means by that as you feel your juices running down your thighs but you quickly realize his intentions when he suddenly plunges his fingers into your pussy. Your eyes widen and you let out a surprised yelp that is muffled by the cock between your lips. He pistons his fingers in and out of you with such force that your whole body rocks rhythmically between the two of them. While Ilya thrusting into your tight, wet mouth pushes you back onto the other''s fingers, Osyen roughly playing with your pussy pushes your forward and further down his partner''s throbbing cock.'
+					*nl
+					'Just as your body starts to tighten at the building pleasure between your legs, Osyen pulls his fingers away and stops, leaving you empty and unsatisfied. With a groan, you slide Ilya''s cock free from your mouth and look back to him. "Why did you stop? I was so close!" You whine with a pout.'
+					'Osyen laughs, "Don''t look so sad, little slut. You''re gonna get something better than just fingers," he reassures you with a few quick light slaps to your pussy. "What are you waiting for? Get on the bed."'
+					
+					gs 'arousal', 'bj', 6, 'rough', 'deepthroat', 'prostitution'
+					gs 'arousal', 'vaginal_finger', -6, 'rough', 'prostitution'
+					gs 'stat'
+										
+					act 'Move to the bed':
+						*clr & cla
+						'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_5.mp4"></video></center>'
+						'Eagerly you move to the bed. With a smile, you spread your legs and welcome them to fill your cunt. You wonder who it will be, maybe Osyen? You haven''t had a chance with him yet and his dick looks delicious as you watch the precum drip from the tip as he strokes it. "Oh, I almost forgot!" In that moment, you remember the condoms you were given and told to use by Adrik as you were coming here. During all the fun, it fell out of your uniform but you find it on the floor nearby. "You''ll have to use those or else I''ll get in trouble," you point to the condom and Osyen picks it up.'
+						*nl
+						'"Lets not ruin the fun with that," Ilya scoffs. He''s already moving into position between your legs, his prick in his hand as he lines himself up against your slit. Just as you feel the tip rubbing against your lips, Osyen shoves him back and tosses the condom at him.'
+						'"Don''t you have enough bitches running around claiming you''re the dad to all their kids? Use the damn condom," he orders. The two exchange heated glares with one another. Things have suddenly gotten a bit tense but you know how to fix that as you bring Osyen''s dick closer and flick your tongue across the head, lapping up the leaking precum.'
+						'"Hurry up, or we''ll start without you," You smile as you begin to stroke Osyen faster. Reluctantly, Ilya rips open the wrapper and slides the bright pink condom onto his stiff cock. Unable to wait any longer, he buries his entire length into your pussy. His erratic thrusting causes the bed to shake and squeak beneath the three of you. For a moment you worry that you''ll fall off but Osyen keeps a firm hold on you as he takes your moans as invitation to work his dick further down your throat.'
+						*nl
+						'"Fuck, you feel amazing!" Ilya groans as he grips your thighs tighter, pulling you down to meet his thrusts. You answer back with a pleased groan while sucking down Osyen''s cock even more eagerly.'
+						'"Look at that sweet pussy," Osyen comments while watching his partner fuck you. Suddenly you feel his hands on your head as he turns you away from his cock and down to look between your legs. "C''mon, look at how fucking wet you are!" he says while holding your head still, his cock pressing against your cheek all the while. "Tell me how much you love it, slut!"'
+						
+						gs 'arousal', 'bj', -9, 'deepthroat', 'prostitution'
+						gs 'arousal', 'vaginal', 9, 'rough', 'prostitution'
+						gs 'stat'			
+						
+						act 'Answer him':
+							*clr & cla
+							'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_6.mp4"></video></center>'
+							$orgasm_or = 'custom'
+							'"I love it... I love getting fucked like this!" You gasp breathlessly. Osyen''s cock twitches and throbs as he listens to you cry out, babbling almost incoherently about how good it feels. "You love it, huh? I bet you''d like it even more if he took off the condom. Make a real good mess of your teeny cunt," he continues. You barely notice Osyen is now stroking himself, the tip of his cock smearing his precum all over your cheek as you continue to watch Ilya between your legs.'
+							*nl
+							'Your mind goes blank as the building pleasure is all you can focus on. "I don''t care-- just don''t stop!" As you edge closer to orgasm, you shove your hand between your legs and start to rub furiously at your clit. Soon your body stiffens and your pussy tightens around Ilya''s cock as waves of ecstasy wash over you.'
+							*nl
+							$orgasm_txt = '"Fuck...! You''re squeezing so tight-- I''m gonna cum!" Ilya grunts as his hips sloppily slam into you. He struggles to keep you on the bed but it doesn''t matter to you as you lie there twitching from the aftershock of your mind-numbing orgasm. "Shit, just get on the floor." You barely understand what''s happening when you feel Osyen slapping his cock against your face, ordering you to get on your knees.'
+							
+							gs 'arousal', 'vaginal', 6, 'rough', 'prostitution'
+							gs 'arousal', 'end'
+							gs 'stat'
+													
+							act 'Get on your knees':
+								*clr & cla
+								minut += 6
+								'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_7.mp4"></video></center>'
+								'Ilya swings your legs over the side of the bed and Osyen pushes you down onto your knees. With a rubbery snap, Ilya yanks off the condom and tosses it aside. In your fuzzy haze, you cup your tits and squeeze them together as you smile up at them. "Mmmn yeah, cover my tits in your cum!"'
+								*nl
+								'It doesn''t take long before they both shoot a warm load all over your chest, painting your tits white with their cum. You watch with a satisfied grin as it drips down over your nipples and falls into your lap.'
+								'"Damn, Georgiy has the best fucking girls," Ilya laughs as he watches you admire the mess they on you. Crudely, he wipes the last drops of cum leaking from his cock onto your chest before he and Osyen start getting dressed.'
+								'"Hey, we''re done in here," Osyen calls out. Moments later, you hear the jingle of keys followed by the heavy metal door being opened to show Guard Adrik on the other side. Looking at him, you notice a bulge in his pants that he hides casually by resting his hand over it. His expression remains straight as he speaks to you, not revealing the erection he''s trying to cover up. "Alright, you''re shift for the day is over. Clean up and follow me, I''ll take you back to medical, <<$wl_names[''first'']>>."'
+								
+								gs 'cum_call', 'breasts', 'a prisoner'
+								gs 'cum_call', 'breasts', 'a prisoner'
+								gs 'stat'
+								
+								act 'Leave with Adrik':
+									*clr & cla
+									minut += 10
+									cumspclnt = 20
+									pcs_horny += iif(pcs_horny > 20, 10, 20)
+									gs 'cum_cleanup'
+									gs 'stat'
+									'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/day_1/part_8.mp4"></video></center>'
+									'You don''t have anything to clean up with, so you make due with wiping up their cum with the skirt of your uniform before getting dressed. With a smile and a wave, you collect your things and follow after Adrik. You pass by some barred cells with criminals on the other side who bark and holler excitedly when they see you. Adrik ignores them but you begin to wonder if they know what you just did, maybe they can tell by how sloppy your uniform looks what, or maybe they can smell the scent of sex on you. Whatever it may be, you feel a pang of excitement as you walk by them.'
+									*nl
+									'Once you arrive back at the medical wing, Adrik leaves you to change back into your original outfit. Once finished, he leads you back to the Warden''s office. During the walk there, you can''t help but check to see if he''s still hard but to your disappointment he seems to have calmed himself down. You guess showing up to your boss''s office with a raging erection may not be the best thing to do.'
+																		
+									act 'Return to Warden Saveli':
+										*clr & cla
+										minut += 10
+										gs 'stat'
+										'<center><video autoplay loop src="mod/wlife/images/prostitution/prison/visit_1.mp4"></video></center>'
+										'"So, you made it through your first shift," Warden Saveli greets as you enter his office. He sounds genuinely surprised, having expected something to go wrong. "Seeing how young you are, I didn''t think you''d be able to handle it... but I see now Georgiy trains his girls well."'
+										'Still feeling a bit of a high from earlier, your confidence is soaring when you answer him. "Of course, he sent his best girl for the job!" You tell him with a '+iif(wl_stats['acceptance'] < 60, 'fake', 'proud')+' smile.'
+										'Warden Saveli can''t hold back a laugh, but you''re not sure if he''s laughing at you or with you. "If only everyone else was as hardworking as you. Maybe then some of my guards would spend less time peeping on the women prisoners and more time actually doing their job..."'
+										'You''re not sure who that last part was directed at but you''re not given any time to dwell on it as Warden Saveli thanks you for your "volunteer work" today before having Guard Adrik escort you back outside where Volya is waiting for you outside.'
+										
+										act 'Leave with Volya': gt 'mod_wlife_prison', 'end'
+									end
+								end
+							end
+						end
+					end
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'end':
+	*clr & cla
+	minut += 30
+	money += 2000
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'The ride back to Georgiy will take some time. Volya makes some small talk, after handing you your money. It ends with him asking about how your work at the prison went today.'
+	
+	act 'Remain quiet':
+		*clr & cla
+		minut += 30
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_day.jpg"></center>'
+		'You ignore his question, acting as if you didn''t even hear him. The car is silent for awhile before Volya accepts that you aren''t going to answer him and instead turns on the radio to listen to some music. Nothing else is said between the two of you for the rest of the car ride. Eventually, the car comes to a stop outside your home and you feel a bit of relief for the ride to be over. His taste in music is horrible.'
+																
+		act 'Exit the the car': gt $wl_loc[0], $wl_loc[1]
+	end
+	
+	act 'Smoke a joint and ignore him':
+		*clr & cla
+		minut += 30
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking_car.jpg"></center>'
+		'You take your time to carefully roll your joint before lighting it up. Not before long you''re starting to feel the relaxing effects'+iif(wl_stats['acceptance'] < 20, ' wash away the anxiety about your job.', ' as you''re getting high.')
+		gs 'mod_wlife_functions', 'weed_check'
+		gs 'stat'
+
+		act 'Exit the the car': gt $wl_loc[0], $wl_loc[1]
+	end
+	
+	gs 'willpower', 'misc', 'self', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Tease him and tell him about your day (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 15
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/tease_start.mp4"></video></center>'
+			'"My day?'+iif(wl_stats['acceptance'] < 60, ' ', ' It was lots of fun! ')+'I was working as a nurse, helping to examine some inmates," you begin. Volya''s reaction is subtle but you notice how his face lights up even when he''s trying to play it cool.'
+			'"A nurse? Did they have you in the, uh, outfit and everything?"'
+			'You hum innocently, pretending to recall details despite remembering everything vividly. "They did give me a little uniform to put on. It was a bit of a snug fit, though. The skirt would ride up a lot and I couldn''t keep the top button closed... but I guess it didn''t matter since I wasn''t wearing it for much longer."'
+			'"Oh yeah?" Volya isn''t saying much but he is trying to keep you talking, that much is obvious as he glances your way impatiently.'
+			'"I had to do a check-up on two guys, I think their names were Osyen and Ilya. They made sure to wait until I was trapped between them before ripping my top open and pulling my skirt up. It wasn''t like I was going to fight back but they were still so rough. The blonde one was biting and sucking at my tits so hard... I think he left some marks!" You free one tit from your top, groping it as you talk. A soft moan slips past your lips, then another and another. When you look to Volya, he''s trying to watch you while also paying attention to the road, something he''s annoyed about until he reaches a stop light and for the moment, he can freely enjoy the little show you''re putting on.'
+			*nl
+			'You continue to tell him about your day at the prison, still teasing him occasionally by "forgetting" some things until you hear him sigh impatiently and then, oh! Suddenly you remember everything! By the end of your story, Volya is driving with one hand on the steering wheel while the other is in his lap, lightly squeezing the bulge in his pants.'
+			'"Aren''t you suppose to keep both hands on the wheel?" You ask him innocently.'
+			'Volya chuckles as he shifts in his seat slightly. His hard cock pressing against his jeans is probably a bit uncomfortable. "If you''re that worried, why don''t you help me out."'
+			
+			act 'Give him a hand': $wl_temp = 'prison' & gt 'mod_wlife_volya_sex', 'car_blowjob'
+		end
+	else
+		act 'Tease him and tell him about your day (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+--- mod_wlife_prison ---------------------------------

+ 1055 - 0
locations/mod_wlife_punishment.qsrc

@@ -0,0 +1,1055 @@
+# mod_wlife_punishment
+
+if $ARGS[0] = 'start':
+	menu_off = 1
+	gs 'stat'
+	if wl_stats['loyalty'] > 60 and wl_demand['party'] = 0 and wl_homeless['status'] > 0:
+		gt 'mod_wlife_punishment', 'punish_no'	
+	else
+		gt 'mod_wlife_punishment', 'punish_yes'
+	end
+end
+
+if $ARGS[0] = 'punish_no':
+	*clr & cla
+	minut += 5
+	wl_stats['loyalty'] -= 5
+	gs 'mod_wlife_functions', 'reputation_check'
+	gs 'pain', 8, 'head', 'slap'
+	gs 'pain', 4, 'hair', 'stretch'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+	'He suddenly hits you'+iif(wl_bad['status_punishment'] = 1, ' again.', '.')+' You stumble and let out a cry of pain as you fall to the ground. "You should be glad, that you have been such a <<$wl_stats[''loyalty'']>> whore in the past, but fuck up enough times and even you will have to do ''community service''," he curls his fingers into a fist. "And now fuck off."'
+	'"Thank you," you say meekly and get back up on your feet.'
+
+	wl_bad['status_punishment'] = 0
+	wl_bad['work'] = 0
+	wl_bad['lump_sum'] = 0
+	wl_bad['medical'] = 0
+	wl_bad['iosif'] = 0
+	wl_bad['earnings'] = 0
+	wl_bad['prison'] = 0
+	wl_bad['total_debt'] = 0
+	
+	act 'Hurry out of the warehouse': wl_bad['status_punishment'] = 0 & gt 'mod_wlife_warehouse', 'street'
+end
+
+if $ARGS[0] = 'punish_yes':
+	*clr & cla
+	gs 'pain', 8, 'head', 'slap'
+	gs 'pain', 4, 'hair', 'stretch'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+	'He suddenly hits you'+iif(wl_bad['status_punishment'] = 1, ' again.', '.')+' You stumble and let out a cry of pain as you fall to the ground. "I have had it with you <<$pcs_nickname>>. '+iif(wl_bad['status_punishment'] = 0 and wl_demand['party'] = 0, 'I have never seen such an <<$wl_stats[''loyalty'']>> whore in all my life and there will be consequences for your actions <<$pcs_nickname>>', 'If you aren''t able to do as you''re told, you''ll have to carry the consequences for your behavior.')
+	'He grabs your hair with one hand and one of your arms with the other. "Get up," he says coldly and pulls you on your feet. Thankfully he tugs you upwards mostly by pulling on your arm and not your hair. "Follow me, '+iif(wl_homeless['status'] = 0, 'it''s time for you to learn what will happen to you if you don''t learn to behave."', 'it''s time for an hour of ''community service''."')
+	wl_bad['status_punishment'] = 0
+	*nl
+	'He lists the reasons for your punishment as you follow him out of the room:'
+	if wl_demand['party'] = 1:	
+		wl_demand['party'] = 0
+		wl_georgiy['timer_week'] = 0
+		'- You missed Vadim''s party'
+	end
+	if wl_bad['work'] = 1: wl_bad['work'] = 0 & '- You didn''t work enough shifts'
+	if wl_bad['lump_sum'] = 1: wl_bad['lump_sum'] = 0 & '- You didn''t pay him enough money this week'
+	if wl_bad['medical'] = 1: wl_bad['medical'] = 0 & '- You missed your medical exam' 
+	if wl_bad['iosif'] = 1: wl_bad['iosif'] = 0 & '- You ignored Iosif'
+	if wl_bad['earnings'] = 1: wl_bad['earnings'] = 0 & '- You didn''t earn enough money in the last few weeks'
+	if wl_bad['prison'] = 1: wl_bad['prison'] = 0 & '- You didn''t work at the prison'
+	if wl_bad['total_debt'] = 1:
+		wl_bad['total_debt'] = 0 & '- You have too much debt'
+		*nl
+		'He also takes all the money you have to reduce your debt.'
+		if money >= wl_debt['amount']:
+			money -= wl_debt['amount']
+			wl_debt['amount'] = 0
+		else
+			wl_stats['respect'] += 1
+			wl_debt['amount'] -= money
+			money = 0
+		end
+	end
+	if wl_bad['total_debt'] = 2: '- You have too much debt'
+	
+	act 'Continue':
+		if wl_bad['total_debt'] = 2:
+			gt 'mod_wlife_punishment', 'sale'
+		elseif wl_stats['loyalty'] <= -100: 
+			gt 'mod_wlife_punishment', iif(rand(0,1) = 1, 'dead', 'sale')
+		elseif wl_homeless['status'] = 0:
+			gt 'mod_wlife_punishment', 'homeless_intro_1'
+		elseif wl_homeless['status'] = 1:
+			gt 'mod_wlife_punishment', 'homeless_first_0'
+		else
+			$wl_homeless['sex'] = 'forced' & gt 'mod_wlife_punishment', 'homeless_regular'
+		end	
+	end
+end
+
+if $ARGS[0] = 'sale':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/sale.jpg"></center>'	
+	'You vanish without a trace. Your parents and your friends were clueless and the police, paid of by the Bely''s, looked the other way. You end up somewhere in a cheap brothel in western Europe in which you have to work every day until you''re too broken to be useful anymore. The Belys sold you'+iif(wl_bad['total_debt'] = 2, ' to recover some of the money you owed them.', ', because they couldn''t trust you anymore.')
+end
+
+if $ARGS[0] = 'dead':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/dead.jpg"></center>'	
+	'You vanish without a trace. Your parents and your friends were clueless and the police, paid of by the Bely''s, looked the other way. In the end your body was never found.'
+end
+
+!!------ Introduction ------
+
+if $ARGS[0] = 'homeless_intro_0':
+	*clr & cla
+	minut += 3
+	gs 'stat'	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/hallway.jpg"></center>'
+	'"I''m always skeptical if we get a new whore," he tells you as you try to keep up with his long strides. "You would think that the girls who come to us, because they are down on their luck, would be the best candidates, but that isn''t the case. Can you imagine why?"'
+	'You ponder the question, but he doesn''t seem to be in a hurry and gives you a few moments as you pass through the hallway of the old house. There are a dozen reasons you can think of. They could underestimate what the job entails or want to quit when they found a good paying normal job.'
+	
+	act 'Don''t say anything': 
+		cla & *nl
+		minut += 2
+		wl_stats['loyalty'] -= 1
+		gs 'stat'
+		'"I don''t know," you say and he stops for a moment. "If I ask you a question, give me an answer <<$pcs_nickname>>. It''s not optional. Or are you too stupid? I need whores that are obedient but also quick on their feet. You need to handle any situation out there. If I wanted brain dead fuckmeat, I would pick up some drugged up bitches of the street."'
+		'"I''m sorry Sir," you reply and look down to your feet. "Won''t happen again."'
+		'He takes a few seconds to appreciate your submissive display before supplying the answer for the question himself. "At some point they want to quit, because they find a ''real'' job or a husband or Jesus or some other bullshit. I prefer whores like you, who from day one understand that you do this job for the rest of your life."'
+		
+		act 'Follow him outside': gt 'mod_wlife_punishment', 'homeless_intro_1'
+	end
+	
+	act 'Underestimate what the job entails':
+		cla & *nl
+		minut += 2
+		gs 'stat'
+		'"True," he replies, "but did you really know how a life of a street whore really was before you have started to work for me?" You shake your head. "See, the reason is that at some point they want to quit, because they find a ''real'' job or a husband or Jesus or some other bullshit," he explains. "I prefer whores like you, who from day one understand that you do this job for the rest of your life."'
+		
+		act 'Follow him outside': gt 'mod_wlife_punishment', 'homeless_intro_1'
+	end
+	
+	act 'Find a normal job':
+		cla & *nl
+		minut += 2
+		wl_stats['respect'] += 1
+		gs 'stat'
+		'He throws you a quick and cold smile. "Good <<$pcs_nickname>>. I see that you''re beginning to understand. You''re exactly right, at some point they want to quit, because they find a ''real'' job or a husband or Jesus or some other bullshit," he explains. "I prefer whores like you, who from day one understand that you do this job for the rest of your life."'
+		
+		act 'Follow him outside': gt 'mod_wlife_punishment', 'homeless_intro_1'
+	end
+end
+
+if $ARGS[0] = 'homeless_intro_1':
+	*clr & cla
+	minut += 3
+	wl_homeless['status'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/homeless/outside_'+iif(hour > 19 or hour < 6, 'night', 'day')+'.jpg"></center>'
+	'"Sir, may I ask where we are going?" you inquire as you follow him outside the warehouse. He gives a sign to one of his guys who immediately starts to follow you as he answers your question. "We''re going for a little walk. It''s not far."'
+	*nl
+	'You walk in silence for a few minutes through the old abandoned area of Pavlovsk''s Industrial Area. Except for the clothing factory nothing has survived the end of the Soviet Union nearly 20 years ago and most of the old factories and warehouses are empty. Most, but not all. You can see lights coming out of dirty or broken window here and there. You finally stop in front of an old factory that has been transformed into a makeshift home for several homeless people. Some are sitting outside drinking while you can see others hanging out inside through the open doors.'
+	
+	act 'Let your eyes wander':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/homeless/homeless_'+iif(hour > 19 or hour < 6, 'night', 'day')+'.jpg"></center>'
+		'You probably can''t fall any lower than those people. They have given up, lost all hope. You can see it in their eyes, when one of the men looks at you for a split second. Judging from the empty vodka bottles and needles only alcohol and drugs help them to escape their dismal lives.'
+		'"Can you guess why I brought you here?" he asks. You tilt your head a bit to the side and again take in the surroundings. "You want to show me, how I would end if I '+iif(wl_bad['status_punishment'] = 1, 'keep misbehaving', 'misbehave')+'? You will ruin my life and I''ll live the rest of my days like her?" you answer pointing towards a woman a few years older than you that is rummaging through the trash.'
+		'He shakes his head and fixes his cold menacing eyes on you. "No, if it ever comes to that, you''ll end in an unmarked grave," he states matter-of-factly.'
+		'Your eyes grow wide and you stare at him shocked. He''s joking right? Right? But he doesn''t need to repeat the threat for you to believe it. His cold eyes tell you the truth. '+iif(wl_bad['status_punishment'] = 1, '"And if you don''t start to obey us...," he pauses to let the threat sink in, "we will', '"But if you keep obeying us like you have until now, we will never')+' find ourselves in a situation in which this will be necessary."'
+		'You let that sink in for a while before another thought pops up in your head that distracts you from your gruesome possible fate. He didn''t tell you why you''re here.'
+		
+		act 'Ask him': 
+			*clr & cla
+			minut += 3
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+			'"Because this will be your punishment if you ever misbehave'+iif(wl_bad['status_punishment'] = 1, ' again,', '')+'," he answers without explaining it. You take another look around and then back to him. "I give you a hint <<$pcs_nickname>>. We already covered capital punishment, but apart from that how can the government punish people?"'
+			'You shrug. "Maybe a fine or prison?"'
+			'"Sure and what about community service?" he asks. Community service? You repeat in your head and you have no idea what he means by that. How could you... you freeze and stare at him, when you realize what he''s saying. No, no, absolutely not. That can''t be what he means. "That''s right," he answers your unspoken question. Your thoughts must have been clearly visible on your face. "If you don''t behave, you will entertain one of them. Do your good deed for the day."'
+			'"What the fuck? That''s disgusting," you blurt out, but he stops you before you can say anything else. "That''s right. It is vile and disgusting and if you don''t want to do human trash that''s riddled with diseases, '+iif(wl_bad['status_punishment'] = 1, 'learn to fucking obey and do what you are fucking told."', 'keep obeying like you did."')+' he says, turns around and walks away leaving your shocked self behind.'
+			wl_bad['status_punishment'] = 0
+			
+			act 'Continue': gt 'mod_wlife_warehouse', 'homeless_outside'
+		end
+	end
+end
+
+!!------ First community service ------
+
+if $ARGS[0] = 'homeless_first_0':
+	*clr & cla
+	minut += 5
+	wl_homeless['status'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/homeless/outside_'+iif(hour > 19 or hour < 6, 'night', 'day')+'.jpg"></center>'
+	'"Please, something other than that," you beg and plead with Georgiy all the way to the old factory. "Anything else!" you continue to beg as tears are starting to well up.'
+	'"Than you should have behaved yourself. It''s not as if I want you to do it, but you''re forcing my hand," he tells you angrily. "It''s your own fault. So don''t blame me."'
+	'Several conflicting emotions are battling inside you. One part of you wants to draw a line in the sand to stop this madness once and for all, another voice urges you to get a hold of yourself and get it over with and another part wants to lay down on the hard concrete floor and cry.'
+	'"Here we are," he says and points towards the run-down building. "Get to work."'
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	will_cost = will_cost * 2
+	if will_cost <= pcs_willpwr:	
+		act 'Get a hold of yourself (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 2
+			wl_stats['loyalty'] += 10
+			wl_stats['respect'] -= 10
+			gs 'willpower', 'misc', 'self', 'hard'
+			will_cost = will_cost * 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"Fine," you say blinking away the tears and putting as much confidence and indifference into your voice as you can muster. "I messed up and I will carry the consequences," you tell him and walk towards the building without saying another word and hope you somehow find a clean hobo inside.'
+		
+			act 'Continue': gt 'mod_wlife_punishment', 'homeless_first_1'
+		end			
+	else
+		act 'Get a hold of yourself (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	will_cost = will_cost * 3
+	if will_cost <= pcs_willpwr:	
+		act 'Draw a line (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 2
+			wl_stats['loyalty'] -= 10
+			wl_stats['respect'] += 10
+			gs 'willpower', 'misc', 'self', 'hard'
+			will_cost = will_cost * 3
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"No, I won''t do it," you scream pulling away from him. "This is it. I draw the line here. Do whatever you want with me, but I won''t go in there and fuck a hobo."'
+			'There is no reaction from Georgiy. He doesn''t hit you, doesn''t say anything, he''s just looking at you. With every second that passes you get more and more the feeling that you made a mistake, a huge one. Should you back down and do it or stand up for yourself and walk away from this? You ask yourself while staring into Georgiy''s expressionless face.'
+			
+			act 'Back down':
+				cla & *nl
+				'"Fine," you say drawing out the word and without saying another word you turn around and ...'
+				
+				act 'Look for the cleanest hobo you can find': gt 'mod_wlife_punishment', 'homeless_first_1'
+			end	
+			act 'Walk away': gt 'mod_wlife_punishment', 'dead'
+		end
+	else
+		act 'Tell him you won''t do it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Cry':
+		cla & *nl
+		minut += 2
+		wl_stats['respect'] += 2
+		gs 'stat'
+		'"Fine," you manage to say between loud sobs as you rub away the tears running down your cheeks. Without saying another word you walk away from him as fast as you can. You hope that you find somebody that is at least not completely disgusting.'
+		
+		act 'Continue': gt 'mod_wlife_punishment', 'homeless_first_1'
+	end
+end
+
+if $ARGS[0] = 'homeless_first_1':
+	*clr & cla
+	minut += 5
+	wl_homeless['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/cock_0.jpg"></center>'
+	'At first you walk directly towards the entrance of the old factory, but quickly take a turn and walk around the corner to look for someone that is more isolated from the rest of the group. You hasten your steps and hold your nose, when you pass by an old man that is sleeping in his own puke. "Fuck," you whisper when you can smell the stench from ten meters away.'
+	'Halfway around the factory you walk past a rusty chain-link fence when you spot something out of the corner of your eye... Was that a cock? You to a double take and yes, you were right. There are two legs sticking out of a huge cardboard box and between them a huge cock. What a twist of fate.'
+	
+	act 'Step closer':
+		*clr & cla
+		minut += 3
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/squat.jpg"></center>'
+		'Nobody is around except Georgiy''s henchman. He keeps his distance, but is constantly following you to make sure that you do what you have to do. You take a last look around before pushing the fence a little bit to the side and open up a big enough gap to slip through.'
+		'You take a carefully sniff, when you tiptoe closer, and wriggle your nose. It''s not as bad as you had expected, but still it smells like cold sweat, urine and other stuff you can''t identify. But there is no other way than to go through with it. You squat down next time to him to take a closer look.'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 2
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/homeless_asleep.jpg"></center>'
+			'He''s black which does and doesn''t surprise you at the same time. There aren''t many people of color in Russia, so to see one is very rare, but at the same time your society doesn''t treat them very well. It''s much easier for them to end out on the street.'
+			'Judging from the empty vodka bottle next to him he''s passed out and a huge fresh stain on his dirty pants explains why his cock is out in the open. He masturbated only minutes ago.'
+			'A part of you hoped that it would be over quick. Some guy who maybe didn''t touch a woman for years would have been easy to take over the edge within minutes. But this could take a while. Should you go and look for another candidate? Probably not a good idea, you guess as you remember the last guy you saw covered in his own puke. At least you can be next to him without constantly retching.'
+			
+			if wl_status['condoms'] > 0:
+				'You quickly check your '+iif(bag = 1, 'purse', 'pockets')+' and breath out a sigh of relief when you find a condom.'
+				
+				act 'Use a condom':
+					cla & *nl
+					gs 'mod_wlife_functions', 'remove_condom'
+					$wl_homeless['condom'] = 'yes'
+					'You take '+iif(wl_status['condoms'] = 1, 'your only condom', 'one of your condoms')+' and look at his cock. You could get him hard, put on the condom and give him a handjob and hopefully bring him over the edge before he wakes up. But given that you have a condom a blowjob could yield faster results.'
+					
+					act 'Give him a handjob': gt 'mod_wlife_punishment_sex', 'homeless_first_0', 'hj'
+					gs 'willpower', 'bj', 'self', 'easy'
+					if will_cost <= pcs_willpwr:
+						act 'Give him a blowjob (<<will_cost>> Willpower)':
+							gs 'willpower', 'pay', 'self'
+							gt 'mod_wlife_punishment_sex', 'homeless_first_0', 'bj'
+						end
+					else
+						act 'Give him a blowjob (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+					end
+				end
+				
+				gs 'mod_wlife_functions', 'will_unprotected', 'self', 'hard'
+				if will_cost <= pcs_willpwr:
+					act 'Don''t use a condom (<<will_cost>> Willpower)':
+						cla & *nl
+						wl_stats['unprotected'] += 1
+						wl_homeless['bad'] += 2
+						$wl_homeless['condom'] = 'no'
+						gs 'willpower', 'pay', 'self'
+						gs 'stat'
+						'You take a condom out and look at it for a split second before putting it back. The tiny voice in the back of your head scream ''WHY?'' but you ignore it for the moment.'
+						'The safest option would be to give him a handjob and hopefully take him over the edge before he wakes up and realize what''s going on. A blowjob could yield faster results, but you''ll probably never get that taste out of your mouth.'
+						
+						act 'Give him a handjob': gt 'mod_wlife_punishment_sex', 'homeless_first_0', 'hj'
+						gs 'willpower', 'bj', 'self', 'hard'
+						if will_cost <= pcs_willpwr:
+							act 'Give him a blowjob (<<will_cost>> Willpower)':
+								gs 'willpower', 'pay', 'self'
+								gt 'mod_wlife_punishment_sex', 'homeless_first_0', 'bj'
+							end
+						else
+							act 'Give him a blowjob (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+						end
+					end
+				else
+					act 'Don''t use a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			else
+				$wl_homeless['condom'] = 'forgot'
+				'You quickly check your '+iif(bag = 1, 'purse', 'pockets')+' and if you don''t find what you are looking for you check it again and again and again. "Shit, shit, shit," you say when you realize that you don''t have any condoms with you. You don''t have any other choice but to do it without one.'
+				'The safest option would be to give him a handjob and hopefully take him over the edge before he wakes up and realize what''s going on. A blowjob could yield faster results, but you probably will never get that taste out of your mouth.'
+				
+				act 'Give him a handjob': gt 'mod_wlife_punishment_sex', 'homeless_first_0', 'hj'
+				gs 'willpower', 'bj', 'self', 'hard'
+				if will_cost <= pcs_willpwr:
+					act 'Give him a blowjob (<<will_cost>> Willpower)': gt 'mod_wlife_punishment_sex', 'homeless_first_0', 'bj'
+				else
+					act 'Give him a blowjob (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			end
+		end
+	end	
+end
+
+!!------ Decision event: Adrian (1) ------
+
+if $ARGS[0] = 'adrian_first_0':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_1.jpg"></center>'
+	if wl_adrian_temp = 0:
+		'Small towns like Pavlovsk have its upsides compared to the anonymous big city, but sometimes it''s just too small. You learn that anew, when you walk down a street in the '+iif($loc = 'pav_residential', 'residential', iif($loc = 'pav_commercial', 'commercial', 'industrial'))+' area. A man is sitting on the floor, an old hat sits in front of him. Some passers-by throw a few rubles into it, but most ignore him. You give him a quick glance and your heart skips a beat. Shit, shit, shit! It''s him! It''s the homeless guy Georgiy made you have sex with.'
+		'What should you do? Keep walking? Turn around? Talk to him? Your racing mind asks as you quickly take a look around. The street is clear, you could cross it and avoid him or should you talk to him to see if he remembers you and what happened? He was pretty drunk, so there is a chance that he forgot everything.'
+		
+		act 'Avoid him':
+			*clr & cla
+			minut += 5 
+			wl_stats['acceptance'] -= 1
+			wl_homeless['good'] -= 1
+			wl_homeless['bad'] -= 1
+			wl_adrian['timer'] = daystart + rand(2,5)
+			wl_adrian_temp = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/turn_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+			'You don''t want to take any chances and walk in the opposite direction before crossing the street in a safe distance. You take a last look over your shoulder and ...'
+					
+			act '... hope you''ll never see him again':
+				wl_stats['acceptance'] -= 1
+				wl_homeless['good'] = -1
+				wl_homeless['bad'] = -1
+				gt $loc, $metka
+			end
+			
+			act '... think that someday you''ll be ready to talk to him': wl_stats['acceptance'] += 1 & gt $loc, $metka
+		end
+	else
+		'You sigh, when you turn around a corner and see the homeless guy again. Pavlovsk is just too damn small and you realize, that you won''t be able to avoid him forever. You take a look around and see nobody else in the vicinity. This is the chance to talk to him.'
+	end
+	
+	act 'Talk to him':
+		*clr & cla
+		minut += 5
+		wl_adrian['status'] = 2
+		killvar 'wl_adrian_temp'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_0.jpg"></center>'
+		'What do you say to a homeless guy you recently slept with? You ask yourself as you walk'+iif(ShoHeels > 3, ' with clicking heels ', ' ')+'up to him.'
+		'<i>Hi, nice to meet you again. I don''t know if you remember me, you were pretty drunk, but I''m the girl you banged the other day,</i> you think and snort quietly. Yeah right, that will probably be a good idea. You still haven''t figured out what to say, when you reach him. "Uhm... Hi," you greet him. Shocked his eyes grow wide. "I thought I imagined it," he says while he squints to take a better look at you.'
+		'"No, you didn''t," you assure him as you nervously rub your left elbow with your right hand and take another look around, but the coast is still clear. "I...," you take a second to think about what you want to say next, but you still have no idea. "Sorry, I really have no idea what to say," you continue with a sigh. "I shouldn''t have done this." His gaze shifts to the ground and your last words really seem to break his spirit.'
+		'Great, now he thinks you regret sleeping with him. You do'+iif(wl_homeless['good'] < 0 and wl_homeless['bad'] < 0, ', obviously.', ', probably.')+' But it isn''t a good conversation starter to crush his confidence. Should you set the record straight?'
+		
+		act 'No': 
+			cla & *nl
+			minut += 2
+			gs 'stat'
+			wl_homeless['good'] -= 2
+			'You don''t say anything and it takes him a few moments to summon the courage to look back up to you. "But why did you do it in the first place if you regret it now? I would never have expected a girl like you and a guy like me... I''m not great boyfriend material."'
+			'You think about it for a few moments trying to come up with a believable alternative to the truth, but you can''t think of something off the top of your head.'
+			
+			act 'Tell him the truth': gt 'mod_wlife_punishment', 'adrian_first_1'
+		end
+		
+		act 'Yes': 
+			*clr & cla
+			minut += 3
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_0.jpg"></center>'
+			wl_homeless['good'] += 2
+			'"Sorry, that came out wrong. What I meant was that I shouldn''t have talked to you without knowing what to say," you explain. He shakes his head without looking up. "It''s OK," he says in a low voice. "You don''t have to lie. I can deal with it." He clearly can''t and you interject to reassure him. "I didn''t lie. If you don''t want to believe that, fine don''t believe it, but it''s the truth." He looks up and a hint of a smile tugs the corners of his mouth upwards. "OK," he replies with a bit more strength in his voice. "But why did you do it in the first place? Not that I''m ungrateful, but I would never have expected a girl like you and a guy like me... I''m not great boyfriend material."'
+			'You think about it for a few moments trying to come up with a believable alternative to the truth, but you can''t think of something off the top of your head.'
+			
+			act 'Tell him the truth': gt 'mod_wlife_punishment', 'adrian_first_1'
+		end	
+	end
+end
+
+if $ARGS[0] = 'adrian_first_1':
+	*clr & cla
+	minut += 15
+	wl_adrian['timer'] = daystart + rand(3,7)
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_0.jpg"></center>'
+	'You obviously don''t tell him the whole truth. Incriminating the Belys isn''t a very smart idea if you want to live a long and healthy life. So you tell him the gist of it. That somebody forced you to do it. If you have expected that this would again crush his spirit, you would have been right, but this time he doesn''t wallow in self-pity. Instead he pities you and you don''t know what''s worse. Seeing a man like him, completely down on his luck, pitying you isn''t doing great things to your self-esteem.'
+	'"That guy forced you?" he asks after listing to your story. "I''m sorry that happened to you," he adds'+iif($wl_adrian['condom'] = 'forced', ', but doesn''t say anything about taking the condom off'+iif($wl_adrian['creampie'] = 'no', ' or coming inside you even after you begged him not to.', '') ,'.')+' "I didn''t really remember much." For a moment you''re tempted to tell him in detail what happened, what he did and how it was for you to be with him, but you quickly discard the idea. It would accomplish nothing.'
+	*nl
+	'It seems you run out of time, a group of girls a few years younger than you walk around the corner. You don''t know them, but they probably go to your school and you don''t want to take any chances. You '+iif(money >= 20, 'take out a few rubles and put them into his hat as you', 'lean forward a bit and')+' whisper, "please, don''t tell anybody about this, OK?" He looks sheepish and whispers back, "I already told some of my friends. I''m sorry'+iif(money >= 20, '," and adds more loudly, "thank you for your generosity."', '."')
+	if money >= 20: money -= 20
+	gs 'stat'
+	
+	act 'Leave':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/turn_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+		'His last words stay with you for the next minutes. Not only did random guys on the Internet seen what you did, people here in Pavlovsk know about it too. It''s basically impossible that they recognize you, but the thought alone is...'
+
+		act 'Horrifying':
+			cla & *nl
+			minut += 5
+			wl_stats['acceptance'] -= 1
+			wl_homeless['good'] -= 1
+			wl_homeless['bad'] -= 3
+			gs 'stat'
+			'...horrifying. You shiver and take a look over your shoulder almost expecting to see a bunch of homeless guys following you. It''s of course ridiculous, you know that, but you can''t stop the unconscious part of mind from imagining the worst case scenario. You hasten your steps, lower your gaze and wrap your arms around your upper body as you leave the area as quickly as possible.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+		
+		act 'Arousing':
+			cla & *nl
+			minut += 5
+			wl_stats['acceptance'] += 2
+			wl_homeless['bad'] += 2
+			if pcs_horny < 60: pcs_horny = 60
+			gs 'stat'
+			'...arousing. You take a look over your shoulder almost expecting to see a bunch of homeless guys following you. It''s of course ridiculous, you know that, but you can''t stop the unconscious part of mind from imagining how they pull you into a dark alley, their dirty hands roaming over every inch of your body, pulling out their filthy cocks... Stop it! You give your head a mental shake. That''s not something that turns you on, you tell yourself as your wet pussy screams the exact opposite.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+	end
+end
+
+!!------ Decision event: Adrian (2) ------
+
+if $ARGS[0] = 'adrian_second_0':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	wl_adrian['timer'] = daystart + rand(2,5)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_1.jpg"></center>'
+	'"Hello," a familiar voice calls out behind you. It''s the homeless guy again. His lips are curled up into a tentative smile and he waves to you with a bottle in his hand. Nobody is nearby, you could take a moment to talk to him. Even if somebody would come by, it would be highly unlikely that they would see you.'
+	
+	act 'Ignore him':
+		*clr & cla
+		minut += 5 
+		wl_homeless['good'] -= 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/turn_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+		'You immediately look away, when you recognize him and hasten your steps. You don''t want to deal with him today.'
+		
+		gs 'mod_wlife_punishment', 'adrian_second_actions'
+	end	
+		
+	act 'Smile, but keep going':
+		*clr & cla
+		minut += 5 
+		wl_homeless['good'] += 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/turn_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+		'You respond with a smile and wave back, but keep going without saying anything. Still, when you throw a quick glance over your shoulder you see that his smile has grown even wider, a consequence of your friendly attitude towards him.'
+					
+		gs 'mod_wlife_punishment', 'adrian_second_actions'
+	end
+	
+	act 'Go to him': wl_adrian['status'] = 3 & gt 'mod_wlife_punishment', 'adrian_second_1'
+end
+
+if $ARGS[0] = 'adrian_second_actions':
+	*nl
+	'As you keep walking the annoying voice in your head questions your motives. Did you only walk away, because you have to be somewhere?'+iif(sunweather = 1, ' ', ' Is it the bad weather? ')+'Or is there a more deep-seated reason behind it?' 
+	
+	act 'Nothing in particular': minut += 5 & gt $loc, $metka
+		
+	if wl_homeless['bad'] > 0: 
+		act 'You''re confused by your degrading thoughts':
+			cla & *nl
+			wl_stats['acceptance'] += 1
+			wl_homeless['bad'] += 2
+			'It''s really not a good idea to be near him. Your afraid it will again trigger your fucked up imagination. Fucking a bum, being degraded like this seems to have awoken something deep inside you. Something you don''t want to let out.'
+			
+			act 'Continue': minut += 5 & gt $loc, $metka
+		end
+	end
+	
+	act 'You find him disgusting':
+		cla & *nl
+		wl_homeless['good'] -= 2
+		wl_homeless['bad'] -= 2
+		'It''s not a big secret. You find him disgusting and you don''t want to come near him or any other homeless people.' 
+		
+		act 'Continue': minut += 5 & gt $loc, $metka
+	end	
+end
+
+if $ARGS[0] = 'adrian_second_1':
+	*clr & cla
+	minut += 5
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_0.jpg"></center>'
+	'He takes a big gulp out of the vodka bottle as he looks up to you with glassy eyes. "I never thought I would see you again," he says slurring his words. It''s a miracle that he even can sit up straight much less talk.'
+	'"Pavlovsk is pretty small," you shrug'+iif(wl_shura['status'] > 8, ', like Shura, maybe he''s rubbing off on you.', '.')+' "We were destined to bump into each other again at some point."'
+	'"That''s not...," he burps loudly, "... not what I mean. You shouldn''t be here, talking to a guy like me."'
+	'"You were the one that said ''hello''," you remind him with a slight grin. "That''s true, definitely true," he murmurs as he again shakes his head. "Shouldn''t have done that, should have stayed away. Stayed away from you and from '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'." There it is again. That name. He called you by it on the fateful day, when you crawled into his cardboard home. "Should have stayed away," he says and you doubt he''s still speaking to you. Something, some memory has him devastated.'
+	'"Who is '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'? Why should you have stayed away from her and from me?"'
+	'"No...," he violently shakes his head and repeats the word several times.'
+	'You squat down in front of him to be able to look him in the eye. "What happened between you and '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'?"'
+	'His eyes meet yours and you can see how hesitant he is to talk about this topic. After a few moments of silence have passed between you, he offers his bottle to you.'
+	
+	gs 'willpower', 'alcohol', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Decline (<<will_cost>> Willpower)':
+			wl_temp = 0
+			gs 'willpower', 'pay', 'resist'
+			gt 'mod_wlife_punishment', 'adrian_second_2'
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Take a sip': wl_temp = 1 & gt 'mod_wlife_punishment', 'adrian_second_2'
+end
+
+if $ARGS[0] = 'adrian_second_2':
+	*clr & cla
+	minut += 5
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_0.jpg"></center>'
+	if wl_temp = 0:
+		'Probably not a very smart idea to share a bottle with a hobo. "No, thanks," you say.' 
+	else
+		wl_homeless['bad'] += 1
+		gs 'drugs', 'alcohol', 'vodka', 1
+		'Sharing a bottle of booze with him is probably OK since you already '+iif($wl_adrian['condom'] ! 'yes' and $wl_adrian['scene'] = 'bj', 'had his unwashed dick in your mouth', 'done much worse things')+'. You take a sip and hand the bottle back as the cheap vodka burns in your throat.'
+	end
+	gs 'stat'
+	'"So, who is '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'?" you ask again as he takes another sip from his bottle.'
+	'"My girlfriend," he sighs and his whole body seems to deflate, his shoulder and head slump down. "I was always the outcast in school as the only black kid. I had some friends, but wherever I went I got the impression that their parents didn''t want them to hang out with me," he says making a pause here and there to collect his thoughts. "'+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+' transfered here, when her parents moved to Pavlovsk and we just clicked. It was like love at first sight. We spend more and more time together, but one day her father caught us in her bed." When he takes another sip to steady himself you ask, "I guess he wasn''t very happy about that?" He shakes his head. "No, he wasn''t. Bashed my head in." He pulls his greasy hair back a bit and reveals a long scar on the right side of his head. Your eyes widen a bit as you can''t stop yourself from staring at it. It''s massive. He should be dead. "Your lucky that you survived," you say, but he scoffs. "Lucky, yeah right." He shakes his head and offers you the bottle again. '+iif(wl_temp = 1, '"Want more?"', '"You sure you don''t want some?"')
+	
+	gs 'willpower', 'alcohol', 'resist', iif(wl_temp > 0, '', 'easy')
+	if will_cost <= pcs_willpwr:
+		act 'Decline '+iif(wl_temp > 0, 'this time', 'again')+' (<<will_cost>> Willpower)':
+			gs 'willpower', 'pay', 'resist'
+			gt 'mod_wlife_punishment', 'adrian_second_3'
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Take '+iif(wl_temp > 0, 'another', 'a')+' sip': wl_temp += 1 & wl_quick_temp = 1 & gt 'mod_wlife_punishment', 'adrian_second_3'		
+end
+
+if $ARGS[0] = 'adrian_second_3':
+	*clr & cla
+	minut += 10
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/adrian_mikhailov_0.jpg"></center>'
+	if wl_quick_temp = 0:
+		'"No, thanks," you say. '+iif(wl_temp > 0, '"I had enough."', '"I''m good."') 
+	else
+		gs 'drugs', 'alcohol', 'vodka', 1
+		'"Thanks," you say taking an even bigger sip than the first time.'
+	end
+	killvar 'wl_quick_temp'
+	gs 'stat'
+	'"When I woke up at the hospital a few days later, the police came and put me in handcuffs," he continues. "Her father pressured '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+' to go to the police and accuse me of raping her."'
+	'"Oh... I''m so sorry," you say and it becomes more and more clear why he''s living on the street. "Did she ever come forward and told the truth?"'
+	'"Yeah, five years later, when she moved out of her parents house," he answers. "Five years?" you ask. "That means... you went to prison?"'
+	'He never had a chance, you think, when he nods. Underage white girl accuses a black guy of raping her, there was no other way how this could have ended. "And what happened next? What''s with your parents?" He shrugs, but doesn''t elaborate. Instead he tries to stand up on his shaky legs. Without thinking you steady him, when he nearly falls over. "Whoa," you say as a mixture of booze and sweat assaults your nostrils. "Do you think it''s a good idea to walk around like this?"'
+	'"You don''t have to help me," he says and shakes you off. "I only need to get to my stuff." You watch him stumble for a few meters before stopping him, when he can''t go in a straight line. This time he puts an arm around you and leans into you. "It''s only a few meters," he says and points with a shaking hand away from the main road towards the other end of the alley.'
+	
+	act 'Help him':
+		*clr & cla
+		minut += 10
+		if $loc = 'pav_residential' or $loc = 'pav_commercial': minut += 15
+		gs 'sweat', 'add', 40
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/help.jpg"></center>'
+		'His stuff isn''t anyway near the end of the alley. You have to walk all the way to the abandoned factory and his home made out of cardboard. He could have told you, that you had to walk all the way here, you think as he takes his arm of your shoulder and stumbles into the factory. "Wait here," he says and vanishes inside the building.'
+		'And wait you do. You pull out your phone to pass the time, when he doesn''t return after a few minutes. After having waited a few minutes more you realize that you can still smell him. Oh my god, it''s your clothes, isn''t it? You take a cautious sniff. "Great," you sigh. They reek. He has left his stench all over your top.'
+		*nl
+		'He finally returns with a giant backpack, that he pushes inside his box and sits down next to it. "Here," he says and holds out the bottle. "Take the rest... as a thank you."'
+			
+		gs 'willpower', 'alcohol', 'resist', iif(wl_temp > 1, 'hard', 'easy')
+		if will_cost <= pcs_willpwr:
+			act 'Decline (<<will_cost>> Willpower)':
+				gs 'willpower', 'pay', 'resist'
+				gt 'mod_wlife_punishment', 'adrian_second_4'
+			end
+		else
+			act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Drink the rest': wl_temp += 1 & wl_quick_temp = 1 & gt 'mod_wlife_punishment', 'adrian_second_4'	
+	end
+end
+
+if $ARGS[0] = 'adrian_second_4':
+	*clr & cla
+	minut += 5
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/cock_0.jpg"></center>'
+	if wl_quick_temp = 0:
+		'"No, thanks," you say. '+iif(wl_temp > 0, '"I had enough."', '"I''m good."')+' He shrugs and drinks the rest himself.' 
+	else
+		gs 'drugs', 'alcohol', 'vodka', 1
+		'"Thanks," you say emptying the bottle.'
+	end
+	killvar 'wl_quick_temp'
+	gs 'stat'
+	*nl
+	'It''s time to go and you turn around, but he stops you. "I''m Adrian by the way," he says. "<<$wl_names[''street'']>>," you '+iif($wl_names['street'] ! $pcs_nickname, 'lie thinking it would be best not to tell him your real name, since', 'say telling him your real name thinking it doesn''t matter even if')+' he lives in Pavlovsk.'
+	*nl
+	'You walk away from him and take one last look over your should. What the actual fuck... He has his cock out and in his hands. Couldn''t he have waited until you have left? For a few seconds you stare at his hand moving up and done his shaft.'
+	if wl_homeless['good'] < 1 and wl_homeless['bad'] < 1:
+		'But you have learned one thing from all that happened in the last days, fucking the homeless is not something you will ever do again without being forced to.' 
+		act 'Leave': 
+			killvar 'wl_temp'
+			$wl_homeless['like'] = 0
+			gt 'mod_wlife_warehouse', 'homeless_outside'
+		end	
+	elseif wl_homeless['good'] < wl_homeless['bad']:
+		pcs_horny += 100
+		iif(wl_temp > 0, 'The alcohol seems to have went straight to your head, but also to other, lower places. ', '')+'The urges you developed over the last few days rush to the surface and you want nothing more than to go to him, rip his clothes of and push his long, hard, dirty cock inside you.' 
+		gs 'willpower', 'resist', 'sex', iif(wl_homeless['bad'] > 4, 'hard', iif(wl_homeless['bad'] > 2, 'medium', 'easy'))
+		if will_cost <= pcs_willpwr:
+			act 'Resist your urges (<<will_cost>> Willpower)':
+				cla & *nl
+				$wl_homeless['like'] = 0
+				killvar 'wl_temp'		
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'You purge the thoughts from your mind. Fucking the homeless is not something you will ever do again without being forced to.' 
+				
+				act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+			end
+		else
+			act 'Resist your urges (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Give in to your urges': 
+			*clr & cla
+			minut += 2
+			$wl_homeless['like'] = 2
+			gs 'boystat', 'A910'
+			gs 'arousal', 'foreplay', -6
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/walk.mp4"></video></center>'
+			'What are you doing? You ask yourself, when you turn around and '+iif(ShoHeels < 4, 'walk', 'click')+' back to him'+iif(ShoHeels < 4, '', ' on your heels')+'. Fucking him isn''t something you should do, but you can''t resist the burning desire between your legs anymore. "<<$wl_names[''street'']>>?" Adrian asks, when your shadow falls over his face. "I...," he stammers and moves his hand away from his cock.'
+			'"Lets go inside," you tell him not wanting to get caught outside with him.'
+			*nl
+			'He''s way to drunk and horny to argue with you and with your help gets back up from the cold ground.'
+			if wl_status['condoms'] > 0:
+				'As you walk inside the building, you ask yourself if you should use a condom '+iif($wl_adrian['condom'] = 'yes', 'again', 'this time')+' or do it bareback '+iif($wl_adrian['condom'] = 'yes', 'this time.', 'again.')
+				act 'Use a condom': 
+					$wl_homeless['condom'] = 'yes'
+					gs 'mod_wlife_functions', 'remove_condom'
+					gt 'mod_wlife_punishment_sex', 'adrian_bad'
+				end
+				
+				gs 'mod_wlife_functions', 'will_unprotected', 'self', iif(alko > 5, 'easy', 'hard')
+				if will_cost <= pcs_willpwr:
+					act 'Don''t use a condom (<<will_cost>> Willpower)':
+						$wl_homeless['condom'] = 'no'
+						gs 'willpower', 'pay', 'self'
+						gt 'mod_wlife_punishment_sex', 'adrian_bad'
+					end	
+				else
+					act 'Don''t use a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			else
+				'For a second you think about using a condom, but then you remember you don''t have any condoms with you and your only option is to fuck him raw.'
+				$wl_homeless['condom'] = 'forgot'
+				act 'Don''t use a condom': gt 'mod_wlife_punishment_sex', 'adrian_bad'
+			end
+		end	
+	else
+		'Isn''t it sad that he''s all alone? That he will maybe never have anyone again in his life. A warm fuzzy feeling in your heart lets you take a step back towards him. You could be that person for today.' 
+		gs 'willpower', 'resist', 'hj', iif(wl_homeless['good'] > 4, 'hard', iif(wl_homeless['good'] > 2, 'medium', 'easy'))
+		if will_cost <= pcs_willpwr:
+			act 'Resist your feelings (<<will_cost>> Willpower)':
+				cla & *nl
+				$wl_homeless['like'] = 0		
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'You purge the thoughts from your mind. ''Helping'' the homeless is not something you will ever do again without being forced to.' 
+				
+				act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+			end
+		else
+			act 'Resist your feelings (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Help him': 
+			$wl_homeless['like'] = 1
+			gt 'mod_wlife_punishment_sex', 'adrian_good'
+		end
+	end	
+end
+
+!!------ Scene Selection ------
+
+if $ARGS[0] = 'homeless_regular':
+	wl_homeless['timer'] = daystart
+	wl_homeless_rand = rand(0,1)
+	if wl_homeless['status'] = 2 or (wl_homeless['status'] > 3 and wl_homeless_rand = 0):
+		gt 'mod_wlife_punishment', 'homeless_solo_0'
+	elseif wl_homeless['status'] = 3 or (wl_homeless['status'] > 3 and wl_homeless_rand = 1):
+		gt 'mod_wlife_punishment', 'homeless_threesome_0'
+!!	elseif wl_homeless['status'] = 4 or (wl_homeless['status'] > 4 and wl_homeless_rand = 2)
+!!		gt 'mod_wlife_punishment', 'homeless_adrian'	
+	end
+end
+
+!!------ Regular: Solo ------
+
+if $ARGS[0] = 'homeless_solo_0':
+	*clr & cla
+	minut += rand(8,16)
+	if wl_homeless['status'] < 3: wl_homeless['status'] = 3
+	if $wl_homeless['like'] = 2: gs 'arousal', 'foreplay', -10, 'humiliation', iif($wl_homeless['scene'] ! 'forced', 'prostitution', '')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/start.mp4"></video></center>'
+	'After a few minutes of walking around, you finally found a potential candidate. He''s alone and even if he smells like a public toilet, it''s still better than many of the other men you have seen today. Like most of them he''s drunk or high or both. Sprawled out on a dirty mattress he doesn''t really seem aware of his surroundings.'
+	
+	if $wl_homeless['sex'] ! 'forced': 
+		act 'Change your mind':
+			if $wl_homeless['like'] = 2: gs 'arousal', 'end'
+			gt 'mod_wlife_warehouse', 'homeless_outside'
+		end
+	else
+		act 'Get on with it': gt 'mod_wlife_punishment', 'homeless_solo_1'
+	end
+	
+	if $wl_homeless['like'] = 1 and $wl_homeless['sex'] ! 'forced':
+		act 'Make him feel good': gt 'mod_wlife_punishment', 'homeless_solo_1'
+	elseif $wl_homeless['like'] = 2 and $wl_homeless['sex'] ! 'forced':
+		act 'Approach him':
+			*clr & cla
+			minut += 2
+			wl_homeless['payment'] = rand(5,80)
+			money += wl_homeless['payment']
+			gs 'arousal', 'foreplay', -10, 'humiliation', 'prostitution'
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/negotiation_'+rand(0,1)+'.mp4"></video></center>'
+			'"Are you awake?" you say as you march in and when he doesn''t wake up you tap his side with your foot. "Hey? Can you hear me?"'
+			'"What?" he frowns and looks up at you.'+iif($wl_homeless['counter'] < 10, '"Leave me alone!"', '"Oh... aren''t you that whore? Some of the other guys told me about you."')
+			if $wl_homeless['counter'] < 10:
+				'"Ok," you shrug. "Thought you might want to fuck, but if you don''t want to," you say in fake indifference and walk a few meters away.'
+				'"What? Hey, babe come back. I didn''t mean it," he shouts after you. You stop, but don''t turn around, as if you have to think about it. "Fine," you finally say. "But you have to pay me."'
+				'He scoffs. "Do I look like I can pay?" he asks. "I can give you...," he rummages inside his pants. "<<wl_homeless[''payment'']>> <b>₽</b>, I don''t have more," he says disappointed.'
+			else
+				'"Yeah, that''s me. How much do you got?"'
+				'He rummages around in his stained pants and pulls a few rubles out.'+iif(rand(0,1) = 0, ' He slowly starts to count it and after nearly a minute says, "<<wl_homeless[''payment'']>> <b>₽</b>. ', ' He holds up the money without counting it. "')+'Is that enough?"'
+			end
+			'You fake thinking about it for a few seconds, but the warm tingling sensation between your legs is all the answer you need. "Yeah, that''s enough."'
+			'"Really?" He slurs and a drunken grin takes shape on his face. "Sure, I take your dirty cock for it," you reply.'
+			gs 'mod_wlife_punishment', 'homeless_solo_condom'
+		end	
+	end
+end
+
+if $ARGS[0] = 'homeless_solo_1':
+	*clr & cla
+	minut += 2
+	if $wl_homeless['like'] = 2: gs 'arousal', 'foreplay', -10, 'humiliation', iif($wl_homeless['sex'] ! 'forced', 'prostitution', '')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/undress.mp4"></video></center>'
+	if rand(0,2) < 2:
+		if ($wl_homeless['like'] = 1 and $wl_homeless['sex'] ! 'forced') or $wl_homeless['sex'] = 'forced':
+			'You don''t take any chances, this is the one you''ll fuck today. You drop to your knees on the dirty mattress and grab his pants with both hands. That pulls him out of his doze and his eyes open wide in surprise as he sees you between his legs. "'+iif($wl_homeless['counter'] < 10, '"What''s happening?" he slurs, but doesn''t try to stop you. "It''s alright, I''m here to make you feel good. Just let it happen," you answer', '"Oh... aren''t you that chick? Some of the other guys told me about you. The one who fucks guys like us?" You nod')+' and try not to show your disgust. A drunken grin takes shape on his face, when he can''t believe his luck.'
+			
+			gs 'mod_wlife_punishment', 'homeless_solo_condom'
+		else	
+			gt 'mod_wlife_punishment_sex', 'homeless_solo'
+		end
+	else
+		if ($wl_homeless['like'] = 1 and $wl_homeless['sex'] ! 'forced') or $wl_homeless['sex'] = 'forced':
+			'You don''t take any chances, this is the one you''ll fuck today. You drop to your knees on the dirty mattress and grab his pants with both hands. That pulls him out of his doze and his eyes open wide in surprise as he sees you between his legs. "'+iif($wl_homeless['counter'] < 10, '"What''s happening?" he slurs, but doesn''t try to stop you. "It''s alright, I''m here to make you feel good. Just let it happen," you answer', '"Oh... aren''t you that chick? Some of the other guys told me about you. The one who fucks guys like us?" You nod')+' and try not to show your disgust. A drunken grin takes shape on his face, when he can''t believe his luck.'
+			'You are getting between his legs to pull down his pants, when he asks you, "could you kiss me?" The way he asks it of you is kinda sweet like a little boy who hasn''t found his confidence yet, but maybe living on the street without a job, without hope has destroyed every ounce of confidence he could ever build up in his life.'
+			
+			gs 'willpower', 'misc', 'resist', iif($wl_homeless['like'] = 1, 'hard', 'easy')
+			if will_cost <= pcs_willpwr:
+				act 'Don''t kiss him (<<will_cost>> Willpower)':
+					cla & *nl
+					if $wl_homeless['like'] = 1 and pcs_mood > 10: pcs_mood -= 10
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'"Sorry, but kissing is something special I reserve for my only a very few in my life," you '+iif($wl_whore['kiss'] = 'yes', 'lie', 'say')+'. "It has nothing to do with you."'
+					'He looks down clearly disappointed, but doesn''t say anything.'
+						
+					act 'Continue': gt 'mod_wlife_punishment_sex', 'homeless_solo'
+				end
+			else
+				act 'Don''t kiss him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Kiss him': gt 'mod_wlife_punishment', 'homeless_solo_kiss'
+		else
+			'You are getting between his legs to pull down his pants, when he asks you, "could you kiss me?" The way he asks it of you is kinda sweet like a little boy who hasn''t found his confidence yet, but maybe living on the street without a job, without hope destroy every ounce of confidence he could ever build up in his life.'
+		
+			gs 'willpower', 'prostitution', 'resist', iif($wl_whore['kiss'] = 'yes', 'hard', 'easy') 
+			if will_cost <= pcs_willpwr:
+				act 'Don''t kiss him (<<will_cost>> Willpower)':
+					cla & *nl
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'"Sorry, but I don''t kiss customers," you '+iif($wl_whore['kiss'] = 'yes', 'lie', 'say')+'. "It has nothing to do with you, it''s a general rule."'
+					'He looks down clearly disappointed, but doesn''t say anything.'
+						
+					act 'Continue': gt 'mod_wlife_punishment_sex', 'homeless_solo'
+				end
+			else
+				act 'Don''t kiss him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+				
+			act 'Kiss him': gt 'mod_wlife_punishment', 'homeless_solo_kiss'
+		end
+	end
+end
+
+if $ARGS[0] = 'homeless_solo_kiss':
+	*clr & cla
+	minut += 2
+	wl_kiss_temp = 1
+	if $wl_homeless['like'] = 2 and $wl_homeless['scene'] ! 'forced' and $wl_whore['kiss'] ! 'yes': $wl_whore['kiss'] = 'yes'
+	gs 'arousal', 'kiss', iif($wl_homeless['like'] = 2, -10, -2), 'humiliation', iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/kiss.mp4"></video></center>'
+	'"Sure, '+iif($wl_homeless['like'] = 2 and $wl_homeless['scene'] ! 'forced', 'you paid for it','why not')+'," you reply and crawl the short distance to him. It''s only a kiss. You have already done worse with men like him. Can''t be so bad? You couldn''t have been more wrong. The breath odor is more than disgusting. He probably hasn''t seen a toothbrush or a dentist in the last year. You give him a quick peck on the lips, but that doesn''t seem to satisfy him. "No, that isn''t a kiss. Get back here," he commands you. Agreeing to his request seems to have given him some of his confidence back.'
+	'You can''t explain it, but it just turns you on to be ordered around and do stuff that no normal decent girl would ever do in her life.'				
+	'This time you push your tongue inside his mouth. The assault on your taste buds is brutal. Alcohol and cigarettes are the more pleasant stuff you can taste. It''s a miracle how you manage to not retch and keep your cool. Each second feels like an eternity and you can bear with it for maybe three or four before you have to pull back.'
+					
+	act 'Continue': gt 'mod_wlife_punishment_sex', 'homeless_solo'
+end
+
+if $ARGS[0] = 'homeless_solo_condom':
+	if wl_status['condoms'] > 0:
+		act 'Use a condom': 
+			$wl_homeless['condom'] = 'yes'
+			gs 'mod_wlife_functions', 'remove_condom'
+			if $wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2:
+				gt 'mod_wlife_punishment', 'homeless_solo_1'
+			else
+				gt 'mod_wlife_punishment_sex', 'homeless_solo'
+			end
+		end
+		
+		gs 'mod_wlife_functions', 'will_unprotected', 'self', iif($wl_homeless['counter'] >= 10, 'medium', 'hard')
+		if will_cost <= pcs_willpwr:
+			act 'Don''t use a condom (<<will_cost>> Willpower)':
+				$wl_homeless['condom'] = 'no'
+				gs 'willpower', 'pay', 'self'
+				if $wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2:
+					gt 'mod_wlife_punishment', 'homeless_solo_1'
+				else
+					gt 'mod_wlife_punishment_sex', 'homeless_solo'
+				end
+			end
+		else
+			act 'Don''t use a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	else
+		'You don''t have any condoms with you and your only option is to fuck him raw.'
+		$wl_homeless['condom'] = 'forgot'
+		if $wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 1:
+			act 'Leave':
+				if wl_kiss_temp = 1: killvar 'wl_kiss_temp' & gs 'arousal', 'end'
+				gt 'mod_wlife_warehouse', 'homeless_threesome'
+			end
+
+			gs 'mod_wlife_functions', 'will_unprotected', 'self', iif($wl_homeless['counter'] >= 10, 'medium', 'hard')
+			if will_cost <= pcs_willpwr:
+				act 'Don''t use a condom (<<will_cost>> Willpower)':
+					gs 'willpower', 'pay', 'self'
+					gt 'mod_wlife_punishment_sex', 'homeless_solo'
+				end
+			else
+				act 'Don''t use a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		elseif $wl_homeless['sex'] = 'forced' or $wl_homeless['like'] = 2:
+			act 'Don''t use a condom':
+				if $wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2:
+					gt 'mod_wlife_punishment', 'homeless_solo_1'
+				else
+					gt 'mod_wlife_punishment_sex', 'homeless_solo'
+				end
+			end
+		end
+	end
+end
+
+!!------ Regular: Threesome ------
+
+if $ARGS[0] = 'homeless_threesome_0':
+	*clr & cla
+	minut += rand(8,16)
+	if rand(0,1) = 1:
+		$wl_rand = 'ass'
+	else
+		$wl_rand = 'tits'
+	end
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/start_0.mp4"></video></center>'
+	'You encounter two homeless people outside a closed store, when you walk towards the abandoned factory. "Damn, look at '+iif($wl_rand = 'ass', 'that ass', 'those tits')+'," one of the men says to the other as you pass them.'
+	if $wl_homeless['like'] = 1:
+		if pcs_mood < 80: pcs_mood += 20
+		'You stop in your tracks'+iif(wl_homeless['status'] < 4, ' as an idea takes shape in your head. Should you help two at the same time? Would that really make a difference? You have already done it with one, wouldn''t two be more efficient than helping them one at a time?', '. You shrug and turn around. You have already helped two hobos at the same time. Why not do it again? It''s way more efficient than helping them one at a time.') 
+	elseif $wl_homeless['like'] = 2:
+		if pcs_horny < 60: pcs_horny = 60
+		'You stop in your tracks'+iif(wl_homeless['status'] < 4, ' as an idea takes shape in your head. Should you do it with two? Would that really make a difference? You have already done it with one, wouldn''t two only double the fun? A flash of heat emanates from your cunt at the thought of not only riding one but two hobo-cocks.', '. You have already done it with two hobos at the same time, you think with a shrug. There is no reason why you couldn''t do it again.') 
+	else
+		'You stop in your tracks and sigh. They don''t look as horrible as some of the others'+iif(wl_homeless['status'] < 4, '.', ' and you already have done it with two hobos at the same time.')+' What''s worse? Two half-decent men or a potentially complete disgusting one? You sigh again and turn around.'
+	end
+		
+	if $wl_homeless['sex'] ! 'forced': 
+		act 'Change your mind':
+			if $wl_homeless['like'] = 2: gs 'arousal', 'end'
+			gt 'mod_wlife_warehouse', 'homeless_outside'
+		end
+	else
+		act 'Get on with it': gt 'mod_wlife_punishment', 'homeless_threesome_1'
+	end
+	
+	if $wl_homeless['like'] = 1 and $wl_homeless['sex'] ! 'forced':
+		act 'Make them feel good': gt 'mod_wlife_punishment', 'homeless_threesome_1'
+	elseif $wl_homeless['like'] = 2 and $wl_homeless['sex'] ! 'forced':
+		act 'Fuck them for a few rubles': gt 'mod_wlife_punishment', 'homeless_threesome_1'
+	end
+end
+
+if $ARGS[0] = 'homeless_threesome_1':
+	*clr & cla
+	minut += 3
+	if $wl_homeless['like'] = 2: gs 'arousal', 'foreplay', -6, 'humiliation', iif($wl_homeless['sex'] ! 'forced', 'prostitution', '')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/start_1.mp4"></video></center>'
+	if $wl_homeless['like'] ! 2:
+		'They look surprised, when you turn around and greet them with a '+iif($wl_homeless['like'] = 1, 'honest', 'forced')+' smile. "I can''t help but notice, you seem to like my '+iif($wl_rand = 'tits', 'tits', 'ass')+'," you say as you walk back to them. One of them looks '+iif($wl_homeless['counter'] < 10, 'down, clearly not confident enough to talk to you.', 'at you pensive as if he''s searching his memory for something.')+' The other one glowers at you. "And? Do you have a problem with that?"'
+		iif($wl_homeless['counter'] < 10, '"Quite the contrary," you '+iif($wl_homeless['like'] = 0, 'lie', 'say')+'. "Do you want to take a closer look at '+iif($wl_rand = 'tits', 'them', 'it')+'?"', '. "Wait, wait," the other one stops him and puts his hand on his arm. "It''s her," he says and throws you an inquiring glance. "Aren''t you?" You nod. "Who?" the other one asks confused. "The girl who sleeps with guys like us."')
+		'His eyes grow wide. "Really?" he asks not sure if '+iif($wl_homeless['counter'] < 10, 'you are', 'his friend is')+' serious. "If you don''t believe '+iif($wl_homeless['counter'] < 10, 'me', 'him')+', I can prove it to you. Do you have a more private place we can go to?"'
+		'The men look at each other shrugging at the same time and it''s obvious what''s going on inside their heads. What do they have to lose? They point at a nearby building. "We can go there."'
+	else
+		iif($wl_rand = 'tits', 'You turn around and grab both of your tits with your hands.', 'You look over your shoulder and give your ass a hard slap.')+' "You like that?" you ask and flash a toothy grin, when they look at you with utter disbelieve.'
+		iif($wl_homeless['counter'] < 10, '"What?" one of the guys asks confused. "I asked if you like what you see? You can have it if you want?"', '"Fuck, it''s her," one of the guys says. "You know, the girl that puts out for guys like us." The other guy looks at him as if he has lost his mind. "He is right, you know. You can have me if you want," you assure him.')
+		if $wl_homeless['scene'] ! 'forced':
+			wl_homeless['payment'] = rand(15,160)
+			money += wl_homeless['payment']
+			'"But it will cost you," you add and you can see the happiness drain from their eyes. You give them a reassuring smile. "Don''t worry, I''m cheap. How much do you guys have?" you ask, but already know that you''ll accept any offer they make. It doesn''t take them long to count the few rubles they have. "<<wl_homeless[''payment'']>>?"'
+			'You take a second, but not to think about it, but to enjoy the feeling between your legs. Offering yourself for a few rubles has already made your pussy wet and ready to get pounded. "OK, hand it over," you finally reply and grab the money without counting it.'
+		end	
+		'"Do you have a more private place we can go to?" you ask. The men look at each other, before pointing at a nearby building. "We can go there."'
+	end
+	killvar '$wl_rand'
+	
+	if wl_homeless['status'] < 4 or rand(0,2) = 2:
+		act 'Wait for them to get up': gt 'mod_wlife_punishment', 'homeless_threesome_2a'
+	else
+		act 'Walk with them': gt 'mod_wlife_punishment', 'homeless_threesome_2b'
+	end
+end
+
+if $ARGS[0] = 'homeless_threesome_2a':
+	*clr & cla
+	minut += 6
+	if $wl_homeless['like'] = 2: gs 'arousal', 'foreplay', -12, 'humiliation', iif($wl_homeless['sex'] ! 'forced', 'prostitution', '')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/walk_0.mp4"></video></center>'
+	'"Come on, get up," one of the guys says, when his friend takes way to long to collect his things.'+iif($wl_homeless['like'] = 2, ' You understand his impatiens. Your pussy screams to be filled and you can barely resist the urge to push your fingers into your own wetness.', iif($wl_homeless['like'] = 0, ' You can''t decide if you are annoyed by the delay or thankful for it. One half of you wants to get it done as quickly as possible, but the other half is glad for another second in which you don''t have to touch their unwashed bodies.', ' "Take all the time you need," you say and patiently wait for them to get ready to move. You''re here to help them and a bit of a delay doesn''t matter.'))
+		
+	act 'Walk with them': gt 'mod_wlife_punishment', 'homeless_threesome_2b'	
+end
+
+if $ARGS[0] = 'homeless_threesome_2b':
+	*clr & cla
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/walk_1.mp4"></video></center>'
+	if $wl_homeless['like'] < 4 or rand(0,3) = 3:
+		gs 'fame', 'pav', 'prostitute', rand(0,2)
+		minut += 6
+		if $wl_homeless['like'] = 2: gs 'arousal', 'foreplay', -12, 'humiliation', iif($wl_homeless['sex'] ! 'forced', 'prostitution', '')
+		'It takes you way longer than expected to reach your destination. They were pointing in the general direction you had to go and not the nearby building. You have to listen to them chatting about what they are going to do with you and it''s utterly degrading'+iif($wl_homeless['like'] = 2, ', but at the same time turns you on like crazy', iif($wl_homeless['like'] = 1, ', but if helping them requires some discomfort, you are willing to endure it.', '.'))
+		*nl
+		'Several cars pass by as you walk through the streets of the industrial area and a jolt of panic'+iif($wl_homeless['like'] = 2, ' and arousal ', ' ')+'shots up your spin. Each time the same thoughts go through your head. Did they know you? Did they recognize you?'
+		*nl
+	else
+		minut += 2
+		if $wl_homeless['like'] = 2: gs 'arousal', 'foreplay', -4, 'humiliation', iif($wl_homeless['sex'] ! 'forced', 'prostitution', '')
+	end
+	gs 'stat'
+	'The two homeless lead you through the courtyard of an old, but not abandoned apartment complex at the edge of the industrial area. "Are you sure about this?" you asks worried as you approach a back entrance. '+iif($wl_homeless['like'] = 2, 'Even if the thought turns you on, y', 'Y')+'ou really don''t want to get caught. "The door leads into the cellar. We are sleeping here for months, nobody ever goes down there," one of the guys reassures you while the other one sees something interesting in one of the nearby dumpsters. "Take a look at that, it''s still half full," he says and pulls out a '+iif(rand(0,1), 'vodka bottle', 'cigarette package')+'. The other guy immediately turns around, but you grab both of them and pull them towards the door. "The trash will still be here later," you say and hurry them inside to avoid prying eyes.' 
+	*nl
+	
+	if wl_status['condoms'] > 1:
+		'As you follow them through the building deep into the cellar there is only one thing you have to decide. Do you use condoms?'
+		act 'Use condoms': 
+			$wl_homeless['condom'] = 'yes'
+			gs 'mod_wlife_functions', 'remove_condom'
+			gs 'mod_wlife_functions', 'remove_condom'
+			gt 'mod_wlife_punishment_sex', 'homeless_threesome'
+		end
+		
+		gs 'mod_wlife_functions', 'will_unprotected', 'self', iif($wl_homeless['counter'] >= 10, 'medium', 'hard')
+		if will_cost <= pcs_willpwr:
+			act 'Don''t use condoms (<<will_cost>> Willpower)':
+				$wl_homeless['condom'] = 'no'
+				wl_stats['unprotected'] += 2
+				gs 'willpower', 'pay', 'self'
+				gt 'mod_wlife_punishment_sex', 'homeless_threesome'
+			end
+		else
+			act 'Don''t use condoms (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	else
+		'You don''t have enough condoms with you and your only option is to fuck them bareback.'
+		$wl_homeless['condom'] = 'forgot'
+		if $wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 1:
+			act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+
+			gs 'mod_wlife_functions', 'will_unprotected', 'self', iif($wl_homeless['counter'] >= 10, 'medium', 'hard')
+			if will_cost <= pcs_willpwr:
+				act 'Don''t use condoms (<<will_cost>> Willpower)':
+					wl_stats['unprotected'] += 2
+					gs 'willpower', 'pay', 'self'
+					gt 'mod_wlife_punishment_sex', 'homeless_threesome'
+				end
+			else
+				act 'Don''t use condoms (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		elseif $wl_homeless['sex'] = 'forced' or $wl_homeless['like'] = 2:
+			act 'Don''t use condoms': gt 'mod_wlife_punishment_sex', 'homeless_threesome'
+		end
+	end
+end
+
+--- mod_wlife_punishment ---------------------------------
+

+ 674 - 0
locations/mod_wlife_punishment_sex.qsrc

@@ -0,0 +1,674 @@
+# mod_wlife_punishment_sex
+
+!!------ Homeless: First ------
+
+if $ARGS[0] = 'homeless_first_0':
+	*clr & cla
+	$wl_homeless['counter'] += 1
+	wl_homeless['timer'] = daystart
+	$wl_homeless['scene'] = $ARGS[1]
+	gs 'boystat', 'A910'
+	gs 'arousal', 'hj', 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/start.mp4"></video></center>'
+	'Hesitantly you take his cock into your hands, your eyes fixed on his face, but he doesn''t show any signs that he''s awake. Even when you move your hands slowly up and down his shaft his eyes stay closed and his breathing steady.'
+	'A short rattling of the chain-link fence lets you pull your hands back. Sudden panic flares up inside you, but it''s only Georgiy''s henchman looking at you shocked and disgusted. Didn''t Georgiy tell him what''s going to happen? You wonder, after the initial shock has subsided.'
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:	
+		act 'Tell him to go away (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 2
+			wl_stats['respect'] += 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'				
+			'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/cock_hold.jpg"></center>'
+			'"Could you leave me alone, please? Georgiy didn''t order me to do it in front of an audience," you hiss. "Or do you get off on it? Does it turn you on to see a girl fucking a dirty bum?" you snap at him as your frustration gets the better of you.'
+			'"Uhm...," he murmurs clearly uncomfortable with the question. He looks at you dumbfounded and opens his mouth once, closes it before opening it again like a fish out of water. After a few more seconds he finally says, "Georgiy told me to make sure that...," he explains, but you cut him off. "Yes," you put your hands back on the dirty cock. "See? I''m doing it, so leave me alone, OK?"'
+			'He nods and you roll your eyes as he walks away.' 
+			
+			act 'Get back to it': gt 'mod_wlife_punishment_sex', 'homeless_first_1'
+		end
+	else
+		act 'Tell him to go away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Don''t say anything':
+		*clr & cla
+		minut += 2
+		wl_stats['respect'] -= 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/caught.jpg"></center>'
+		'You stare at him like a deer caught in a headlight. Is he suppose to watch? You ask yourself, when he doesn''t say anything. It''s bad enough that you have to do it, but to fuck him in front of an audience makes it even worse.'
+		'You wait for a few more seconds, a few more, but he still only stares at your hands that touched a bum''s cock a few seconds ago. It seems that he''s here to watch what happens. You sigh and take the cock back into your hand. That seems to finally trigger your observer and he vanishes as quickly as he appeared. You breath out a sigh of relief and ...'
+		
+		act '... get back to it': gt 'mod_wlife_punishment_sex', 'homeless_first_1'
+	end
+end
+
+if $ARGS[0] = 'homeless_first_1':
+	*clr & cla
+	gs 'arousal', $wl_homeless['scene'], 5
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/<<$wl_homeless[''scene'']>>_0.mp4"></video></center>'
+	if $wl_homeless['scene'] = 'hj':
+		'Confident that he won''t wake up even after stroking him for a few minutes you increase the beat of your strokes. Make him cum before he wakes up, you think as you watch your hand gliding up and down his '+iif($wl_homeless['condom'] = 'yes', 'condom covered', 'dirty')+' dick. '+iif($wl_homeless['condom'] = 'yes', 'It', 'You''ll probably never wash that stench of your hand, but even without a condom it')+' isn''t as bad as you would have expected'+iif($wl_homeless['condom'] = 'yes', ' thanks to the condom.', '.')+' Sure the smell that comes from him is vile, but your nose is getting more and more used to it.'
+	else
+		'You lower your face down to his cock and the smell gets even stronger. His cock smells like a mixture of sweat, urine and dried cum. It won''t taste as bad as it smells, you tell yourself as you stick out your tongue. It''s not like you never have tasted cum before. You close your eyes and run your tongue over the head of his '+iif($wl_homeless['condom'] = 'yes', 'condom covered', 'dirty')+' dick. '+iif($wl_homeless['condom'] = 'yes', 'The stench is bad, but it''s manageable and there''s at least the condom between your taste buds and his penis.', 'The stench is bad, but the taste. "Oh my god," you say and retch. It''s truly horrible and nothing would have prepared you for that. You toy with the idea to use your hand instead, but now you already have the taste in your mouth. You might as well keep going. Taking a deep breath through your mouth to steady yourself before closing your lips around his cock again.')+' You concentrate on the sensitive tip and for the next minutes give it everything you got.'
+	end
+	*nl
+	'"What the hell?" the man suddenly croaks and opens his eyes.'
+			
+	act 'Look at him':
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/homeless_awake.jpg"></center>'
+		'Shit, shit, shit! You think and stop what you''re doing. Your first instinct is to jump up and run away, but the threats Georgiy made are keeping you right were you are.'
+		'What should you do? How can you explain why you were '+iif($wl_homeless['scene'] = 'hj', 'stroking', 'sucking')+' his dick a few seconds ago?'
+		'"What''s happening," he slurs and he can''t seem to focus his eyes on you. You already suspected that he was drunk, but that was an understatement. Maybe you could tell him that this isn''t real. That this is only a dream? Maybe he would believe it? Or if you aren''t the first whore Georgiy send here, you could tell him the truth. You ponder the question and decide to tell him...' 
+				
+		act '... the truth': wl_temp = 0 & gt 'mod_wlife_punishment_sex', 'homeless_first_2'
+		act '... that this a dream': wl_temp = 1 & gt 'mod_wlife_punishment_sex', 'homeless_first_2'
+	end
+end
+
+if $ARGS[0] = 'homeless_first_2':
+	*clr & cla
+	gs 'arousal', $wl_homeless['scene'], 5
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/<<$wl_homeless[''scene'']>>_1.mp4"></video></center>'
+	iif(wl_temp = 0, '"Here is the deal. I''m a whore and I''ll do you for free. So please, don''t make a big fuss about it.', '"Everything is alright," you say in a low dreamy voice. "It''s just a dream.')+' Relax and enjoy it." you tell him '+iif($wl_homeless['scene'] = 'hj', 'as you stroke his cock.', 'before you take his cock back into your mouth.')
+	'"Uhm...," he groans as his eyes are trying to see you through the fog of his intoxicated mind. "Okay...," he manages to say drawing out the word. He lays his head back and his eyes flutter shut.'
+	'Maybe you can really do it without actually fucking him, you hope. The better the '+iif($wl_homeless['scene'] = 'hj', 'handjob', 'blowjob')+' the quicker you''ll be out of here.'
+	*nl
+	'Sadly it doesn''t go according to plan. After a short time he opens his eyes and shakes his head in a typical drunken fashion. "No, not...," he slurs and suddenly sits up and pushes you down onto the floor with the uncontrolled strength of a drunken man. He moves between your legs and you have no other choice than to spread them. He '+iif(CloSkirtShortness = 0, 'violently pulls down your pants', 'pulls up your skirt')+' '+iif($pantyworntype ! 'none', 'and moves your panties to the side.', 'to reveal your pussy.')+' His '+iif($wl_homeless['condom'] = 'yes', 'condom covered', 'dirty')+' cock is going inside it regardless of what you want.'
+	
+	if wl_temp = 1 and $wl_homeless['condom'] = 'yes':
+		act 'Continue':
+			*clr & cla
+			minut += 2
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/homeless/set_1/pussy_start.jpg"></center>'	
+			'He looks at the the condom on his cock and starts to pull on it. "Strange dream... Why... Why is there a condom?" he murmurs as he tries to pull the condom of. Fuck, you think. What is he doing? This can''t be happening. Should you say anything?'
+					
+			gs 'mod_wlife_functions', 'will_unprotected', 'resist' 
+			if will_cost <= pcs_willpwr:	
+				act 'Protest (<<will_cost>> Willpower)': 
+					$wl_homeless['condom'] = 'forced'
+					gs 'willpower', 'pay', 'resist'
+					gt 'mod_wlife_punishment_sex', 'homeless_first_3'
+				end
+			else
+				act 'Protest (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+				
+			act 'Let it happen': 
+				wl_stats['unprotected'] += 1
+				$wl_homeless['condom'] = 'accept'
+				gt 'mod_wlife_punishment_sex', 'homeless_first_3'
+			end
+		end
+	else
+		act 'Get fucked': gt 'mod_wlife_punishment_sex', 'homeless_first_3'
+	end
+end
+
+if $ARGS[0] = 'homeless_first_3':
+	*clr & cla
+	killvar 'wl_temp'
+	$orgasm_txt = 'With the force of an explosion your orgasm shatters every conscious thought and you forget with whom you''re doing it. For a few blissful moments nothing matters except that uncomparable feeling reaching every cell of your body.'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/pussy_start_0.mp4"></video></center>'
+	'This is it. You can feel his '+iif($wl_homeless['condom'] = 'yes', 'condom covered', 'dirty')+' cock pushing against your opening. "Yes," he moans as it slides into you.'
+	if $wl_homeless['condom'] = 'yes' or $wl_homeless['condom'] = 'no':
+		'This is fine, you think as he pushes deeper and deeper inside. He will fuck you for a few minutes,'+iif($wl_homeless['condom'] = 'yes', 'cum inside the condom', '')+' and afterwards you will be able to leave. Your punishment will finally be over.'+iif($wl_homeless['condom'] = 'yes', '', ' It was your decision to have his unwashed cock inside you without a condom, but right now you again push the thought aside why you did that and instead focus on the forbidden feeling between your legs.')
+	elseif $wl_homeless['condom'] = 'forgot':
+		'This would have been a good day to have a condom with you, you think as you feel his cock sliding deeper and deeper inside you. But what''s done is done. You can''t change it now. In a few minutes this will all be over.'
+	elseif $wl_homeless['condom'] = 'accept':
+		'Maybe you should have set something, but it''s to late now as you can feel his cock sliding deeper and deeper into you. You can see the condom next to the cardboard box on the ground and you wish that this was between you and the unwashed thing that is forcing it''s way up to the entrance of your womb.'
+	elseif $wl_homeless['condom'] = 'forced':
+		'"No, stop," you shout, but he doesn''t listen as his cock slides deeper and deeper into you. "Put the condom back on, this isn''t a dream. Please!" you beg without any success. He doesn''t give a shit about you. For a minute you hope that Georgiy''s henchman shows up to help you, but it''s no use and for the next minutes you can only lay there and stare at the condom. So close, but at the same time so far away.'
+	end
+	gs 'arousal', 'vaginal', 2
+	gs 'stat'
+
+	act 'Get fucked': 
+		*clr & cla
+		minut += 5
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/pussy_start_1.mp4"></video></center>'
+		'Your hole doesn''t care who is fucking you right now and a familiar warmth spreads out from your crotch through the rest of your body. His thrusts are uncontrolled but particular deep and powerful as he puts his body weight in it. "Why did you come back to me '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'?" he suddenly asks after ravishing you for a few minutes. "I don''t deserve it," he sobs and tears are forming in his eyes. You and him clearly aren''t on the same page about what''s happening here. But maybe that''s your chance to get this over more quickly.'
+		gs 'arousal', 'vaginal', -10
+		gs 'stat'
+		
+		act 'Encourage him':
+			*clr & cla		
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/pussy_1.mp4"></video></center>'
+			'"Yes, I''m here with you. Everything is alright," you assure him and put your hand on his back as his thrusts become even more uncontrolled as tears run down his face and drop down on your chest. "I''m here. Cum for me, cum for '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'," you encourage him and can feel him tensing up.'
+			gs 'arousal', 'vaginal', 2
+			gs 'stat'	
+		
+			if $wl_homeless['condom'] = 'yes':				
+				act 'Let him cum inside the condom': 
+					$wl_homeless['creampie'] = 'condom'
+					if rand(1,100) > 98: $wl_homeless['creampie'] = 'broke' & $wl_homeless['condom'] = 'broke'
+					gt 'mod_wlife_punishment_sex', 'homeless_first_4'
+				end
+			else				
+				gs 'willpower', 'cum_inside', 'self', 'easy'
+				if will_cost <= pcs_willpwr:
+					act 'Beg him to pull out (<<will_cost>> Willpower)': $wl_homeless['creampie'] = 'no' & gs 'willpower', 'pay', 'self' & gt 'mod_wlife_punishment_sex', 'homeless_first_4'
+				else
+					act 'Beg him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				
+				act 'Let him cum inside you': $wl_homeless['creampie'] = 'yes' & gt 'mod_wlife_punishment_sex', 'homeless_first_4'
+			end	
+		end
+	end	
+end
+
+if $ARGS[0] = 'homeless_first_4':
+	*clr & cla
+	gs 'sweat', 'add', 40
+	gs 'fame', 'pav', 'prostitute', rand(1,4)
+	if $wl_homeless['creampie'] ! 'condom':
+		gs 'mod_wlife_functions', 'std_check', 'high'
+		gs 'cum_call', 'vaginal', 'A910'
+	end
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/pussy_end.mp4"></video></center>'
+	iif($wl_homeless['creampie'] = 'no', '"Pull out, pull out," you beg him, but instead h', 'H')+'e pushes as deep as he can inside you and shots his cum against your cervix.'+iif($wl_homeless['creampie'] = 'broke', ' Horrified you realize that the condom broke, when you can feel his cum flowing inside your pussy. Fuck, why now? Why with him? You think.', '')
+	'He tries to stand up when he pulls out of you, but stumbles backwards and lands with a thud on the hard concrete floor. This seems to finally lift the fog in his brain a bit and after blinking several times his teary eyes really fixate on your face. "You... you aren''t '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+'," he stutters.'
+	'Whatever his issues with this '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+' are, you can''t deal with them now. There''s only one thing you want to do. Get out of here.'
+	gs 'arousal', 'vaginal', 2
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	wl_adrian['status'] = 1
+	$wl_adrian['creampie'] = $wl_homeless['creampie']
+	$wl_adrian['condom'] = $wl_homeless['condom']
+	$wl_adrian['scene'] = $wl_homeless['scene']
+	
+	killvar '$orgasm_txt'
+	
+	act 'Leave as quickly as you can': gt 'mod_wlife_warehouse', 'homeless_outside'	
+end
+
+!!------ Adrian: Good ------
+
+if $ARGS[0] = 'adrian_good':	
+	CLOSE ALL
+	*clr & cla
+	gs 'sweat', 'add', 5
+	gs 'boystat', 'A910'
+	gs 'arousal', 'hj', 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/hj2_start.mp4"></video></center>'
+	'You turn around and '+iif(ShoHeels < 4, 'walk', 'click')+' back to him'+iif(ShoHeels < 4, '', ' on your heels')+'. Helping him out in this way isn''t reprehensible, isn''t it? You don''t think so and squat down next to him. "<<$wl_names[''street'']>>?" Adrian asks, when your shadow falls over his face. "I...," he stammers and moves his hand away from his cock.'
+	'"It''s OK," you tell him and crawl behind him into the cardboard box.'
+	*nl
+	'He''s way to drunk and horny to argue with you as you pull him backwards so that he can relax against you. You put one arm around him and take his cock into your other hand. "Let me take care of you."'
+	*nl
+	'You can feel the tension drain from his body, when his eyes close and his cock perks up between your fingers. You rub his shaft for a short time before spitting into your hand and taking care of the sensitive tip.' 
+	
+	act 'Continue': 
+		*clr & cla
+		pcs_mood = 100
+		gs 'sweat', 'add', 5
+		gs 'arousal', 'hj', 6
+		gs 'stat'	
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/hj2_2.mp4"></video></center>'
+		'"<<$wl_names[''street'']>>," he moans. "I don''t deserve this."'
+		'"Shhhhh," you whisper into his ear. "You deserve this more than most men, living here is what you don''t deserve," you assure him as you keep working his cock.'
+		'It''s true, you think, he doesn''t deserve to be out here or to have been in prison. You can''t change that, but the least you can do is getting him off. So you give it your best, use every trick in the book to give him pleasure with your hand.' 
+	
+		act 'Make him cum':
+			*clr & cla
+			gs 'sweat', 'add', 5
+			gs 'cum_call', 'hands', 'A910'
+			gs 'arousal', 'hj', 2
+			gs 'arousal', 'end'
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/hj2_end.mp4"></video></center>'
+			'"Cum for me," you whisper into his ears with a husky voice and don''t stop the movement of your hand as his cock erupts and shots cum all over your hand and his unwashed shirt.'
+			'"Thanks," he murmurs, his energy spend and his eyes still shut. The booze and the orgasm quickly pulling him into a deep peaceful sleep. Your good deed for the day is done.'
+			*nl
+			'As you walk away your mind wanders to the other poor souls that live hear and maybe could benefit from your help like Adrian.'
+
+			act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+		end
+	end
+end
+
+!!------ Adrian: Bad ------
+
+if $ARGS[0] = 'adrian_bad':
+	CLOSE ALL
+	*clr & cla
+	minut += 2
+	wl_stats['acceptance'] += 5
+	gs 'arousal', 'bj', -6
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/bj2_start.mp4"></video></center>'
+	'"<<$wl_names[''street'']>>," Adrian says, when you drop down to your knees. Grabbing his dick with your hand shuts him up and he watches with hazy eyes how you'+iif($wl_homeless['condom'] = 'yes', ' put the condom over his cock and ', ' ')+'take his '+iif($wl_homeless['condom'] = 'yes', '', 'unwashed')+' cock greedily into your mouth. The thought of what you''re doing turns you on immensely. Everything about it seems degrading and taboo.'
+	'"Stop," he barely manages to form the word in his aroused and drunk brain. "I don''t deserve it. We shouldn''t."'
+	'Taking his cock out of your mouth you shake your head. "It''s not about you," you explain and for the first time utter the words that lay dormant in the back of your head since the day you fucked him. "I don''t deserve anything better, I''m just a dirty whore."'
+	
+	act 'Continue':	
+		*clr & cla
+		minut += 3
+		gs 'arousal', 'bj', -9
+		gs 'stat'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/bj2_'+rand(0,4)+'.mp4"></video></center>'
+		'Just a dirty whore? Do you really believe that or is it something you said to turn you on? The question bubbles up inside you, but at the moment your only goal in life is to suck Adrian''s dirty cock. Nothing else matters.'
+		*nl
+		'You were looking forward to a hard pounding, but all your experiences tell you that he''s already way to close to the edge.'
+
+		act 'Make him cum':
+			*clr & cla
+			swallow += 1
+			if $wl_homeless['condom'] ! 'yes':
+				gs 'mod_wlife_functions', 'std_check_oral', 'high'
+				gs 'cum_call', 'mouth', 'A910'
+			end
+			gs 'arousal', 'bj', 2, 'deepthroat'
+			gs 'arousal', 'end'
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_1/bj2_end.mp4"></video></center>'
+			'He suddenly grabs your head and takes control of the situation. Keeping you in place with his strong hands, he fucks your head like a pussy before pushing his dick down your throat '+iif($wl_homeless['condom'] ! 'yes', 'which leaves you no choice but to swallow every single drop.', 'and you can feel him filling the condom deep inside your warm mouth.')
+			*nl
+			'"Thanks," he murmurs, his energy spend as he collapses onto a dirty old couch nearby. You don''t even have a chance to talk to him. The booze and the orgasm quickly pulling him into a deep peaceful sleep.'
+			
+			act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+		end
+	end
+end
+
+!!------ Homeless: Regular/Solo ------
+
+if $ARGS[0] = 'homeless_solo':
+	wl_pic_rand = rand(0,1)
+	$wl_homeless['counter'] += 1
+	gs 'npcgeneratec', 0, 'a homeless man', rand(18,39)
+	gs 'boyStat', $npclastgenerated
+	if wl_pic_rand = 0 or (wl_pic_rand = 1 and rand(0,2) < 2):
+		wl_temp = 0 & gt 'mod_wlife_punishment_sex', 'homeless_solo_bj'
+	else
+		wl_temp = 0 & gt 'mod_wlife_punishment_sex', 'homeless_solo_tits'
+	end
+end
+
+if $ARGS[0] = 'homeless_solo_tits':
+	*clr & cla
+	minut += 2
+	gs 'pain', 6, 'nipples', 'bite'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/tits.mp4"></video></center>'
+	iif(wl_temp = 1, 'He pulls you off his cock. ', '')+'"Take of your clothes," he slurs and watches with hungry eyes as you take of your top'+iif($braworntype ! 'none', ' bra ', ' ')+'to reveal your breasts.'
+	'"Wow, nice tits" he murmurs and stretches his hands out to touch them. They leave small dirty stains on you as his hands roam over your tits, rubbing your nipples and occasionally twisting them between his rugged fingers. '+iif($wl_homeless['like'] = 2, 'The humiliating situation triggers something inside you and you can''t stop yourself from letting out a moan. Being here and getting manhandled by him turns you on immensely.', '')	
+	'After playing with your tits for a minute he finally lets go, but only to suddenly suck one of your nipples hard into his mouth to bite down on it hard. You let out a cry of pain '+iif(pcs_horny > 60, 'mixed with a moan as if your body can''t decide if it should focus on the pain or the pleasure. You', 'and')+' try to bear with it as he switches to your other nipple to give him the same treatment.'
+	gs 'arousal', 'foreplay', iif($wl_homeless['like'] = 2, -10, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'stat'
+	
+	act 'Continue':
+		if wl_pic_rand = 1 and rand(0,2) < 2:
+			wl_temp = 1 & gt 'mod_wlife_punishment_sex', 'homeless_solo_bj'
+		else
+			gt 'mod_wlife_punishment_sex', 'homeless_solo_pussy'
+		end
+	end	
+end
+
+if $ARGS[0] = 'homeless_solo_bj':
+	*clr & cla
+	minut += 6
+	if wl_temp = 1: gs 'pain', 6, 'nipples', 'bite'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/bj_'+wl_pic_rand+rand(0,1)+'.mp4"></video></center>'
+	iif(wl_temp = 1, 'He bites your right nipple one last time before he pulls your head down towards his cock. ', '')+'You enclose the tip of his meat with your lips and dance around the sensitive flesh with your tongue. '+iif($wl_homeless['condom'] = 'yes', 'Thank god you used a condom, because the smell alone is upsetting your stomach.', 'It''s giving his cock the first wash in days as you clean every nook and cranny.')
+	iif(rand(0,1) = 0, '"This is by far the best day of my life,"', '"I never would have thought to fuck a clean girl like you ever again,"')+' he says and runs his dirty fingers through your hair as you bob your mouth up and down the length of his cock taking it as deep as possible down your throat.'
+	gs 'arousal', 'bj', iif($wl_homeless['like'] = 2, -12, -3), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', ''), 'deepthroat'
+	gs 'stat'
+	
+	act 'Continue':
+		if wl_pic_rand = 0 and rand(0,2) < 2:
+			wl_temp = 1 & gt 'mod_wlife_punishment_sex', 'homeless_solo_tits'
+		else
+			gt 'mod_wlife_punishment_sex', 'homeless_solo_pussy'
+		end
+	end
+end
+
+if $ARGS[0] = 'homeless_solo_pussy':
+	*clr & cla
+	minut += 6
+	killvar 'wl_temp'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/pussy_'+rand(0,4)+'.mp4"></video></center>'
+	'His first push is hesitant as if he still can''t believe his luck, but when his cock is deep inside your hole he throws caution in the wind and begins to fuck you with all the strength he can muster.'	
+	if $wl_homeless['counter'] < 10 and rand(0,1) = 1:
+		'"I never believed my friends that there really is a slut like you out there," he says between thrusts.'
+	elseif $wl_homeless[condom] ! 'yes' and rand(0,1) = 1:
+		'"Good thing that you licked it clean, I didn''t have the chance to wash it in days."'
+	elseif $wl_homeless['counter'] >= 10 and rand(0,1) = 1:
+		'"Please, visit me again, you''re way better than the homeless pussy I normally get."'
+	elseif $wl_homeless['like'] = 1:
+		pcs_mood += 20
+		'"You really are an angel, do you know that? There aren''t many woman who would help us in this way. God bless you." His words conjures up a smile on your lips and makes you feel better about fucking him.'
+	elseif $wl_homeless['like'] = 2 and $wl_homeless['sex'] ! 'forced':
+		gs 'arousal', 'foreplay', -12, 'humiliation', 'prostitution'
+		'"I don''t want to complain, but damn... you really are a fucked up bitch, aren''t you? Selling your hole for a few rubbles to trash like us," he says degrading himself in the process too. "Shut up and fuck me harder," you answer immensely enyoing being treated this way.'
+	else
+		'"I can''t believe this is real," he barely manages to say. "You feel so great."'
+	end
+	if $wl_homeless['like'] = 2:
+		$orgasm_txt = '"Fuck, yes," you scream and throw your head back as your orgasm explodes inside you. Still not understanding why this situation triggers you so much you let go of all doubts and completely give yourself over to him, his dirty cock and this degrading encounter.'
+	else
+		$orgasm_txt = 'When you go over the edge, your whole body begins to shake and your eyes flutter shut as your orgasm takes control of you and drowns out every unpleasant aspect of this encounter.'
+	end
+	gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -12, -3), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 4
+		killvar 'wl_temp'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/pussy_'+rand(0,4)+'.mp4"></video></center>'
+		wl_rand = rand(0,2)
+		if wl_rand = 0:
+			'Minute after minute after minute he continues to pound his cock into your pussy like a madman. It''s as if he wants to burn the sensation into his mind to be able to savor it for a long time.'
+		elseif wl_rand = 1:
+			gs 'arousal', 'kiss', iif($wl_homeless['like'] = 2, -8, -2), 'humiliation', iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+			'He pulls you into a rough kiss and forces his tongue into your mouth without any warning. The taste assaults your senses as his cock forces itself as deep as possible into your cunt.'
+		else
+			'His hands roam over your body touching every inch of it as if he wants to burn how your body feels into this memory. He probably expects he''ll never have a chance to fuck a girl like you again so he tries to make every second count.'
+		end
+		'"Uhh...," he groans and when his movement become a bit more erratic you know that he will shoot his load soon.'
+		gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+		gs 'arousal', 'end'
+		gs 'stat'
+		
+		if $wl_homeless['condom'] = 'no':
+			gs 'willpower', 'cum_inside', 'self', 'easy'
+			if will_cost <= pcs_willpwr:
+				act 'Beg him to pull out (<<will_cost>> Willpower)': 
+					$wl_homeless['creampie'] = 'no'
+					gs 'willpower', 'pay', 'self'
+					if rand(0,2) < 2:
+						gt 'mod_wlife_punishment_sex', 'homeless_solo_end_mouth'
+					else
+						gt 'mod_wlife_punishment_sex', 'homeless_solo_end_pussy'
+					end
+				end
+			else
+				act 'Beg him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Let him do whatever he wants': 
+				$wl_homeless['creampie'] = 'yes'
+				if rand(0,2) < 2:
+					gt 'mod_wlife_punishment_sex', 'homeless_solo_end_pussy'
+				else
+					gt 'mod_wlife_punishment_sex', 'homeless_solo_end_mouth'
+				end
+			end
+		else
+			act 'Let him cum inside the condom': 
+				$wl_homeless['creampie'] = 'condom'
+				if rand(1,100) > 98: $wl_homeless['creampie'] = 'broke' & $wl_homeless['condom'] = 'broke'
+				if rand(0,2) < 2:
+					gt 'mod_wlife_punishment_sex', 'homeless_solo_end_pussy'
+				else
+					gt 'mod_wlife_punishment_sex', 'homeless_solo_end_mouth'
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'homeless_solo_end_pussy':
+	*clr & cla
+	minut += 2
+	if $wl_homeless['creampie'] ! 'condom':
+		gs 'mod_wlife_functions', 'std_check', 'high'
+		gs 'cum_call', 'vaginal', 'a homeless man'
+	end
+	gs 'sweat', 'add', 40
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/end_pussy.mp4"></video></center>'
+	iif($wl_homeless['creampie'] = 'no', '"Please, pull out," you beg him, but he''s already beyond the point of no return. ', '')+'He rams his dick as deep as possible into you and shoots his load into '+iif($wl_homeless['condom'] ! 'yes', 'your womb', 'the condom')+' as his sweaty body collapses on top of you.'+iif($wl_homeless['creampie'] = 'broke', ' Horrified you realize that the condom broke, when you can feel his cum flowing inside your pussy. Fuck, why now? Why with him? You think.', '')	
+	iif($wl_homeless['like'] = 1, 'You let him catch his breath and patiently wait for him to get off you. You don''t want to ruin the moment.', '"Get off me," you say nearly fainting from the horrible assault on your nose when his body is so close to you.')
+	*nl
+	'You are finished with him and have done what you came here to do. Grabbing your clothes as fast as possible you already stumble out of the room before he has a chance to say anything else.'
+	
+	killvar '$orgasm_txt'
+	
+	act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+end
+
+if $ARGS[0] = 'homeless_solo_end_mouth':
+	*clr & cla
+	minut += 2
+	swallow += 1
+	gs 'fame', 'pav', 'prostitute', rand(0,3)
+	gs 'mod_wlife_functions', iif($wl_homeless['condom'] = 'yes', 'std_check_oral', 'std_check'), 'high'
+	gs 'cum_call', 'mouth', 'a homeless man'
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_2/end_mouth.mp4"></video></center>'
+	'"Get on your knees," he wheezes as he gets up on his feet'+iif($wl_homeless['condom'] ! 'yes', '.', ' ripping the condom off.')+' Your whore instincts kick in and you open your mouth without question.'
+	'His hot seed shoots into your mouth and without thinking you swallow his load and take the head of his cock into your mouth to get the remaining drops of cum.'+iif($wl_homeless['condom'] ! 'yes', '', ' That was a mistake and your mind snaps back to reality, when the awful taste of urine, sweat and dried cum assaults your taste buds.')
+	*nl
+	'You are finished with him and have done what you came here to do. Grabbing your clothes as fast as possible you already stumble out of the room before he has a chance to say anything else.'
+	
+	if wl_kiss_temp = 1: killvar 'wl_kiss_temp'
+	killvar '$orgasm_txt'
+	
+	act 'Leave': gt 'mod_wlife_warehouse', 'homeless_outside'
+end
+
+!!------ Homeless: Regular/Threesome ------
+
+if $ARGS[0] = 'homeless_threesome':
+	if rand(0,1) = 0:
+		$wl_rand = 'hj'
+	else
+		$wl_rand = 'bj'
+	end
+	gs 'npcgeneratec', 0, 'a homeless man', rand(18,39)
+	gs 'boyStat', $npclastgenerated
+	gt 'mod_wlife_punishment_sex', 'homeless_threesome_start'
+end
+
+if $ARGS[0] = 'homeless_threesome_start':
+	*clr & cla
+	minut += 4
+	gs 'arousal', '<<$wl_rand>>', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/<<$wl_rand>>'+iif($wl_rand = 'bj', '_<<rand(0,1)>>', '')+'.mp4"></video></center>'
+	if wl_homeless['status'] < 4: 
+		'They made themselves a home in the cellar. A little stockpile of food and booze sits on an old rack, two piles of clothes lie next to two stained mattresses, but there is also the explanation why they don''t smell as bad as the other guys. An old but functioning sink hangs on the wall. "It''s not much, but it''s warm and dry," one of the guys beams at you.'
+		'"Yeah it''s... ." Dirty? Sad? Horrible? Disgusting? Pitiful? "... nice," you say after giving it some thought and try to purge all emotions from your expressions.'
+		'"Thanks," the other guy replies not understanding that you didn''t mean it. He flashes you a grin that could have been descried as ''toothy'' if he still had all his teeth.'
+	end
+	'"And how are we going to...," one of the guys makes an open gesture with his hands that encompasses all of you and the room. "Sit down," you answer and point at one of the mattresses.' 
+	*nl
+	iif($wl_homeless['condom'] = 'yes', 'You hand both of them a condom and they put them on their already rock-hard cocks without complaint. ', '')+'Sitting down between them you close your '+iif($wl_rand = 'hj', 'hands', 'lips')+' around '+iif($wl_rand = 'hj', 'their', 'one of the')+' cocks and start to '+iif($wl_rand = 'hj', 'softly suck on his dick, but quickly switch to the other guy to give each of them the same attention.', 'slowly stroke their dicks.')
+	'"You''re ready," you declare after a few minutes and ...'
+	
+	$wl_orgasm_temp = 'his cock keeps'
+	$orgasm_txt = 'Your mind goes blank for a moment as <<$wl_orgasm_temp>> going in and out of your quivering pussy, making your orgasm grow stronger with every thrust. You can''t tell if it took seconds, minutes or hours for it to end.<br>'
+	
+	if rand(0,1) = 0 or wl_homeless['status'] < 4: 
+		act '... get on top of one of them': gt 'mod_wlife_punishment_sex', 'homeless_threesome_dp'
+	else
+		act '... get on all fours': gt 'mod_wlife_punishment_sex', 'homeless_threesome_pbj'
+	end
+end
+
+if $ARGS[0] = 'homeless_threesome_dp':
+	*clr & cla
+	minut += 4
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/pbj_2.mp4"></video></center>'
+	'The next moments go by in a blur. Hands are everywhere taking of tops, unbuckling belts, taking of shoes, pants or socks. Before you know it you''re on top one of the hobos and his cock is moving up inside you. '+iif($wl_homeless['like'] = 2, '"Fuck yes," you shout as your eager hole is finally filled.', iif($wl_homeless['like'] = 1, 'Your lips curve upwards showing an honest smile as he fills your inviting hole. You could be the first woman he fucks in years or even decades and it feels beyond great to help him in this way.', 'Hopefully they finish quickly and you can leave this horrible place.'))
+	*nl
+	gs 'arousal', 'bj', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'stat'
+	'"Don''t keep me hanging," the other guy complains and steps next to you. You awkwardly manage to move his cock into your mouth, but it''s hard to coordinate your sucking with the movement of your body. After a few tries the man steps back. "That sucks," he complains, pun probably not intended. "Your cunt looks like it has room for one more," he adds looking hungrily at your pussy. He grabs your legs and positions his cock right above his friends cock. He''s about to shove it in there as well.'
+	
+	gs 'willpower', 'group', 'resist', iif($wl_homeless['like'] ! 0, 'hard', 'easy')
+	if will_cost <= pcs_willpwr:
+		act 'Protest (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 1 
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'"Stop, no," you shout and move one of your hands protectively between your pussy and his cock. "You are not going to push two cocks into me," you protest loudly.'
+			'"Come on, you can''t suck and fuck like this at the same time," the hobo protests and sends you a pleading look. "No," you say and shake your head. "I''ll put more effort into it and you guys can switch positions," you say staying adamant.'
+			'"Fine," he sighs and moves back to your mouth.'
+			
+			act 'Do your best':
+				*clr & cla
+				minut += 6
+				gs 'sweat', 30
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/pbj_3.mp4"></video></center>'
+				'After a few more awkward tries all three of you finally find a rhythm and you manage to give both guys a good time. You focus an keeping your head steady and instead of bobbing your head up and down his cock you mainly let your tongue dance around the senses head.'
+				*nl				
+				gs 'arousal', 'bj', iif($wl_homeless['like'] = 2, -12, -3), 'deepthroat', iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+				gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -12, -3), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+				gs 'stat'
+				'"I''m close the one with his '+iif($wl_homeless['condom'] = 'yes', 'condom covered', 'smelly')+' cock down your throat tells you and judging by the rapid breathing of the other one he''s close as well.' 
+				
+				act 'Take their loads': gt 'mod_wlife_punishment_sex', 'homeless_threesome_pbj_end'
+			end
+		end
+	end
+	
+	act 'Let him do it':
+		*clr & cla
+		minut += 2
+		$dick_girth = 'monstrous'
+		$wl_orgasm_temp = 'both cocks keep'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/dp_start.mp4"></video></center>'
+		'"Damn," you groan mentally preparing yourself for what is about to happen as the second cock positions himself above the one already inside your pussy. "I can stop if you want?" he asks, but you shake your head. "No, it''s fine," you reply, but he seems unsure. "Are you sure, I can..."'
+		'"She said it''s fine, do it already," the other hobo interjects annoyed with your back and forth. "Stop your yammering and let''s get back to the fucking part." You lock eyes with the one looking down on you and nod once to make sure that he knows it''s something you '+iif($wl_homeless['like'] ! 2, 'are fine with.', 'really want.') 
+		
+		gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -4, -1), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 8
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/dp_1.mp4"></video></center>'
+			'"Oh my god," you''re barely able to articulate those three little words, when the two cocks find a rhythm and bang you hard. '+iif(wl_homeless['status'] < 4, 'Never', 'Rarely')+' have you been filled and stretched like this before. It feels like they are pushing with their dicks every thought out of your mind. Was there something about being forced to prostitute yourself, fucking hobos,'+iif($wl_piss_whore = 'yes', ' getting pissed on, ', ' ')+'and getting ravaged by strangers every week? You can''t remember. Blissfully unaware of what your life has become there is only the feeling of two cocks inside you.'
+			*nl					
+			gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -16, -4), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+			gs 'stat'
+			
+			act 'Continue':
+				*clr & cla
+				minut += 4
+				if rand(1,100) > 98: 
+					wl_condom_temp += 1
+					$wl_homeless['condom'] = 'broke'
+				end
+				
+				if rand(1,100) > 98: 
+					wl_condom_temp += 1
+					$wl_homeless['condom'] = 'broke'
+				end				
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/dp_0.mp4"></video></center>'
+				
+				if $wl_homeless['condom'] ! 'yes':
+					gs 'mod_wlife_functions', 'std_check', 'high'
+					gs 'cum_call', 'vaginal', 'a homeless man'
+					if wl_broke_temp = 2 or $wl_homeless['condom'] = 'forgot' or $wl_homeless['condom'] = 'no':
+						gs 'npcgeneratec', 0, 'a homeless man', rand(18,39)
+						gs 'boyStat', $npclastgenerated
+						gs 'mod_wlife_functions', 'std_check', 'high'
+						gs 'cum_call', 'vaginal', 'a homeless man'
+					end
+				end
+				gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+				gs 'stat'
+				'The two cocks inside your pussy feel to good'+iif(pain['vaginal'] > 0, ', even if your pussy hurts, ', ' ')+'for you to be able recognize the signs of their impending cumshots. '+iif($wl_homeless['condom'] = 'yes', 'Thankfully you insisted on condoms and their cum goes straight into the protective rubber.', 'You feel the cum erupting against your cervix, but it doesn''t really register in your mind right now.') 
+				'After they have pulled out all three of you lie on the mattress the cum seeping out of '+iif($wl_homeless['condom'] = 'yes', 'the carelessly discarded condoms', 'your pussy')+' staining the mattress even more.'
+				if $wl_homeless['condom'] = 'broke':
+					'"Shit," you murmur and touch the wetness between your legs. That''s definitely not only your juices. Did one of the condoms break or did they take them off?'+iif(wl_broke_temp < 2, ' Judging by the amount of sperm flowing out of your cunt both must have broken. Is that even possible? ', ' ')+'"Shit, shit, shit," you whisper and wipe your cum stained fingers on the mattress.'
+					'"Something wrong?" one of them asked propping himself up on one hand. "Did you take the condoms off?" you ask, but he don''t have to say anything, the expression on his face says it all. He didn''t do it. "No, I wouldn''t do that," he says and after a quick search he shows you the broken condom.'+iif(wl_broke_temp = 2, ' "Mine broke as well," the other guy says and presents his equally ruptured condom. ', ' ')+'"Great," you sigh, "just great."'
+					*nl
+				end
+				'The guys make no move to stop you or say anything, when you gather your clothes and quickly get dressed.'
+				
+				act 'Leave': gt 'mod_wlife_punishment_sex', 'homeless_threesome_end'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'homeless_threesome_pbj':
+	*clr & cla
+	minut += 4
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/pbj_0.mp4"></video></center>'
+	'The second you are on your hands and knees you feel their hands on your ass and crotch tugging away your clothes as you engulf the other guys cock with your lips again. "Lift your knees," the guy behinds you commands and you obediently lift one and then the other so that he can take your clothes of.'
+	'You let the cock slip out of your mouth as the men drives his '+iif($wl_homeless['condom'] = 'yes', 'condom covered', 'dirty')+' cock into you. '+iif($wl_homeless['like'] = 2, '"Fuck yes," you shout as your eager hole is finally filled.', iif($wl_homeless['like'] = 1, 'Your lips curve upwards showing an honest smile as he fills your inviting hole. You could be the first woman he fucks in years or even decades and it feels beyond great to help him in this way.', 'Hopefully they finish quickly and you can leave this horrible place.'))
+	*nl
+	
+	gs 'arousal', 'bj', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')	
+	gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+	gs 'stat'
+	
+	act 'Let them have you':
+		*clr & cla
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/pbj_1.mp4"></video></center>'
+		'You switch back and forth between going down on all fours or riding one like a cowgirl and always manage to keep the other one entertained with your mouth. "Would you have believed that we would fuck a girl like her?" the man who''s cock is in your mouth says. '+iif($wl_homeless['condom'] = 'yes', 'You don''t have to taste it thanks to the condom.', 'It tastes like a disgusting mix of'+iif($wl_piss_whore ! 'blocked', ' piss, ', ' ')+'old cum and sweat which'+iif($wl_homeless['like'] = 2, ' turns you on like crazy, but at the same time', ' ')+'is making your stomach turn.')+' "Fuck no'+iif($wl_homeless['condom'] = 'yes', ', especially not without a condom, nothing feels greater than bare pussy', '')+'," the other one answers.'
+		*nl
+		gs 'arousal', 'bj', iif($wl_homeless['like'] = 2, -8, -2), 'deepthroat', iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')	
+		gs 'arousal', 'vaginal', iif($wl_homeless['like'] = 2, -8, -2), iif($wl_homeless['like'] = 1, '', 'humiliation'), iif($wl_homeless['sex'] ! 'forced' and $wl_homeless['like'] = 2, 'prostitution', '')
+		gs 'stat'
+		'Suddenly the one fucking your head grabs it and forces his cock deeper down your throat. "I''m cuming," he groans and only a few seconds later the other guy says the same.'   
+		
+		act 'Take their loads': gt 'mod_wlife_punishment_sex', 'homeless_threesome_pbj_end'
+	end
+end
+
+if $ARGS[0] = 'homeless_threesome_pbj_end':
+	*clr & cla
+	minut += 6
+	swallow += 1
+	facial += 1
+	gs 'sweat', 'add', 30
+	gs 'fame', 'pav', 'prostitute', rand(0,4)
+	if $wl_homeless['condom'] ! 'yes':
+		gs 'mod_wlife_functions', 'std_check', 'high'
+		gs 'mod_wlife_functions', 'std_check_oral', 'high'
+		gs 'cum_call', 'mouth', 'a homeless man'
+	end
+	gs 'cum_call', 'face', 'a homeless man'
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/homeless/set_3/end.mp4"></video></center>'
+	'The hobo''s iron grip makes it impossible for you to move your head and you have to wait until he finishes shooting his cum into '+iif($wl_homeless['condom'] = 'yes', 'the condom', 'your mouth')+', at the same time you feel the other one pulling his cock out of your'+iif($wl_homeless['condom'] = 'yes', ' ', ' unprotected ')+'pussy. "Move away," he hisses to the other hobo, but it''s to late. He was barely able to pull out before the cum of the other one sprays onto your face. '+iif($wl_homeless['condom'] = 'yes', 'He must have taken the condom off and you can only hope that he did it at the end and didn''t fuck your pussy bareback.', '')
+	*nl
+	if wl_homeless['status'] < 4 or rand(0,2) = 2:
+		'If the mattress wasn''t already ruined, it would be now by three sweaty and dirty bodies. Normally you quickly leave after the deed is done, but having been fucked by two cocks at the same time was exhausting and you take a moment to catch your breath. "Did somebody ever tell you what a great bitch you are?" the hobo to your left asks while your head rests on the outstretched arm of the other one. '+iif(rand(0,1) = 0, '"Don''t talk to her like that," the other one interjects', '"Yeah, the greatest bitch in the city," the other one agrees')+' while his free hand roams over your body, exploring every inch of it, he didn''t already touch. When his hand moves between your legs you know what is going to happen again if you don''t stop it now. "Sorry guys, not again, maybe another day," you say and get up.'
+		*nl
+	end
+	'The guys make no move to stop you or say anything, when you gather your clothes and quickly get dressed.'
+	
+	act 'Clean your face at the sink and leave': wl_temp = 1 & gt 'mod_wlife_punishment_sex', 'homeless_threesome_end'
+end
+	
+if $ARGS[0] = 'homeless_threesome_end':
+	if wl_temp = 1:
+		cumspclnt = 13
+		gs 'cum_cleanup'
+	end
+	gs 'arousal', 'end'
+	killvar 'wl_broke_temp'
+	killvar 'wl_temp'
+	killvar '$wl_rand'
+	killvar '$orgasm_txt'
+	killvar '$wl_orgasm_temp'
+	$wl_homeless['counter'] += 2
+	if wl_homeless['status'] < 4: wl_homeless['status'] = 4
+	gt 'mod_wlife_warehouse', 'homeless_outside'
+end	
+
+--- mod_wlife_punishment_sex ---------------------------------
+

+ 324 - 0
locations/mod_wlife_readme.qsrc

@@ -0,0 +1,324 @@
+# mod_wlife_readme
+
+*clr & cla
+'<b>Version 0.34: (Savegames made in 0.3 - 0.332 are compatible)</b>'
+'[added] Content for Iosif'
+'- Added an anal alternative to the vaginal sex scene with him at the warehouse'
+'- Expanded Iosif pissing content with several scenes at the warehouse'
+*nl
+'[added] Debt & Payments'
+'- You''ll have to pay interest on your debt every week (5% - 15% depending on your loyalty)'
+'- You will have to earn at least 10,000 every week for Georgiy, when you''re still in the 3-shift per week payment system. If you earn less, the rest will be added to your debt.'
+'- Georgiy will demand more money (2,500), when he discovers that you''re a model and/or porn actress. This only happens in the lump sum payment system.'
+'- Debt punishment changed to happen only once every two weeks to give you the chance to pay down your debt. Georgiy will also take all of your money to reduce your debt, when he punishes you for having to much debt'
+*nl
+'[added] Gas station'
+'- Volya will demand that you wear makeup and will force you to buy some, when you don''t have any.'
+'- If you use willpower to change a clients mind at the gas station, he will pay 10% less for every time you use willpower. If the negotiation is successful, you can spend willpower to convince him to give you the full amount, but there is a small chance that the negotiation will fail.'
+'- If you spend willpower to convince your client (condom, creampie, pay) and fail, you get a second chance to accept'
+'- 2/3 of all clients will pay a bit more if your visible age is below 18 and 1/3 will pay less'
+*nl
+'[added] Content for the Mother'
+'- She can now catch you outside, when you''re entering the courtyard (3-shift payment system only)'
+'- High prostitution fame and working the streets in pavlovsk results in your mother banning you from the apartment'
+'- Added a cheat to gain access to your parents apartment again, when your mother has thrown you out'
+*nl
+'[added] Alternative home: Pavlovsk hotel'
+'- Available after your mother bans you from the apartment'
+'- Live in the pavlovsk hotel, which is owned by the Belys'
+'- Pay 3,500 per week or have your debt increased'
+'- Will be the center of future content as a place where people can visit you and where you can take clients'
+*nl
+'[added] School'
+'- Loose reputation for all social groups and gain slut fame in pavlovsk, when you shower at school with your pubic tattoo'
+*nl
+'<b>Version 0.332: (Savegames made in 0.3 - 0.331 are compatible)</b>'
+'[added] Content for the gas station'
+'- Added an alternative automatic negotiation mode after having more than 10 clients'
+'- Set behavior for normal and regular clients'
+'- Set automatically accept/decline certain acts, condom use, internal cumshots'
+'- Willpower will be automatically spend if needed'
+*nl
+'[added] Clinic/Doctor Mikhailov'
+'- Added getting birth control shots or implants from Doctor Mikhailov (pay cash or increase your debt)'
+'- Added Doctor Mikhailov to the investigation tab in the phone'
+*nl
+'[added] Phone'
+'- Debug page for the most important variables (probably missed a lot and will be expanded in the next version)'
+'- Fetishes can now be blocked in the phone'
+*nl
+'[changed] Debt punishment'
+'- The amount of debt you can have before getting punished is now modified by your loyalty (100,000 + loyalty * 500)'
+'- The bad end for having to much debt also depends on your loyalty [(100,000 + loyalty * 500) * 2]'
+*nl
+'[fixes] Several small and larger bugs squashed'
+*nl
+'[text edit] By EmperorsTitan'
+*nl
+'<b>Version 0.331: (Savegames made in 0.3 - 0.33 are compatible)</b>'
+'[fixed] Problem with Sacha and old saves that blocks the new content in pavlovsk'
+*nl
+'<b>Version 0.33: (Savegames made in 0.3 - 0.323 are compatible)</b>'
+'[added] Prison written by Akossi'
+'- Go to prison (but not in the way you think)'
+'- First day added, several more are planned'
+'- Requirement: Have worked several weeks'
+*nl
+'[added] Content for Shura and Sacha'
+'- Go to a party with Shura and Sacha (Requirement: Sucked off Sacha and progressed far enough in the Shura story)'
+'- Discussion with Sacha about what happened at the party'
+'- Shura will comment on the new tattoo after you fucked him outside of the warehouse'
+'- You can now find Shura/Drugs in the investigation tab on the phone'
+*nl
+'[added] Prostitution in Pavlovsk'
+'- Starts after the party with Sacha and Shura'
+'- 6 sets of videos, 10 scenes in total, nearly every scene has two types of descriptions for a nice and a more abusive client'
+'- Blowjobs and vaginal sex scenes, some play out in public'
+'- Start video is randomized (except for regular clients) to hide what scene will play afterwards'
+'- Abusive clients come with higher willpower cost'
+'- Abusive clients will sometimes take off condoms to cum inside you or ignore you, when you tell them to cum outside'
+'- Cumslut tattoo doubles the chance that some abusive clients cum inside you against your will'
+'- Condoms have a very small chance to break'
+'- If unlocked the events will continue even if the Belys are blocked either through the investigation or the cheat'
+'- Visible signs of an STD or visible cum on body/clothes prevent that clients approach you in pavlovsk'
+'- Action to tell a non-regular client in Pavlovsk that you aren''t a whore to reduce prostitution fame'
+*nl
+'When, where and how...'
+'- Only during the day'
+'- Residential, commercial, industrial, warehouse, park, community center, train station, parent apartment complex, old town'
+'- Number of possible clients per day: 2 + (prostitution fame in pavlovsk / 100)'
+'- Chance to find a client: 5% + 10% for prostitute outfit + 5% for slutty make-up + 0.1% * prostitute fame in pavlovsk'
+'- Every time you don''t find a client the chance to find one is increased by 2% until you find one'
+'- Chance is capped at 40%'
+'- Only one check to find a client per hour'
+*nl
+'Note on the willpower cost:'
+'Compared to the gas station willpower changes in the opposite way. At the gas station high acceptance means it get''s easier to look for clients. Here high acceptance means it get''s harder and harder to refuse clients.'
+*nl
+'[added] New check-in with Georgiy'
+'- Requirement (1): All important car scenes with Volya (Okoro Brothers + Prison)'
+'- Requirement (2): (1,000 / prostitution fame in pavlovsk) smaller Number of clients in Pavlovsk'
+'- Pay a lump sum instead of weekly shifts'
+'- Amount you have to pay depends on the last weekly earning'
+'- Cheat to change the amount you have to pay (between 2.500 and infinity)'
+'- Not paying lowers loyalty and adds the amount you didn''t pay to your debt with interest'
+'- Paying less than 50% or owing more than 100.000 triggers community service'
+'- Owing more than 200.000 to the Belys triggers a bad end'
+'- You have to go to the gas station on your own if you want to work there (bus station at the St. Petersburg trains station)'
+*nl
+'[added] Looking for customers in Pavlovsk'
+'- Requirement: Georgiy has changed your payment method'
+'- Icon appears during the day next to the phone, when you are dressed as a prostitute (outfit + heels) and are in one of the areas in which clients can approach you. Click on it to start searching for customers.'
+'- Actively looking for customers costs willpower'
+'- Bonus chance of 10%'
+'- Maximum chance increased from 40% to 60%'
+*nl
+'[changed] Small stuff'
+'- The change in acceptance for doing a shift at the gas station now depends on how much you have earned'
+'- Increased the chance for your mother to see you leaving for work'
+*nl
+'[text edit] more from EmperorsTitan'
+*nl
+'<b>Version 0.323: (Savegames made in 0.3 - 0.322 are compatible)</b>'
+'[compatibility] You now can call Henri from the modded bedroom of BroMod'
+*nl
+'<b>Version 0.322: (Savegames made in 0.3 - 0.321 are compatible)</b>'
+'[compatibility] The ''thoughts''-scenes in bed now appear in the modded bed of BroMod'
+*nl
+'<b>Version 0.321: (Savegames made in 0.3 - 0.32 are compatible)</b>'
+'[text edit] for the clinic by EmperorsTitan'
+'[fixed] NPCs weren''t set up correctly (Sveta now should be able to lose her virginity)'
+*nl
+'<b>Version 0.32: (Savegames made in 0.3 - 0.311 are compatible)</b>'
+'[added] Content for Iosif'
+'- Iosif will take 2 (1 if you have blocked the pissing scene) humiliating pictures with your phone to expand your collection'
+'- If he finds the first degrading picture on your phone (from the start of the mod), he will at some point take you to St. Petersburg to get inked again (pubic area needs to be free of tats)'
+'- He will send you a picture as a memento from the party'
+*nl
+'[added] Content for Mom'
+'- There is a chance that your mother catches you, when you try to leave the apartment to go to work'
+*nl
+'[added] Content for Maxim/End of the Bely''s'
+'- Added repeatable event for him. He''ll call you, when he wants to meet.'
+'- Increase his love for you to earn the first investigation point'
+'- For now the first investigation point is enough to get away from the Bely''s (works exactly like the cheat below)'
+*nl
+'[added] Cheat to block all content except the gas station'
+'- It works like a pause button and the normal mod can be restored from the stat window at any time'
+'- The homeless will still be accessible if unlocked'
+'- You can still visit the gas station by traveling to the train station in the industrial area of St. Petersburg. You can take a bus outside the station that will take you to there.'
+*nl
+'[added/changed] Small stuff'
+'- Investigation overview in the phone'
+'- Attending the party reduces the number of shifts you have to work that week by 1'
+'- If you activate auto lubrication in the purse, lube will be used at the highway (anal and/or vaginal)'
+'- You have to pay for your brand/tattoo'
+'- Increased the price for the fake passport by 10,000 to 18,000 since there is a new way to pay down debt'
+*nl
+'[text edits] several by EmperorsTitan'
+*nl
+'<b>Version 0.311: (Savegames from 0.3 - 0.31 are compatible)</b>'
+'[compatibility] The newspaper should now appear in the modded kitchen of BroMod'
+*nl
+'<b>Version 0.31: (Savegames from 0.3 are compatible)</b>'
+'[added] Content for the party'
+'- Second party at Vadim''s house. You need to have progressed far enough in the Iosif storyline that he calls you regularly (1 sex scene)'
+'- After the second party you get invited to a shorter repeatable version of the second party (the timer between partys is long)'
+'- If you miss the first party, you now get a second chance to go'
+*nl
+'[added] Repeatable prostitution event in the warehouse (1 sex scene)'
+*nl
+'[added] Small stuff'
+'- Talking about Iosif fucking Sveta again'
+'- You can visit Shura every tuesday in addition to sunday after meeting him twice on sunday (the progression of the shura and iosif storyline was too slow imho)'
+'- Thinking about getting weed from Sacha through other means'
+'- Talking with Volya about him using her in the attic scene'
+'- Volya hands you some lube with your whore starter-kit (but it''s not usable yet, because Kevin is changing the lube system right now)'
+*nl
+'<b>Version 0.3: (Savegames are not compatible)</b>'
+'[added] Content for the warehouse (All new events unlock at different stages of the mod)'
+'- One repeatable prostitution event (1 sex scene)'
+'- Pay your debts in an alternative fashion (1 sex scene with one big and several smaller variations)'
+'- Borrow money from Georgiy, interest (5% - 100%) and maximum amount (500 - 20.000) depend on your loyalty and how long you have worked for him (3 small sex scenes)'
+'- Meet Maxim a guy working for the Bely''s (1 sex scene)'
+'- Introduction to Nikita the last unknown guy that appeared in the attic scene of the police aftermath'
+'[added] Content for the Okoro brothers'
+'- Ability to call and chat with Henri'
+'- Meet Lèon at the pavlovsk hotel (1 sex scene)'
+'[added] Content for the drug dealing side of the Belys business'
+'- Talking with Shura unlocks a weed dealer in the pavlovsk park'
+'- Visit the dealer in the park (after 22:00) to ''buy'' some weed (1 sex scene)'
+'- Smoke weed in Volyas car in the evening (requirement: know about the weed dealer)'
+'- Smoking weed with Shura, Volya or at the gas station slowly increases the acceptance stat'
+'[added] Content for Volya (4 small scenes in the car)'
+'- Talking about your situation'
+'- Asking about Nikita'
+'- You can now change thee address where Volya picks you up/drops you off in the phone (Pavlovsk, St. Petersburg, Gadukino or Old Town)'
+'[changed] reworked the start of the mod to make it (hopefully) a little bit more threatening'
+'[added] Wearing a short enough skirt and panties (sexshop only) grants a small increase to your payment and chance to find clients at the gas station'
+*nl
+'<b>Version 0.25:</b>'
+'[added] new sex act to the highway (can be blocked if that isn''t something you want to see)'
+'- 7 small scenes + 2 scenes in bed in which sveta thinks about what happened in those scenes'
+'- Can occurs at the end of a blowjob, vaginal or anal scene with a normal (not a regular) client'
+'- The chance of it happening is 10% + 2% for every client that didn''t ask for it'
+*nl
+'<b>Version 0.241:</b>'
+'[fixed] Several bugs (including volyas missing apartment if you didn''t lose your virginity to him) and potential problems (thanks slanon)'
+'[text edits] Corrected a lot of stuff in the last ''community service'' event and small stuff here and there'
+*nl
+'<b>Version 0.24:</b>'
+'[added] An event after meeting the french brothers that sheds a bit of light on Georgiy and Vadim'
+'[added] You can incur debts'
+'- You can pay debts, when you check in with Georgiy on Sunday'
+'- Your share of your income is reduced by 20 percentage to pay down your debts'
+'[added] Bi-weekly medical examination'
+'- Treatment of STDs and provides abortion services'
+'- If you can''t pay, you get into debt with the Bely''s'
+'- Missing your medical exam can lead to community service'
+'- Bed/Thought event about the clinic'
+'[added] Repeatable ''community service'' event with two small variations'
+'[added] Event to ''help'' you to earn more money at the gas station'
+'[added] New Icons'
+'- Wearing suitable outfit for prostitution'
+'- Owing money to the Bely''s'
+'- Having to go to the medical exam'
+'[changed] Updated the introduction'
+'- Improved the ui, when getting your first outfit/heels'
+'- You have to pay for your first outfit. If you can''t pay, you incur debts with the Bely''s'
+'[changed] Prostitution at the gas station'
+'- A shift now ends, when you don''t have enough willpower to look for a client'
+'- Added the possibility to the phone to end a shift early'
+'- Added a pity counter to prevent finding no client for a long time'
+'- Increased base pay at the gas station a bit'
+'- Tongue piercing now always increases payout a little bit for blowjobs (bonus varies by piercing)'
+'- Removed free condoms from Volya (there is a condom dispenser next to the public bathrooms at the gas station)'
+'- Failing to earn enough money can lead to community service'
+'[changed] You have to pay for your fake passport (not the full amount)'
+'[changed] Georgiy will inform you why you get punished'
+'[changed] The cheat ''number of forced shifts'' doesn''t delay or rush the progression of the mod anymore'
+*nl
+'<b>Version 0.23:</b>'
+'[changed] Reworked the progression in the ''community service'' events.'
+'- Reworked two old scenes after the first ''community service'' and additional scenes that aren''t triggered through getting punished, but happen after some time'
+'- Added more decisions to collect ''bad girl'' and ''good girl'' points after the first ''community service'' '
+'- Added a few ''bad girl'' and ''good girl'' points to old decisions'
+'- Old saves get the points they missed rewarded retroactively, when they load the new version.'
+'- The ''community service'' quest gets reseted in old saves to the point right after doing your first ''community service'' '
+'- After you have taken all decisions you get one of three outcomes that decides how you will react to doing more ''community service'' '
+'[changed] Redone the phone icons (thanks akossi)'
+'[fixed] Georgiy can''t be ignored anymore, when you never start working'
+'[fixed] Getting punished all the time'
+'[fixed] The correct phone icon will be displayed if the game is set to the ''pitch black'' or ''white'' theme'
+*nl
+'<b>Version 0.22:</b>'
+'[added] Punishment System'
+'- Get punished for skipping work, ignoring Iosif, low loyalty, missing important events, ...'
+'- First type of punishment ''community service'' with an introduction, a one-time event and one repeatable event (at least one more will follow in the next version)'
+'[added] new repeatable event with Volya that can either happen on its own or as an extension of another repeatable event (there are two sets of pictures each with a random chance for a small unique ending to the scene)'
+'[changed] replaced the link in the stat window to open the phone with two icons and added a small explanation how the new phone icons work at the end of the first phone call with Volya'
+'[changed] You can only increase your share of your earnings to 40% (down from a maximum of 60%)'
+*nl
+'<b>Version 0.21:</b>'
+'[added] One new big event after the current end of the main story.'
+'[added] Small event at the warehouse that gives a bit of background of what the gang is doing and how the guys think about you'
+'[added] A requirement to wear heels when working a shift. You can choose your first pair when you choose your first outfit or get a random one if you load an old save. You can check your phone if you''re unsure if your high heels match the requirement (A hooker without heels is an atrocity that had to be fixed)'
+'[added] Cheat to the phone to set the number of shifts you are forced to work (between 1 and 6)'
+'[added] Cheat to the phone to change the first name of the fake passport'
+'[changed] Forced the second outcome of Iosif''s repeatable event to appear the second time he calls you'
+'[fixed] Orgasms displaying standard text instead of custom ones in many scenes'
+'[fixed/text edit] Small stuff (A special thanks goes to Deroc for proofreading part of the mod)'
+*nl
+'<b>Version 0.2:</b>'
+'[added] New events with Shura and Iosif two of Georgiy Bely''s lieutenants, you can meet Shura outside the warehouse on Sunday'
+'[added] Expanded Volyas content in the car'
+'[added] All three characters have one or two repeatable sex events at the current end of their content'
+'[added] One event for the main story after the event in the attic'
+'[added] Hidden ''Acceptance'' stat that tracks how comfortable you have become with your new line of work'
+'- Working a shift at the gas station increases acceptance'
+'- Several small events in which you thinks about your situation to increase/decrease acceptance' 
+'- Dialog choices in old and new events can change acceptance as well'
+'[added] Integrated the new willpower system'
+'- Whoring at the gas station costs a lot of willpower at the beginning'
+'- The cost goes down with every client you serve and with higher acceptance'
+'- Willpower costs for working additional shifts is a lot higher than for shifts you are forced to do. This allows for a more realistic transition from a good girl to a total whore'
+'[added] Cum cleanup at the end of the shift if Volya arrives in an inconvenient time'
+'[added] You can smoke a joint behind the outdoor restroom at the gas station'
+'[changed] Whoring yourself out at the gas station now has a negative/positive effect on her mood. The size of the effect depends on your acceptance of the situation and if you''re serving a normal or regular client'
+'[changed] A happy/depressed Sveta can earn up to +50/-50 (Blowjob: +25/-25) more/less when working at the gas station'
+'[changed] Cut working hours from 16:00 - 23:00 to 17:00 - 22:30 to allow more after school content like doing homework with somebody'
+'[changed] Renamed Tolya to Nikita (it was to similar to Volya)'
+'[fixed/changed] Small fixes and changes everywhere'
+*nl
+'<b>Version 0.12:</b>'
+'[changed] reduced the chance by 50% to meet a client that cums inside you even if he didn''t pay for that'
+'[changed] increased the average amount you have to earn to be a good whore in Georgiys eyes'
+'[changed] reduced fame gains by an additional 33%'
+'[changed] the volume of the sound of the cars at the gas station now changes if you are inside the shop, car or restroom and I reduced the volume in all locations'
+'[fixed] Two problems with regular clients that made it nearly impossible to meet them'
+'[fixed] not kissing/kissing a regular client displayed the wrong video'
+'[fixed] missing sex stat gains at the gas station'
+'[fixed] wrong text displayed when getting a creampie at the gas station'
+'[fixed] broken video in the image/video pack'
+'[text edits] small corrections everywhere'
+*nl
+'<b>Version 0.11:</b>'
+'[added] two new story events, the first one starts randomly after you have worked for some time at the gas station and the second follows afterwards'
+'[added] You can now start the mod manually during the day. A link appears at the bottom of the stat window when you are in one of pavlovsks streets and don''t want to wait for the random event to trigger.'
+'[changed] you can now lose your virginity to Volya even if you already have worked at the gas station but haven''t lost your (anal) virginity. Also, added a note that informs you if there isn''t any additional content'
+'[changed] balanced/lowered gaining fame at the gas station'
+'[changed] Volya gives you some tissues (20) during your first day at work'
+'[fixed] Dead end when you try to buy wipes'
+'[fixed] Dead end when working for several weeks at the highway'
+'[fixed] Missing performance description in the phone menu'
+'[fixed] Owning all prostitution outfits doesn''t crash the game anymore during the start event'
+'[fixed] never getting a raise from Georgiy'
+'[fixed] driving home with Volya took no time after the first day'
+'[fixed] Wrong variable that resulted in text being blocked or the wrong text to be displayed at the gas station if a client cums inside even if that was prohibited'
+*nl
+'<b>Version 0.1:</b>'
+'[added] Meeting the gang, introduction to the new job and repeatable prostitution events'
+
+act 'Return': gt 'mod_setting'
+
+--- mod_wlife_readme ---------------------------------

+ 298 - 0
locations/mod_wlife_sacha.qsrc

@@ -0,0 +1,298 @@
+# mod_wlife_sacha
+
+if $ARGS[0] = 'park':
+	*clr & cla
+	menu_off = 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha_park.jpg"></center>'
+	if wl_sacha['temp'] = 1:
+		wl_sacha['temp'] = 0
+		'Sacha is waiting for you to buy some weed or do something else.'
+	elseif wl_drugs['status'] = 1:
+		minut += 6
+		wl_sacha['status'] = 1
+		wl_drugs['status'] = 2
+		'A young man is sitting near on of the park exit keeping a close look at his surrounding. You can''t see his face below the hoodie, but you have a feeling this the guy Shura told you about. "Hi," you greet him, when you''re only a few meters away. He doesn''t respond. "Shura send me if I never need... you know... stuff."'
+		'He lifts his head a bit and the light of a nearby street light illuminates his face. "Shit...," you know him. Not from the warehouse, but from your old life. "Sacha?" you say hopeful that you''re mistaken, but when he pulls his hoodie back, you''re sure. It''s really him. He went to your class until last year. He was one of the bad students and it was only a matter of time until he would fail and had to quit school, but he was always one of the nice guys like Fedor or Ivan.'
+		'"Yeah... Hi <<$pcs_nickname>>," he greets you as surprised as you. "How long has it been? A year?"'
+		'You nod. "I didn''t know you still lived in Pavlovsk. The last thing I heard, was that you started an apprenticeship in St. Petersburg."'
+		'A sad expression flickers over his face before he replies. "That didn''t work out. They went bankrupt when the economy tanked."'
+		'"Sorry to hear that and now you sell drugs for the Belys?"'
+		'He looks surprised for a moment when you say the name. "How do you know... wait... fuck. Don''t tell me you too? Do you work for them?"'
+		'A wave of dread washes over you, but you can''t lie to him. He will find out sooner or later anyway, when he''s working for Shura. You only nod and his eyes widen in surprise, shock, horror or something similar. "I...," you hesitate. "So... do you have what I need? I only want to buy some weed," you pivot.'
+		'"Uhm ... sure <<$pcs_nickname>>," he sends you one long knowing look before asking. "How much do you need?"'
+	elseif wl_drugs['status'] = 2 and wl_sacha['status'] < 3:
+		minut += 3
+		'You take a deep breath and go towards the place where Sacha is always waiting for customers. It''s awkward talking to him, because he''s the only one who knows who you were before you met the Belys. "Hi Sacha."'
+		'"Hey <<$pcs_nickname>>," Sacha greets you when you step closer. After hesitating for a bit he only asks. "Do you need something?"'
+	elseif wl_drugs['status'] = 2 and wl_sacha['status'] = 3:
+		gt 'mod_wlife_sacha', 'party_aftermath_0'
+	elseif wl_sacha['status'] = 4:
+		minut += 3
+		wl_sacha['status'] = 5
+		'"Hi Sacha," you greet him with an honest smile. Ever since the party the mood has changed between you. Even if he works for the Belys he''s still the same old Sacha you remember from school. At least you think so.'
+		'"Hi <<$pcs_nickname>>," he greets you and suddenly pulls you into a hug. For a second you stand there confused, but then you relax into his arms and wrap your own arms around him. The two of you stand there for what feels like a lifetime, before you let go of him and take a step back.'	
+		'"What was that about?" you ask grateful about the gesture.'
+		'"After all that happened? I thought you could need one."'
+		'He''s too nice to be true, your brain warns you as it reminds you of what Shura did to you. But you push the thought aside as you say, "thanks."'
+	elseif wl_sacha['status'] = 5:
+		'You two greet each other with a quick hug, when you approach him.'
+	end
+	
+	gs 'stat'
+	
+	act 'Leave': gt $loc, $metka
+	
+	act 'Buy some weed': gt 'mod_wlife_sacha', 'buy_weed'
+	
+	if wl_drugs['timer_bj'] < wl_timer['week'] and wl_drugs['sex'] > -1:
+		gs 'willpower', 'prostitution', 'self', iif(wl_sacha['status'] > 0, 'easy', 'hard')
+		if will_cost <= pcs_willpwr:
+			act ''+iif(wl_sacha['status'] = 1, 'Offer him a blowjob', 'Suck him off')+' (<<will_cost>> Willpower)':
+				wl_drugs['timer_bj'] = wl_timer['week']
+				if wl_sacha['status'] = 1:
+					*clr & cla
+					minut += 2
+					wl_stats['respect'] -= 2
+					wl_stats['acceptance'] += 2
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+					'You hesitate. How do you offer a former classmate that you want to suck his cock for drugs? A question you would have never imagined pondering '+iif(wl_timer['startday'] < 60, 'weeks', 'months')+' ago. At the end you decide that a direct approach is the best option. You take a deep breath. "How about I give you a blowjob in exchange for some of your product?" you suggest.'
+					'He looks confused and blinks several times as if he can''t believe what you just said. "Uhm... what? <<$pcs_nickname>>. No, we can''t...," he stammers, but you shut him up, when you say. "Let''s not pretend like we''re the same people we were a year ago. I''m a whore, you''re a drug dealer. So? Blowjob for some weed?"'
+					'He still looks stunned, but after half a minute he slowly nods. "Okay, but I can''t give you a lot. If you don''t pay for them, I''ll have to. So I can maybe give you enough weed for...," he thinks about it for a moment, "5 joints."'
+					
+					act 'Get down on your knees': gt 'mod_wlife_sacha_sex', 'weed_bj'
+				else
+					gt 'mod_wlife_sacha_sex', 'weed_bj'
+				end
+			end		
+		else
+			act 'Offer him a blowjob (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	elseif wl_drugs['timer_bj'] = wl_timer['week'] and wl_drugs['sex'] > -1:
+		'<br>You already sucked him off this week. You''ll have to pay if you want more weed.'
+	end
+	
+	if wl_shura['ignore_counter'] = 6:
+		act 'Ask him about Shura''s disappearance':
+			*clr & cla
+			minut += 10
+			wl_shura['ignore_counter'] += 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+			'"Have you seen Shura lately?" you ask him. "I haven''t seen him since the party and I really need to talk to him."'
+			'Sacha shakes his head. "No, not really. I have picked up the product at the warehouse, but I haven''t seen him there, but that isn''t uncommon. He often keep away from the day-to-day business."'
+			'You don''t even realize in this movement, but will remember later, that he revealed to you, that the Belys store drugs at the warehouse. Your mind is fixed on Shura. He was there every week since you entered this new life, but suddenly he''s gone? Maybe he doesn''t want to talk to you. Maybe he feels guilty about what happened to you at the party?'
+			'"Should I tell him, that you''re looking for him, when I see him?"'
+			'You nod. "Thanks, that would be nice."'
+			
+			act 'Continue': wl_sacha['temp'] = 1 & gt 'mod_wlife_sacha', 'park'
+		end
+	end
+	
+!!	if wl_sacha['status'] > 2: act 'Talk to him': gt 'mod_wlife_sacha', 'chat'
+end
+
+if $ARGS[0] = 'buy_weed':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'	
+	'How much weed do you want to buy from him?'
+	
+	act 'Go back': wl_sacha['temp'] = 1 & gt 'mod_wlife_sacha', 'park'
+!!	if wl_sacha['status'] > 2: act 'Talk to him instead': gt 'mod_wlife_sacha', 'chat'
+		
+	if money >= 40:
+		act 'Buy enough weed for 1 joint (40 <b>₽</b>)':
+			cla & *nl
+			money -= 40
+			joint += 1
+			minut += 2
+			gs 'stat'
+			'You hand him 40 <b>₽</b> before he gives you a very small plastic bag filled with weed. "Pleasure doing business with you," he says.'
+				
+			act 'Continue': gt 'mod_wlife_sacha', 'park'
+		end
+	elseif money < 40:
+		act 'Buy enough weed for 1 joint (<font color="red">40 <b>₽</b></font>)': '<br><font color="red">You don''t have enough money to buy this much weed.</font>'
+	end
+		
+	if money >= 200:
+		act 'Buy enough weed for 5 joints (200 <b>₽</b>)':
+			cla & *nl
+			money -= 200
+			joint += 5
+			minut += 2
+			gs 'stat'
+			'You hand him 200 <b>₽</b> before he gives you a small plastic bag filled with weed. "Pleasure doing business with you," he says.'
+				
+			act 'Continue': gt 'mod_wlife_sacha', 'park'
+		end
+	elseif money < 200:
+		act 'Buy enough weed for 5 joints (<font color="red">200 <b>₽</b></font>)': '<br><font color="red">You don''t have enough money to buy this much weed.</font>'	
+	end
+		
+	if money >= 400:
+		act 'Buy enough weed for 10 joints (400 <b>₽</b>)':
+			cla & *nl
+			money -= 400
+			joint += 10
+			minut += 2
+			gs 'stat'
+			'You hand him 40 <b>₽</b> before he gives you a plastic bag filled with weed. "Pleasure doing business with you," he says.'
+				
+			act 'Continue': gt 'mod_wlife_sacha', 'park'
+		end
+	elseif money < 400:
+		act 'Buy enough weed for 10 joints (<font color="red">400 <b>₽</b></font>)': '<br><font color="red">You don''t have enough money to buy this much weed.</font>'
+	end
+		
+	if money >= 800:
+		act 'Buy enough weed for 20 joints (800 <b>₽</b>)':
+			cla & *nl
+			money -= 800
+			joint += 20
+			minut += 2
+			gs 'stat'
+			'You hand him 800 <b>₽</b> before he gives you a large plastic bag filled with weed. "Pleasure doing business with you," he says.'
+				
+			act 'Continue': gt 'mod_wlife_sacha', 'park'
+		end	
+	elseif money < 800:
+		act 'Buy enough weed for 20 joints (<font color="red">800 <b>₽</b></font>)': '<br><font color="red">You don''t have enough money to buy this much weed.</font>'
+	end
+end
+
+if $ARGS[0] = 'chat':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+	'What do you want to talk about?'
+	
+	act 'Go back': wl_sacha['temp'] = 1 & gt 'mod_wlife_sacha', 'park'
+	act 'Buy some weed instead': gt 'mod_wlife_sacha', 'buy_weed'
+	
+	if wl_sacha['talk_drugs'] = 0:
+		act 'Talk about drugs':
+			*clr & cla
+			minut += 12
+			wl_sacha['talk_drugs'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+!!ToDo: Finish this			
+			
+		end
+	elseif wl_sacha['talk_drugs'] = 1:
+		act 'Talk about hard drugs':
+			*clr & cla
+			minut += 10
+			wl_shura['talk_drugs'] = 1
+			wl_sacha['talk_drugs'] = 2
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+!!ToDo: Finish this			
+			
+		end
+	end
+end	
+
+if $ARGS[0] = 'party_aftermath_0':
+	*clr & cla
+	minut += 3
+	wl_sacha['status'] = 4
+	wl_status['main'] = 10
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+	'Sacha jumps up, when you approach him. "<<$pcs_nickname>>, I hoped you would come by. We really need to talk," he says agitated. "I''m really sorry, about what happened." The last part stops you right in your tracks. He''s sorry? Was it him? You never would have imagined that he would take advantage of your condition.'
+	'"You?" You ask shocked. "It was you? How could..."'
+	'He raises his arms in a defensive gesture. "No, no, no... It wasn''t me."'
+	'"Who was it? Shura? That Grigory guy?" He looks away and nervously pushes his hands inside the pockets of his jeans. "Sacha, tell me!" you demand, but he looks pained and shakes his head. He doesn''t want to tell you. "<<$pcs_nickname>>...," he pulls his right hand out of his pants and nervously rubs the back of his neck. "The question you should ask isn''t who took advantage of your situation, but who didn''t." He speaks slowly choosing each word carefully.'
+	'A cold feeling of dread washes over you and part of you wonders if it isn''t better not knowing what happened. "What''s that suppose to mean?"'
+	'He sighs. "OK, I''ll tell you...'	
+		
+	act 'Listen to him':
+		*clr & cla
+		minut += 10
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+		'"It wasn''t your fault," is the first thing he says to reassure you. "You were drunk and when I say drunk I mean completely shit-faced. We were chilling on the couch, when a guy sat down next to you and starts flirting with you," he pauses and looks away for a second to collect his thoughts before continuing. "I don''t remember the exact words, but you mumbled something like ''<i>don''t flirt with a whore, just pay her</i>'' and he did."'
+		'"No I didn''t," you say helplessly. It couldn''t be true. You didn''t tell a random dude at a party in small-town pavlovsk that you''re a whore.'
+		'He throws you a sympathetic look before he completely crushes your spirit. "And then he fucked you right there on the couch, in the middle of the living room in front of everybody." You can only stare at him. That''s way worse than anything that you imagined. "I''m really sorry that happened, but I couldn''t stop you. When I tried Shura intervened and told me to let you do what you want and have fun."'
+		
+		act 'Keep listening':
+			*clr & cla
+			minut += 4
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/sex/shura/party/sacha_talk.mp4"></video></center>'
+			'"Afterwards they took you to one of the bedrooms and ...," he''s not comfortable about having to tell you this. "And kept using you. Five or maybe six guys fucked you that night. One by one they came into your room, Shura made sure that they paid and then let them do to you whatever they wanted. You were barely conscious at that time and just lay there. They...," you lift one hand to make him stop. You heard enough and it''s already almost too much to digest.'
+			'How many were at that party? You try to remember, but you saw at least 20 maybe even 30 people. If they tell their friends and those tell their friends... Pavlovsk is a small town. How long will it take before somebody recognizes you on the street? "Did they take pictures?" you ask and Sacha confirms your suspicion with a simple nod.'
+			
+			act 'Freak out':
+				*clr & cla
+				minut += 6
+				wl_stats['acceptance'] -= 3
+				wl_stats['respect'] += 3
+				if wl_sacha['talk_tattoo'] = 0: wl_sacha['talk_tattoo'] = 1
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+				'"This is bad, this is so fucking bad," you say more to yourself than to Sacha while you nervously pace around. "Pictures, videos of me whoring myself out... FUCK! How could I be so stupid."'
+				'"<<$pcs_nickname>>...," he starts, but he can''t get a word in as you continue. "They will recognize me, they will tell their friends, they will show them pictures of me," '+iif($wl_brand['text_pubic'] ! '', 'and they saw my tattoo, you add silently. Not only they did, but Sacha did too. You', 'you')+' spin around to face Sacha again. "What should I do?"'
+				'"There''s nothing you can do," he says honestly and you know it''s the truth. There is nothing to be done. What happened happened and you now have to deal with the fallout. "I''m really sorry that I couldn''t help you and...," but you again interject. "I don''t blame you, I know how difficult it is to do the right thing in our lives."'
+
+				gs 'mod_wlife_sacha', 'party_aftermath_1'
+			end
+			
+			gs 'willpower', 'misc', 'self', iif(wl_stats['acceptance'] < 60, 'hard', 'easy')
+			if will_cost <= pcs_willpwr:
+				act 'Shit happens (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 4
+					wl_stats['acceptance'] += 3
+					wl_stats['respect'] -= 3
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+					'It was only a matter of time until something like this happened. You made a stupid mistake, but it was unavoidable. Some people would have found out eventually. This not something you need to freak out about.'
+					'"I''m really sorry that I couldn''t help you and...," but you again interject. "I don''t blame you, I know how difficult it is to do the right thing in our lives."'
+					
+					gs 'mod_wlife_sacha', 'party_aftermath_1'
+				end
+			else
+				act 'Shit happens (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	end
+end	
+
+if $ARGS[0] = 'party_aftermath_1':
+	wl_sacha['relationship'] = 1
+	'If you don''t blame him, who do you blame?'
+				
+	act 'Shura':
+		cla & *nl
+		minut += 2
+		wl_shura['relationship'] = 0
+		wl_stats['respect'] += 1
+		gs 'stat'
+		'"This is all Shura''s fault," you say with a stern expression and hate creeping into your voice. "He should have told them no, told them I was joking and protected me. I wasn''t able to consent."'
+		'"He let them rape you," Sacha adds and he''s exactly right. "Yes he did," you acknowledge. "I need some time to think about that, but thanks for telling me."'
+		
+		act 'End the conversation': wl_sacha['temp'] = 1 & gt 'mod_wlife_sacha', 'park'
+	end
+				
+	act 'Yourself':
+		cla & *nl
+		minut += 2
+		wl_stats['respect'] -= 1
+		gs 'stat'
+		'"It''s all my fault. I shouldn''t have so much to drink. If I...," you murmur, but this time Sacha forcefully interjects. "NO! Stop that. He let them rape you, don''t you see that? They had no right to do it. You were drunk and couldn''t consent to any of this."'
+		'"Maybe you''re right," you reply unsure. "I need some time to think about that. Thanks for telling me."'
+		
+		act 'End the conversation': wl_sacha['temp'] = 1 & gt 'mod_wlife_sacha', 'park'
+	end
+end
+
+--- mod_wlife_sacha ---------------------------------
+
+

+ 51 - 0
locations/mod_wlife_sacha_sex.qsrc

@@ -0,0 +1,51 @@
+# mod_wlife_sacha_sex
+
+!!------ Blowjob for drugs ------
+
+if $ARGS[0] = 'weed_bj':
+	*clr & cla
+	gs 'boystat', 'A911'	
+	cumnostd = 1
+	'<center><video autoplay loop src="mod/wlife/images/sex/sacha/park/bj_'+rand(0,2)+'.mp4"></video></center>'
+	if wl_sacha['status'] = 1:
+		guy += 1
+		npc_sex['A911'] = 1
+		wl_sacha['status'] = 2
+		'"Did you ever thought about me in this way?" you ask him as you pull down his jeans. He shakes his head. "Really? Never?"'
+		'"I mean, I''m a guy. So of course I thought about it," he smirks. "But not in a serious way. I...," he stops when you enclose your warm lips around his head and let your tongue dance over his head. "Damn, if I had known that you''re such a pro I would have thought about your mouth every day."'
+		'You move your head back and let his cock slip out of your mouth. "You really know how to sweet-talk a girl," you tease before sucking his now rock-hard penis deep into your mouth.'
+		'"Stop, stop...," he suddenly steps back pulling his member and a small wave of saliva out of your mouth.'
+		'"It was a joke Sacha," you try to explain, but he shakes his head. "You should have been serious, because I shouldn''t have said something like this to you."'
+		'"You don''t have to apologize. It''s fine, I don''t care. People said worse things to me."'
+		'"And that''s the problem. Doesn''t it bother you?"'
+		'You sigh still on your knees. "Of course it bothers me, but we can''t change it. Can we? So get your ass back here. If I make you feel better about your shitty situation, I get something that will actually help me deal with all of this. It''s a win/win and nobody get''s hurt in the process. OK?" you tell him. To your surprise he does it. He goes back to you, points his cock at your mouth without saying another word.'
+		*nl
+	end
+	'For the next few minutes the only sound you can hear is the naughty slurping sounds your mouth makes. He never tries to take control like so many other men try to do. Instead he let''s you set the pace and as a reward you give it your best and lavish his cock with attention.'
+	'"I''m cumming <<$pcs_nickname>>," Sacha says after a few more minutes.'
+	
+	gs 'arousal', 'bj', 8, 'prostitution'
+	gs 'stat'
+	
+	act 'Make him cum':
+		*clr & cla
+		joint += 5
+		swallow += 1
+		'<center><video autoplay loop src="mod/wlife/images/sex/sacha/park/cumshot.mp4"></video></center>'
+		'You stick out your tongue and rest the sensitive tip of his dick on it. The first two shots hit the back of your mouth, but the rest land directly on your tongue and the unique taste of semen floods your mouth. You wait until he has pushed out the last drops before you swallow it all done in one big gulp.'
+		'"Wait, I get your weed," he says pulling up his jeans. He walks to a small backpack and takes out a clear plastic bag filled with the object of your desire.'
+		'"Thanks," you say when he hands you the bag.'
+		'He smiles. "Take care <<$pcs_nickname>>."'
+		'You respond with a smile of your own. "You too Sacha."'
+		
+		gs 'cum_call', 'mouth', 'A911'
+		gs 'arousal', 'bj', 3, 'prostitution'
+		gs 'stat'
+		
+		act 'Leave': gt $loc, $metka
+	end
+end
+
+--- mod_wlife_sacha_sex ---------------------------------
+
+

+ 100 - 0
locations/mod_wlife_saveupdater.qsrc

@@ -0,0 +1,100 @@
+# mod_wlife_saveupdater
+
+if $ARGS[0] = 'check':
+	if wl_save_update = 0: 
+		gs 'mod_wlife_saveupdater', 'update_1'
+	elseif wl_save_update = 1:
+		gs 'mod_wlife_saveupdater', 'update_2'
+	elseif wl_save_update = 2:
+		gs 'mod_wlife_saveupdater', 'update_3'
+	elseif wl_save_update = 3:
+		gs 'mod_wlife_saveupdater', 'update_4'
+	elseif wl_save_update = 4:
+		gs 'mod_wlife_saveupdater', 'update_5'
+	elseif wl_save_update = 5:
+		gs 'mod_wlife_saveupdater', 'update_6'
+	elseif wl_save_update = 6:
+		gs 'mod_wlife_saveupdater', 'update_7'	
+	elseif wl_save_update = 7:
+		gs 'mod_wlife_saveupdater', 'update_8'		
+	end
+end
+
+if $ARGS[0] = 'update_1':
+	wl_save_update = 1
+
+	if wl_shura_bj_day > 0: wl_shura['timer_bj'] = wl_shura_bj_day
+	if wl_shura_like > 0: wl_shura['relationship'] = wl_shura_like
+	if wl_shura_topic_homeless > 0: wl_shura['talk_homeless'] = wl_shura_topic_homeless
+	if wl_shura_topic_iosif > 0: wl_shura['talk_iosif'] = wl_shura_topic_iosif
+	if wl_shura_topic_volya > 0: wl_shura['talk_volyaf'] = wl_shura_topic_volya
+	if wl_iosif_begged > 0: wl_iosif['begged'] = wl_iosif_begged
+	if wl_iosif_piss_whore > 0: wl_iosif['pissing'] = wl_iosif_piss_whore
+	if wl_volya_ask_fingering > 0: wl_volya['status_finger'] = wl_volya_ask_fingering
+	if wl_rim_counter > 0: wl_whore['rim_counter'] = wl_rim_counter
+	if wl_volya_finger_clean > 0: wl_volya['fingering_clean'] = wl_volya_finger_clean
+	if wl_volya_nod > 0: wl_volya['attic_vadim'] = wl_volya_nod
+	if wl_maxim['day'] > 0: wl_maxim['timer'] = wl_maxim['day']
+		
+	killvar 'wl_shura_bj_day'
+	killvar 'wl_shura_like'
+	killvar 'wl_shura_topic_homeless'
+	killvar 'wl_shura_topic_iosif'
+	killvar 'wl_shura_topic_volya'
+	killvar 'wl_iosif_begged'
+	killvar 'wl_iosif_piss_whore'
+	killvar 'wl_volya_ask_fingering'
+	killvar 'wl_rim_counter'
+	killvar 'wl_volya_finger_clean'
+	killvar 'wl_volya_nod'
+	
+	wl_maxim['day'] = 0
+	
+elseif $ARGS[0] = 'update_2':
+	wl_save_update = 2
+	wl_mother['clothes_chance'] = 10
+	
+	if wl_maxim['payment'] > 2500: wl_maxim['payment'] = 2500
+	
+	if $wl_kiss_whore ! '': $wl_whore['kiss'] = $wl_kiss_whore
+	if wl_status['incrimination'] > 0: wl_status['incrimination'] = 0
+	if wl_okoro['investigation'] = 1: wl_investigation['okoro'] = 1 & wl_okoro['investigation'] = 0
+	if wl_maxim['status'] > 1 and wl_investigation['maxim'] = 0: wl_investigation['maxim'] = 1
+	if wl_client_rim_unfriendly > 0: wl_whore['rim_unfriendly'] = wl_client_rim_unfriendly
+	if wl_start_picture > 0: wl_pictures['start'] = wl_start_picture & wl_pictures['count'] += 1
+	
+	killvar '$wl_kiss_whore'
+	killvar 'wl_client_rim_unfriendly'
+	killvar 'wl_start_picture'
+elseif $ARGS[0] = 'update_3':
+	wl_save_update = 3
+	gs 'mod_wlife_npc'
+elseif $ARGS[0] = 'update_4':
+	wl_save_update = 4
+	if wl_status['main'] > 8 and wl_shura['status'] > 8: wl_shura['party_timer'] = 5
+	if wl_drugs['status'] = 2: wl_investigation['shura'] = 1
+	
+	if wl_volya_car_first > 0: wl_volya['first_bj'] = wl_volya_car_first
+	if wl_volya_car_finger_first > 0: wl_volya['first_finger'] = wl_volya_car_finger_first
+	if wl_drugs['sacha'] > 0: wl_sacha['status'] = wl_drugs['sacha']
+	
+	killvar 'wl_volya_car_first'
+	killvar 'wl_volya_car_finger_first'
+elseif $ARGS[0] = 'update_5':
+	wl_save_update = 5
+	if wl_drugs['status'] > 1 and wl_sacha['status'] = 0: wl_sacha['status'] = 1
+elseif $ARGS[0] = 'update_6':
+	wl_save_update = 6
+	if noprotect > 0: noprotect = 0
+	if sexcontra > 0: sexcontra = 0
+elseif $ARGS[0] = 'update_7':
+	wl_save_update = 7
+	if wl_iosif['pissing'] = 1 and $wl_fetish['pissed_on'] ! '': wl_iosif['pissing'] = 2
+	if wl_iosif['status'] = 5 and $wl_fetish['pissing'] = 'blocked': wl_iosif['status'] = 6
+elseif $ARGS[0] = 'update_8':
+	wl_save_update = 8
+	if wl_sacha['status'] > 3: wl_status['main'] = 10
+	wl_whore['client_behavior_chance'] = 70
+end
+
+--- mod_wlife_saveupdater ---------------------------------

+ 32 - 0
locations/mod_wlife_setup.qsrc

@@ -0,0 +1,32 @@
+# mod_wlife_setup
+
+!input basic mod information here. 
+!this location must be the first one
+
+$mod_info[0] = 'wlife'
+!0=mod name, saved to $mod_name[i] array 
+
+$mod_info[1] = '03400'
+!1=mod version
+!this will be displayed as version 1.2, fix3.
+!if you input 40500, will be showen as version 4.5
+
+$mod_info[2] = 'julzor'
+!2=mod author
+
+$mod_info[3] = 'Whore Life'
+!3=mod description, input a short brief here.
+
+if $curloc = 'mod_<<$mod_info[0]>>_setup':
+	usehtml = 1
+	!this will be only showed if you exec mod file. This location should be only called by gs, so this line will not trigger on normal mod playing
+	'<center><h1><font color=red>ACCESS DENIED</font></h1></center>'
+	'<<$mod_info[0]>> is a mod for <b>Girl Life - English Community Version</b>, and can not be played individually.'
+	''
+	'You can find the main game in <a href="https://www.tfgamessite.com/index.php?module=viewgame&id=597">Tfgames site</a> (external link)'
+	''
+	'Our forum: <a href="https://tfgamessite.com/phpbb3/viewforum.php?f=70">Tfgames site</a> (external link)'
+end
+
+
+--- mod_wlife_setup ---------------------------------

+ 1319 - 0
locations/mod_wlife_shura.qsrc

@@ -0,0 +1,1319 @@
+# mod_wlife_shura
+
+if $ARGS[0] = 'first_meet_0':
+	*clr & cla
+	minut += 2
+	wl_shura['status'] = 1
+	wl_shura['timer'] = daystart
+	npc_rel['A903'] = 20
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'The guy is in his late twenties, tall and looks kinda rough with two visible scars. One on his right hand and the other extends from his neck down to his shoulder and vanishes below his shirt. Like Volya, he is one of the few of Belys henchmen that doesn''t wear the obligatory track suit but rather normal clothes. He is sitting in an ugly brown armchair that was already old when the Soviet Union still existed. A half-empty bottle of beer is standing next to several empty ones on an even older table.'
+	'He gives you an indifferent look, when you approach him. Nothing in his demeanor gives any indication that he remembers you. He probably doesn''t even care and you''re starting to question your choice to approach him, when he suddenly holds up a pack of smokes. "Want one?"'
+	'"Uhm... ," you say confused about his sudden offer. "It''s just a cigarette," he says in an careless tone.'
+	
+	gs 'willpower', 'drugs', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Don''t take it (<<will_cost>> Willpower)': gs 'willpower', 'pay', 'resist' & gt 'mod_wlife_shura', 'first_meet_1'
+	else
+		act 'Don''t take it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Take it': wl_temp = 1 & gt 'mod_wlife_shura', 'first_meet_1'
+end
+
+if $ARGS[0] = 'first_meet_1':
+	*clr & cla
+	minut += 3
+	gs 'stat'			
+	if wl_temp = 1:
+		siga += 1 & gs 'drugs', 'smoke'
+		'<center><img  <<$set_imgh>> src="mod/wlife/images/player/smoking.jpg"></center>'
+		'"Thanks," you say after a pause and lean towards him so that he can light it.'+iif(smoker > 0, ' After a few long drags you feel a bit more relaxed.', ' After inhaling the smoke for the first time you immediately start to cough. "Your first?" he asks and you nod. "Don''t worry, you''ll get used to it," he tells you and takes a cigarette for himself out of the pack.')
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'	
+		'You shake your head again, but he just shrugs and takes one for himself. "You don''t mind, do you?" he asks, but he is already pulling out his lighter and doesn''t wait for your answer.'
+	end
+	'"I would also offer you a beer, but," he picks up the bottle and demonstratively shakes it to show it''s nearly empty, "that''s my last one." It''s strange listening to him talking to you in such a casual way. You''re waiting for him to acknowledge who you are or what he did to you and somehow his indifference makes it worse. "You don''t know who I am, do you?" you finally ask him.'
+	'He looks up at you and gives you a careful look. It seems he really doesn''t remember you or what happened in the warehouse. "Should I?"'
+	'How can somebody be so jaded, forgetting that he forced his cock down a girls throat? You ask yourself not sure what to do next.'
+	
+	act 'Shake your head and leave':
+		cla & *nl
+		npc_rel['A903'] -= 5
+		killvar 'wl_temp'
+		'"Yeah, you should," you reply without giving a single thought to his possible reaction. It''s always a risk to talk back to them, not all of Bely''s henchmen will react like Volya. He tilts his head to the side, but doesn''t say anything else. After half a minute you shake your head and walk away.'
+		
+		act 'Continue': gt 'mod_wlife_warehouse', 'street'
+	end
+	
+	act 'Thank him and leave':
+		cla & *nl
+		npc_rel['A903'] += 5
+		'It''s probably not a smart idea to confront him about it. Not all of Bely''s henchmen will react like Volya. That thought gives you an idea. You could always ask Volya about him.'
+		'"Thanks again for the '+iif(wl_temp = 1, 'smoke', 'offer')+'," you say trying to sound sincere.'
+		'"No problem," he says as you turn around. He doesn''t say anything else or tries to stop you when you leave.'
+		killvar 'wl_temp'
+		
+		act 'Continue': gt 'mod_wlife_warehouse', 'street'
+	end	
+end
+
+if $ARGS[0] = 'second_meet_0':
+	*clr & cla
+	minut += 2
+	wl_shura['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'His demeanor hasn''t changed since last time. Even after your last encounter he still looks at you like somebody would look at a bland piece of IKEA-furniture. It exists, has a name and is utterly uninteresting.'
+	'You cross your arms in front of you striking a defensive pose and ask, "You are Shura, right?"'
+	'He slowly tilts his head to one side and stares at you for a few uncomfortable seconds. When his eyes look up into yours, you can finally see a hint of curiosity spark in his. "Who wants to know?"'
+	
+	gs 'willpower', 'misc', 'self', 'medium'
+	if will_cost <= pcs_willpwr:
+		act 'Reply brazenly (<<will_cost>> Willpower)':
+			wl_temp = 1
+			wl_stats['respect'] += 2
+			gs 'willpower', 'pay', 'self'
+			gt 'mod_wlife_shura', 'second_meet_1'
+		end
+	else
+		act 'Reply brazenly (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Reply carefully':
+		wl_temp = 0
+		wl_stats['respect'] -= 1
+		gt 'mod_wlife_shura', 'second_meet_1'
+	end	
+end
+
+if $ARGS[0] = 'second_meet_1':
+	*clr & cla
+	minut += 2
+	npc_rel['A903'] -= 5
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	iif(wl_temp = 1, '"Your boss'' newest whore, the one you face-fucked in the warehouse," you reply with an adversarial undertone. His indifference is getting on your nerves, but', '"We already met," you point at the warehouse, "In there." When he doesn''t react, you continue: "Vad... I mean Mr. Bely told you to punish me for misbehaving," you explain and')+' something in his eyes lights up and he is clearly remembering you now. He opens his mouth, but instead of an apology or an insult all you get from him is a, "So?"'
+	killvar 'wl_temp'
+		
+	act 'React angrily':
+		cla & *nl
+		minut += 2
+		wl_stats['respect'] += 1
+		gs 'stat'
+		'"So?" you repeat with an angry frown on your face. "That''s it? After all the things you did to me, I get a ''So''?"'
+		'He leans back into his chair and shrugs again. "Life sucks. Yours, mine, everyones. Nobody gives a fuck about me, so why should I give a fuck about somebody else?"'
+		
+		act 'Continue': gt 'mod_wlife_shura', 'second_meet_2'
+	end
+	
+	act 'React submissively':
+		cla & *nl
+		minut += 2
+		wl_stats['respect'] -= 2
+		gs 'stat'
+		'"I''m sorry, I shouldn''t have said anything," you apologize quickly, but he holds up a hand to stop you right there. "It''s not about you," he starts to explain as he leans back into his chair. "Life sucks. Yours, mine, everybody''s. Nobody gives a fuck about me, so why should I give a fuck about somebody else?"'
+				
+		act 'Continue': gt 'mod_wlife_shura', 'second_meet_2'
+	end
+end
+
+if $ARGS[0] = 'second_meet_2':
+	*clr & cla
+	minut += 5
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'Is he serious? Maybe it comes with the territory, but you have never met somebody with such a nihilistic view. "Did it ever cross your mind that people don''t care, because you don''t care?" you ask him, but again he shrugs like a bratty little teenager.'
+	'You stare at each other for a few seconds and you''re about to leave when he suddenly continues to talk. "If nobody gives a shit about you, you need to start to give a shit about yourself."'
+	'You roll your eyes. "Wow, that''s deep," you reply sarcastically.'
+	'"I mean it. You need to make yourself happy to survive in this world."'
+	'"You don''t seem to listen to your own advise. If asked, I wouldn''t describe you as a particular happy person," you say, but he shrugs, again. "I will be in a minute," he replies and pulls out a small plastic bag'+iif(joint_smoked > 0, ' full with weed.', ' full with some green stuff. "It''s weed", he explains when he sees the questioning look on your face.')+' "Do you want a joint as well? It will make you feel better."'
+			
+	gs 'willpower', 'drugs', 'resist'
+	if will_cost <= pcs_willpwr:
+		act 'Refuse and leave (<<will_cost>> Willpower)': 
+			cla & *nl
+			wl_shura_temp = 1
+			gs 'willpower', 'pay', 'resist'
+			'"Uhm... no, but thanks," you reply, surprised by the sudden offer. But he doesn''t seem to care about your reaction. He just shrugs again, "Fine, suit yourself. If you ever want to talk again, I''m also here on tuesday."'
+			
+			act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		end
+	else
+		act 'Refuse and leave (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Accept the offer': gt 'mod_wlife_shura', 'first_joint', 'agree'
+end
+
+if $ARGS[0] = 'second_meet_joint_refused':
+	*clr & cla
+	minut += 1
+	wl_shura['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'"Did you change your mind?" he asks when you approach him. "My offer about the joint still stands."'
+	
+	gs 'willpower', 'drugs', 'resist'
+	if will_cost <= pcs_willpwr:
+		act 'Refuse (<<will_cost>> Willpower)': 
+			gs 'willpower', 'pay', 'resist'
+			gt 'mod_wlife_shura', 'first_joint', 'refuse'
+		end
+	else
+		act 'Refuse (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Accept': gt 'mod_wlife_shura', 'first_joint', 'agree'
+end
+
+if $ARGS[0] = 'first_joint':
+	*clr & cla
+	minut += 2
+	wl_shura['status'] = 3
+	npc_rel['A903'] += 5
+	if wl_shura_temp > 0: killvar 'wl_shura_temp'
+	if $ARGS[1] ! 'agree':
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+		'"You know, you don''t have to leave," he says, when you turn around after rejecting his offer for a second time. "I don''t care if you want to smoke a joint or not," he explains and you can barely stop yourself from snorting. It was painfully obvious that he didn''t care about anything. "We can just hang out."'
+		'You turn back around to face him. He has started to '+iif(joint_smoked > 0, 'build a filter out of', 'roll up')+' a thin piece of cardboard. "Why?" you ask, but he shrugs like he always does. "You came to me, remember?"'
+		'"True," you say and sit down next to him in the other armchair. You could have just left or not talked to him. What was it that motivated you to talk to him? You are forced to work with Volya, check in with Georgiy, but you don''t have to interact with any of the other guys. Is it because he doesn''t treat you like a weak girl that needs protection, like Volya does? Or that he doesn''t pity you and talks to you like any other girl? You push the thoughts away when you realize that he has finished making his joint. "Are you sure you don''t want one?"'
+				
+		gs 'willpower', 'drugs', 'resist', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'No, thanks (<<will_cost>> Willpower)': 
+				*clr & cla
+				minut += 2
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+				'"Thanks, but no thanks," you answer. If you had to wager on how he would react to the rejection, you would have put everything on ''shrug'' and would have won big. "You do that a lot," you say and he looks up at you. "Do what?" he asks. You give him an exaggerated shrug as an explanation. "So?" he answers, giving you the verbal equivalent of a shrug.'
+				'"It''s annoying," you answer honestly, as he lights his joint. ''Good'' is the only answer you get from him. You roll your eyes and slowly shake your head and for the first time you can see the hint of a smile on his lips.'
+				'The next few minutes you watch him smoking his joint, waiting for him to start a conversation, but he doesn''t seem bothered by the silence and to your surprise, you aren''t either. It''s refreshing to sit and chill without somebody demanding anything from you.'
+
+				act 'Leave':
+					cla & *nl
+					npc_rel['A903'] += 5
+					wl_drugs['status'] = 1
+					wl_investigation['shura'] = 1
+					'He doesn''t say anything when you get up. He''s sitting there, not caring about anything else in the world, except his joint. "Uhm... I have to go," you tell him not sure what else to say.'
+					'"If you want to hang out again, I''m here on most Sundays," he says without looking at you. His voice is as indifferent as always fortifying his ''don''t-give-a-shit-attitude''. "Also, if you ever change your mind, one of my guys sells it at the park in the evening," he tells you and describes to you a young man, a small time drug dealer that hangs out in the Pavlovsk park. "Just tell him I send you."'
+					
+					act 'Walk away': gt 'mod_wlife_warehouse', 'street'
+				end
+			end
+		else
+			act 'No (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		act 'Ok, fine':
+			*clr & cla
+			minut += 2
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_lick.jpg"></center>'
+			'"Fine," you say, finally giving in and'+iif(joint_smoked > 0, ' ', ' follow his example, ')+'preparing your joint.'
+			'If you had to wager on how he would react to you finally accepting his offer, you would have put everything on ''shrug'' and would have won big. "You do that a lot," you say and he looks up at you. "Do what?" He asks. You give him an exaggerated shrug as an explanation. "So?" He answers giving you the verbal equivalent of a shrug.'
+			'"It''s annoying," you answer honestly as he lights his joint. ''Good'' is the only answer you get from him. You roll your eyes and slowly shake your head and for the first time you can see the hint of a smile on his lips.'
+			*nl
+			'A minute alter your eyes wander to Shura when you hold the joint up to your lips and lick the paper with your tongue and for the first time you have his complete attention. He has stopped right in the middle of lighting his joint, his eyes fixed on your tongue.'			
+			
+			act 'Light it': gt 'mod_wlife_shura', 'first_joint_smoke'
+		end
+	else		
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_filter.jpg"></center>'
+		'"You know, you don''t have to if you don''t want to," he says when you sit down next to him in other old armchair. "I don''t care if you want to smoke a joint or not," he explains and you can barely stop yourself from snorting. It was painfully obvious that he didn''t care about anything. "We can just hang out or you can leave."'
+		'"I came to you, remember?" You remind him. He stares as you for two seconds and shrugs. But it was true, you came to him. You could have just left or not talk to him. What was it that motivated you to talk to him? You are forced to work with Volya, check in with Georgiy, but you don''t have to interact with any of the other guys. Is it because he doesn''t treat you like a weak girl that needs protection like Volya does? Or that he doesn''t pity you and talks to you like any other girl? You push the thoughts away when he hands you a piece of paper and a small piece of thin cardboard. '+iif(joint_smoked > 0, 'He looks up to check if you know what you''re doing, but when you take the cardboard and roll it into a filter he focuses on rolling his own joint.', '"What do I do with it?" You ask. "First, roll the cardboard like this," he explains and shows you how to roll the cardboard into a filter.')
+		
+		act 'Continue preparing your joint':
+			*clr & cla
+			minut += 2
+			gs 'stat'	
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_roll.jpg"></center>'
+			'You continue'+iif(joint_smoked > 0, ' to prepare your joint', ' to follow his example. You watch him for a moment and then repeat what he''s doing, putting the weed on the paper')+', putting the weed on the paper.'
+			
+			act 'Continue preparing your joint':
+				*clr & cla
+				minut += 2
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_lick.jpg"></center>'
+				'He''s already finished when you hold the joint up to your lips and lick the paper with your tongue. By chance your eyes wander to Shura and for the first time you have his complete attention. He has stopped right in the middle of lighting his joint, his eyes fixed on your tongue.'
+				
+				act 'Light it': gt 'mod_wlife_shura', 'first_joint_smoke'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'first_joint_smoke':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_light.jpg"></center>'
+	'Having his eyes fixed on you, you take the lighter out of his hand, put one end of the joint into your mouth and light it.'+iif(joint_smoked > 0 or smoker > 0, ' After a few long drags you feel a bit more relaxed. You had Shura back his lighter and that finally seems to break the spell and he quickly takes it to light his own joint.', ' After inhaling the smoke for the first time you immediately start to cough and that finally seems to break the spell. "Your first?" He asks and you nod. "Don''t worry, you''ll get used to it," he tells you.')
+	
+	act 'Smoke the joint':
+		*clr & cla
+		minut += 10
+		joint += 1
+		gs 'mod_wlife_functions', 'weed_check'
+		gs 'stat'
+		'<center><table cellspacing="3"><tr><td><img  <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint1.jpg"></td><td><img  <<$set_imgh>> src="mod/wlife/images/player/joint_smoking.jpg"></td></tr></table></center>'
+		'The whole time you''re smoking the joint you wait for something to happen. That you will have to show your appreciation at some point, but he doesn''t even talk to you. You''re just chilling next to him in the old armchair smoking your join. It''s refreshing to sit and chill without somebody demanding something of you.'
+						
+		act 'Leave':
+			*clr & cla
+			minut += 1
+			joint += rand(2,3)
+			wl_drugs['status'] = 1
+			npc_rel['A903'] += 10
+			wl_investigation['shura'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint1.jpg"></center>'
+			'"Wait," he says the moment you get up. Here we go, you think. The moment you have been anticipating. "What do you want?" You sigh.' 
+			'"Take this," he says and throws you the rest of the bag of weed. There is enough weed inside for maybe two or three more joints. "Also, if you ever need more, one of my guys sells it at the park in the evening," he tells you and describes to you a young man, a small time drug dealer that hangs out in the Pavlovsk park. "Just tell him that I send you. If you ever want to talk again, I''m also here on Tuesday."'
+			'"Uhm... thanks," you say surprised and catch the bag, but he''s already retreated back into his own world smoking his joint and not giving a fuck about you or anything else... Or is he?'
+
+			act 'Walk away': gt 'mod_wlife_warehouse', 'street'
+		end
+	end
+end
+
+if $ARGS[0] = 'third_meet_0':
+	wl_shura['timer'] = daystart
+	if wl_iosif['status'] = 0: 
+		gt 'mod_wlife_iosif', 'first_meet_forced'
+	else
+		*clr & cla
+		minut += 2
+		wl_shura['status'] = 4
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+		'You slump down in the chair next to Shura as he''s breathing out the smoke of his joint. "Hi, <<$pcs_nickname>>," he greets you with a smile. A smile? You have to look twice, but it''s definitely there. The corners of his mouth have moved up half a centimeter which is for him like a full blown smile of a normal person.'
+		'"Somebody is in a good mood," you say and the corners of his mouth creep up a tiny bit more, but he forces the smiles away when he notices what is happening and reacts with a shrug instead. "No, just high," he says holding up his joint.'
+		'Does he like you? And if yes, do you care? You ask yourself looking at him inquisitively. Compared with the other guys he was kinda nice to you, especially compared to '+iif(wl_iosif['status'] > 1, 'Iosif.', 'to the guy that beat you up in the warehouse.')+' You shake your head slightly. It isn''t as if you like him... Or do you?'
+		
+		act 'No': npc_rel['A903'] -= 10 & wl_shura['relationship'] = 0 & gt 'mod_wlife_shura', 'third_meet_1'		
+		act 'Maybe': npc_rel['A903'] += 5 & wl_shura['relationship'] = 1 & gt 'mod_wlife_shura', 'third_meet_1'
+		act 'Yes': npc_rel['A903'] += 10 & wl_shura['relationship'] = 2 & gt 'mod_wlife_shura', 'third_meet_1'		
+	end
+end
+
+if $ARGS[0] = 'third_meet_1':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+	if wl_shura['relationship'] = 0:
+		'No, of course not. As if you could ever like somebody like him. If he likes you, fine. It''s maybe good for you to have one of Georgiy''s lieutenants in your corner, you think and look to him.'
+	else
+		iif(wl_shura['relationship'] = 1, 'Maybe? You don''t hate him, but you aren''t really sure about him.', 'As strange as it is. You think you do like him. At least a bit.')+' He did force his cock down your throat in the warehouse, but what could he do? Say no? You slightly shake your head as you think about it. Probably not. So, can you really hold it against him? You ask yourself and look to him.'
+	end
+	'His eyes are fixated on something happening near the entrance of the warehouse. You turn around and see '+iif(wl_iosif['status'] < 2, 'the guy who hit you inside the warehouse', 'Iosif')+' leaving '+iif(wl_iosif['status'] < 2, 'it.', 'the warehouse.')
+	
+	act 'Continue':
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+		'Shura is watching him intently, but there is something in his eyes. Something you haven''t seen before. Is it anger? No, it''s hate. "Shura?" You ask him, but he doesn''t react instead he keeps staring at '+iif(wl_iosif['status'] < 2, 'the other guy', 'Iosif')+' and unconsciously rubs the big scar on his face.'
+		'"What''s going on?" You try again when '+iif(wl_iosif['status'] < 2, 'the man', 'Iosif')+' enters a car and drives away. "That''s Iosif," he spits out the name'+iif(wl_iosif['status'] < 2, '. The name sounds familiar and your remember Volya telling you about him being of Georgiy''s lieutenants. Shura', ' and')+' sends a hateful glare after the car as it''s drives away. "We''re all trash, but he''s the lowest of the low." You would have guessed that they like each other, both being Georgiy''s lieutenants and all that, or at least have a cordial working relationship, but you can hear the utter disdain for Iosif in Shura''s voice.'
+		
+		act 'Ask what he means exactly':
+			*clr & cla
+			minut += 2
+			if wl_iosif['status'] < 2: wl_iosif['status'] = 2
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+			'"Why is he the lowest of the low?" You ask interested and suddenly his demeanor changes and he looks surprised as if he had forgotten that you were sitting there. "Forget it, but promise me that you stay away from him, ok?"'
+			'You sigh. "You don''t have to tell me that," you say and quickly recount to him what happened in the warehouse. When you reach the part when he pulled you out of the warehouse by your hair Shura''s hand wanders back to his scar on his face and is expression grows cold. "Not all are as lucky as you were," he says when you have finished your story.'
+			
+			act 'Don''t pry': 
+				cla & *nl
+				'You decide not to ask what happened between Shura and Iosif. After sitting with him for a few more awkward minutes you decide to leave because Shura clearly isn''t in the mood to talk about anything else.'
+				
+				act 'Leave': gt 'mod_wlife_warehouse', 'street'
+			end
+			
+			gs 'willpower', 'misc', 'self', 'medium'
+			if will_cost <= pcs_willpwr:
+				act 'Ask what happened (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 2
+					wl_shura['talk_iosif'] = 1
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+					'"What happened between you too?" You ask, but he only shakes his head. "Nothing really," he says not very convincingly. "I don''t like the way he conducts his business. That''s all." His tone of voice makes clear that this topic is not up for debate and after a few awkward moments he stands up and leaves without saying another word.'
+					
+					act 'Leave': gt 'mod_wlife_warehouse', 'street'
+				end
+			else
+				act 'Ask what happened (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'inside_first_0':
+	*clr & cla
+	minut += 1
+	wl_shura['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'Shura is standing outside the warehouse smoking a cigarette when you approach him. "Hi, Shura."'
+	'"Hi, <<$pcs_nickname>>," he greets you without any indication how he feels about you being here. "I''m about to head back inside,'+iif(sunWeather = 0 or temper < 10, ' the weather sucks,"' ,'"')+' he says and flips the rest of his cigarette away. "Do you want to come '+iif(wl_shura_temp = 0, 'too', 'inside this time')+'?"'
+	if wl_shura_temp = 0: 
+		'You think about what happened the last time you went inside and shake your head. You can do without Iosif bashing your head in. "I shouldn''t. Iosif told me that I''m not suppose to be inside except when I have to talk to Georgiy."'
+		'"Don''t worry about him. I''m inviting you in, so it''s fine," he assures you.'
+	end
+	
+	gs 'willpower', 'misc', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Shake your head and leave (<<will_cost>> Willpower)': wl_shura_temp = 2 & gs 'willpower', 'pay', 'resist' & gt 'mod_wlife_warehouse', 'street'
+	else
+		act 'Shake your head and leave (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Follow him inside': 
+		*clr & cla
+		minut += 2
+		wl_shura['status'] = 6
+		wl_iosif['status'] = 3
+		wl_shura['talk_iosif'] = 1
+		killvar 'wl_shura_temp'
+		gs 'stat'	
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/warehouse.jpg"></center>'
+		'It''s quiet when you go inside the warehouse. Nobody is working on the cars or hanging around the entrance.'
+		'"Where is everybody?" You ask curious and look around. Shura shrugs. "Why should I know? I don''t have anything to do with the car-side of the business."'
+		'For a moment you ponder to ask him what part of the business he''s involved in. Is it drugs? Are they even dealing drugs or is Shura only smoking weed and not selling it? "What are you thinking about?" Shura asks suddenly.'
+		
+		act 'Nothing': wl_temp = 0 & gt 'mod_wlife_shura', 'inside_first_1'
+		
+		gs 'willpower', 'misc', 'force', 'hard'
+		if will_cost <= pcs_willpwr:
+			act 'Your side of the business (<<will_cost>> Willpower)': wl_temp = 1 & gs 'willpower', 'pay', 'force' & gt 'mod_wlife_shura', 'inside_first_1'
+		else
+			act 'Your side of the business (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end	
+	end
+end
+
+if $ARGS[0] = 'inside_first_1':
+	*clr & cla
+	minut += 1
+	gs 'stat'	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/hallway.jpg"></center>'
+	'You follow Shura into the old house. The paint is peeling off the walls and you aren''t sure, but that looks like mold on one of the walls.'
+	if wl_temp = 1:
+		wl_stats['respect'] += 1
+		wl_stats['loyalty'] -= 2
+		'"So, what side of the business are you involved in?" You ask trying to sound casual.'
+		'"Stuff," he replies without looking at you, but his answer still makes clear to you that you shouldn''t ask again. But it was still worth a try. You at least know that he won''t bash your head in like Iosif if one of your questions strays into forbidden territory.'
+	else
+		'"Nothing," you answer quickly. It''s probably for the best. You don''t really know him and maybe he will bash your head in like Iosif if one of your questions strays into forbidden territory.'
+	end
+	killvar 'wl_temp'
+				
+	act 'Continue':
+		*clr & cla
+		minut += 2
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/common_room.jpg"></center>'
+		'Shura slumps down on an old couch that''s in a somewhat better condition, but the rest of the room is as run down as the other parts of the house you have seen. The only new and modern thing apart from the stolen cars is the TV set.'
+		'You sit down next to him as he throws his pack of cigarettes on the table and a bag of weed next to it.'
+																
+		act 'Hang out with him': gt 'mod_wlife_shura', 'inside_first_2', 'none'
+		if joint > 0: act 'Smoke a joint': gt 'mod_wlife_shura', 'inside_first_2', 'joint', 'own'
+		if siga > 0: act 'Smoke a cigarette': gt 'mod_wlife_shura', 'inside_first_2', 'cigarette', 'own'
+							
+		gs 'willpower', 'drugs', 'force'
+		if will_cost <= pcs_willpwr:
+			act 'Ask for some weed (<<will_cost>> Willpower)': 
+				joint += 1
+				gs 'willpower', 'drugs', 'force'
+				gs 'willpower', 'pay', 'force'
+				gt 'mod_wlife_shura', 'inside_first_2', 'joint', 'ask'
+			end
+		else
+			act 'Ask for some weed (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+							
+		gs 'willpower', 'drugs', 'force', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Ask for a cigarette (<<will_cost>> Willpower)': 
+				siga += 1
+				gs 'willpower', 'drugs', 'force', 'easy'
+				gs 'willpower', 'pay', 'force'
+				gt 'mod_wlife_shura', 'inside_first_2', 'cigarette', 'ask'
+			end
+		else
+			act 'Ask for a cigarette (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end
+
+if $ARGS[0] = 'inside_first_2':
+	*clr & cla
+	minut += 20	
+	if $ARGS[1] = 'none':
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+	elseif $ARGS[1] = 'joint':
+		gs 'mod_wlife_functions', 'weed_check'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking_inside.jpg"></center>'
+	elseif $ARGS[1] = 'cigarette':
+		gs 'drugs', 'smoke'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/smoking.jpg"></center>'
+	end
+	gs 'stat'
+	'You don''t talk much. He never asks you anything about you, your work, your friends or family. He seems content with you being there when he lights his joint and get''s high. Every time you tried to talk to him about something more substantial than drugs like his job or Iosif he has avoided the question or shot it down immediately. '+iif(wl_shura['relationship'] = 0, 'At least you could use him to get into the warehouse. To what effect you don''t know, but if you ever wanted to escape from your new life knowing more about the Belys and their organization can''t hurt.', 'But it isn''t as if you didn''t like his company and getting inside the warehouse and collecting more information about the Belys and their organization doesn''t hurt as well if you ever want to get out of your current situation.')
+	*nl
+	'"Well, what do we have here," a familiar voice says suddenly. A shiver runs down your spin when you turn your head and see Iosif standing in the doorway. He throws you a menacing look and steps next to the couch looming over you.'
+	
+	act 'Continue': gt 'mod_wlife_shura', 'inside_first_3'
+end
+
+if $ARGS[0] = 'inside_first_3':
+	*clr & cla
+	minut += 3
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'"Fuck off," Shura says before you can do or say anything. The threating smile on Iosif''s lips only widens in response. "I mean it, I''m not in the mood to listen to your shit today."'
+	'"Using the merchandise again?" Iosif asks ignoring Shura''s comment and for a moment you''re sure that he means the joint, but his next words tell you otherwise. "How much did he pay you whore? Your usual rate or are you handing out freebies?"'
+	'Your first reaction is to look to the door, but Iosif immediately takes a step to the right to block your only escape route. "She isn''t like the other girls," Shura says to him and to your surprise he puts his arm in a protective manner around you. "She is only here to hang out," and adds after a pause. "With me."'
+	'Iosif laughs and sits down next to you. Instinctively you move an inch away from the brute closer to Shura. "Really? Why would any girl hang out with you scarface? You will always have to swipe your credit card first."'
+		
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Defend Shura (<<will_cost>> Willpower)':
+			*clr & cla
+			wl_stats['respect'] += 1
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_iosif_0.jpg"></center>'
+			'You have seen how much Shura hates him and you quickly open your mouth to say something, but a little squeeze of Shura''s arm around your shoulder stops you. "Jealousy doesn''t suit you very well Iosif," Shura replies with a condescending smirk. "When was the last time you fucked a girl that actually really said ''Yes'' and you didn''t rape in some dark alley?"'
+			'It looks like it''s only a matter of time before they start to hit each other, when Iosif suddenly leans back and pulls out a stack of ruble bills from his pants.'
+			
+			act 'Continue': gt 'mod_wlife_shura', 'inside_first_4'
+		end
+	else
+		act 'Defend Shura (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Stay out of it':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_iosif_0.jpg"></center>'
+		'You have seen how much Shura hates him, but to your surprise Shura keeps calm. "Jealousy doesn''t suit you very well Iosif," Shura replies with a condescending smirk. "When was the last time you fucked a girl that actually really said ''Yes'' and you didn''t rape in some dark alley?"'
+		'It looks like it''s only a matter of time before they start to hit each other, when Iosif suddenly leans back and pulls out a stack of ruble bills from his pants.'
+		
+		act 'Continue': gt 'mod_wlife_shura', 'inside_first_4'
+	end
+end
+
+if $ARGS[0] = 'inside_first_4':
+	*clr & cla
+	minut += 3
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/money_1.mp4"></video></center>'
+	'"I''ll show you a girl that says ''Yes'' scarface," he hisses and pulls three crisp new 100 <b>₽</b> bills from the stack.'
+	'Does he really believe that buying a ''Yes'' is the same as a girl wanting to sleep with him? You look to Shura and roll your eyes, but to your surprise he''s smiling. "Take it," he says and you''re confused for a second. He wants you to do what? "Uhm...," you say looking back and forth between the two of them. "What?"'
+	'Shura leans closer to you and whispers into your ear. "Take it and say ''Yes''." And you finally understand his intentions. Saying ''Yes'' would prove his point, would make him win the argument. For a second you think about leaving, but the look in Iosif''s eyes squashes that idea immediately.'
+	
+	act 'Take the money': wl_temp = 0 & gt 'mod_wlife_shura', 'inside_first_5'
+	
+	gs 'willpower', 'prostitution', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Demand more money (<<will_cost>> Willpower)': wl_iosif['haggle'] = 1 & wl_temp = 1 & gt 'mod_wlife_shura', 'inside_first_5' 
+	else
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'inside_first_5':
+	*clr & cla
+	minut += 3
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/iosif/shura_cuckold/money_2.mp4"></video></center>'	
+	if wl_temp = 1:
+		wl_iosif['payment'] = 600
+		'"Double it," you demand trying to sound confident. It''s the only way for you get some kind of control back. If you have to fuck him, you''ll do it on your own terms and not on his. "Give me 600 <b>₽</b> and I''ll say ''Yes''," you add when Iosif looks confounded for a second, but he quickly nods and holds out the money.'
+		killvar 'wl_temp'
+	else
+		wl_iosif['payment'] = 300
+	end
+	money += wl_iosif['payment']
+	gs 'stat'
+	'You take the money and can''t hide your disdain for him, but Iosif doesn''t seem to care. In his mind he''s winning against Shura. "Do you want to fuck me?" Iosif asks to make sure. You sigh, nod and shoot Shura a warning look when he opens his mouth to say something.'
+	'"You didn''t say it," Iosif interjects. "Do you want to fuck me?" He repeats. This time you turn around to him and fake as much sincerity as you can when you give the only answer possible: Yes!'
+	'Iosif smiles pleased with the turn of events while your mind wanders for a short moment to the question why you said yes. Was it to protect yourself from Iosif wrath? Did you do it for Shura or is it the money? Are you just a whore? After a second goes by you know the answer, you did it...'
+	
+	act 'To protect yourself': gt 'mod_wlife_iosif_sex', 'shura_cuckold_0'
+	act 'For Shura': 
+		if wl_shura['relationship'] < 2: wl_shura['relationship'] += 1
+		gt 'mod_wlife_iosif_sex', 'shura_cuckold_0'
+	end
+	act 'For the money': wl_stats['acceptance'] += 3 & gt 'mod_wlife_iosif_sex', 'shura_cuckold_0'
+end
+
+if $ARGS[0] = 'cuckold_aftermath_0':
+	*clr & cla
+	minut += 2
+	wl_shura['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_alc.jpg"></center>'
+	if wl_shura['status'] < 7:
+		wl_shura['status'] = 7
+		'Shura is sitting next to the curb. His face is partially hidden by his hood and he is drinking small sips from a vodka bottle. "Hi," you greet him, but he doesn''t react even when you step directly in front of him. "Shura?" You ask, but the only reaction you get is him taking another sip from the bottle.'
+		'You have never seen him drinking straight from a bottle of vodka. It was only beer and weed until now. At least as far as you know. "Shura? Everything alright?" You ask again, but he keeps ignoring you.'
+	else
+		'Shura is again sitting next to the curb drinking from a vodka bottle. Like the last time he doesn''t react clearly not wanting to talk.'
+	end
+	
+	act 'Leave': gt 'mod_wlife_warehouse', 'street'
+	
+	act 'Sit with him':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_alc.jpg"></center>'
+		'You sit down close to him without saying another word. You can feel him tense up for a second before he takes another sip of vodka and relaxes again.'
+		*nl
+		'For the next five minutes you sit in silence, but with every passing minute he relaxes more. Every once in a while he looks at you as if to check if you are still there. When the silence grows awkward, which has never really happened before with him, he offers you the bottle. "Want some?"'
+		
+		gs 'willpower', 'drink', 'resist', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Decline (<<will_cost>> Willpower)':
+				wl_temp = 1
+				gs 'willpower', 'pay', 'resist'
+				gt 'mod_wlife_shura', 'cuckold_aftermath_1'
+			end
+		else
+			act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Drink': wl_temp = 0 & gt 'mod_wlife_shura', 'cuckold_aftermath_1'
+	end
+end
+
+if $ARGS[0] = 'cuckold_aftermath_1':
+	*clr & cla
+	minut += 10
+	if wl_temp = 1:
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_alc.jpg"></center>'
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/drinking.jpg"></center>'
+		if wl_shura['status'] < 8: 
+			gs 'drugs', 'alcohol', 'vodka', 1
+		else
+			gs 'drugs', 'alcohol', 'vodka', rand(1,3)
+		end
+	end
+	killvar 'wl_temp'
+	gs 'stat'
+	
+	if wl_shura['status'] < 8:
+		wl_shura['status'] = 8
+		'"You shouldn''t have done it," he finally says and those first words are like a breaking dam. He can''t stop talking now. "I should have never encouraged you to fuck Iosif, but I wanted to win this stupid argument. For once I wanted him to see what a fucked up person he is. That no girl wants to be with him." He takes a deep breath before he continues. "He gave me those scars," he points at the long one on his face. "We got in a fight about a girl we both liked. At least I liked her, he wanted to own her."'
+		'"What happened?" You ask softly.'
+		'"I told him to stay away from her, things escalated quickly and when she tried to intervene, he pushed her and she hit her head on the concrete. I panicked, tried to rush her to the hospital, but I was drunk and got into an accident," he points at his scar again. "I got this, she died. But Iosif got a kick out of it and he tried to mess with girls I liked every time he got the chance."'
+		'"I''m sorry Shura, but why are you still here? Working with him?"'
+		'"The guys who work for me are my family, I have nobody else and I try to stay away from Iosif," he gulps down more vodka.'
+		
+		act 'Continue': 
+			*clr & cla
+			minut += 5
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_alc.jpg"></center>'
+			'"And when he and I... you know... that brought back a lot of memories?" You ask.'
+			'He shrugs. "Not really, I have left that behind me. It''s... OK, to be honest with you. You did the right thing. Never cross Iosif, because Georgiy won''t do shit to protect you unless Iosif does something to you that prevents you from working and Vadim would probably join in on the fun."'
+			'"So what was it that triggered...," you point at the bottle. "This?"'
+			'He shrugs and takes another sip, but the silence gives your brain the chance to connect the dots. Iosif messing with Shura''s girlfriend, trying to own every girl Shura liked after that and now getting to fuck you in front of him. The only conclusion that makes sense is that Shura likes you and that isn''t the first time that you suspected this.'
+			*nl
+			'The silence continues for another few minutes until he gets up. "Just forget what I said," he sighs and looks towards the warehouse. "It''s probably best if I get back to work."'
+			'An idea pops into your head, you could cheer him up in a way you''re really getting good at and it would be a small way to get back at Iosif if you give Shura for free what he had to pay for.'+iif(wl_shura['relationship'] = 2, ' Also it would show him that you like him too.', '')
+			
+			act 'Let him leave':
+				cla & *nl
+				'"Bye," you say and watch him slowly move back inside the warehouse.'
+				
+				act 'Leave': gt 'mod_wlife_warehouse', 'street'	
+			end
+			if wl_shura['relationship'] = 2:
+				act 'Show him that you like him too': gt 'mod_wlife_shura', 'cuckold_aftermath_2'
+			else
+				act 'Cheer him up': gt 'mod_wlife_shura', 'cuckold_aftermath_2'
+			end
+		end		
+	else
+		'You''re quietly drinking with him, but his words about Iosif still echo inside your head and the idea you had to cheer him up also pops back into your mind.'
+
+		act 'Leave': gt 'mod_wlife_warehouse', 'street'	 
+		if wl_shura['relationship'] = 2:
+			act 'Show him that you like him too': gt 'mod_wlife_shura', 'cuckold_aftermath_2'
+		else
+			act 'Cheer him up': gt 'mod_wlife_shura', 'cuckold_aftermath_2'
+		end	
+	end
+end
+
+if $ARGS[0] = 'cuckold_aftermath_2':
+	*clr & cla
+	minut += 2
+	wl_shura['status'] = 9
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/start_walk.mp4"></video></center>'
+	'"Follow me," you say and grab his hand to pull him towards the warehouse. "I can''t let you go like this," you let go of his hand after a few meters and turn around to send him an honest smile. "I''ll know what will cheer you up."'
+	'"<<$pcs_nickname>>, you don''t...," but with one roll of your eyes you silence him. "Don''t tell me what I have or don''t have to do. Let me do this for you, because I want to and not because somebody makes me." He smiles, he really smiles and gives you a happy nod. "OK."'
+	'You turn around and walk to the backside of the building where nobody will see you.'
+	
+	act 'Continue': gt 'mod_wlife_shura_sex', 'outside_first_start'
+end
+
+if $ARGS[0] = 'regular_outside_0':
+	*clr & cla
+	minut += 1
+	wl_shura['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'You walk up to Shura as he''s breathing out the smoke of his joint. "Hi, <<$pcs_nickname>>," he greets you with a hint of a smile.'
+	
+	act 'Hang out with him': gt 'mod_wlife_shura', 'regular_outside_1', 'none'
+	if joint > 0: act 'Smoke a joint': gt 'mod_wlife_shura', 'regular_outside_1', 'joint', 'own'
+	if siga > 0: act 'Smoke a cigarette': gt 'mod_wlife_shura', 'regular_outside_1', 'cigarette', 'own'
+							
+	gs 'willpower', 'drugs', 'force'
+	if will_cost <= pcs_willpwr:
+		act 'Ask for some weed (<<will_cost>> Willpower)': 
+			joint += 1
+			wl_temp = 1
+			gs 'willpower', 'drugs', 'force'
+			gs 'willpower', 'pay', 'force'
+			gt 'mod_wlife_shura', 'regular_outside_1', 'joint', 'ask'
+		end
+	else
+		act 'Ask for some weed (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+							
+	gs 'willpower', 'drugs', 'force', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Ask for a cigarette (<<will_cost>> Willpower)': 
+			siga += 1
+			wl_temp = 1
+			gs 'willpower', 'drugs', 'force', 'easy'
+			gs 'willpower', 'pay', 'force'
+			gt 'mod_wlife_shura', 'regular_outside_1', 'cigarette', 'ask'
+		end
+	else
+		act 'Ask for a cigarette (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'regular_outside_1':
+	*clr & cla
+	minut += 20
+	wl_shura['location'] = 1
+	if $ARGS[1] = 'none':	
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+		'You slump down in the other armchair next to Shura and as always you two don''t talk much. He silently smokes his joint while you enjoy a few minutes of silence. It''s a nice change of pace to be around somebody that demands nothing from you.'
+	elseif $ARGS[1] = 'joint':
+		gs 'mod_wlife_functions', 'weed_check'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking.jpg"></center>'
+		'You slump down in the other armchair next to Shura and as always you two don''t talk much.'+iif(wl_temp = 1, ' You only ask him for some weed and you', ' You')+' silently smoke your joints while you enjoy a few minutes of silence. It''s a nice change of pace to be around somebody that demands nothing from you.'
+	elseif $ARGS[1] = 'cigarette':
+		gs 'drugs', 'smoke'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/smoking.jpg"></center>'
+		'You slump down in the other armchair next to Shura and as always you two don''t talk much.'+iif(wl_temp = 1, ' You only ask him for a cigarette and', ' You')+' smoke'+iif(wl_temp = 1, ' it ', ' your cigarette ')+'next to him as you enjoy a few minutes of silence. It''s a nice change of pace to be around somebody that demands nothing from you.'
+	end
+	killvar 'wl_temp'
+	gs 'stat'
+				
+	act 'Leave': gt 'mod_wlife_warehouse', 'street'
+	
+	gs 'mod_wlife_shura', 'chats'
+	if wl_shura['status'] > 8: gs 'mod_wlife_shura', 'sex'
+end
+
+if $ARGS[0] = 'regular_inside_0':
+	*clr & cla
+	minut += 1
+	wl_shura['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov.jpg"></center>'
+	'Shura is standing outside the warehouse, smoking a cigarette. "Hi, Shura," you greet him.'
+	'"Hi, <<$pcs_nickname>>, I''m about to head back in, the weather sucks," he says and flips the rest of his cigarette onto the ground. "Do you want to come inside?"'
+	
+	act 'Shake your head and leave': gt 'mod_wlife_warehouse', 'street'
+		
+	act 'Follow him inside':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/common_room.jpg"></center>'
+		'Shura slumps down on an old couch that''s in a same bad condition as the rest of the room. You follow his example and sit down next to him as he throws his pack of cigarettes on the table and a bag of weed next to it.'
+		
+		act 'Hang out with him': gt 'mod_wlife_shura', 'regular_inside_1', 'none'
+		if joint > 0: act 'Smoke a joint': gt 'mod_wlife_shura', 'regular_inside_1', 'joint', 'own'
+		if siga > 0: act 'Smoke a cigarette': gt 'mod_wlife_shura', 'regular_inside_1', 'cigarette', 'own'
+							
+		gs 'willpower', 'drugs', 'force'
+		if will_cost <= pcs_willpwr:
+			act 'Ask for some weed (<<will_cost>> Willpower)': 
+				joint += 1
+				gs 'willpower', 'drugs', 'force'
+				gs 'willpower', 'pay', 'force'
+				gt 'mod_wlife_shura', 'regular_inside_1', 'joint', 'ask'
+			end
+		else
+			act 'Ask for some weed (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+							
+		gs 'willpower', 'drugs', 'force', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Ask for a cigarette (<<will_cost>> Willpower)': 
+				siga += 1
+				gs 'willpower', 'drugs', 'force', 'easy'
+				gs 'willpower', 'pay', 'force'
+				gt 'mod_wlife_shura', 'regular_inside_1', 'cigarette', 'ask'
+			end
+		else
+			act 'Ask for a cigarette (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end		
+end
+
+if $ARGS[0] = 'regular_inside_1':
+	*clr & cla
+	minut += 20
+	wl_shura['location'] = 0
+	if $ARGS[1] = 'none':	
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+		'Like always you two don''t talk much. He silently smokes his joint while you enjoy a few minutes of silence. It''s a nice change of pace to be around somebody that demands nothing from you.'
+	elseif $ARGS[1] = 'joint':
+		gs 'mod_wlife_functions', 'weed_check'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking_inside.jpg"></center>'
+		'Like always you two don''t talk much.'+iif(wl_temp = 1, ' You only ask him for some weed and you', ' You')+' silently smoke your joints while you enjoy a few minutes of silence. It''s a nice change of pace to be around somebody that demands nothing from you.'
+	elseif $ARGS[1] = 'cigarette':
+		gs 'drugs', 'smoke'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/smoking.jpg"></center>'
+		'Like always you two don''t talk much.'+iif(wl_temp = 1, ' You only ask him for a cigarette and', ' You')+' smoke'+iif(wl_temp = 1, ' it ', ' your cigarette ')+'next to him as you enjoy a few minutes of silence. It''s a nice change of pace to be around somebody that demands nothing from you.'
+	end
+	killvar 'wl_temp'
+	gs 'stat'
+				
+	act 'Leave': gt 'mod_wlife_warehouse', 'street'
+	
+	gs 'mod_wlife_shura', 'chats'
+	gs 'mod_wlife_shura', 'sex'
+	gs 'mod_wlife_shura', 'chats_forced'
+end
+
+if $ARGS[0] = 'chats':
+	if wl_shura['talk_iosif'] = 0:
+		act 'Ask about Iosif':
+			*clr & cla
+			minut += 2
+			wl_shura['talk_iosif'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+			'"What happened between you and Iosif?" You ask remembering how Shura always touched his scars when he saw Iosif the other, but he only shakes his head. "Nothing really," he says not very convincingly. "I don''t like the way he conducts his business. That''s all." His tone of voice makes clear that this topic is not up for debate and after a few awkward moments he stands up and leaves without saying another word.'
+					
+			act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		end
+	end
+
+	if wl_shura['talk_volya'] = 0 and wl_volya['talk_himself'] = 4:
+		act 'Talk about Volya':
+			*clr & cla
+			minut += 2
+			wl_shura['talk_volya'] = 1
+			wl_volya['talk_himself'] = 5
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+			'"I wanted to ask you something," you say breaking the silence between the two of you. "You probably know that I have to work with Volya," you stop for a moment thinking about the best way to ask the question. It''s best not to give anything away about Volya''s promise to help you.'
+			'"Do you have a problem with him?" He asks you. "Because if you have..."'
+			'"No, no. That''s not it," you automatically reply talking at the same time as him. "Wait... What did you want to say?" He looks confused. "You wanted to say something."'
+			'"It''s fine. Tell me what''s going on with you and Volya," he replies, but you shake your head. You have the feeling that he was about to tell you something important. "That can wait. What did you want to say about having a problem with him?"'
+			'"Hm?" He ponders the question for a moment. "Oh, right... I just wanted to say that Volya is Vadim''s protégé and you should be extra careful around him. If you want to stay on Vadim''s good side, you shouldn''t mess with Volya."'
+			*nl
+			'You sit there for a moment, shocked by this new information. Volya is Vadim''s protégé? What does that mean for you and his promise? Was the story about his fathers gambling debts a lie? How can Volya be the favorite of somebody as brutal as Vadim?'
+						
+			act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		end
+	end
+	
+	if wl_shura['status'] > 8 and wl_homeless['status'] = 1 and wl_shura['talk_homeless'] = 0:
+		act 'Ask about fucking a homeless as punishment':
+			*clr & cla
+			minut += 5
+			wl_shura['talk_homeless'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_leaving_'+iif(wl_shura['location'] = 1, 'outside', 'inside')+'.jpg"></center>'
+			'"Is it true? Is Georgiy forcing girls to fuck the homeless?" you blurt out the question that was burning in your mind since Georgiy made the threat.'+iif(wl_volya['talk_homeless'] = 1, ' "I asked Volya and he said that is it true, but... why does he do this?"', '')+' Shura coughs up the smoke of his joint, when you blindside him with that topic. "What?" he asks between coughs and you repeat to him what Georgiy told you.'
+			iif(wl_volya['talk_homeless'] = 1, ' "And Volya said this was true?"', '')+' He shakes his head. "I can''t believe it. He probably wanted to scare you a bit to keep you in line." You breath out a sigh of relieve. So it isn''t true. That''s great news. "But," he adds and that word is like an ice-cold hand gripping your heart. "I never was involved with that side of the business. I have no idea what Georgiy does with the girls."'
+			'"And if it''s true? What should I do? It''s disgusting. I can''t do that," you rattle on as your mind conjures up horrifying images about you and some hobo in a dirty alley.'
+			'Shura shrugs. "Slap a condom on it, he probably won''t have fucked a nice girl in years so you can finish him off quickly."'
+			'"That''s your advice? Use a condom and fuck the hobo?" you ask not trying to hide your sarcasm. "That''s genius, why didn''t I think of that? You should write a self-help book. Maybe ''Whoring for dummies'' or ''10 tips for fucking hobos - How to stay clean inside and outside''." Most of the other guys would have bashed your head in for that comment, but not Shura. He laughs wholeheartedly. "Those will be bestseller," he says in-between bursts of laughter.'
+			'Annoyed you get up and start to walk away from him. "Come on, what am I suppose to say? The situation is what it is. No reason to sugarcoat it. You either fuck him or... you probably know what Georgiy will do to you if you don''t go through with it," he says. "And with that in mind I prefer you fucking hobos over the alternative."'
+			'"Fuck you, Shura," you say without turning around.'
+			'"Will I see you next week?" he shouts after you. '+iif(wl_shura['relationship'] < 2, '"Maybe,"', '"Probably,"')+' you shout back before leaving.'
+			
+			act 'Continue': gt 'mod_wlife_warehouse', 'street'
+		end
+	end
+end
+
+if $ARGS[0] = 'sex':
+	if (wl_shura['relationship'] * 35 + pcs_horny) > rand(40,80) and wl_shura['timer_bj'] ! daystart:
+		gs 'willpower', 'bj', 'self', iif(wl_shura['relationship'] = 2, 'easy', 'hard')
+		if will_cost <= pcs_willpwr:
+			act 'Ask him to go '+iif(wl_shura['location'] = 0, 'outside', 'behind the warehouse')+' to have some fun (<<will_cost>> Willpower)':
+				*clr & cla
+				minut += 2
+				wl_shura['timer_bj'] = daystart
+				gs 'willpower', 'pay', 'self'
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+				'"Come on let''s go," you say and stand up.'
+				'He looks up at you with red eyes from the weed. "What? Where?"'
+				'You roll your eyes and grab his hand. "'+iif(wl_shura['location'] = 0, 'Outside', 'Behind the warehouse')+'," you explain, take his empty hand and help him up.'
+				
+				act 'Get on your knees': gt 'mod_wlife_shura_sex', 'set1_start'
+			end
+		else
+			act 'Ask him to go '+iif(wl_shura['location'] = 0, 'outside', 'behind the warehouse')+' to have some fun (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+
+	if rand(0,2) = 2 and wl_shura['timer_bj'] ! daystart: gs 'mod_wlife_shura', 'ask_bj'
+end
+
+if $ARGS[0] = 'chats_forced':
+	if wl_shura['status'] > 8 and wl_iosif['status'] > 5 and wl_shura['talk_iosif'] < 2:
+		*clr & cla
+		minut += 5
+		wl_shura['status'] = 10
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+		'"Iosif told me that he''s fucking you regularly," Shura says nonchalantly as if he''s talking about the weather. If you didn''t know him, you would think that he doesn''t care, but there are a lot of small clues you have learned to recognize that tell you a different story. He does care, immensely so. The indifference and tough guy persona is all an act. He likes you, you''re sure of it and Iosif fucking you doesn''t play well with him.'
+		'"He forces me to visit him," you reply and accompany that with perfect imitation of one of his shrugs. "Nothing I can do about it."'
+		'"What do you mean by ''forces''?" Shura asks and for the first time he shows a bit of anger. "He doesn''t pay? He can''t do that. If Georgiy finds out, he''ll be furious."'
+		'"No Shura, he pays. That isn''t the problem, but I can''t refuse him," you explain '+iif(wl_shura['relationship'] = 2, 'and for a moment you touch his hand with yours to give it a reassuring squeeze.', 'indifferent to his feelings.')
+		'"Sorry to hear that. I hope at least the money and sex are good," he says still sounding hurt.'
+				
+		act 'Let it slide': 
+			cla & *nl
+			minut += 5
+			wl_stats['respect'] -= 1
+			wl_shura['talk_iosif'] = 2
+			gs 'stat'
+			'You sigh and take a deep breath. Both of you spend a few minutes in silence in which he looks at you stony-faced before he finally turns his head away from you. But he isn''t looking away to ignore you. He definitely is avoiding your eyes because he''s ashamed about what he said. You could leave and let him think about what you said or remind him that he doesn''t have to pay you unlike Iosif.'
+			
+			act 'Say goodbye and leave': gt 'mod_wlife_warehouse', 'street'
+			
+			gs 'willpower', 'bj', 'self', iif(wl_shura['relationship'] = 2, 'easy', 'hard')
+			if will_cost <= pcs_willpwr:
+				act 'Blow him (<<will_cost>> Willpower)':
+					cla & *nl
+					minut += 3
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'"Come let''s go," you say. "I think you need a reminder that Iosif has to pay and you don''t," you explain and walk a few feet away. "Let''s go Shura." You repeat and continue walking and don''t have to look back to know that he''s following you.'
+					
+					act 'Lead him '+iif(wl_shura['location'] = 0, 'outside', 'behind the warehouse')+'':
+						wl_shura['topic_iosif_bj'] = 1
+						gt 'mod_wlife_shura_sex', 'set2_start'
+					end
+				end
+			else
+				act 'Blow him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+		
+		act 'Get angry':
+			cla & *nl
+			minut += 3
+			wl_stats['respect'] += 2
+			wl_shura['talk_iosif'] = 3
+			gs 'stat'
+			'"How about you don''t say idiotic stuff like this," you shout and jump up. "Your boss made it my job to fuck guys for money and yeah I can normally refuse, but not with Iosif. You know that." He opens his mouth, but you don''t give him a chance to respond. "And yes you two have a history and yes you don''t want me to be near him, but comments like this don''t improve the situation for me. You always tell me that you don''t give a shit about anything. So either you listen to your own advise or be a bit more understanding." You stop your tirade to take a breath and if looks could kill, yours would incinerate Shura in a heartbeat. He looks at you stony-faced, shrugs before turning his head away from you. But he isn''t avoiding your eyes to ignore you. He definitely is looking away because he''s ashamed about what he said. Your anger dissipates. Did you go to far? Iosif is a difficult topic for him. You could leave and let him think about what you said or remind him that he doesn''t have to pay you unlike Iosif.'
+			
+			act 'Shake your head and leave': gt 'mod_wlife_warehouse', 'street'
+			
+			gs 'willpower', 'bj', 'self', iif(wl_shura['relationship'] = 2, 'easy', 'hard')
+			if will_cost <= pcs_willpwr:
+				act 'Blow him (<<will_cost>> Willpower)':
+					cla & *nl
+					minut += 3
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'"Get up," you order him. His head turns back in your direction. "What?"'
+					'"I think you need a reminder that Iosif has to pay and you don''t," you explain and walk a few feet away. "Let''s go Shura." You continue walking and don''t have to look back to know that he''s following you.'
+					
+					act 'Lead him '+iif(wl_shura['location'] = 0, 'outside', 'behind the warehouse')+'': 
+						wl_shura['topic_iosif_bj'] = 1
+						gt 'mod_wlife_shura_sex', 'set2_start'
+					end
+				end
+			else
+				act 'Blow him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	elseif wl_shura['talk_tattoo'] = 1:
+		*clr & cla
+		minut += 10
+		wl_shura['talk_tattoo'] = 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint1.jpg"></center>'
+		iif($wl_brand['text_pubic'] = 'cumslut', '"So, you are a cumslut?"', '"So, who owns you?"')+' he asks. "I saw your tattoo."'
+		'You shake your head. "Do you really believe I would get a tattoo like this? Iosif made me do it. I had no choice." He sighs and takes a long drag on his joint. His eyes close as he breathes out the smoke and when he speaks he sounds calmer than you would have expected. "I suspected as much. He''s still harassing you?" You nod. "I had hoped, he would have stopped by now. He normally loses interest in one of his playthings very quickly."'
+		'"So... I''m special?" you ask sarcastically. "That''s so awesome."'
+		'"You know my response to that. If you don''t like what''s happening, do something that makes you feel better about it." He takes another long drag on his joint to prove his point.'
+		'"Wouldn''t it be more logical to try to change the situation?"'
+		'"Yeah, maybe you can go to HR an file a complain about it." He suggest ironically. "Let''s be honest. It''s not worth it. Iosif will lose interest at some point. I''m sure of it. Until then it''s better to get a dick stabbed in your pussy than a knife into your heart."'
+		
+		act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		
+		gs 'willpower', 'drink', 'self', iif(addictive_trait_lvl > 0, 'easy', 'medium')
+		if will_cost <= pcs_willpwr and wl_shura['talk_drugs'] = 0:
+			act 'Ask for something to make you feel better (<<will_cost>> Willpower)':
+				*clr & cla
+				minut += 5
+				wl_shura['talk_drugs'] = 1
+				gs 'willpower', 'pay', 'self'
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+				'"Do you have something? Something that will make me feel better?" you ask him casually, but your questions seems to surprise him. He coughs up smoke and looks at you with wide open eyes. "Of course, but no <<$pcs_nickname>>. There''s a difference between making yourself feel better and fucking yourself up."'
+				'"What are you talking about? I meant'+iif(joint_smoked > 0, ' a joint or maybe ', ' ')+'something to drink."'
+				'He lets out a sigh of relief. "Sorry, I thought you''re asking for harder stuff like heroin or cocaine."'
+				'For a second you''re speechless. Heroin? Cocaine? So they are selling the more dangerous stuff as well. You had wondered for awhile now if this was the case. "Do you take stuff like that?"'
+				'He only gives you a non-committal shrug. "I have some beer if you want one?" He says instead of answering your question. That probably means the answer is yes.'
+								
+				act 'Drink with him before leaving':
+					minut += rand(45,90)
+					gs 'drugs', 'alcohol', 'beer', 3
+					gt 'mod_wlife_warehouse', 'street'
+				end					
+			end
+		elseif will_cost > pcs_willpwr and wl_shura['talk_drugs'] = 0:
+			act 'Ask for something to make you feel better (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	end
+end
+
+if $ARGS[0] = 'ask_bj':
+	*clr & cla
+	minut += 2
+	wl_shura['timer_bj'] = daystart
+	gs 'stat'
+	gs 'willpower', 'bj', 'resist'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_joint2.jpg"></center>'
+	'"Are you up for some fun?" The question comes out of the blue and is the first thing he says after a long period of silence. He seems a lot more confident around you since you sucked him off behind the warehouse.'
+	
+	gs 'willpower', 'bj', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Shake your head (<<will_cost>> Willpower)':
+			cla & *nl
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'"Sorry Shura, I''m not in the mood." You say and shake your head. "Rain check?"'
+			'He looks disappointed for a second before the expression is replaced with his usual cool indifference. "Yeah, sure. No problem."'			
+			
+			act 'Continue to hang out with him':
+				if wl_shura['location'] = 0:
+					gt 'mod_wlife_shura', 'regular_inside_1', 'none'
+				else
+					gt 'mod_wlife_shura', 'regular_outside_1', 'none'
+				end
+			end
+		end
+	else
+		act 'Shake your head (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Go with him '+iif(wl_shura['location'] = 0, 'outside', 'behind the warehouse')+'': gt 'mod_wlife_shura_sex', 'set2_start'	
+end
+
+if $ARGS[0] = 'party_0':
+	*clr & cla
+	minut += 4
+	wl_shura['party_timer'] = 0
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_alc.jpg"></center>'
+	if wl_shura['party_check'] = 0:
+		wl_shura['party_check'] = 1
+		'Not again, you think, when you see Shura sitting next to the curb. He''s drinking vodka straight from the bottle again. But when you get closer, you realize that he''s actually in a very good mood. "Hi <<$pcs_nickname>>, I was hoping, you would come by today."'
+		'You throw him a mocking look. "You? Hoping for something?" you tease him, but he only responds with his signature move. A shrug. "A friend of mine throws a party tonight at his house. Want to go with me?" He asks before taking another sip from the bottle. A party? Is that such a good idea? You ask yourself.'+iif(kanikuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0, ' Tomorrow is a school day'+iif(curr_home = 1, ' and your mother is going to kill you, when you''re home late.', '.'), iif(curr_home = 1, ' Your mother is going to kill you, when you''re home late.', ''))+' But he waited here all evening to ask you. He could have just gone to the party without you. Still, you need a bit more information, before you can make a decision. "What kind of party?"'
+		'"Drinking, smoking weed, music, all the usual stuff. Nothing crazy."'
+	else
+		'"A friend of mine throws a party tonight at his house again. Want to go with me this time?" He asks before taking another sip from the bottle. "We are going to drink a bit, smoke some weed, music, all the usual stuff. Nothing crazy."'	
+	end
+	
+	gs 'willpower', 'misc', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Refuse (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 2
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_leaving_outside.jpg"></center>'
+			'You shake your head. "Sorry Shura, I can''t go today'+iif(kanikuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0, ' I have school tomorrow'+iif(curr_home = 1, ' and my mother is going to kill me, when I''m home late.', ''), ' '+iif(curr_home = 1, 'My mother is going to kill me, when I''m home late.', '.'))+'" you reply.'
+			'He shrugs. "Sure, I understand." He looks a bit disappointed, but this is huge for somebody who normally doesn''t show any emotion. "You have better things to do. I get it."'
+						
+			act 'Leave': minut += 2 & gt 'mod_wlife_warehouse', 'street'
+			
+			gs 'willpower', 'misc', 'self', 'easy'
+			if will_cost <= pcs_willpwr:
+				act 'Change your mind (<<will_cost>> Willpower)':
+					gs 'willpower', 'pay', 'self'
+					gt 'mod_wlife_shura', 'party_1'
+				end
+			else
+				act 'Change your mind (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end			
+		end
+	else
+		act 'Refuse (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+
+	act 'Go with him': gt 'mod_wlife_shura', 'party_1'
+end
+
+if $ARGS[0] = 'party_1':
+	*clr & cla
+	minut += 3
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_walk.jpg"></center>'
+	'"Ok, why not. I''m coming with you," you say. It could be a nice distraction from all the stuff you have to deal with.'
+	'"Great, let''s go. It will take us a few minutes to get there," he says as he starts to walk towards the residential area. "My friend lives near the park."'
+	'"Does he work for the Belys too?" you ask.'
+	'He rolls his eyes and shakes his head. "No, I don''t hang out with them often. Sacha will be there as my man in Pavlovsk, but I see the rest of the guys enough during the day. Don''t get me wrong, my crew is great, but I sometimes need to get away from them. You know what I mean?" You nod emphatically. Yes, you definitely know what he means.'
+	'"So, tonight I''m <<$wl_names[''first'']>> and not <<$pcs_nickname>>?" He shakes his head. "What? No, you don''t have to hide who you are. This evening is to forget all this shit and relax. Here take some," he holds out the vodka bottle to you.'
+		
+	gs 'willpower', 'drink', 'resist', 'hard'
+	if will_cost <= pcs_willpwr and wl_shura['party_check'] < 2:
+		act 'Decline (<<will_cost>> Willpower)':
+			cla & *nl
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'"No thanks," you reply shaking your head. "Come on <<$pcs_nickname>>. Let''s have some fun tonight. We are going to get drunk. We are going to get high. And we are going to not give a shit about anything or anyone. As I said the first time we talked to each other. You have to learn to make yourself feel good. The world doesn''t care about you and me. So take care of yourself! Have a drink and relax," he says trying to encourage you to let loose.'
+			
+			gs 'willpower', 'drink', 'resist', 'hard'
+			if will_cost <= pcs_willpwr:
+				act 'Decline again (<<will_cost>> Willpower)':
+					cla & *nl
+					wl_shura['party_check'] = 2
+					wl_stats['respect'] += 5
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'"Shura, I said no and when I say no I mean it," you reply angrily. "I can make my own decisions... if people let me. I don''t need you telling me what to do or forcing me to do stuff I don''t want. Believe me, I have enough of that in my life."'
+					'"I''m only trying to help you. Don''t equate me with guys like Iosif," he says getting angry as well. "If you don''t want to have a nice evening. Fine, fuck it. Have it your way," he says walking away.'
+					
+					act 'Let him go': gt 'pav_industrial'
+				end
+			else
+				act 'Decline again (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Take the bottle': wl_temp = 1 & gt 'mod_wlife_shura', 'party_2'
+		end
+	elseif will_cost > pcs_willpwr and wl_shura['party_check'] < 2:
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Take the bottle': wl_temp = 0 & gt 'mod_wlife_shura', 'party_2'
+end
+
+if $ARGS[0] = 'party_2':
+	*clr & cla
+	minut += 5
+	wl_shura['party'] = 1
+	gs 'drugs', 'alcohol', 'vodka', 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/shura_azarov_walk.jpg"></center>'
+	'"Thanks," you say after taking a sip from the bottle. The cheap booze tastes horrible and burns in your throat. "Can''t you afford better stuff than this?" you ask looking at the label on the bottle.'
+	'"Yeah, but today is about quantity not quality," he explains as he signals you with a gesture to take another sip and you do.'
+	if wl_temp = 0:	'"Let''s have some fun tonight. We are going to get drunk. We are going to get high. And we are going to not give a shit about anything or anyone. As I said the first time we talked to each other. You have to learn to make yourself feel good. The world doesn''t care about you and me. So take care of yourself! Have a drink and relax," he says trying to encourage you to let loose.'
+	'He''s absolutely right, you think and take a big gulp and another and another. "Yeah, that''s what I''m talking about," Shura shouts and takes a big gulp himself, when you hand him the bottle back. "There''s only thing left to do to get ready."'
+	'"Discuss what we wear and doing our make-up together?" you joke. Shura nearly drops the bottle as laughter explodes from his body. Still laughing he shakes his head and pulls out two joints out of the breast-pocket of his shirt.'
+	
+	killvar 'wl_temp'
+		
+	gs 'willpower', 'drugs', 'resist', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Decline and go to the party (<<will_cost>> Willpower)':
+			gs 'willpower', 'drugs', 'resist', 'hard'
+			gs 'willpower', 'pay', 'resist'
+			gt 'mod_wlife_shura', 'party_3'
+		end
+	else
+		act 'Decline and go to the party (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Take the joint':
+		*clr & cla
+		minut += 5
+		pcs_mood = 100
+		wl_shura['party_joint'] = 1
+		joint += 1
+		gs 'mod_wlife_functions', 'weed_check'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking_walk.jpg"></center>'
+		'You take one of the joints and don''t hesitate to light it. It only takes a few drags before you''re starting to feel the relaxing effects. "I love this feeling," Shura says. "Makes you forget all the shit."'
+		'"Yeah, this is so much better than worrying about stuff," you agree wholeheartedly. "Live should always be like this," you say as the booze starts to take effect as well.'
+		'"Mine is," Shura replies. You know it isn''t true, but in this moment you want to believe him.'
+		
+		act 'Arrive at the party': gt 'mod_wlife_shura', 'party_3'
+	end
+end
+
+if $ARGS[0] = 'party_3':
+	*clr & cla
+	minut += 25
+	gs 'drugs', 'alcohol', 'beer', 1
+	gs 'stat'
+	'<center><video autoplay src="mod/wlife/images/sex/shura/party/arrival.mp4"></video></center>'
+	'It''s not hard to guess, in which house the party is happening. The door is open, music blares into the night and a dozen or more people stand outside drinking and chatting. "Shura!" A good looking guy shouts, when you enter the house. He''s about the same age as Shura and they embrace each other in a tight hug. "Dude, you made it. Nice! I thought you maybe wouldn''t show up," he says as Shura fist-bums the other guys standing near by.'
+	'"Yeah, I had to wait for my friend to show up," he explains and all eyes shift to you. "Guys meet <<$pcs_nickname>>, <<$pcs_nickname>> meet the guys."'
+	'"Oh that''s the famous <<$pcs_nickname>>," Shura''s friend says with a huge grin as he hands you and Shura a beer.'
+	'You throw Shura a questioning look. The other guys laugh and Shura''s friend puts his arm around your shoulder and leans in close as if what he''s about to tell you a state secret. "No, not him," he turns you around and you come face to face with Sacha. "This guy mentioned you every day in the last few weeks," he changes his tone as he starts to imitate Sacha''s voice. "She''s way to nice for this world.... She''s so pretty...."'
+	'"Shut up Grigory," Sacha says annoyed and maybe even a bit embarrassed while his friends laugh their asses off.'
+	'"OK, OK ... don''t bite my head of Sacha." Grigory says and pulls his arm away. "You hear that boys, enough teasing. Let''s get to the good part.... drinking!" They all cheer and follow him into the kitchen, leaving you and Sacha alone for a moment.'
+
+	act 'Chat with Sacha':
+		*clr & cla
+		minut += 15
+		wl_sacha['status'] = 3
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+		'"So... I''m pretty?" you tease him trying and failing to stop your huge grin from appearing on your face. The alcohol has dissolved the awkward tension that hung between you since you gave him a blowjob in the park.'
+		'He rolls his eyes, but can''t stop a smile from blooming on his lips. "Yes you are <<$pcs_nickname>>," he says with a mix of honesty and mockery. You can feel your already heated cheeks turn red, which makes him blush as well.'
+		'"Look at me," you say after checking that nobody else is in earshot. "Blushing like an awkward teenager." You can see the understanding growing on his face by the second as it dawns on him what you really mean. It''s ridiculous for a whore like you to blush over something mundane like this. You take a sip of beer and he follows your example to fill the awkward silence.'
+		'"You alright?" he simply asks after a minute and it stuns you for a moment. He doesn''t mean if you''re able to do your job. That''s something Volya would ask and Shura would only tell you to get high or drunk or both. He only wants to know how you feel.'
+		
+		act 'No'+iif(wl_stats['acceptance'] < 60, ' (truth)', ' (lie)')+' ':
+			*clr & cla
+			minut += 10
+			$wl_sacha['status'] = 'no'
+			wl_stats['acceptance'] += iif(wl_stats['acceptance'] < 60, -2, -1)
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+			'"No," you reply gently'+iif(wl_stats['acceptance'] < 60, ' and honestly. Even after all the things that happened to you and you did for the Belys, you never fully accepted your new life.', ', but it isn''t the truth. After all the things that happened to you and you did for the Belys, you have accepted, this is your new life.') 
+		
+			gs 'mod_wlife_shura', 'party_4'
+		end
+		
+		act 'Yes'+iif(wl_stats['acceptance'] < 60, ' (lie)', ' (truth)')+' ':
+			*clr & cla
+			minut += 10
+			$wl_sacha['status'] = 'yes'
+			wl_stats['acceptance'] += iif(wl_stats['acceptance'] < 60, 2, 1)
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/sacha.jpg"></center>'
+			'"Yes," you reply gently'+iif(wl_stats['acceptance'] < 60, ', but it isn''t the truth. Even after all the things that happened to you and you did for the Belys, you never fully accepted your new life.', ' and honestly. After all the things that happened to you and you did for the Belys, you have accepted, this is your new life.')
+		
+			gs 'mod_wlife_shura', 'party_4'
+		end
+	end
+end
+
+if $ARGS[0] = 'party_4':
+	'"<<$pcs_nickname>>, Sacha," Shura shouts into the living room. "Come on get your asses into the kitchen." You instinctively walk towards the door. Obedience to the gang is becoming ingrained in your dna. But Sacha grabs your arm to stop you for a second. "If you ever want to talk, you can talk to me. You know that, right?"'
+	'You nod. "Thanks," you say, before you go into the kitchen.'
+	*nl
+	'The alcohol keeps flowing as you wander the party having small talk with random people, hang out with Shura'+iif(wl_shura['party_joint'] = 1, ', have another joint ', ' ')+'or listen to the music. At some point the alcohol really kicks in and the only thing you can do is to...'
+				
+	act '... try to keep it together':
+		*clr & cla
+		minut += 210
+		pcs_hydra = 100
+		pcs_mood = 100
+		pcs_energy += iif(pcs_energy < 20, 40, 20)
+		gs 'drugs', 'alcohol', 'beer', 3
+		gs 'drugs', 'alcohol', 'vodka', 1
+		if wl_shura['party_joint'] = 1: joint += 1 & gs 'mod_wlife_functions', 'weed_check'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/sex/shura/party/flash.jpg"></center>'
+		'The world is spinning. Why can''t it stop spinning, you complain inside your head. Even sitting down doesn''t help and you nearly spill your drink, when another girl flops down next to you.'
+		'You sit there for what seems like an eternity until you realize something. Somebody is talking to you. You try to focus your attention on where the voice is coming from. First, you look down into the plastic cup in your hand. Can vodka talk? You look closer. No, it can''t. It''s coming from somewhere else, but wait... when did you switch back to vodka? You only remember the beer Shura''s friend gave you.'
+		'"Up here <<$pcs_nickname>>," the voice says louder. Your lift your head, but your eyes take a second to focus on the guy in front of you. It''s Shura. "What''s going on here?" he asks sounding amused and confused at the same time.'
+		'"I''m drinking," you reply heavily slurring your words. Shura points to the girl next to you. "What?" you ask. He points again.'
+				
+		act 'Turn your head':
+			*clr & cla
+			gs 'arousal', 'voyeur', 5
+			gs 'arousal', 'end'
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/sex/shura/party/flash.mp4"></video></center>'
+			'It takes you a few seconds before your brain can process the information. Her eyes are closed, head tilted back, mouth open... oh... your eyes shift downwards and you can see her shoving two fingers furiously into her pussy while the other hand rubs her clit. Her orgasm is close judging from the moans that escape her lips.'
+			'"She''s mas... mastu...," the word is too hard and you giggle instead while your eyes stare down at her wet sex.'
+			'"Yeah I know." Shura takes your hand and pulls you upwards away from the girl. "Let her have her fun. Grigory is making cocktails, moscow mule. Do you want one?"'
+			'"Sure," you reply heavily slurring your words, but Shura doesn''t seem to care that you''re already way to drunk. You follow him out of the living room towards the kitchen where the cocktail is waiting for you...'
+					
+			act '.......':
+				*clr & cla
+				minut += 60
+				$orgasm_or = 'no'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/sex/shura/party/blurry.jpg"></center>'
+				'What... what''s going on... something is wrong? Or does it feel right? You don''t really know. It''s hard to think. You feel weird... good and bad at the same time. Your stomach seems to have gone into open revolt while at the same time there is something else, something familiar.'
+				'"Yeah, that''s hot," you hear somebody say and your eyes open for a second, but you can only make out blurry shapes and the bright light hurts your eyes. Instead you listen to your body to identify the familiar sensation.'
+											
+				gs 'arousal', 'vaginal_finger', -5, 'prostitution'
+				gs 'arousal', 'cuni', -5, 'prostitution'
+				gs 'stat'
+						
+				act '.......': gt 'mod_wlife_shura_sex', 'party'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'party_morning':
+	*clr & cla
+	minut += rand(240,300)
+	if hour < 9: hour = 9
+	pcs_sleep += 20
+	gs 'pain', 10, 'head', 'ache'
+	wl_sacha['talk_party'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/sex/shura/party/wake_up.jpg"></center>'
+	'Your mouth tastes like somebody emptied a trash can inside, your stomach hurts and a piercing headache awaits you, when you wake up hours later. "Shit," you groan. What happened? There is a big giant hole between arriving at the party and waking up naked... Naked? You squint, when you open your eyes, to confirm what your body is already telling you. You''re naked. "What''s going on?" you murmur blinking several times to help your eyes get used to the bright sunlight that floods into the room.'
+	if (kanikuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0) or curr_home = 1: 'Sunlight means it''s the next day.'+iif(kanikuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0, ' Did you miss school?','')+iif(curr_home = 1, ' Your mom is going to kill you.','')
+	'You first have to assess your situation, before you can decide, what to do next. Carefully you open your eyes fully and take in your surroundings. Your lying inside a bedroom, you have never seen before. You or somebody else made a makeshift bed out of pillows for you on the floor and put a thin blanket over your naked body. Your clothes are lying on the floor next to you and on top of the little pile sits your phone.'
+	
+	act 'Check it':
+		*clr & cla
+		minut += 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+		'The first thing you check is the time... '+iif(hour < 10, '0<<hour>>:', '<<hour>>:')+iif(minut < 10, '0<<minut>>.', '<<minut>>.')+iif(kanikuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0, 'Damn, you should be in school right now.', '')
+		'The next item on your list to check are your messages. You have '+iif(curr_home = 1, '6, but they''re all from your mother. Not a single one is from Shura.', '0. Not a single one. Not even one from Shura checking up on you.') 
+		
+		if curr_home = 1:
+			act 'Open the last message from your mother':
+				*clr & cla
+				minut += 2
+				npc_rel['A29'] += 10
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+				'<i><<$pcs_nickname>> I''m sorry about what I wrote earlier. I''m just really worried. Could you please send me a message that you''re OK? Please!</i>'
+				'You quickly type a response: <i>Sorry!!! Everything is fine! I was at a friends and my phone died. I couldn''t charge it and I didn''t want to go home so late at night.'+iif(kanikuli = 0 and SchoolAtestat = 0 and SchoolBlock = 0, ' I''m at school now and finally found a moment to charge. ', ' ')+'Again, I''m really really sorry. Won''t happen again. I promise!</i>'
+				'It takes your mother only a few seconds to reply: <i>Thank god. Don''t worry about it. I''m just glad you''re alright and everything is OK. Love you!</i>'
+				
+				act 'Get dressed': gs 'mod_wlife_shura', 'party_leave' 
+			end
+		else
+			act 'Get dressed': gs 'mod_wlife_shura', 'party_leave'
+		end
+	end
+end
+
+if $ARGS[0] = 'party_leave':
+	*clr & cla
+	minut += 10
+	money += 3000
+	wl_shura['status'] = 11
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/sex/shura/party/creampie.jpg"></center>'
+	'Sitting up only intensifies your headache and you don''t want to imagine how it''s going to hurt, when you''re standing up, but you have to get ready. You don''t want to spend a minute more than necessary in this house. Slowly you get dressed, putting on one piece of clothing at a time, when something catches your eye. The entrance to your pussy is covered in... you lean forward to take a closer look. Yeah, it''s cum. Fuck, you had sex last night and don''t remember a thing. Who did you sleep with? Shura? His friend, what was his name? G...? G-something? You try to remember it, but there''s still nothing. Except one thing comes back to you. Wasn''t Sacha there as well? You could ask him, who you slept with, because you doubt it was him. There''s no way that somebody like him would fuck you in your condition. He can''t have changed so much... or could he?'
+	*nl
+	'After a few minutes you''re finally ready to leave, but you quickly check your belongings if you didn''t forget something and nothing is missing. Everything seems where it''s suppose to be, but when you check one of your pockets you find 3,000 <b>₽</b>. You aren''t really sure, but the money wasn''t there, when you went to the party.'
+	'There is money in your pocket and cum in your pussy... Did you sell yourself during a private party?'
+
+	act 'Leave': minut += 5 & gt 'pav_residential'
+end
+	
+
+--- mod_wlife_shura ---------------------------------			
+
+

+ 355 - 0
locations/mod_wlife_shura_sex.qsrc

@@ -0,0 +1,355 @@
+# mod_wlife_shura_sex
+
+!!------ First blowjob ------
+
+if $ARGS[0] = 'outside_first_start':
+	*clr & cla
+	minut += 2
+	cumnostd = 1
+	gs 'boystat', 'A903'
+	gs 'arousal', 'bj', -4
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/bj_start.mp4"></video></center>'
+	'"Nobody will see us here," you say and without further ado drop down to your knees in front of him and unbuckle his belt.'
+	'"I don''t care," he replies, but when he takes a look around regardless of what he just said you know Iosif and what happened inside the warehouse are still on his mind. This is about to change when you pull down his pants and lick the tip of his cock before taking the head into your mouth.'
+	
+	act 'Give him a blowjob':
+		*clr & cla
+		minut += 2
+		gs 'arousal', 'bj', -4, 'deepthroat'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/bj_1.mp4"></video></center>'
+		'A few seconds of your talented tongue around his dick has made Shura stop to look over his shoulder. Instead he has closed his eyes and a blissful smile has tilted the corners of his mouth upwards. He clearly enjoys what you''re doing.'
+		'He whispers something so quietly that you can''t make out what it was. You stop for a moment and use your hand on his saliva covered cock instead of your mouth to ask him what he said. He opens his eyes and looks directly into yours. "You didn''t have to do that." His tone of voice makes clear that he didn''t mean it in a appreciating kind of way, instead it''s a cold, hard fact. You did it willingly. You weren''t payed or coerced and you get the feeling that means more to him than your head bobbing up and down on his shaft.'
+		'"Yes, I didn''t have to," you confirm before you move your mouth back to his member and take it down your throat as deep as you can.'
+		
+		act 'Continue and make him cum':
+			*clr & cla
+			minut += 10
+			swallow += 1
+			pcs_mood += 10
+			if wl_shura['relationship'] = 2: wl_shura['status'] = 10
+			gs 'cum_call', 'mouth', 'A903', 1
+			gs 'arousal', 'bj', 2
+			gs 'arousal', 'end'
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/bj_end_0.mp4"></video></center>'
+			'"I''m close," he warns you. You seal your lips around his cocks head, he grabs his shaft and after a few strokes you can taste his seed inside your mouth. You quickly swallow it down and give the tip a tender lick before releasing it from your warm mouth.'
+			'"Thanks," he says sounding really grateful. You really made his day and that lifts your spirit a bit too. The two of you go back and chill outside for a few minutes before he has to go and you leave as well.'
+			
+			act 'Continue': gt 'mod_wlife_warehouse', 'street'
+		end
+	end
+end
+
+!!------ Outside: Sex ------
+
+if $ARGS[0] = 'set1_start':
+	*clr & cla
+	minut += 1
+	cumnostd = 1
+	$orgasm_or = 'no'
+	gs 'boystat', 'A903'
+	gs 'arousal', 'bj', -4
+	gs 'arousal', 'foreplay', -4
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/bj_start.mp4"></video></center>'
+	'You drop down to your knees and greedily pull down his pants. His cock immediately jumps into action and without any second thought you suck it into your mouth.'
+	'He closes his eyes and concentrates on how your wet mouth feels around his cock as your own fingers move down to your crotch and below your clothes to play with your clit.'
+	
+	act 'Get both of you ready':
+		*clr & cla
+		minut += 2
+		gs 'arousal', 'bj', -4
+		gs 'arousal', 'foreplay', -4
+		gs 'stat'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/bj_'+rand(0,5)+'.mp4"></video></center>'
+		'Your fingers dance around your clit while your tongue does the same with the tip of his cock. Meanwhile his fingers move softly through your hair'+iif(wl_shura['relationship'] < 2, ' which is way to intimate for you.', ' which is a way more intimate gesture than you would have expected from him.')+' You take his cock out of your mouth and get back on your feet. "How about we move on from the foreplay to the real deal," you suggest. '+iif(rand(0,1) = 0, '"Gladly,"', '"I thought you would never ask,"')+' he replies.'
+		
+		act 'Turn around':
+			*clr & cla
+			gs 'arousal', 'foreplay', 2
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/pussy_start.mp4"></video></center>'
+			'You turn around and bend forward while his fingers move away all annoying layers of clothing that have shielded your pussy from him. "Put it in," you say, but he has something else in mind. He takes this moment to tease you a bit. You can feel his cock moving up and down between your'+iif(pcs_horny > 60, ' wet ', ' ')+'pussy lips and a enjoyable shiver runs up your spine.'
+			
+			act 'Move your hips':
+				*clr & cla
+				gs 'arousal', 'foreplay', 2
+				gs 'arousal', 'vaginal', -6
+				gs 'stat'
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/pussy_'+rand(1,4)+'.mp4"></video></center>'
+				'You instinctivly move your hips back a bit when his cock is directly in front of your hole and the tip slips in. You let out a low moan and he starts slow with arousing long pushes up inside your cunt. One of his hands grabs your assflesh while the other teases you clit with slow circular motions, coming close but never touching it directly. "Your pussy feels great," he compliments you as he keeps the pace slow for the moment.'
+				'"Please, touch it," you whimper between moans and the urge to touch the sensitive button yourself grows by the second. Only a few seconds later you suddenly get your wish, but not in the way you have suspected. He flicks your clit with one finger and the low pain and the sudden stimulation let your pussy quiver around his dick. This is the moment he puts both his hands on your hips and hammers his meat inside you.'
+				
+				act 'Get thoroughly fucked':
+					*clr & cla
+					if $wl_brand['text_pubic'] ! '' and wl_shura['talk_tattoo'] = 0: wl_shura['talk_tattoo'] = 1
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/pussy_'+rand(1,4)+'.mp4"></video></center>'
+					$orgasm_txt = 'For the next few minutes your mind goes blank and your pussy and his dick seem to be the only things that exist in this world. He never relents until a mind shattering orgasm wipes all concious thought away. But he doesn''t stop and after the first a second orgasm follows quickly or is it one long one? You can''t really say.'					
+					$orgasm_or = 'custom'
+					gs 'arousal', 'vaginal', 6
+					gs 'arousal', 'end'
+					gs 'stat'
+					
+					act '...':
+						*clr & cla
+						minut += 2
+						swallow += 1
+						gs 'cum_call', 'mouth', 'A903', 1
+						gs 'stat'
+						'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_1/pussy_end.mp4"></video></center>'
+						'Your mind returns when he pulls out and grabs you by the shoulder to force you to turn around. You go by instinct when you see his cock in front of you. In an instant it''s inside your mouth and the taste of his precum and your own pussy juices hit your tongue before it''s replaced by the strong taste of his cum as his cock twitches and releases several thick spurts of it inside you.'
+						*nl
+						'"We have to repeat that," you say exhausted and your legs still feel a little bit shaky from your orgasm.'
+						'"Most definitely," he grins while both of you readjust your clothes.'
+						
+						act 'Tell him you have to go': gt 'mod_wlife_warehouse', 'street'
+
+						act 'Go back '+iif(wl_shura['location'] = 0, 'inside', 'to the armchairs')+'':
+							if wl_shura['location'] = 0:
+								gt 'mod_wlife_shura', 'regular_inside_1', 'none'
+							else
+								gt 'mod_wlife_shura', 'regular_outside_1', 'none'
+							end
+						end
+					end
+				end
+			end
+		end
+	end
+end
+
+!!------ Outside: Blowjob ------
+
+if $ARGS[0] = 'set2_start':
+	*clr & cla
+	wl_temp = 0
+	cumnostd = 1
+	gs 'boystat', 'A903'
+	gs 'arousal', 'bj', 2
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_2/start.mp4"></video></center>'
+	'You squat in front of him and and partly pull down his pants and underwear to free his hardening cock from it''s confinment. "I have looked forward to this the whole week." His anticipation clearly visible on his face.'
+	'You smile and give the cock one tender lick. It twitches and perks up a bit. "That puts a lot of pressure on me," you joke and lick the whole length of his cock before planting a tender kiss on its head. "I hope I can measure up to your imagination."'
+	'"Always," he answers honestly and tightens his muscles once to let his member twitch invitingly in front of your face. It''s time to end the teasing and you suck his cock into your warm mouth.'
+	
+	act 'Continue to give him a blowjob': gt 'mod_wlife_shura_sex', 'set2_bj'
+end
+
+if $ARGS[0] = 'set2_bj':
+	*clr & cla
+	if wl_temp = 0: 
+		gs 'arousal', 'bj', 5
+		wl_temp = rand(2,5)
+	else
+		gs 'arousal', 'bj', 2, 'deepthroat'
+		wl_temp = 1
+	end
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_2/bj_'+rand(0,3)+'.mp4"></video></center>'
+	if wl_temp ! 1: 
+		'He''s totally different in comparison to a situation where your clothes stay on. He drops a little compliment here and there, responds to your every move with a soft deep moan or encourages you when you switch up your routine. He never asks for more or forces you to do something. Instead he''s absoluty content with what you do.'
+	else
+		'You can feel that he quickly approaches the point of no return. You slow down a bit and try to stretch out his pleasure for a few more seconds or even a minute. It works until you push him down your throat as far as you can. That takes him over the edge. "Oh, get ready," he moans. "I''m close."'
+		
+		act 'Let him finish': gt 'mod_wlife_shura_sex', 'set2_end'
+	end
+	
+	if wl_temp > 2:
+		'"Oh, yeah that''s awesome <<$pcs_nickname>>, keep going like this."'
+		act 'Do it': gt 'mod_wlife_shura_sex', 'set2_bj'
+	elseif wl_temp = 2:
+		act 'Keep going':
+			*clr & cla
+			minut += 3
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_2/bj_break.mp4"></video></center>'
+			'"Stop," he suddenly whispers and looks around. "Did you hear that?"'
+			'You have no idea what he is talking about. There was no other sound than the slurping noises your mouth made around his member. You pull his cock out of your mouth, but keep stroking it as you answer him. "No, what''s wrong?"'
+			'"I thought I heard something," he explains and takes another look around. "I don''t want the others to see you like this."'
+			'"Why? Afraid they get the wrong idea that I''m a whore?" You answer and put on a confused expression after your little joke. "Oh... wait, I am."'
+			'"Sssshhh, be quiet," he grins, but you shake your head and continue your oral treatment. You''re sure of it, there is nothing out there except the two of you.'
+
+!!ToDo: Here is a good situation to insert another character or random gangmembers into the mix			
+			
+			act 'Return to the task at hand': gt 'mod_wlife_shura_sex', 'set2_bj'
+		end	
+	end
+end
+
+if $ARGS[0] = 'set2_end':
+	*clr & cla
+	wl_temp = rand(0,1)
+	facial += 1
+	gs 'cum_call', 'face', 'A903', 1
+	gs 'arousal', 'bj', 2
+	gs 'arousal', 'end'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_2/end_0.mp4"></video></center>'
+	'The first spurt lands '+iif(wl_temp = 0, 'across your whole face', 'on your lips')+' and the next few smaller ones cover every part of your face in his seed. "Oh god," he murmurs and strokes his cock to get the last drops out. "I hope we can repeat that again."'
+	
+	if wl_temp = 0: 
+		swallow += 1
+		gs 'cum_call', 'mouth', 'A903', 1
+		gs 'stat'
+		'You open your mouth and push the cum that landed on your lips with your finger inside, swirl it around with your tongue long enough for him to notice it before swallowing it down. "There are few drops left," he grins and points at the tip of his cock that is still glistening with cum. "If you are eager for more, you could clean it up for me."'
+		
+		gs 'willpower', 'swallow', 'resist'
+		if will_cost <= pcs_willpwr:
+			act 'Don''t do it (<<will_cost>> Willpower)':
+				cla & *nl
+				gs 'willpower', 'swallow', 'resist'
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'"No thanks, I have enough," you answer him with a wink and he puts his dirty cock pack inside his pants.'
+			
+				gs 'mod_wlife_shura_sex', 'set2_leave_actions'
+			end
+		else
+			act 'Don''t do it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		gs 'willpower', 'misc', 'self', 'hard'
+		if will_cost <= pcs_willpwr:
+			act 'Fake doing it and tease him (<<will_cost>> Willpower)':
+				*clr & cla
+				gs 'willpower', 'misc', 'self', 'hard'
+				gs 'willpower', 'pay', 'self'
+				gs 'stat'
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_2/end_1.mp4"></video></center>'
+				'You suck his dick that is slowly going soft back inside your mouth and clean it thoroughly with your tongue, but the instant you release his cock from your mouth you let all the cum and saliva drop down onto it. "Hey," he protests, but you wink at him and say with a teasing voice. "When you''re so eager for somebody to eat it why don''t you clean it up yourself?"'
+				'He laughs and puts his cum-covered cock back in his pants.'
+				
+				gs 'mod_wlife_shura_sex', 'set2_leave_actions'
+			end
+		else
+			act 'Fake doing it and tease him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		act 'Do it':
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/shura/warehouse/set_2/end_1.mp4"></video></center>'
+			'You suck his soft dick back inside and clean it thoroughly with your tongue. For a second you release the mixture of saliva and cum out of your mouth before sucking it back in and swallowing it.' 
+			
+			gs 'mod_wlife_shura_sex', 'set2_leave_actions'
+		end		
+	else
+		gs 'mod_wlife_shura_sex', 'set2_leave_actions'
+	end
+end
+
+if $ARGS[0] = 'set2_leave_actions':
+	if salfetka > 0 or trt_cumeater = 1:
+		act 'Get cleaned up and tell him you have to go':
+			killvar 'wl_temp'
+			if trt_cumeater = 0: salfetka -= 1
+			cumspclnt = 11
+			gs 'cum_cleanup'
+			gt 'mod_wlife_warehouse', 'street'
+		end
+		act 'Get cleaned up and go back '+iif(wl_shura['location'] = 0, 'inside', 'to the armchairs')+'':
+			killvar 'wl_temp'
+			if trt_cumeater = 0: salfetka -= 1
+			cumspclnt = 11
+			gs 'cum_cleanup'
+			if wl_shura['location'] = 0:
+				gt 'mod_wlife_shura', 'regular_inside_1', 'none'
+			else
+				gt 'mod_wlife_shura', 'regular_outside_1', 'none'
+			end
+		end
+	else
+		act 'Tell him you have to go':
+			cla & *nl
+			killvar 'wl_temp'
+			'You don''t have anything with you to clean your face and it''s probably not a good idea to around the warehouse looking like that. You tell Shura that you don''t have time anymore to hang out with him today. You say your goodbyes before you go your separate ways.'
+				
+			act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		end
+	end
+end
+
+!!------ Party ------
+
+if $ARGS[0] = 'party':
+	*clr & cla
+	guy += 1
+	gs 'fame', 'pav', 'prostitute', 20
+	if $wl_brand['text_pubic'] ! '':  gs 'fame', 'pav', 'prostitute', 5
+	if PCloStyle = 4: gs 'fame', 'pav', 'prostitute', 5
+	gs 'npcgeneratec', 0, 'party guest', rand(23,28)
+	gs 'boyStat', $npclastgenerated
+	'<center><video autoplay loop src="mod/wlife/images/sex/shura/party/drunk_0.mp4"></video></center>'
+	'Understanding pierces the haze inside your head. Somebody is playing with your pussy. You can feel something small wriggling inside your pussy, but that''s alright, your drunken mind thinks as you relax into whatever your body is leaning against. It''s just your pussy being used by somebody. That''s normal, that nearly happens every day.'
+	'"Look at that slut," a male voice, your intoxicated brain doesn''t recognize and doesn''t care about, says.'+iif($wl_brand['text_pubic'] = 'cumslut' or $wl_brand['text_pubic'] = 'owned', ' "Yeah, have you seen her tat? Who writes ''<<$wl_brand[''text_pubic'']>>'' on their body? ', ' "')+'She''s even more of a slut than you Masha," another male voice adds, before a female voice replies. "Shut the fuck up Grigory."'
+	'For you their conversation is only unintelligible voices that blur into each other and you couldn''t care less about them, when a wet and hot mouth sucks on your clit.'
+	
+	gs 'arousal', 'vaginal_finger', -5
+	gs 'arousal', 'cuni', -5
+	gs 'stat'
+	
+	act 'Moan':
+		*clr & cla
+		$orgasm_or = 'custom'
+		'<center><video autoplay loop src="mod/wlife/images/sex/shura/party/drunk_1.mp4"></video></center>'
+		'Your from the alcohol already overheated body feels like it''s burning up inside. You squirm in your seat as pressure mounts in your lower body, but strong hands keep you firmly in place while the tongue and finger drive you closer and closer to the edge.'
+		$orgasm_txt = 'You push your hips into the assaulting tongue as your pussy muscles spasm uncontrollably and pleasure explodes inside your lower belly.'		
+		
+		gs 'arousal', 'vaginal_finger', -5
+		gs 'arousal', 'cuni', -5
+		gs 'stat'
+		
+		'"She came, didn''t she?" A male voice asks and a female one replies. "If you have to ask, you have never seen a real orgasm before," she says and another female voice adds. "His girlfriends probably always had to fake it." A round of laughter surrounds you as the weight shifts on the couch and you can feel a cock getting shoved inside you. Your hyperactive pussy responds immediately and sends a small pleasure shock wave to your brain.'
+		'It''s not as if you experience it on a conscious level. The whole experience is driven by raw emotion you have no control over. Your intoxicated mind isn''t able to protest, consent or stop what is happening to you and nobody in your audience seems to care. Your weakened body can only...'
+		
+		gs 'arousal', 'vaginal', -5
+		gs 'stat'
+		
+		act '... submit':
+			*clr & cla
+			$orgasm_or = 'no'
+			if $wl_brand['text_pubic'] ! '' and wl_sacha['talk_tattoo'] = 0: wl_sacha['talk_tattoo'] = 1
+			'<center><video autoplay loop src="mod/wlife/images/sex/shura/party/drunk_2.mp4"></video></center>'
+			'His technique isn''t the best, but what he lacks in that department he makes up in brute strength. He rams his dick inside your wet hole, pushing you into the cushions of the couch and it''s a miracle that his hard thrusts don''t upset your sensitive stomach even more. You can still hear people talking, but your intoxicated mind isn''t able to follow their conversation.'
+			'"How can you be OK with that?" A female voice asks sounding curious. "I thought she was like your girlfriend?"'
+			'"You know I don''t do relationships," Shura replies calmly. "But even if she was, why would I mind? She''s doing what makes her happy." You let out a loud and long moan as if your body wants to underscore his words. "See... she seems to like it. Isn''t that what a relationship is all about? Making each other happy? So why would I deny her that?"'
+			'"You''re really fucked up Shura. Did somebody ever tell you that?" the female voice replies amused.'
+			'You can''t hear a response, but if your intoxicated mind would have been able to follow their conversation, you wouldn''t have needed to open your eyes, to know, his answer consisted only of a shrug.'
+						
+			gs 'arousal', 'vaginal', 10, 'rough'
+			gs 'stat'
+			
+			act 'Continue':
+				*clr & cla
+				$orgasm_or = 'custom'
+				'<center><video autoplay src="mod/wlife/images/sex/shura/party/drunk_3.mp4"></video></center>'
+				'His body suddenly collapses onto your much smaller frame as his cock twitches uncontrollably inside your burning hole. Wetness floods your pussy as his cum coats your cervix.'
+				$orgasm_txt = 'The feeling of him shooting his load makes your pussy convulse for a second time as another orgasm shatters the last pieces of your conscious mind and your thoughts go completely blank.'
+				
+				gs 'cum_call', 'vaginal', 'party guest'
+				gs 'arousal', 'vaginal', 4, 'rough'
+				gs 'arousal', 'end'
+				gs 'stat'
+								
+				act 'Blackout': 
+					wl_i = 0
+					:jump_shura_party
+					if wl_i < 4:
+						guy += 1
+						wl_i += 1
+						gs 'npcgeneratec', 0, 'party guest', rand(23,28)
+						gs 'boyStat', $npclastgenerated
+						gs 'cum_call', 'vaginal', 'party guest'
+					
+						jump 'jump_shura_party'
+					end
+					
+					killvar 'wl_i'
+					
+					gt 'mod_wlife_shura', 'party_morning'
+				end
+			end
+		end
+	end
+end
+
+--- mod_wlife_shura_sex ---------------------------------

+ 1340 - 0
locations/mod_wlife_solicitation.qsrc

@@ -0,0 +1,1340 @@
+# mod_wlife_solicitation
+
+if $ARGS[0] = 'chance':
+	gs 'mod_wlife_solicitation', 'pav_rnd'
+	
+	!!No approaches, when Volya is waiting	
+	if $loc = 'pav_complex' and hour = 16 and wl_whore['shifts_message'] = 1: gt $loc, $metka
+		
+	if (($metka = 'street' and $loc = 'mod_wlife_warehouse') or ($metka = '' and ($loc = 'gdk' or $loc = 'pav_residential' or $loc = 'pav_industrial' or $loc = 'pav_commercial' or $loc = 'pavtrain' or $loc = 'liam')) or ($metka = 'start' and ($loc = 'pav_complex' or $loc = 'pav_park'))) and hour > 6 and hour < 23 and wl_whore['pav_daily_count'] < wl_whore['pav_daily_max'] and rand(1,1000) < min(wl_whore['pav_rnd'], 400):
+		gt 'mod_wlife_solicitation', 'rng'
+	end
+end
+
+if $ARGS[0] = 'pav_rnd':
+	if wl_whore['pav_timer_day'] ! daystart:
+		wl_whore['pav_daily_count'] = 0
+		wl_whore['pav_timer_day'] = daystart
+	end
+	
+	wl_whore['pav_timer_hour'] = hour
+	wl_whore['pav_daily_max'] = (pav_prostitute / 100) + 2
+		
+	wl_whore['pav_rnd'] = pav_prostitute + 50 + wl_whore['pav_rnd_pity']
+	if PCloStyle = 4 and ShoHeels > 3: wl_whore['pav_rnd'] += 100
+	if pcs_makeup = 4: wl_whore['pav_rnd'] += 50
+	wl_whore['pav_rnd'] -= (wl_whore['pav_cooldown'] * 100)
+	if wl_whore['pav_cooldown'] > 0: wl_whore['pav_cooldown'] -= 1
+	wl_whore['pav_rnd_pity'] += 20
+end
+
+if $ARGS[0] = 'rng':
+!!ToDo: has to be increased if more events are added AND the rands for abusive clients below
+	wl_rand = rand(0,7)
+!!ToDo: This has to be changed if more scenes are added	
+	if wl_rand > 5: wl_rand += 2
+	gs 'mod_wlife_functions', 'pav_client'
+	gs 'mod_wlife_functions', 'payment', 'pav'
+	if wl_whore['cum_dressed'] = 1 or wl_whore['std_mod'] = 1:
+		gt $loc, $metka
+	else
+		wl_whore['pav_search'] = 0
+		wl_whore['pav_rnd_pity'] = 0
+		gt 'mod_wlife_solicitation', 'start'
+	end
+end
+
+if $ARGS[0] = 'search':	
+	*clr & cla
+!!ToDo: has to be increased if more events are added AND the rands for abusive clients below
+	wl_rand = rand(0,7)
+!!ToDo: This has to be changed if more scenes are added	
+	if wl_rand > 5: wl_rand += 2
+	gs 'mod_wlife_functions', 'pav_client'
+	gs 'mod_wlife_functions', 'payment', 'pav'
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/search.mp4"></video></center>'
+	'You can walk around Pavlovsk to look for somebody that''s interested in buying your services. Since Pavlovsk isn''t a big city you expect that with your current fame you won''t find more than <<wl_whore[''pav_daily_max'']>> guys per day and '+iif(wl_whore['pav_daily_count'] >= wl_whore['pav_daily_max'], 'you already had <<wl_whore[''pav_daily_count'']>> customers.', 'you only had <<wl_whore[''pav_daily_count'']>> customers today.')
+	
+	if wl_whore['cum_dressed'] = 1: 'People can see cum on you. You should clean it before searching for a client.'
+	if wl_whore['std_mod'] = 1: 'Customers won''t approach you as long as you show signs of an STD.'
+	
+	act 'Stop working': gt $loc, $metka
+	
+	if wl_whore['cum_dressed'] = 0 and wl_whore['std_mod'] = 0 and hour > 6 and hour < 23:
+		if wl_stats['acceptance'] < 20:
+			'<br>You haven''t accepted your life as a common street whore and are very hesitant to look for customers.'
+		elseif wl_stats['acceptance'] < 40:
+			'<br>You haven''t accepted your life as a common street whore, but you are slowly getting used to it.'
+		end
+		gs 'mod_wlife_functions', 'will_acceptance', 'self'
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr and wl_whore['pav_daily_count'] < wl_whore['pav_daily_max']:
+			act 'Look for a customer (<<will_cost>> Willpower)': 
+				gs 'willpower', 'pay', 'self'
+				
+				gs 'mod_wlife_solicitation', 'pav_rnd'
+				wl_whore['pav_rnd'] += 100
+				
+				if rand(1,1000) < min(wl_whore['pav_rnd'], 600):	
+					minut += rand(30,60)
+					wl_whore['pav_search'] = 1
+					wl_whore['pav_rnd_pity'] = 0
+					gt 'mod_wlife_solicitation', 'start'
+				else
+					*clr & cla
+					minut += 60
+					gs 'stat'
+					'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/search.mp4"></video></center>'
+					'You walked around Pavlovsk for an hour, but nobody was interested in you.'
+					
+					act 'Continue': gt 'mod_wlife_solicitation', 'search'
+				end
+			end
+		elseif will_cost > pcs_willpwr and wl_whore['pav_daily_count'] < wl_whore['pav_daily_max'] and hour > 6 and hour < 23:
+			act 'Look for a customer (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		elseif wl_whore['pav_daily_count'] >= wl_whore['pav_daily_max']:
+			'<br>It''s probably not worthwhile to keep looking for clients. You can try again tomorrow.'
+		else
+			'<br>Pavlovsk is a small town and its streets are empty at this hour.'
+		end
+	end
+	
+	if salfetka > 0 and (wl_whore['cum_dressed'] = 1 or wl_whore['cum_undressed'] = 1 or wl_whore['cum_vaginal_mod'] = 1 or wl_whore['cum_anal_mod'] = 1): 
+		act 'Remove the cum from your body (0:02)':
+			minut += 2
+			salfetka -= 1
+			cumspclnt = 20
+			gs 'cum_cleanup'
+			gt 'mod_wlife_solicitation', 'search'
+		end
+	elseif salfetka = 0:
+		'<br>You don''t have any tissues with you to remove cum from your body.'
+	end
+end
+
+if $ARGS[0] = 'start':
+	*clr & cla
+	minut += 4
+	menu_off = 1
+	wl_whore['pav_daily_count'] += 1
+	gs 'mod_wlife_functions', 'acceptance_check', iif(wl_whore['pav_regular'] = 1, 'regular', 'normal')
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_'+iif(wl_whore['pav_regular'] = 0, rand(0,3), wl_rand)+'/start.mp4"></video></center>'
+	if $wl_whore['client_behavior'] = 'nice' and wl_whore['pav_regular'] < 1:
+		'"Excuse me," an approaching man says. "I''m sorry to disturb you, but are you by any chance <<$pcs_nickname>>? A friend of mine showed me a photo of you and said you...," he hesitates and looks around to make sure that nobody is in earshot. "Could I buy your services?"'
+	elseif $wl_whore['client_behavior'] = 'nice' and wl_whore['pav_regular'] = 1:
+		'"Hello <<$pcs_nickname>>," one of your regulars says. "It''s a good to see you again. How are you?"'
+		'You smile. "Nice to see you again and I''m fine, thanks for asking."'
+		'He takes a look around to make sure that nobody is around to see you, before asking. "Could I buy your services again?"'
+	elseif $wl_whore['client_behavior'] = 'abusive' and wl_whore['pav_regular'] < 1:		
+		if wl_rand < 2: gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4, 2, 1)
+		'"Hey!" a man shouts and waves towards you. "Aren''t you that teen whore <<$pcs_nickname>>?"'+iif(wl_rand < 4, ' He''s so loud that a few people turn around and stare at you disapprovingly.', ' To your relief nobody else is in earshot.')+' "Are you available? I always wanted to fuck a young slut like you."'
+	elseif $wl_whore['client_behavior'] = 'abusive' and wl_whore['pav_regular'] = 1:
+		if wl_rand < 2: gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4, 2, 1)
+		'"If that isn''t my favorite '+iif(rand(0,1) = 0, 'whore', 'fuckmeat')+'," one of your regulars says so loud that '+iif(wl_rand < 4, 'several people turn around to take a look at who he''s talking about.', ' people could have overheard that if somebody else would have been around.')+' "Are you up for some fun <<$pcs_nickname>>?"'  
+	end
+	*nl
+	'He wants '+iif($wl_whore['pav_scene'] = 'blowjob', 'you to give him a blowjob', 'to fuck your'+iif($wl_whore['pav_scene'] = 'anal', 'ass', 'pussy'))+' and offers to pay <<wl_whore[''payment'']>> <b>₽</b>. He wants to do it without a condom and it would take some convincing and a price reduction of '+iif($wl_whore['pav_scene'] = 'blowjob', '75', '200')+' <b>₽</b> to change his mind.'
+	
+	gs 'mod_wlife_functions', 'will_acceptance', 'resist'
+	if $wl_whore['client_behavior'] = 'nice': will_cost = (will_cost * 60) / 100
+	if wl_cheat['will_cost'] = 1: will_cost = 0
+	if will_cost <= pcs_willpwr:
+		act 'Decline and walk away (<<will_cost>> Willpower)':
+			gs 'mod_wlife_functions', 'will_acceptance', 'resist'
+			if $wl_whore['client_behavior'] = 'nice': will_cost = (will_cost * 60) / 100
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			gs 'willpower', 'pay', 'resist'
+			gt $loc, $metka		
+		end
+	else
+		act 'Decline and walk away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Accept':
+		!!STDs are handled by the mod
+		cumnostd = 1
+		minut += 2
+		money += wl_whore['payment']
+		wl_stats['unprotected'] += 1
+		wl_whore['pav_condom'] = 0
+		wl_whore['pav_total'] += 1
+		wl_whore['pav_cooldown'] += 2
+		if wl_mother['knows'] = 0 and pav_prostitute > rand(100,200) and wl_whore['pav_total'] > 25 and (($wl_whore['pav_location'] = 'public' and rand(0,1000) > pav_prostitute) or ($wl_whore['pav_location'] = 'private' and rand(0,2000) > pav_prostitute)): wl_mother['knows'] = 1
+		gt 'mod_wlife_solicitation', iif(wl_whore['pay_regular'] > -1, 'set_<<wl_rand>>', 'rape')
+	end
+	
+	if (wl_rand = 3 or wl_rand = 8) and $wl_whore['pav_scene'] = 'private' and wl_whore['pav_regular'] = 1:
+		'<br>He''s one of those guys who always refuses to put on a condom. It makes no sense to ask him to use one.'
+	else
+		gs 'mod_wlife_functions', 'will_unprotected', 'resist', iif($wl_whore['client_behavior'] = 'abusive', 'medium', 'easy')
+		if wl_cheat['will_cost'] = 1: will_cost = 0
+		if will_cost <= pcs_willpwr and wl_status['condoms'] > 0:
+			act 'Accept, but demand a condom (<<will_cost>> Willpower)': 
+				!!STDs are handled by the mod
+				cumnostd = 1
+				minut += 5
+				wl_whore['pav_payment'] -= iif($wl_whore['pav_scene'] = 'pussy', -200, -75)
+				money += wl_whore['payment']
+				wl_whore['pav_condom'] = 1
+				wl_whore['pav_total'] += 1
+				wl_whore['pav_cooldown'] += 2
+				if (wl_rand ! 3 and wl_rand ! 8) or (wl_rand = 3 and $wl_whore['pav_scene'] ! 'private'): gs 'mod_wlife_functions', 'remove_condom'
+				gs 'mod_wlife_functions', 'will_unprotected', 'resist', iif($wl_whore['client_behavior'] = 'abusive', 'hard', 'easy')
+				gs 'willpower', 'pay', 'self'
+				if wl_mother['knows'] = 0 and pav_prostitute > 200 and wl_whore['pav_total'] > 25 and (($wl_whore['pav_location'] = 'public' and rand(0,1000) > pav_prostitute) or ($wl_whore['pav_location'] = 'private' and rand(0,2000) > pav_prostitute)): wl_mother['knows'] = 1
+				gt 'mod_wlife_solicitation', iif(wl_whore['pay_regular'] > -1, 'set_<<wl_rand>>', 'rape')
+			end
+		elseif will_cost > pcs_willpwr and wl_status['condoms'] > 0:
+			act 'Accept, but demand a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		elseif wl_status['condoms'] = 0:
+			'<br>You''re out of condoms.'
+		end
+	end
+	
+	gs 'mod_wlife_functions', 'will_acceptance', 'resist'
+	will_cost = (will_cost * iif($wl_whore['client_behavior'] = 'abusive', 120, 80)) / 100
+	if wl_cheat['will_cost'] = 1: will_cost = 0
+	if will_cost <= pcs_willpwr and wl_whore['pav_regular'] = 0 and wl_whore['pav_search'] = 0:
+		act 'React angrily (<<will_cost>> Willpower)':
+			cla & *nl
+			gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4 and $wl_whore['client_behavior'] = 'abusive', -1, -2)
+			gs 'mod_wlife_functions', 'will_acceptance', 'resist'
+			will_cost = (will_cost * iif($wl_whore['client_behavior'] = 'abusive', 120, 80)) / 100
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'"What? Did you just '+iif($wl_whore['client_behavior'] = 'abusive', 'call me', 'imply that I''m')+' a whore?" you hiss angrily and take a step back from him.'
+			if $wl_whore['client_behavior'] = 'abusive':
+				'"You aren''t? Damn babe... really? Sorry about that. I knew that he was lying to me, when my friend told me about you." He points at your clothes. '+iif(PCloStyle = 4, '"But could have fooled me in that outfit."', '"But I should have known that a whore wouldn''t wear something like that"'+' he adds before walking away.')
+			else
+				'"Uhm... I...," he stammers, turns around and quickly walks away without saying another word.'
+			end
+			
+			act 'Continue': gt $loc, $metka		
+		end
+	elseif will_cost > pcs_willpwr and wl_whore['pav_regular'] = 0 and wl_whore['pav_search'] = 0:
+		act 'React angrily (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+!!------ set_0 ------
+
+if $ARGS[0] = 'set_0':
+	*clr & cla
+	minut += 15
+	if wl_whore['pav_regular'] < 1: guy += 1
+	$wl_whore['pav_walk'] = iif(rand(0,1) = 0, 'pav_residential', 'pav_complex')
+	gs 'mod_wlife_solicitation', 'travel', $wl_whore['pav_walk']
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/private/bj_'+rand(0,3)+'.mp4"></video></center>'
+	if $wl_whore['client_behavior'] = 'abusive':
+		gs 'pain', 8, 'head', 'slap'
+		gs 'fame', 'pav', 'prostitute', iif($wl_whore['pav_scene'] = 'blowjob', rand(2,4), rand(3,6))
+		'You walk together to '+iif($wl_whore['pav_walk'] = 'pav_residential', 'his apartment in the residential area', 'the Five Eight Estate')+'. The whole time he verbally abuses you by calling you whore, slut or something like fucktoy and loudly asks you embarrassing questions about your work and live as he grabs or slaps your ass from time to time.'
+		'He pushes you down to your knees, the second you are through the door. "Get to work whore," he commands and whips out his rock-hard cock. You take it into your mouth like the good whore that you are. "Yeah that''s it." He spits down on your face, before he continues. "Use that filthy mouth-pussy of yours." The verbally abuse continues until he pulls out a few minutes later and suddenly slaps your face hard. "You like that don''t you?" He slaps you again, before he grabs your head and rams his dick as deep as he can down your throat. "And don''t say no," he says with his cock buried balls deep into your mouth. "No self-respecting girl would whore herself out like this."'
+		
+		gs 'arousal', 'bj', -9, 'prostitution', 'rough', 'deepthroat', 'sub'
+	else
+		gs 'fame', 'pav', 'prostitute', rand(1,2)
+		'You walk together to '+iif($wl_whore['pav_walk'] = 'pav_residential', 'his apartment in the residential area', 'Five Eight Estate')+'. He always stays a few meters in front of you so that it doesn''t look like you two are walking together. It''s a nice gesture trying to make sure that it isn''t to obvious what you two are up to.'
+		*nl
+		'He isn''t much of a talker and leads you directly to the living room. "Here? Not the bedroom?" you ask as he takes of his jacket.'
+		'"Is that a problem for you?" You shake your head and follow his example. Taking of your clothes piece by piece. He intently watches you undress and compared with other clients he''s completely comfortable with you setting the pace. You take him by the hand, when he has taken off his clothes as well and walk him towards the couch. First you gently kiss the tip of his penis, before you swirl your tongue around it and softly suck on it. He never complains or tells you what to do. So you go through your routine which starts with a simple blowjob and ends with an impressive deepthroat.'
+		
+		gs 'arousal', 'bj', -9, 'prostitution'
+	end
+		
+	gs 'stat'
+	
+	if $wl_whore['pav_scene'] = 'pussy':
+		act 'Move on to the main course':
+			*clr & cla
+			minut += 12
+			gs 'arousal', 'auto_lube', 'vaginal', 'custom'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/private/vag_'+rand(0,2)+'.mp4"></video></center>'
+			if $wl_whore['client_behavior'] = 'abusive':
+				'"Move your ass to the couch," he shouts, but he doesn''t even wait for you to comply. His hands push you hard and you can feel his weight on you only two heartbeats after you have landed on the couch. "Gonna ruin that hole," he says and forces his cock completely inside you in one hard push. He laughs as he starts to fuck you hard. "Not much left for me to ruin."'
+				$orgasm_txt = 'It starts between your legs, wanders down your legs and up your spine until your pussy clamps down hard and you moan uncontrollably as your whole body vibrates from the orgasm. "Yeah, cum you filthy slut. I knew that you like it rough."'
+				
+				gs 'arousal', 'vaginal', -9, 'prostitution'
+			else
+				'You lay back against the sofa and spread your legs wide revealing your inviting pussy. "Ready for more?" you ask teasingly and spread your pussy lips with your fingers. You move your hips towards him, when he''s to careful and takes too much time to enter you. "You don''t have to be careful," you assure him. "I won''t break." He nods, pulls out and forcefully shoves his cock back into you. "Yeah, like that," you moan, close your eyes and enjoy the fuck.'
+				$orgasm_txt = 'It starts between your legs, wanders down your legs and up your spine until your pussy clamps down hard and you moan uncontrollably as your whole body vibrates from the orgasm.'
+				
+				gs 'arousal', 'vaginal', -9, 'prostitution', 'rough', 'sub'
+			end
+			
+			gs 'stat'
+			
+			if rand(0,1) = 0:
+				act 'Get on your knees': 
+					if wl_whore['pav_condom'] = 0: gs 'mod_wlife_functions', 'std_check'
+					gt 'mod_wlife_solicitation', 's0_facial'
+				end
+			elseif wl_whore['pav_condom'] = 1:
+				act 'Let him cum inside the condom':
+					if $wl_whore['client_behavior'] = 'abusive' and rand(1,100) > iif($wl_brand['text_pubic'] = 'cumslut', 84, 92): wl_whore['pav_internal'] = 1
+					gt 'mod_wlife_solicitation', 's0_internal'
+				end
+			else
+				act 'Let him cum inside you': gt 'mod_wlife_solicitation', 's0_internal'
+				
+				gs 'willpower', 'cum_inside', 'self', iif($wl_whore['client_behavior'] = 'abusive', 'hard', 'easy')
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:	
+					act 'Tell him to pull out (<<will_cost>> Willpower)':
+						gs 'willpower', 'pay', 'self'
+						if (rand(0,3) = 3 or (rand(0,1) = 1 and $wl_brand['text_pubic'] = 'cumslut')) and $wl_whore['client_behavior'] = 'abusive':
+							wl_whore['pav_internal'] = 1
+							gt 'mod_wlife_solicitation', 's0_internal'
+						else
+							gs 'mod_wlife_functions', 'std_check'
+							gt 'mod_wlife_solicitation', 's0_facial'
+						end
+					end
+				else
+					act 'Tell him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			end
+		end
+	else
+		act 'Continue':
+			if wl_whore['pav_condom'] = 0: gs 'mod_wlife_functions', 'std_check_oral'
+			gt 'mod_wlife_solicitation', 's0_facial'
+		end
+	end
+end
+
+if $ARGS[0] = 's0_facial':
+	*clr & cla
+	facial += 1
+	minut += 6
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/private/end_facial.mp4"></video></center>'
+	if $wl_whore['client_behavior'] = 'abusive':
+		'It''s finally over, you think, when he forces you onto your knees and aims his dick at your face'+iif(wl_whore['pav_condom'] = 1, ' and pulls the condom off.', '.')+'"Take it slut," he shouts as he furiously rubs his cock until he coats your entire face in cum. "Yeah bitch, that''s looks really nice on you," he looks at you like an artist who examines his latest masterpiece. Then he suddenly grabs you and pulls you towards the door. "Now get the fuck out," he shouts, opens the door and pushes you out of the apartment.'
+		'"Please, my clothes," you beg. He throws them onto the dirty floor and closes the door without saying another word. You quickly get dressed and ...'
+		
+		gs 'arousal', 'bj', -6, 'prostitution', 'rough', 'deepthroat', 'sub'
+	else
+		'"Can I cum on your face?" He asks shyly. You pull your mouth away from his hard meat and submissively look up to him. "Of course you can, sweetie," you reply. '+iif(wl_whore['pav_condom'] = 1, 'He takes the condom off and', 'He')+' doesn''t waste a second before he takes his cock into his hand and after a few furious strokes coats your entire face in a huge load. "Thanks <<$pcs_nickname>>, that was great. The bathroom is down the hall. You can clean up there before you leave."'
+		
+		gs 'arousal', 'bj', -6, 'prostitution'
+	end
+	
+	gs 'cum_call', 'face', 'a client'
+	
+	gs 'arousal', 'end'
+	gs 'stat'
+		
+	if $wl_whore['client_behavior'] = 'abusive':
+		act '... leave with cum on your face': gt 'mod_wlife_solicitation', 'end'
+	else
+		act 'Clean up and leave': gt 'mod_wlife_solicitation', 'end', 'clean'
+	end
+end
+
+if $ARGS[0] = 's0_internal':
+	*clr & cla
+	minut += 6
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/private/end_vag.mp4"></video></center>'
+	gs 'arousal', 'vaginal', -6, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', '')
+	gs 'arousal', 'end'
+	if wl_whore['pav_condom'] = 1:
+		if wl_whore['pav_internal'] = 0 and rand(1,100) > 98:
+			wl_whore['pav_internal'] = 1
+			'He stiffens and pushes his cock deeper inside your pussy and you can suddenly feel warmth flooding your inside. Your eyes grow wide, when you realize what''s happening. "What the fuck? Did you remove the condom?"'
+			if $wl_whore['client_behavior'] = 'abusive':
+				'He looks confused for a second, pulls out and starts to laugh. "The condom broke you lucky bitch," he pulls it off and throws the wet broken condom on your stomach. "You should be grateful for receiving my cum'+iif($wl_brand['text_pubic'] = 'cumslut', ' aren''t you a cumslut anyway?" he grins and points at your pubic tat.', '."')
+			else
+				'He looks confused for a second and then a horrified expression takes shape on his face. "No, of course not," he pulls out and takes the condom off. "It broke," he holds the empty condom up. "See? I''m so sorry <<$pcs_nickname>>."'
+				'You sigh and stop him with one gesture of your hand. "It''s not your fault. Shit happens."'
+			end
+		elseif wl_whore['pav_internal'] = 1:
+			gs 'pain', 8, 'head', 'slap'
+			'He stiffens and pushes his cock deeper inside your pussy and you can suddenly feel warmth flooding your inside. Your eyes grow wide, when you realize what''s happening. "What the fuck? Did you remove the condom?"'
+			'"Yeah I did you stupid cunt," he slaps your face hard. You let out a yelp while he continues, "and that''s no way to say thank you for receiving my seed you ungrateful whore."'
+			'"Thank you," you say rubbing your burning with your hand'+iif($wl_brand['text_pubic'] = 'cumslut', ' "Thank you for giving this cumslut what she needs," you say echoing what''s written on your pubic area.', '.')
+		else
+			'He stiffens and pushes his cock deeper inside your pussy, you can feel his meat pulsate inside you filling the condom.'
+		end
+	elseif wl_whore['pav_internal'] = 1: 
+		'He stiffens and pushes his cock deeper inside your pussy and you can suddenly feel warmth flooding your inside. Your eyes grow wide, when you realize what''s happening. "What the fuck? I told you to pull out."'
+		'He slaps your face hard. You let out a yelp while he says, "that''s no way to say thank you for receiving my seed you ungrateful whore'+iif($wl_brand['text_pubic'] = 'cumslut', ' and do you think I''m stupid? I can read you know." He slaps your ''cumslut'' tattoo once to underscore what he means.', '."')
+		'"Thank you," you say rubbing your burning with your hand."'
+	elseif wl_whore['pav_internal'] = 0 and wl_whore['pav_condom'] = 0:
+		'He stiffens and pushes his cock deeper inside your pussy and you can suddenly feel warmth flooding your inside. "Yes, fill me up baby," you moan as he coats your cervix in his potent seed.'+iif($wl_brand['text_pubic'] = 'cumslut', ' " Give this cumslut what she needs," softly slapping your pubic tat once to underscore what you''re saying.', '')
+	end
+	
+	if $wl_whore['client_behavior'] = 'abusive':
+		'Then he suddenly grabs you and pulls you towards the door. "Now get the fuck out," he shouts, opens the door and pushes you out of the apartment.'
+		'"Please, my clothes," you beg. He throws them onto the dirty floor and closes the door without saying another word. You quickly get dressed and ...'
+	else
+		'"Thanks <<$pcs_nickname>>, that was great. The bathroom is down the hall. You can clean up there before you leave."'
+	end
+	
+	if wl_whore['pav_condom'] = 0 or wl_whore['pav_internal'] = 1:
+		gs 'mod_wlife_functions', 'std_check'
+		gs 'cum_call', 'vaginal', 'a client'
+	end
+	
+	gs 'stat'
+		
+	if $wl_whore['client_behavior'] = 'abusive':
+		act '... leave': gt 'mod_wlife_solicitation', 'end'
+	else
+		act 'Clean up and leave': gt 'mod_wlife_solicitation', 'end', 'clean'
+	end
+end
+
+!!------ set_1 ------
+
+if $ARGS[0] = 'set_1':
+	*clr & cla
+	minut += 15
+	if wl_whore['pav_regular'] < 1: guy += 1
+	$wl_whore['pav_walk'] = iif($wl_whore['pav_location'] = 'public', 'mod_wlife_warehouse', 'pav_residential')
+	gs 'mod_wlife_solicitation', 'travel', $wl_whore['pav_walk']
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/bj_'+rand(0,2)+'.mp4"></video></center>'
+	if $wl_whore['pav_location'] = 'public':
+		gs 'fame', 'pav', 'prostitute', rand(2,4)
+		'"Come on slut, let''s go." After several minutes it''s become clear that you''re walking towards the outskirts of the industrial area, but he turns right into a small empty street before you can reach the warehouse. He abruptly turns around and points to the ground. "Get on your knees," he tells you unbuckling his belt at the same time. He opens his mouth again, when you didn''t comply with his wishes. "I paid, so do what I say you piece of shit," he growls and lifts his hand ready to strike. You quickly drop down kneeling on the hard uncomfortable asphalt and submissively open your mouth to not give him a reason to hit you. "Good slut, somebody trained you well." He aligns his cock with your mouth and slowly moves his hip forward until his pubic hairs tickles your nose. "I''ll fuck you so hard, that you''re going to puke," he predicts, grabs your head with both hands and uses your mouth like a pussy.'
+	else
+		gs 'fame', 'pav', 'prostitute', rand(1,2)
+		'It''s obvious that he''s a'+iif(wl_whore['pav_regular'] = 1, ' still ', ' ')+'bit nervous as you walk to his home '+iif(wl_whore['pav_regular'] = 1, 'even if it isn''t the first time that he bought your services', 'in the residential area')+'. He talks a lot, tells you about his life, his work and seems fine with you saying only the occasional ''yes'' and ''OK''. "Uhm...," he murmurs when the apartment door shuts behind the two of you and he looks to your for guidance for what to do next. You grab his arm and lead him to the bedroom at the end of the hallway, sit down on the bed, pull out his cock and suck the entire length of his cock into your mouth. He doesn''t say a word and you only stop your masterful blowjob to undress.'
+	end
+	
+	gs 'arousal', 'bj', -9, 'prostitution', 'deepthroat', iif($wl_whore['client_behavior'] = 'abusive', 'rough', ''), iif($wl_whore['client_behavior'] = 'abusive', 'exhibitionism', '')
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 12
+		gs 'arousal', 'auto_lube', 'vaginal', 'custom'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/vag_'+iif($wl_whore['pav_location'] = 'public', rand(0,3), rand(0,7))+'.mp4"></video></center>'
+		if $wl_whore['pav_location'] = 'public':
+			gs 'pain', 10, 'asscheeks', 'slap'
+			'You suck in air, when he finally relents and pulls his cock far enough out of your mouth that you can take more than one quick breath which was all you could do in the last ten minutes. He grabs you by the hip, turns you around and slams your body on the hood of a nearby old car. "You should be glad that I pay you. Rapemeat like you doesn''t deserve to be treated this nicely." he tells you coldly before he forces his cock deep inside your cunt. His hand slaps your ass with all the strength he can muster as he brutally shoves his tool into your snatch. "Fuck that hurts," you say and in response he slaps your ass again. "What was that?"'
+			'"Thanks for fucking me," you lie and swallow a bunch of insults you wish you could say instead.'
+			$orgasm_txt = 'You don''t want to, but you can''t stop the orgasm that approaches quickly. It''s humiliating to cum like this pressed against an old rusty car in the middle of the street, but you uncontrollably moan like a bitch in heat, when wave after wave of pleasure floods every cell of your body.'
+			
+			gs 'arousal', 'vaginal', -9, 'prostitution', 'rough', 'exhibitionism', 'sub'  
+		else
+			'"Did anybody ever tell you how beautiful you are?" he says as he slowly eases his cock inside you while caressing your body with his hands. He moves a single finger over your lips, down your neck and between your breasts down to your '+iif($wl_brand['text_pubic'] = 'cumslut', 'cumslut tattoo', 'pussy')+'. "You aren''t ashamed of what you are." It isn''t a question, it''s a statement of fact. "I love that. Without girls like you men like me would be totally alone." You look around in the bedroom and can''t see any pictures of a wife, kids or any other family or friends. "Everybody needs somebody," you say smiling up at him, before he starts to move his hips. His movements are slow at first, but his confidence grows with every thrust until he fucks you like the whore that you are.'
+			
+			gs 'arousal', 'vaginal', -9, 'prostitution'
+		end
+		
+		gs 'stat'
+		
+		if wl_whore['pav_condom'] = 1:
+			act 'Let him cum inside the condom':
+				if $wl_whore['client_behavior'] = 'abusive' and rand(1,100) > iif($wl_brand['text_pubic'] = 'cumslut', 84, 92): wl_whore['pav_internal'] = 1
+				gt 'mod_wlife_solicitation', 's1_end'
+			end
+		else
+			act 'Don''t say anything': gt 'mod_wlife_solicitation', 's1_end'
+				
+			gs 'willpower', 'cum_inside', 'self', iif($wl_whore['client_behavior'] = 'abusive', 'hard', 'easy')
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			if will_cost <= pcs_willpwr:	
+				act 'Tell him to pull out (<<will_cost>> Willpower)':
+					gs 'willpower', 'pay', 'self'
+					if (rand(0,3) = 3 or (rand(0,1) = 1 and $wl_brand['text_pubic'] = 'cumslut')) and $wl_whore['client_behavior'] = 'abusive':
+						wl_whore['pav_internal'] = 1
+						gt 'mod_wlife_solicitation', 's1_end'
+					else
+						wl_whore['pav_internal'] = -1
+						gs 'mod_wlife_functions', 'std_check'
+						gt 'mod_wlife_solicitation', 's1_end'
+					end
+				end
+			else
+				act 'Tell him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 's1_end':
+	*clr & cla
+	minut += 6
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/end.mp4"></video></center>'
+	gs 'arousal', 'vaginal', -6, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', ''), iif($wl_whore['client_behavior'] = 'abusive', 'exhibitionism', ''), iif($wl_whore['client_behavior'] = 'abusive', 'sub', '')
+	gs 'arousal', 'end'
+	
+	if $wl_whore['pav_location'] = 'public':	
+		'He roughly pushes your body against the car with every thrust and you know he''s close, when his movements become more erratic while he pants loudly. "Damn... take my cum bitch."'
+		if wl_whore['pav_condom'] = 1:
+			if wl_whore['pav_internal'] = 0 and rand(1,100) > 98:
+				wl_whore['pav_internal'] = 1
+				'"Yes, fill me up," you encourage him, because you know he''s wearing a condom, but something doesn''t feel right. Is he still wearing a condom?'
+				'He laughs, when he pulls out his dick. "You should be careful what you wish for," he throws a broken condom on the car next to your head. "Your shitty condom broke.'+iif($wl_brand['text_pubic'] = 'cumslut', ' But maybe you already knew that... didn''t you cumdump?" He asks and shoves his hand between your the car and your belly. "You want to get pregnant, don''t you? I bet you manipulated it," he taunts you as he slowly caresses your ''cumslut'' tat until he ', '." He says and ')+'pulls up his jeans.'
+			elseif wl_whore['pav_internal'] = 1:
+				'"Yes, fill me up," you encourage him knowing he''s wearing a condom. But he pulls out instead and you wait a few seconds expecting to feel his warm seed on your butt, when he without warning pushes back inside and you can feel his cock throb in your pussy. "I knew it, a filthy cumdump like you wants it inside. Why do you insist on the condom in the first place?" he taunts you, when his finished unloading into your unwilling cunt.'
+				'"What? Why did you cum inside me? Did you really believe I meant it?" you shout angrily, but he grabs you roughly by the shoulder and turns you around. '+iif($wl_brand['text_pubic'] = 'cumslut', '"Really? You''re going to complain, when you have a ''cumslut'' tat?"', '"Shut up I paid for it and you said I could. So stop complaining."')+' he says, before he takes a step back and pulls his jeans up.'
+			else
+				'"Yes, fill me up," you encourage him, because you know he''s wearing a condom.'
+				'"So you want me to take the condom off?" he taunts you and for a second you fear he would do that, but only two heartbeats later you can feel the condom expanding, when it fills with his seed. "Should have said something earlier, I would have paid more to fuck you raw," he says as he pulls up his jeans.'+iif($wl_brand['text_pubic'] = 'cumslut', '"Why did you ink ''cumslut'' on your body if you don''t want to be one?" he asks more to annoy than out of curiosity. "Just accept what you are."', '')
+			end
+		elseif wl_whore['pav_internal'] = 1:
+			'"Please, don''t cum inside my," you plead as he presses your face with his hand against the cold metal of the car. He doesn''t show any sign of pulling out and a few seconds later you can feel his cock twitching in your pussy. "Yes, take it," he growls and forces his cock one last time inside you.'
+			'"Why did you do that?" you ask weakly when he takes a small step back.'
+			iif($wl_brand['text_pubic'] = 'cumslut', 'He points at your tattoo. "That''s why, we both know you want to be treated like as a cumdump."', '"I paid so I can do whatever you want."')+' he explains as he pulls up his pants.' 
+		elseif wl_whore['pav_internal'] = -1:
+			'"Please, don''t cum inside my," you plead as he presses your face with his hand against the cold metal of the car. To your surprise he actually listens to you. He let''s go, takes a step back and shots his load all over your naked ass. "What a waste," he says as he takes his dick and spreads the cum around on your ass.'
+		elseif wl_whore['pav_internal'] = 0 and wl_whore['pav_condom'] = 0:
+			'"Yes, fill me up," you encourage him. This takes him over the edge and his throbbing cock fills your pussy with his warm seed.'
+			iif($wl_brand['text_pubic'] = 'cumslut', '"You made a good choice with your tat. Maybe you should add some more. Worthless cunt or stupid whore would fit perfectly as well."', '')
+		end
+		'"See ya slut," is the last thing he says to you before he walks away.'
+		
+		if wl_whore['pav_condom'] = 0 or wl_whore['pav_internal'] = 1:
+			gs 'mod_wlife_functions', 'std_check'
+			gs 'cum_call', iif(wl_whore['pav_internal'] = -1, 'butt', 'vaginal'), 'a client'
+		end
+	else
+		'"Can I cum on you?" He asks shyly as his'+iif(wl_whore['pav_condom'] = 1, ' condom covered ', ' ')+'cock moves rapidly in and out of your cunt. Most men wouldn''t ask, some would even cum inside you against your will. It''s sweet and a bit sad that not more men are like him. "Of course you can sweetie."'
+		'"Thanks...," he tries to say, but isn''t able to utter a whole sentence while his cum lands on your '+iif($wl_brand['text_pubic'] = 'cumslut', 'cumslut tattoo.', 'labia.')+' "Great," he murmurs as his body lands exhausted next to you on the bed. "That was really great."'
+		if wl_whore['pav_condom'] = 1 and rand(1,100) > 98: 
+			'"Yeah it was," you agree, but something catches your eye, when you sit up. The condom doesn''t look right. You pick it up and see that''s broken. Good thing he came outside, you think and hope that he was clean and didn''t infect you with a STD.'
+		elseif wl_whore['pav_condom'] = 0:
+			gs 'mod_wlife_functions', 'std_check'
+		end
+		'He offers you to use the bathroom before you go and you gladly accept.'
+		
+		gs 'cum_call', iif(wl_whore['pav_internal'] = -1, 'labia', 'vaginal'), 'a client'
+	end
+	
+	gs 'stat'
+		
+	if $wl_whore['client_behavior'] = 'abusive':
+		act 'Continue': gt 'mod_wlife_solicitation', 'end'
+	else
+		act 'Clean up and leave': gt 'mod_wlife_solicitation', 'end', 'clean'
+	end
+end
+
+!!------ set_2 ------
+
+if $ARGS[0] = 'set_2':
+	*clr & cla
+	minut += 15
+	if wl_whore['pav_regular'] < 1: guy += 1
+	$wl_whore['pav_walk'] = iif($wl_whore['pav_location'] = 'public', 'pav_commercial', 'pav_complex')
+	gs 'mod_wlife_solicitation', 'travel', $wl_whore['pav_walk']
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/bj_'+iif($wl_whore['pav_location'] = 'public', rand(0,1), rand(0,3))+'.mp4"></video></center>'
+	gs 'fame', 'pav', 'prostitute', iif($wl_whore['client_behavior'] = 'nice', rand(1,2), rand(2,4))
+	if $wl_whore['pav_location'] = 'public':
+		if $wl_whore['client_behavior'] = 'nice':
+			'"I don''t have much time," he explains as you walk next to him in Pavlovsk''s commercial area. "I need to get back to work in a few minutes," he adds as he pushes open a backdoor to one of the small office buildings.'
+			'"You want to do it here?" you ask skeptical. "Won''t we get caught?"'
+			'He shakes his head and walks through another door into an empty hallway. "Nobody comes here except for the clinic lady and she won''t be here until tomorrow," he explains while he unbuckles his belt and drops his pants. "Take of your shirt. I want to see your tits."'
+			'You take another look around, before you surrender to your fate, take of your top and get on your knees. "I don''t need some fancy shit, just get me off quickly, before my break ends."'
+			'"Roger that. One efficient blowjob coming right up," you say with a wink.'
+			
+			gs 'arousal', 'bj', -9, 'prostitution', 'exhibitionism'
+		else
+			'"Move your ass slut. I don''t have much time," he says angrily as you follow him to the commercial district. "My fucking boss wants me back in the office in a few minutes. She''s such a retard. If the company goes to hell it''s her fault...," he rants. You stop listening after a few minutes and silently walk beside him as he goes on and on about his job, his boss, his colleagues and everything else that is getting on his nerves. He suddenly grabs your arm and pulls you through the back entrance into one of the small office buildings.'
+			'"Here?" you ask unsure, but nobody seems to be around.'
+			'"Of course here. I can hardly take you up to my office," he replies annoyed and pushes you down to your knees. "And now do what you''re told and get to it." You kneel down on the hard concrete floor and pull down his pants. "Take of your top, I want to see your tits," he commands and you obey just like he wants. You stroke his cock a few times to get it hard and lick the entire length while you submissively look into his eyes. "Why can''t '+iif(rand(0,1), 'my boss', 'stupid Masha in accounting')+' know her place like you do?" You don''t think, he really expects an answer from you. So, you continue to lavish his cock with in attention and tease the tip with your experienced tongue, when he adds. "I asked you a question..."'
+			'You look up and the serious expression on his face tells you, yes he seriously wants an answer. You let his cock slip out of your mouth with a naughty plop. "They probably never experienced how good it feels to be told what to do?" you say unsure if that''s what he wants to hear.'
+			'"Good answer slut." He wiggles his hips to make the cock dance in front of your face. "Get back to it."'
+			
+			gs 'arousal', 'bj', -9, 'prostitution', 'exhibitionism', 'sub'
+		end
+		
+		act 'Continue':
+			*clr & cla
+			minut += 3
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/end.mp4"></video></center>'
+			if $wl_whore['client_behavior'] = 'nice':
+				'You lavish his dick in attention and give everything you got. Not to show of your skill, but to get him off as quickly as possible. And your treatment works. Only a few minutes later you can see the signs that he''s close to the edge. You pull your head back, take the cock in your hand and give it a few hard strokes. "Ready to cum?"'
+				'"Oh god yes," he says moaning like a girl. You close your lips around the sensitive tip and he cums. Hot seed floods '+iif(wl_whore['pav_condom'] = 1, 'the condom', 'your mouth')+' with hot salty seed.'
+			else
+				'You softly massage his balls with your hand as your head bobs up and down on his shaft. Your other hand grabs the base of his cock as you pull your mouth away. "Give it to me, give me your cum," you say lasciviously. That takes him over the edge. You suck the head back into your mouth a second before he unloads his load into '+iif(wl_whore['pav_condom'] = 1, 'the condom', 'your mouth')
+			end
+			'Satisfied he pulls up his pants. "Shit, I have to go," he says and hastily walks away after checking the time on his phone.'
+			
+			if wl_whore['pav_condom'] = 0:
+				swallow += 1
+				gs 'cum_call', 'mouth', 'a client'
+				gs 'mod_wlife_functions', 'std_check_oral'				
+			end
+			gs 'arousal', 'bj', -6, 'prostitution', 'exhibitionism'
+			gs 'arousal', 'end'
+			gs 'stat'
+						
+			act 'Leave': gt 'mod_wlife_solicitation', 'end'	
+		end
+	else
+		'You hope nobody you know sees you, when you walk through the courtyard of the Five Eight Estate, where your parents live.'
+		if $wl_whore['client_behavior'] = 'nice':
+			minut += 10
+			'"It''s right there," your client says, pointing at one of the apartment blocks at the other side of the courtyard. At least he doesn''t live in the same building as your parents.'
+			'"Do you want something to drink?" he asks you as he unlocks the door to his apartment.'
+			'"That''s very considerate of you to ask," you answer. '+iif(pcs_hydra < 60, '"Some water would be nice."', '"But no, I''m fine thanks."')+' He leads you down a small hallway into the kitchen, where he pulls a beer from the nearly empty fridge'+iif(pcs_hydra < 60, ' and hands you a glass of water.', '.')+' The furniture and kitchen appliances look old, even older than your parents and it''s painfully obvious that he lives alone and probably is unemployed. The two of you spend several minutes making small talk like talking about the weather and you get the feeling this is more important to him then what will follow in the bedroom. There are some guys like him who hire you just to have some form of human contact.'
+			if pcs_hydra < 60: pcs_hydra = 100
+			*nl
+			'But you didn''t get paid to have a conversation and after a few more minutes you move into the bedroom. "Can you do it slowly?" is the only thing he asks of you for the rest of the time and one sensual striptease later he lies down on the bed to indulge in your masterful blowjob.'
+		else
+			gs 'pain', 8, 'slap', 'head'
+			'"What''s wrong? Why are you so nervous?" he asks you annoyed.'
+			'"I''m not, everything is fine," you reply but immediately regret the answer, when he turns around and slaps you hard. Pain flares up on your cheek. You stumble and nearly fall to the ground.'
+			'"Stop lying to me bitch. I owe you for the next hour, remember that," he growls.'
+			'Owe you? That''s ludicrous. He only rented your services for a short time and doesn''t owe you. You''re not his slave. But you bite your tongue and swallow the truth. An honest responds would probably earn you another slap in the face. Even returning the money and walking away isn''t an option. The scene he would make would draw the attention of everyone in the area. "I''m sorry, I didn''t want to annoy you with my problems. They aren''t worthy of your attention," you reply meekly." He looks speechless for a moment. Did you say the wrong thing again?'
+			'"You''re right. You really aren''t worthy of my concern. Why should I give a shit about some fucked-up whore."'
+			*nl
+			'A few minutes later you''re already undressed, kneeling on his bed, his cock down your throat. "Suck it deeper bitch," he commands as you try your best to fulfill his wish. "Yes, just like that, good girl," he praises you as you manage to swallow it completely. "We finally found something that is worthy of somebodies attention. Didn''t we?"'
+			'You pull your head up, leaving a sloppy trail of saliva on his meat. "Yes, we did," you say with the best fake smile you can muster.'
+		end	
+		
+		gs 'arousal', 'bj', -9, 'prostitution', iif($wl_whore['client_behavior'] = 'nice', '', 'deepthroat'), iif($wl_whore['client_behavior'] = 'nice', '', 'sub')
+		
+		act 'Continue':
+			*clr & cla
+			minut += 12
+			gs 'arousal', 'auto_lube', 'vaginal', 'custom'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/vag_'+iif($wl_whore['client_behavior'] = 'nice', rand(0,2), rand(3,5))+'.mp4"></video></center>'
+			if $wl_whore['client_behavior'] = 'nice':
+				$orgasm_or = 'no'
+				'You position yourself on top of him and guide his'+iif(wl_whore['pav_condom'] = 1, ' condom covered ', ' ')+'dick into your inviting sex. His hand moves up and tenderly caress your breasts. "Perfect," he whispers as his hands slowly wander down your sides.'
+				'You send him an honest smile and increase the pace, really jumping up and down on his cock. It''s so much easier to give it all you''ve got when they manage to behave like a normal human being. After a few more minutes of hard fucking your muscles get tired and you take a break for a moment only rotating your hips to keep his cock entertained. "How about we switch positions? Me on all fours?" He nods and you get on all fours presenting your ass.'
+				*nl
+				'He takes his time as explores your backside with his hands. "Even more perfect," he says and you unexpectedly feel wetness on your right ass-cheek. He placed a loud smacker on your ass.'
+				'"Did you just kiss my ass?" you ask and turn around to see him grinning like a little boy caught with his hand in the cookie jar. "I couldn''t help it. It''s just too cute."'
+				'You laugh and wiggle your ass. "It''s not often that somebody says my ass is cute."'
+				'"Then let me repeat that. It... is... cute," he emphasizes every word and kisses your ass again in the pauses between every word.'				
+			else
+				gs 'pain', 10, 'asscheeks', 'slap'
+				gs 'pain', 10, 'asscheeks', 'slap'
+				gs 'pain', 10, 'asscheeks', 'slap'
+				'He quickly moved on from the blowjob. Demanding from you to get on all fours. "Yes, present me your fat ass," he berates you as you stick out your bum. He grabs your tender flesh with two rough hands and pulls you ass back to bury his meat into you. His hands violently knead your flesh. "I think we again found something worthy of attention," he says and withdraws one hand only to slap your ass hard. You yelp, but that only makes him laugh. "We both know that you deserve it bitch... And now start counting."'
+				'"What?" you shout not sure you heard him correctly.'
+				'"Count. I want to know how many slaps you took before I cum," he shouts and slaps your behind again.'
+				'"Three," you scream and wince, when his hand connects with your flesh again.'
+				'"Four...," you continue as he starts an unrelenting assault. But four isn''t enough. He smacks your ass hard again and again and again until your flesh turns blazing red.'
+				
+				if rand(0,1) = 1:
+					*nl
+					if pcs_horny < 100: pcs_horny = 100
+					$orgasm_or = 'custom'
+					$orgasm_txt = '"Thirty-four...," you scream as he hits you again, but this time the result isn''t pain, but an explosion of pleasure, when his hard slap triggers an intense orgasm. Your eyes roll back and for a moment only his hard cock in your pussy and the pleasurable pain exist. The strength in your arms vanishes and your upper body falls down onto the bad and only his strong hands keep your ass aligned with his cock. "Fucking painslut. I knew it from the moment I saw you," he taunts you sounding immensely satisfied with himself.'
+				else
+					$orgasm_or = 'no'
+					pcs_horny = 0
+				end
+			end	
+	
+			gs 'arousal', 'vaginal', -9, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', ''), iif($wl_whore['client_behavior'] = 'abusive', 'sub', '')
+			gs 'stat'
+			
+			if wl_whore['pav_condom'] = 1:
+				act 'Let him cum inside the condom': gt 'mod_wlife_solicitation', 's2_end'
+			else
+				act 'Don''t say anything': gt 'mod_wlife_solicitation', 's2_end'
+					
+				gs 'willpower', 'cum_inside', 'self', iif($wl_whore['client_behavior'] = 'abusive', 'hard', 'easy')
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:	
+					act 'Tell him to pull out (<<will_cost>> Willpower)':
+						gs 'willpower', 'pay', 'self'
+						gt 'mod_wlife_solicitation', 's2_end'
+					end
+				else
+					act 'Tell him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 's2_end':
+	*clr & cla
+	minut += 6
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/end.mp4"></video></center>'
+	gs 'arousal', 'vaginal', -6, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', ''), iif($wl_whore['client_behavior'] = 'abusive', 'sub', '') 
+	gs 'arousal', 'end'
+	
+	if $wl_whore['client_behavior'] = 'nice':
+		'"Can I cum on your cute butt?" he asks as his movements become more erratic by the second.'
+		'"Of course," you reply immediately and not a second too soon. He withdraws his cock'+iif(wl_whore['pav_condom'] = 1, ', takes the condom off ', ' ')+'and shoots his cum on your backside. "Thanks, I really needed that.'
+		'You look over your shoulder at the mess he made on your ass and say with a cute wink. "Your welcome."'
+		'"The bathroom is on the other end of the hallway, if you want to freshen up before you go," he says before getting of the bed to collect his clothes.'
+	else
+		gs 'pain', 10, 'asscheeks', 'slap'
+		gs 'pain', 10, 'asscheeks', 'slap'
+		gs 'pain', 10, 'asscheeks', 'slap'
+		'"'+iif(rand(0,1) = 1, 'Fifty-two', 'Forty-four')+'," you cry out. The pain is fucking unbearable.'
+		'"Had enough?" he asks and you can''t manage to lie to him. You need it to stop. "Yes," you sob. "Please, no more."'
+		'Probably the first honest thing you said today," he says chuckling. "I bet it hurts. Let me put on some ointment. He pulls out'+iif(wl_whore['pav_condom'] = 1, ', tears the condom off ', ' ')+'and sprays cum all over your butt. "Does this feel better?" he asks you as he distributes the cum with his cock all over your burning cheeks.'
+		'"No," you sob and crawl away from him. He doesn''t stop you, when you put your clothes back on and ...'
+	end	
+	
+	gs 'cum_call', 'butt', 'a client'	
+	gs 'stat'
+	
+	if $wl_whore['client_behavior'] = 'abusive':
+		act '... flee out of the apartment': gt 'mod_wlife_solicitation', 'end'
+	else
+		act 'Clean up and leave': gt 'mod_wlife_solicitation', 'end', 'clean'
+	end
+end
+
+!!------ set_3 ------
+
+if $ARGS[0] = 'set_3':
+	*clr & cla
+	minut += 15
+	wl_temp = rand(0,2)
+	if wl_whore['pav_regular'] < 1: guy += 1
+	$wl_whore['pav_walk'] = 'pav_residential'
+	gs 'mod_wlife_solicitation', 'travel', $wl_whore['pav_walk']
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/bj_<<wl_temp>>.mp4"></video></center>'
+	gs 'fame', 'pav', 'prostitute', iif($wl_whore['client_behavior'] = 'nice', rand(2,4), rand(3,6))
+	if $wl_whore['pav_location'] = 'public':
+		if wl_temp = 0: gs 'fame', 'pav', 'prostitute', iif(PCloStyle = 4, 2, 1)
+		if $wl_whore['client_behavior'] = 'nice':
+			'"My car is right over there," he says pointing to a single car in an empty parking lot on the edge of the residential area. He opens the door on the '+iif(wl_temp = 0, 'driver', 'passenger')+' side, but he stops you from '+iif(wl_temp = 0, 'going around the car to the passenger side.', 'getting inside the car.')+' "No, we don''t need to drive anywhere. We can do it here."'
+			'"Here? In public?" you ask skeptical'+iif(wl_temp = 0, ', but go back to him.', '.')
+			'"Sure, why not?" He points to the door. With the door open nobody will see what''s going on."'
+			'You take a look around and shake your head. "But there''s a road behind us. We will be completely exposed."'
+			'"No, no." He pulls down his pants. "Nobody drives on that road," he tries to reassure you. "We can debate this the whole day if you want." He suddenly pulls down his pants in one quick move. "Or you can get down from your high horse and down to your knees and get it over with. The faster you get me off the faster you''re out of here."'
+			*nl
+			'You resign to your fate and squat down in front of him. He paid and you accepted. If he wants to get sucked of in public there''s nothing you can do about it. Judging by how hard he is, this turns him on immensely and it probably was his plan all along.'
+			
+			if wl_temp = 0:
+				*nl
+				'"You need to stop," he says sounding anxious, but his warning comes too late, when a car honks behind you several times. "Shit, they saw us," he explains the obvious. Should you stop? You ask yourself for a moment, but make the decision not to. You can''t change what happened and stopping now won''t help anybody.' 				
+			end
+		else
+			'"My car is right over there," he says pointing to a single car in an empty parking lot on the edge of the residential area. But when you get there, he doesn''t open the door instead he pulls down his pants and reveals his hard cock to the world.'
+			'"Uhm... here?" you asks shocked and take a look around. There are houses and two streets. "I can''t do it here. Everybody can see us."'
+			'He rolls his eyes and opens the driver side door to grant you some cover. "Satisfied? Now we can''t be seen."'
+			'You sigh and look behind you to the other road. Nobody drives on that street, most take the one near the houses. "Fine," you tell him and squat down in front of him.'
+			*nl
+			'"Are you wet?" he asks with a smirk on his face as you lick the entire length of his dick. "Does it turn you on that someone could see what a slut you are?"'
+			'"No, of course not," you say'+iif(pcs_horny < 40, ' and your dry pussy agrees with you.', ', but your wet pussy disagrees with you.')+' Sucking his cock into your mouth shuts him up for now and he has to grab the passenger side door to steady himself, when your talented tongue works her magic.' 
+			
+			if wl_temp = 0:
+				*nl
+				'A car honks behind you several time and your client suddenly laughs. Your eyes shift upwards and you can see giving a thumps up to somebody. His cock slips out of your mouth. "What the fuck? Why didn''t you warn me?"'
+				'He grins. "Oh come on, they only saw your back. If somebody has a reason to complain, it would be me. They saw my face." You mull his words and respond with a shrug. He''s right. They only saw your back, you agree and suck his cock back into your hot wet hole.'
+			end
+		end
+		
+		killvar 'wl_temp'
+		
+		gs 'arousal', 'bj', -9, 'prostitution', 'exhibitionism'
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 3
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/end.mp4"></video></center>'
+			'He draws in a sharp breath and his eyes close, when you sensually suck on the head out of his penis and rapidly stroke the base of his cock. '+iif($wl_whore['client_behavior'] = 'nice', 'It''s as if you''re really sucking the cum directly out his body.', '"That''s it, suck me dry," he says.')+' His cock twitches and sprays a huge amount of cum '+iif(wl_whore['pav_condom'] = 1, 'inside the condom.', 'into your willing mouth. You don''t want to risk running around with cum on your clothes. So you swallow it all down with one big gulp.')
+			iif($wl_whore['client_behavior'] = 'nice', '"Thanks for doing this,"', '"Good job bitch. We need to do this again at some point,"')+' he says as he pulls up his pants. He get''s into his car and leaves you behind on the empty parking lot.'
+			
+			if wl_whore['pav_condom'] = 0:
+				swallow += 1
+				gs 'cum_call', 'mouth', 'a client'
+				gs 'mod_wlife_functions', 'std_check_oral'				
+			end
+			gs 'arousal', 'bj', -6, 'prostitution', 'exhibitionism'
+			gs 'arousal', 'end'
+			gs 'stat'
+						
+			act 'Leave': gt 'mod_wlife_solicitation', 'end'	
+		end
+	else
+!!ToDo: Alternative scene with vag video 3-5	
+		$orgasm_or = 'no'
+		'One of his strong arms grabs you the instant you walk into the door of his house in the residential area. You nearly stumble and fall as he roughly pulls you into the bedroom. "Undress and get on your knees," he tells you with a stern and commanding voice.'
+		if wl_whore['pav_condom'] = 1:
+			money += 100 * rand(4,6)
+			'You obey, but when you pull out the condom, he shakes his head. "No condom, I need to feel you raw."'
+			'"No, no ... we agreed on a condom," you insist and try to get up, but he pushes you back down. "Stay there," he commands you as he picks up his pants and pulls out a few banknotes. "Is this enough?" he shouts angrily and throws them into your face, before grabbing your head and forces his dick between your lips. "I have paid, so do your job whore."'
+			'He shouldn''t be able to just throw money in your face and expect that it makes it OK, but what can you do except to do what he said... to do your job.'
+		else
+			'You paint a smile on your face and kneel in front of him, looking up at him like a submissive bitch. "Yeah, that''s a good look for you, now swallow my cock."'
+		end
+		'Opening your mouth wide to avoid scraping his shaft with your teeth, you shove your tongue under his cock and let inch after inch disappear down your throat. In the next minute you switch between different techniques to keep him happy. Sometimes you concentrate your effort on his balls, sucking softly on one of them while your hands stroke his cock or you lick the entire length of him.'
+		
+		gs 'arousal', 'bj', -9, 'prostitution', 'rough', 'deepthroat'
+		gs 'stat'
+		
+		act 'Follow his lead':
+			*clr & cla
+			minut += 20
+			$orgasm_or = 'custom'
+			if wl_whore['pav_condom'] = 1: wl_whore['pav_condom'] = 0
+			gs 'arousal', 'auto_lube', 'vaginal', 'custom'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/vag_'+rand(0,1)+'.mp4"></video></center>'
+			'He suddenly rips his cock free from your hole, grabs you by the arms and pushes you onto the bed. You let out a yelp of surprise, but he doesn''t care and instead roughly spreads your legs and forces his member into you. "I will fuck a child into you," he says.'
+			'You want to say something, respond to what he said, but he never gives you a chance. It''s like his cock pierces through your whole body and fucks every thought out of your brain. His movements are an unending assault on your sanity as his rough but skillful thrusts trigger small explosions of pleasure inside your pussy. You can only hold on to your legs, enjoy the ride and moan like a bitch in heat ready to be bred.' 
+			$orgasm_txt = 'Your eyes roll back into your head and you eyes flutter shut, when you finally orgasm. But he doesn''t seem to be close. His stamina is insane and the constant stimulation of your g-spot is already pushing you towards your next orgasm only seconds after your first one ended.'
+			gs 'arousal', 'vaginal', -20, 'prostitution'
+			gs 'stat'
+			
+			act 'Let him do whatever he wants':
+				*clr & cla
+				minut += 10
+				$orgasm_or = 'custom'
+				'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/end.mp4"></video></center>'
+				$orgasm_txt = 'The world doesn''t exist anymore. It has transformed into a unrecognizable red haze of lust, when he finally unloads his load into your young womb.' 
+				gs 'arousal', 'vaginal', -6, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', '')
+				gs 'arousal', 'end'
+				'"Stay like this," he tells you as he pulls out and your orgasm finally ends and it''s like a floodgate has been opened and your consciousness flows back into your brain.'
+				'"What?" you ask still confused by your mind-blowing orgasm while his eyes are fixed on the cum leaking out of your hole.'
+				'"Somebody is responsive again," he say with a satisfied smirk. "When you feel up to it, you can get dressed and leave. Your job here is done," he leans closer and pushes some of the cum with his finger back inside. "And mine as well."'
+				
+				gs 'cum_call', 'vaginal', 'a client'
+				gs 'mod_wlife_functions', 'std_check'
+				gs 'stat'
+				
+				act 'Get dressed and leave': gt 'mod_wlife_solicitation', 'end'
+			end			
+		end
+	end
+end
+
+!!------ set_4 ------
+
+if $ARGS[0] = 'set_4':
+	*clr & cla
+	minut += 6
+	if wl_whore['pav_regular'] < 1: guy += 1
+	gs 'fame', 'pav', 'prostitute', iif($wl_whore['client_behavior'] = 'nice', rand(1,2), rand(3,6))
+	if $loc = 'gdk' or $loc = 'pav_park': minut += 3 & $loc = 'pav_residential' & $metka = ''
+	if $wl_whore['pav_scene'] = 'blowjob':
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/public/bj_'+rand(0,2)+'.mp4"></video></center>'
+		'He turns into a small alley, but he doesn''t head towards one of the houses. Instead he pulls you through a huge gap in a chain-link fence and behind a huge dumpster. '+iif($wl_whore['client_behavior'] = 'nice', '"Nobody will see us here."', '"Get on your knees."')
+		'"Really? Here? Behind a dumpster?" you ask wrinkling your nose. "Can''t we go anywhere else? Don''t you have a house or an apartment we could go to?"'
+		iif($wl_whore['client_behavior'] = 'nice', 'He shakes his head. "My wife and kids are at home, we can''t go there," he explains', '"Why do you complain bitch? Trash like you belongs here," he insults you')+' as he pulls down his pants. You sigh and squat down in front of him. It''s not an ideal environment, but at least nobody can see you here. So you start to ...'		
+		
+		gs 'arousal', 'bj', -9, 'prostitution'
+		
+		act '... suck him dry':	
+			if wl_whore['pav_condom'] = 0: gs 'mod_wlife_functions', 'std_check_oral'
+			gt 'mod_wlife_solicitation', 's4_swallow'
+		end
+	else
+!!ToDo: Video vag_0 is not used, does not fit the text
+		$orgasm_or = 'no'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/public/vag_'+rand(1,2)+'.mp4"></video></center>'
+		gs 'arousal', 'auto_lube', 'vaginal', 'custom'
+		'He turns into a small alley, but he doesn''t head towards one of the houses. Instead he pulls you through a huge gap in a chain-link fence. "What are you doing?" You ask, when he pushes you against the wall and tugs on his pants to free his cock.'
+		'"I can''t wait anymore, you''re too fucking hot. We need to do it right here, right now," he hisses into your ear. '+iif($wl_whore['client_behavior'] = 'abusive', '', 'His nice demeanor from a few minutes ago has completely changed.')
+		if wl_whore['pav_condom'] = 1 and ($wl_whore['client_behavior'] = 'nice' or rand(1,100) < iif($wl_brand['text_pubic'] = 'cumslut', 84, 92)):
+			'"Please, at least use the condom," you beg even if you''re sure that he has no self-control left. There''s nothing else you could do anyway. So you close your eyes resigning to your fate, when he suddenly stops his movements. "Fuck...," he swears loudly, but when his cock appears back between your legs it''s wearing the condom.'
+		else
+			'"Please, at least use the condom," you beg even if you''re sure that he has no self-control left. There''s nothing else you could do anyway. So you close your eyes resigning to your fate. He doesn''t care as you predicted. Instead his dick forces himself into your unprotected pussy.'
+			wl_whore['pav_condom'] = 0
+		end
+		'His movements are rough, hectic and reminds you of an mindless animal in heat. He won''t last long and your ordeal will be over in a minute or two.'  
+				
+		gs 'arousal', 'vaginal', -1
+		
+		if wl_whore['pav_condom'] = 1:
+			act 'Let him cum inside the condom': gt 'mod_wlife_solicitation', 's4_internal'
+		else
+			act 'Don''t say anything': gt 'mod_wlife_solicitation', 's4_internal'
+				
+			gs 'willpower', 'cum_inside', 'self', iif($wl_whore['client_behavior'] = 'abusive', 'hard', 'easy')
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			if will_cost <= pcs_willpwr:	
+				act 'Tell him to pull out (<<will_cost>> Willpower)':
+					gs 'willpower', 'pay', 'self'
+					if (rand(0,3) = 3 or (rand(0,1) = 1 and $wl_brand['text_pubic'] = 'cumslut')) and $wl_whore['client_behavior'] = 'abusive':
+						wl_whore['pav_internal'] = 1
+						gt 'mod_wlife_solicitation', 's4_internal'
+					else
+						gs 'mod_wlife_functions', 'std_check'
+						gt 'mod_wlife_solicitation', 's4_swallow'
+					end
+				end
+			else
+				act 'Tell him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end	
+	end
+		
+	gs 'stat'	
+end
+
+if $ARGS[0] = 's4_swallow':
+	*clr & cla
+	minut += 4
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/public/end_bj.mp4"></video></center>'
+	'At least it''s over quickly. He '+iif($wl_whore['pav_scene'] = 'pussy', 'only manages to fuck you for two minutes, before he pulls out and pushes you to the ground. "Suck, now!" he shouts. You close your lips around the red head of his penis and not a second to soon. He', 'only can resist your masterful tongue for two minutes, before he')+' sprays his cum inside '+iif(wl_whore['pav_condom'] = 1, 'the condom', 'your mouth')
+	'The second he''s finished he rips his cock free and stuff it inside his pants '+iif(wl_whore['pav_condom'] = 1, 'after taking the condom off and throwing it to the ground.', 'as you swallow his salty seed down.')
+	
+	if wl_whore['pav_condom'] = 0:
+		swallow += 1
+		gs 'cum_call', 'mouth', 'a client'	
+	end
+	
+	gs 'arousal', 'bj', -3, 'prostitution'
+	gs 'arousal', 'end'
+	gs 'stat'
+						
+	act 'Leave': minut += 5 & gt $loc, $metka
+end
+
+if $ARGS[0] = 's4_internal':
+	*clr & cla
+	minut += 4
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/public/end_vag.mp4"></video></center>'
+	gs 'arousal', 'vaginal', -1, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', '')
+	gs 'arousal', 'end'
+	'"That''s what I''m talking about," he says more to himself than to you while he buries his cock balls deep inside you.' 
+	if wl_whore['pav_condom'] = 1:
+		if wl_whore['pav_internal'] = 0 and rand(1,100) > 98:
+			wl_whore['pav_internal'] = 1
+			'You can feel his cock twitching inside your snatch as he unloads everything he has inside the condom... But something doesn''t feel right, when warmth floods your insides. He couldn''t have taken the condom of. He never had the time to do it.'
+			'"Did the condom break?" you ask him, but he either doesn''t listen or doesn''t care.'
+		else
+			'You can feel his cock twitching inside your snatch as he unloads everything he has inside the condom.'
+		end
+	else
+		'You can feel his cock twitching inside your snatch as he unloads everything he has inside you.'
+		if wl_whore['pav_internal'] = 1: '"Why? I told you to cum outside," you hiss angrily, but he doesn''t seem to care. He doesn''t even bother with giving your an answer.'
+	end
+	'If there wasn''t a wall in front of you, you would have fallen face first to the ground when he pushes you away from him. "Hey," you shout protecting your face at the same time, when you crash against the wall. "What''s the matter with you?" But when you turn around he''s already stuffing his dick back inside his pants and runs away.'	
+		
+	if wl_whore['pav_condom'] = 0 or wl_whore['pav_internal'] = 1:
+		gs 'mod_wlife_functions', 'std_check'
+		gs 'cum_call', 'vaginal', 'a client'
+	end
+	
+	gs 'stat'
+		
+	act 'Continue': gt 'mod_wlife_solicitation', 'end'
+end
+
+!!------ set_5 ------
+
+if $ARGS[0] = 'set_5':
+	*clr & cla
+	minut += 15
+	if wl_whore['pav_regular'] < 1: guy += 1
+	$wl_whore['pav_walk'] = iif($wl_whore['pav_location'] = 'private', 'pav_residential', 'pavtrain')
+	gs 'mod_wlife_solicitation', 'travel', $wl_whore['pav_walk']
+	if $wl_whore['pav_scene'] = 'blowjob':
+		gs 'fame', 'pav', 'prostitute', rand(2,4)
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/bj_'+rand(0,3)+'.mp4"></video></center>'
+		'He walks with you to a parking lot at the outskirts of Pavlovsk. A single car stands as far away as possible from the road, but it''s clearly visible from the train tracks which lead to the nearby train station. He doesn''t open the car, when you reach it, he leads you instead behind a big dumbster next to it. "Can''t we use the car?" you ask and for a moment he looks at you completely confused. You point at it. "Oh, that''s not mine."'
+		*nl
+		'A minute later you''re squatting in front of him, cock in your mouth and you head bobbing up and down on his meat. You aren''t visible from the street. The car and the dumbster are shielding you from any wandering eyes, but you still have to suck him off quickly before a train comes by and hundreds of people see you like this.'
+				
+		gs 'arousal', 'bj', -9, 'prostitution', 'exhibitionism'
+		gs 'stat'
+
+		act 'Make him cum':
+			*clr & cla
+			minut += 4
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/public/end_bj.mp4"></video></center>'		
+			minut += 4
+			wl_temp = rand(-8,8)
+			gs 'fame', 'pav', 'prostitute', max(wl_temp,0)
+			'Too late... you can see a train approaching behind him at the same time as he unloads inside '+iif(wl_whore['pav_condom'] = 1, 'the condom', 'your mouth')+'. '+iif(wl_temp > 0, 'The train isn''t passing by quickly. It''s slowly approaching the train station giving the passengers enough time to take a good look at you. "Shit," he murmurs and pulls the'+iif(wl_whore['pav_condom'] = 1, ' condom covered ', ' ')+'dick out of your warm mouth. You stand up'+iif(wl_whore['pav_condom'] = 1, ' ', ', swallow the cum down ')+'and walk away as quickly as you can. Hoping that not too many people saw you.', 'But it''s only an old freight train passing by quickly. "Seems we''re lucky today," he says with a boyish grin, before he walks away.')
+			
+			if wl_whore['pav_condom'] = 0:
+				swallow += 1
+				gs 'cum_call', 'mouth', 'a client'	
+			end
+			
+			gs 'arousal', 'bj', -3, 'prostitution', 'exhibitionism'
+			gs 'arousal', 'end'
+			gs 'stat'
+					
+			killvar 'wl_temp'
+					
+			act 'Leave': minut += 5 & gt $loc, $metka	
+		end
+	else
+		gs 'fame', 'pav', 'prostitute', iif($wl_whore['client_behavior'] = 'nice', rand(1,2), rand(2,4))
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/vag_'+iif($wl_whore['pav_location'] = 'public', rand(0,2), rand(0,6))+'.mp4"></video></center>'
+		if $wl_whore['pav_location'] = 'public':
+!!abusive vag scene
+		else
+!!nice vag scene
+		end
+		
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 12
+			gs 'arousal', 'auto_lube', 'vaginal', 'custom'
+			'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/vag_'+iif($wl_whore['pav_location'] = 'public', rand(0,3), rand(0,7))+'.mp4"></video></center>'
+			if $wl_whore['pav_location'] = 'public':
+!!nice cumshot on ass				
+			else
+!!absuive ass internal, condom or ground				
+			end
+			
+			gs 'arousal', 'vaginal', -12, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', ''), iif($wl_whore['client_behavior'] = 'abusive', 'exhibitionism', ''), iif($wl_whore['client_behavior'] = 'abusive', 'sub', '')
+			gs 'stat'
+			
+			if wl_whore['pav_condom'] = 1:
+				act 'Let him cum inside the condom': gt 'mod_wlife_solicitation', 's5_end'
+			else
+				act 'Don''t say anything': gt 'mod_wlife_solicitation', 's5_end'
+					
+				gs 'willpower', 'cum_inside', 'self', iif($wl_whore['client_behavior'] = 'abusive', 'hard', 'easy')
+				if wl_cheat['will_cost'] = 1: will_cost = 0
+				if will_cost <= pcs_willpwr:	
+					act 'Tell him to pull out (<<will_cost>> Willpower)':
+						gs 'willpower', 'pay', 'self'
+						if (rand(0,3) = 3 or (rand(0,1) = 1 and $wl_brand['text_pubic'] = 'cumslut')) and $wl_whore['client_behavior'] = 'abusive': 
+							wl_whore['pav_internal'] = 1
+						else
+							wl_whore['pav_internal'] = -1
+						end
+						gt 'mod_wlife_solicitation', 's5_end'
+					end
+				else
+					act 'Tell him to pull out (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 's5_end':
+	*clr & cla
+	minut += 6
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_<<wl_rand>>/<<$wl_whore[''pav_location'']>>/end.mp4"></video></center>'
+	gs 'arousal', 'vaginal', -6, 'prostitution', iif($wl_whore['client_behavior'] = 'abusive', 'rough', ''), iif($wl_whore['client_behavior'] = 'abusive', 'exhibitionism', ''), iif($wl_whore['client_behavior'] = 'abusive', 'sub', '')
+	gs 'arousal', 'end'
+	
+	if $wl_whore['pav_location'] = 'public':	
+		if wl_whore['pav_condom'] = 1:
+			if wl_whore['pav_internal'] = 0 and rand(1,100) > 98:
+				wl_whore['pav_internal'] = 1
+!!condom break	
+			else
+!!no condom break
+			end
+		elseif wl_whore['pav_internal'] = 1:
+!!doesn''t listen and cums inside
+		elseif wl_whore['pav_internal'] = -1:
+!!pulls out and cums on the ground, 		
+		elseif wl_whore['pav_internal'] = 0 and wl_whore['pav_condom'] = 0:
+!!cums inside, but not against your wishes
+		end
+		'"See ya slut," is the last thing he says to you before he walks away.'
+		
+		if wl_whore['pav_condom'] = 0 or wl_whore['pav_internal'] = 1:
+			gs 'mod_wlife_functions', 'std_check'
+			if wl_whore['pav_internal'] > -1: gs 'cum_call', 'vaginal', 'a client'
+		end
+	else
+		
+		gs 'cum_call', 'butt', 'a client'
+		if wl_whore['pav_condom'] = 0: gs 'mod_wlife_functions', 'std_check'
+	end
+	
+	gs 'stat'
+		
+	if $wl_whore['client_behavior'] = 'abusive':
+		act 'Continue': gt 'mod_wlife_solicitation', 'end'
+	else
+		act 'Clean up and leave': gt 'mod_wlife_solicitation', 'end', 'clean'
+	end
+end
+
+!!------ set_6 ------
+
+!!ToDo
+
+!!------ set_7 ------
+
+!!ToDo
+
+!!------ set_8 ------
+
+if $ARGS[0] = 'set_8':
+	*clr & cla
+	minut += 15
+	$orgasm_or = 'no'
+	if wl_whore['pav_regular'] < 1: 
+		guy += 1
+		wl_whore['pav_regular_s8'] = 1
+	end
+	$wl_whore['pav_walk'] = 'pav_residential'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_8/private/anal_'+rand(0,1)+'.mp4"></video></center>'
+	gs 'fame', 'pav', 'prostitute', rand(1,2)
+	iif(rand(0,1) = 0, '"You have a nice ass,"', '"You have a really fuckable ass,"')+' he says loudly as you walk with him towards his house in the residential area. You try to look away, when he catches the attention of other pedestrians, but you''re sure they saw you and heard what he said. His hand roughly kneads your ass-cheek through your clothes as he continues, "I''m really looking forward to '+iif(rand(0,1) = 0, 'burying my cock deep inside your bowels."', 'filling your pretty little ass with my dick."')
+	*nl
+	'His not able to keep his desire in check as he nearly rips his clothes of the the second the apartment door shuts behind you. You don''t even make it to the bedroom. When you''re in your birthday suit as well, he pushes you into the kitchen, slams you against the kitchen table and forces his cock inside your dry asshole. "That''s what I''m talking about," he grunts as his cock sinks deeper and deeper into your ass. "Yeah, you filthy cunt, scream for me," he shouts not being able to contain his excitement as you let out a yelp.'+iif(wl_whore['pav_condom'] = 1, ' He never put on the condom you two agreed on, but the pain is too much and you''re unable to remind him. He probably wouldn''t care anyway.', '')
+	
+	gs 'arousal', 'anal', -9, 'prostitution', 'rough', 'sub'
+	gs 'stat'
+	
+	act 'Get fucked':
+		*clr & cla
+		minut += 10
+		$orgasm_or = 'yes'
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_8/private/anal_2.mp4"></video></center>'
+		'He doesn''t give a single fuck about your well-being. Only one thing is on his mind, fucking your ass as hard and fast as possible.'+iif(wl_whore['pav_regular'] = 1, ' You could have known, what would happen. But you went with him anyway. Maybe because you want to experience such an intense orgasm again.', ' ')+iif(rand(0,1) = 0, '"I''ll fuck you until your ass bleed,"', '"You won''t be able to sit for a week,"')+' he taunts you as his cock moves back and forth stretching your abused hole wide open.'
+		'He suddenly grabs your hair and pulls your head back as his other hand gripes your throat violently. He brutally chokes you and '+iif(wl_whore['pav_regular'] = 1, 'only knowing he will stop prevents you from fearing for your life even as your lungs scream for air.', 'he doesn''t let go and when your lungs scream for air you realize that could be it. The end. Dying in some guys apartment while being brutally fucked in the ass.')
+		$orgasm_txt = 'And then he let''s go, your brain floods your body with endorphins as your breath in cool air and it''s'+iif(wl_whore['pav_regular'] = 1, ' again ', ' ')+'like a trigger for the rest of your body to let go. Your eyes roll back and your tongue slips out of your mouth like a bitch in heat that get''s bred by her master as your anal orgasm blocks out the pain and turns this horrible moment into pure bliss.'
+	
+		gs 'arousal', 'anal', -9, 'prostitution', 'rough', 'sub'
+		gs 'pain', 10, 'hair', 'pull'
+		gs 'pain', 10, 'throat', 'choke'
+		gs 'stat'
+		
+		*nl
+		
+		'Your pulled back to your painful reality, when he finally pulls out his dick. Your asshole spasms trying and failing to close. "Get down here slut," he says his voice filled with pent-up aggression. You somehow are able to kneel down while your twitching ass and quivering hole constantly remind you of how you shamefully came by getting your ass violated.'
+		
+		if $wl_fetish['atm'] ! 'blocked':			
+			'"It''s time to taste your ass, lick my cock clean and then I''ll let you have my cum as a reward," he proclaims as if he''s handing out water to somebody who''s dying of thirst.'
+			'You stare at the cock right in front of your eyes. It was in your ass just a second ago, rummaging around deep inside your bowels. He never wiped it clean and he didn''t put on a condom. '+iif($wl_fetish['atm'] = 'yes', 'You unconsciously lick your lips in anticipation. You can''t wait to taste your own ass.', 'You frown and you move your head back an inch as you stare at the disgusting thing in front of you.')
+			
+			gs 'mod_wlife_functions', 'will_atm', 'resist', iif($wl_fetish['atm'] = 'yes', 'hard', 'easy')
+			if wl_cheat['will_cost'] = 1: will_cost = 0
+			if will_cost < pcs_willpwr:
+				act 'Don''t do it (<<will_cost>> Willpower)':
+					cla & *nl
+					minut += 1
+					wl_temp = 0
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'You shake your head and say and . "Sorry, that''s not something I do and you didn''t pay for it."'
+					'"Fine bitch," he growls, but does nothing to persuade you to change your mind. Instead he grabs your hand and places it on his ass-juice covered dick.'
+						
+					act 'Make him cum': gt 'mod_wlife_solicitation', 's8_end'
+				end
+			else
+				act 'Don''t do it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			if $wl_fetish['atm'] = '' or $wl_fetish['atm'] = 'undecided':
+				act 'Suck his cock and you''ll like it': $wl_fetish['atm'] = 'yes' & gt 'mod_wlife_solicitation', 's8_atm'
+				act 'Suck his cock and you''ll hate it': $wl_fetish['atm'] = 'no' & gt 'mod_wlife_solicitation', 's8_atm'
+			else
+				act 'Suck his cock': gt 'mod_wlife_solicitation', 's8_atm'
+			end
+					
+			if $wl_fetish['atm'] = '': 
+				'<br><font color="red">Content Warning: Ass-to-Mouth</font>'
+				act '<font color="red">Block this type of content</font>': 
+					cla & *nl
+					minut += 1
+					$wl_fetish['atm'] = 'blocked'
+					gs 'stat'
+					'You shake your head and say and . "Sorry, that''s not something I do."'
+						
+					act 'Continue': gt 'mod_wlife_solicitation', 's8_end'
+				end
+			end
+		else
+			'"It''s time to receive my cum," he proclaims as if he''s handing out water to somebody who''s dying of thirst. You deserve an Oscar for the smile you manage to fake as you thank him for his generosity.'
+			
+			act 'Open your mouth': wl_temp = 0 & gt 'mod_wlife_solicitation', 's8_end'
+		end
+	end
+end
+
+if $ARGS[0] = 's8_atm':
+	*clr & cla
+	wl_temp = 1
+	wl_stats['atm'] += 1
+	pcs_mood = iif($wl_fetish['atm'] = 'yes', 100, 0)
+	minut += iif($wl_fetish['atm'] = 'yes', 10, 2)
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_8/private/anal_atm.mp4"></video></center>'
+	'You can''t resist the urge to sniff it, when you come closer. There is no ... stuff... on it. It looks perfectly fine and to your surprise it doesn''t even smell like you would have imagined something coming out of your ass. But it doesn''t smell like clean washed dick either. It''s '+iif($wl_fetish['atm'] = 'yes', 'strangely captivating and your pussy is getting wet only thinking about tasting your ass-juice.', 'disgusting. Utterly and completely disgusting, but you have no other choice than to go through with it.')
+	'After the first '+iif($wl_fetish['atm'] = 'yes', 'arousing', 'disgusting')+' you decide to '+iif($wl_fetish['atm'] = 'yes', 'take your time and clean his cock thoroughly. You let your tongue wander over his dick and lap every single drop of your enticing ass-juice. At the end you', 'get it done as quickly as possible. You only take the tip of his dick into your mouth,')+' grab the shaft with your hand and give him a handjob as you let your tongue wander around his sensitive flesh.'
+	'"I''m close," he moans, his eyes closed clearly enjoying what you''re doing. "Take it, swallow it all."'
+	
+	gs 'arousal', 'bj', iif($wl_fetish['atm'] = 'yes', -8, -1), 'prostitution', 'humiliation'
+	gs 'stat'
+		
+	act 'Open your mouth': gt 'mod_wlife_solicitation', 's8_end'
+end
+
+if $ARGS[0] = 's8_end':
+	*clr & cla
+	minut += 10
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_8/private/anal_atm.mp4"></video></center>'
+	'His cock twitches in your hand as his cum violently erupts from his meat and shoots into your mouth. "Fuck, take it bitch. Take my cum," he shouts loudly into the apartment as he throws his head back when the intensity of his orgasm takes hold of his body.'
+	*nl		
+	
+	swallow += 1
+	gs 'cum_call', 'mouth', 'a client'	
+	gs 'arousal', 'hj', -2, 'prostitution'
+	gs 'stat'
+	
+	if wl_whore['pav_regular'] = 1:
+		minut += 10
+		pcs_mood += iif($wl_fetish['atm'] = 'yes', 20, 40)
+		gs 'drugs', 'alcohol', 'vodka', 1
+		
+		if wl_whore['pav_regular_s8_end'] = 0:
+			wl_stats['acceptance'] += 2
+			'He walks over to the fridge, after you have swallowed his spunk down, and pulls out two bottles of beer. "Do you want one as well? I bet my cum doesn''t taste that great'+iif(wl_temp = 1, ', but still better than your ass,"', ',"')+' he says and flashes you a boyish grin.'
+			'"Uhm... sure," you say a bit confused about the abrupt change in tone. One minute ago he nearly was chocking you to death and now he''s offering you a beer as if you are a friend coming over to hang out.'
+			'"I really appreciate you sleeping with me again," he explains. "Most girls aren''t able to keep up with what I need from them and nobody went home with me twice."'
+			'"If you would be nicer, maybe more girls would return home with you." You take a big gulp and swirl it around to get the taste of cum'+iif(wl_temp = 1, ' and ass ', ' ')+'out of your mouth.'
+			'He shakes his head. "It''s not working for me if it''s all sweet and soft." He shrugs and takes a big gulp himself. "No idea why, but I need to take control and break the girl or I can''t get off. Maybe something is broken inside. I don''t know. But you aren''t normal yourself, aren''t you?"'
+			'"What makes you say that?" you ask and wonder if it''s true. You were just a normal average schoolgirl a short while ago.'
+			'"You came both times. I never made a girl cum like this before." You blush. It''s nothing you have control over, but you hate that your cheeks turn red and you avert your gaze. He laughs and it''s sounds not at all like you would have expected. It''s soft, warm and understanding. "You liked it, didn''t you?"'
+			'Shit, he''s right. You did. You loved it. Should you tell him that? You ask yourself as your fingers nervously play with the label on the beer bottle. Finally, after at least a whole minute has passed, you nod. "Yeah I did."'
+			'He surprises you again with his reaction. "Thank god," he says relieved and his body visibly relaxes. "I always feel bad about what I do afterwards, but I can''t control myself. One reason I only use whores. At least they go with me willingly."'
+		else
+			'After you''re done, he offers you a beer again and the two of you chat for a few minutes about random stuff like the weather, before you get ready to leave.'
+		end
+		*nl
+		
+		if wl_temp = 1:
+			*nl
+			money += 500
+			pcs_mood += 20
+			gs 'stat'
+			'"Before you go," he hands you 500 <b>₽</b>. "That''s for... you know... doing ass-to-mouth."'
+		end
+			
+		killvar 'wl_temp'
+			
+		act 'Get dressed and leave': gt 'mod_wlife_solicitation', 'end'
+	else
+		'"Wait," he says when you close your mouth to swallow his spunk down. "Savor it." You have no choice, but to do it, when you want to finally get out of here and so you swirl the cum around in your mouth until he signals you with a short nod it''s now OK to swallow it down. "And now get the fuck out of my house you disgusting slut."'
+
+		killvar 'wl_temp'
+		
+		act 'Get dressed and leave': gt 'mod_wlife_solicitation', 'end'
+	end	
+
+	gs 'stat'
+end
+
+!!------ set_9 ------
+
+if $ARGS[0] = 'set_9':
+	*clr & cla
+	minut += 15
+	$orgasm_or = 'no'
+	$wl_whore['pav_walk'] = iif($wl_whore['client_behavior'] = 'abusive', 'pavResidential', 'pav_complex')
+	gs 'mod_wlife_solicitation', 'travel', $wl_whore['pav_walk']
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_9/private/anal_'+iif($wl_whore['client_behavior'] = 'abusive', 1, 0)+'.mp4"></video></center>'
+	gs 'fame', 'pav', 'prostitute', iif($wl_whore['client_behavior'] = 'abusive', rand(3,6), rand(1,2))
+	if $wl_whore['client_behavior'] = 'abusive':
+		
+	else
+	
+	end
+	
+	act 'Get on your knees':
+		*clr & cla
+		minut += 10
+		'<center><video autoplay loop src="mod/wlife/images/prostitution/pavlovsk/street/set_9/private/end.mp4"></video></center>'
+		if $wl_whore['client_behavior'] = 'abusive':
+		
+		else
+		
+		end	
+	
+		facial += 1
+		gs 'cum_call', 'face', 'a client'
+		gs 'arousal', 'end'
+		gs 'stat'
+		
+		if $wl_whore['client_behavior'] = 'abusive':
+			act 'Leave with cum on your face': gt 'mod_wlife_solicitation', 'end'
+		else
+			act 'Clean up and leave': gt 'mod_wlife_solicitation', 'end', 'clean'
+		end	
+	end
+end	
+	
+!!------ rape ------
+
+if $ARGS[0] = 'rape':
+
+end
+
+!!------ End ------
+
+if $ARGS[0] = 'end':
+	minut += 5
+	wl_whore['pav_timer_hour'] = hour
+	killvar 'wl_rand'
+	if $ARGS[1] = 'clean':
+		minut += 5
+		cumspclnt = 20
+		gs 'cum_cleanup'
+	end
+	gt $loc, $metka
+end
+
+!!------ Travel times and return locations ------
+
+if $ARGS[0] = 'travel':
+	if $wl_whore['pav_walk'] = 'pav_residential' or $wl_whore['pav_walk'] = 'pav_complex':
+		if $loc = 'mod_wlife_warehouse' or $loc = 'liam':
+			minut += 20
+		elseif $loc = 'pav_industrial' or $loc = 'pavtrain':
+			minut += 15
+		elseif $loc = 'pav_park' or $loc = 'pav_commercial':
+			minut += 10
+		else
+			minut += 5
+		end		
+		$metka = iif($wl_whore['pav_walk'] = 'pav_complex', 'start', '')
+	elseif $wl_whore['pav_walk'] = 'pav_commercial':
+		if $loc = 'mod_wlife_warehouse' or $loc = 'liam':
+			minut += 15
+		elseif $loc = 'pav_commercial':
+			minut += 5
+		else
+			minut += 10
+		end
+		$metka = ''
+	elseif $wl_whore['pav_walk'] = 'mod_wlife_warehouse':
+		if $loc = 'pav_residential' or $loc = 'pav_complex' or $loc = 'pav_park' or $loc = 'pavtrain' or $loc = 'gdk':
+			minut += 20
+		elseif $loc = 'pav_commercial':
+			minut += 15
+		elseif $loc = 'pav_industrial':
+			minut += 10
+		else
+			minut += 5
+		end
+		$metka = 'street'
+	elseif $wl_whore['pav_walk'] = 'pavtrain':
+		if $loc = 'liam' or $loc = 'pav_commercial':
+			minut += 10
+		elseif $loc = 'mod_wlife_warehouse':
+			minut += 20
+		elseif $loc = 'pavtrain':
+			minut += 5
+		else
+			minut += 15
+		end
+		$metka = ''
+	end	
+	
+	$loc = $wl_whore['pav_walk']
+end
+
+
+!!{	
+if $ARGS[0] = 'maybe_use_later':
+	'He pushes you down with one hand as he clumsily pulls his pants down with the other. "I will show the fat bastard who is the boss," he murmurs, grabbing your head at the same time. He them pushes his'+iif(wl_whore['pav_condom'] = 1, ' condom covered ', ' ')+'cock down your throat without any regard for your well-being. You gag, tears well up in your eyes, but you get your throat under control thanks to your experience and let him abuse your face.'
+	'He isn''t fucking you. At least not in his mind. The whole time he fucks your face he complains about some bitch in accounting or his boss or secretary. The whole thing isn''t about sex, it''s about finding an outlet for his frustration and aggression. He doesn''t even stop his attack on your face, when he shoots his cum '+iif(wl_whore['pav_condom'] = 1, 'into the condom', 'down your throat')
+	money += 100
+	if rand(0,1) = 1:
+		'He stops... finally... and it''s as if a spell has been lifted. He stares at the tears on your cheeks for what feels like an eternity, before he says. "Sorry about that... uhm...," he stammers as you wipe away the tears. "Could you clean my dick?" When he sees the hesitation in your eyes he adds. "I give you 100 <b>₽</b> extra."'
+		'You sigh. '+iif(wl_whore['pav_condom'] = 1, 'A few drops probably can''t hurt,', 'Why no, you already swallowed his load')+' you think, grab his cock and give it a few soft strokes to push out the last drops of cum, before you take the head back into your mouth, swirl your tongue around it and like it clean.'
+		gs 'mod_wlife_functions', 'std_check_oral', 'low'
+	end
+end
+}
+
+--- mod_wlife_solicitation ---------------------------------
+
+

+ 739 - 0
locations/mod_wlife_story.qsrc

@@ -0,0 +1,739 @@
+# mod_wlife_story
+
+if $ARGS[0] = 'start_0':
+	*clr & cla
+	minut += 5
+	menu_off = 1
+	wl_timer['main'] = daystart
+	wl_status['start'] = 1
+	wl_stats['respect'] = 60
+	gs 'mod_wlife_npc'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/newspaper.jpg"></center>'
+	'The daily newspaper is on the kitchen table. Typically, it get''s read by your step-father in the morning and then get''s ignored by the rest of the family until it ends up in the trash in the evening. For once the lead story peaks your interest, when you glance at it. You pick it up and start to read.'
+	*nl
+	'<i>Missing girl (<<age>>) found dead near Pavlovsk/St. Petersburg.</i>'
+	'<i>Two hunters made a gruesome discovery yesterday near the small village of Gadukino. "Suddenly Bogdan, my dog, went crazy and runs away deeper into the woods. We followed him and then we found her, the girl" one of the hunters told our reporter. The body of the young girl was quickly identified by the police as the <<age>> year old Zoya Stepanova. She was reported missing by her parents two weeks ago, when she didn''t return home Sunday evening after supposedly going to a friend. "She was such a sweet girl, but something changed a few months ago. She become withdrawn and didn''t talk to us anymore," her mother told our reporter. The police confirmed that they treat the case as a suicide. The toxicology report identified a common sleeping pill in her blood that matches pills that were found near the body.</i>'
+	*nl
+	'Zoya Stepanova? Did she go to your school? The name doesn''t ring a bell.'
+		
+	act 'Put the newspaper away': 
+		if willpowermax < 100:
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/objects/info.gif"></center>'
+			*nl
+			'It''s recommended to start <i>Whore Life</i> with a maximum of 100 willpower. You can only have <<willpowermax>> willpower. Do you want to continue with <<willpowermax>> or raise it to 100?'
+			
+			act '<<willpowermax>>': gt 'kuhrPar'
+			act '100': 
+				willpowermax = 100
+				pcs_willpwr = willpowermax
+				gt 'kuhrPar'
+			end
+		else
+			gt 'kuhrPar'
+		end
+	end
+end
+
+if $ARGS[0] = 'start_1':
+	*clr & cla
+	minut += 2
+	menu_off = 1
+	wl_timer['main'] = daystart + rand(0,2)
+	wl_status['start'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/jeep.jpg"></center>'
+	'You were about to cross the street near the '+iif(hour = 7, 'school', 'community center')+', when an old jeep turns around a corner and slowly drives down the road towards you. Can''t he speed up a bit? You think as you watch him slowly crawl towards you way below the speed limit of 60 km/h. Two boys, each maybe two or three years older than you, are sitting inside the Jeep and neither is watching the road. They''re instead staring at a group of girls outside the '+iif(hour = 7, 'school', 'community center')+' and talking excitedly to each other. "Boys," you whisper and roll your eyes as the car drives by.'
+	
+	act 'Continue': gt 'pav_residential'
+end
+
+if $ARGS[0] = 'start_2':
+	*clr & cla
+	minut += 2
+	menu_off = 1
+	wl_timer['main'] = daystart + rand(0,2)
+	wl_status['start'] = 3
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/jeep.jpg"></center>'
+	'You walk down the streets in Pavlovsk''s residential area near the '+iif(hour = 7, 'school', 'community center')+', when a chill runs down your spin and you have the sudden feeling of being watched. You turn around and see that the boys inside the jeep are back. It''s slowly driving by and one of the two boys stares at you while the other one looks at a group of girls on the other side of the road. This is more than two boys looking at girls, this feels creepy. Your gaze follows the car for a few more seconds, before it turns right and vanishes behind a building.'
+	
+	act 'Continue': gt 'pav_residential'
+end
+
+if $ARGS[0] = 'start_3':
+	*clr & cla
+	minut += 2
+	menu_off = 1
+	wl_timer['main'] = daystart
+	wl_status['start'] = 4
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/jeep.jpg"></center>'
+	'The jeep is back again. This time it''s parked outside the '+iif(hour = 7, 'school', 'community center')+', but the same boys are sitting inside it. They point at some of the girls and even take photos with their smartphones. At some point one of them takes a picture of you as well. This is going too far. Maybe you should do something? Let them know they got caught stalking you and the other girls?'
+
+	act 'Ignore it': gt $loc
+
+	gs 'willpower', 'misc', 'self', 'medium'
+	if will_cost <= pcs_willpwr:
+		act 'Tease them (<<will_cost>> Willpower)':
+			*clr & cla
+			minut += 2
+			wl_stats['respect'] += 2
+			wl_stats['loyalty'] -= 2
+			pcs_mood += 20
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'<center><video autoplay loop src="mod/wlife/images/player/flip_off.mp4"></video></center>'
+			'You conjure up a playful smile, when one of the boys looks at you. This is the moment you have waited for. His eyes grow wide, when you push two fingers inside your mouth. He points at you while his other hand taps the shoulder of his friend to get his attention. When his eyes are fixed on you as well, you pull out your index finger, before lasciviously pulling out your middle finger as well, flipping them off in the process.'
+			'The boys stare at you for several seconds, staring at you in disbelief. Then they spring into action. One starts the car while the other one takes another picture of you with his phone, before the jeep accelerates and speeds away. Idiots, you think as you let out a low chuckle.'
+			
+			act 'Continue': gt $loc
+		end
+	else
+		act 'Tease them (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'start_4':
+	*clr & cla
+	menu_off = 1
+	wl_timer['main'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/jeep.jpg"></center>'
+	'The jeep, you have seen the last few days, speeds around a corner as you cross the street and nearly runs you over. The driver breaks hard and pulls over to the side. The two boys and two scary looking older men get out of the jeep. "There she is," one of the boys shouts and points at you.'	
+			
+	act 'Run away':
+		*clr & cla
+		minut += 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/vadim_bely.jpg"></center>'
+		'Instinctively you turn around and try to run away, but they quickly catch up to you. The driver, a bald guy with a lot of tattoos, tries to grab your wrist. You pull away from him, slapping his hand away from your body as you do. "Get your hands off me!" You can see the look in his eyes harden, and one of the younger guys roughly grabs you by the wrist again. The tattooed man snarls at you. "Who do you think you are? Show some respect, you fucking cunt," he shouts, before turning towards one of the younger guys. "That''s the bitch you were talking about?" he asks. "Yeah," one of them replies while the other one nods in agreement.'
+		
+		act 'Plead with them':
+			*clr & cla
+			minut += 2
+			gs 'pain', 6, 'handR', 'twist'
+			gs 'pain', 6, 'armR', 'twist'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/wrist.jpg"></center>'
+			'His hand has your wrist gripped like it''s in a vice, and you involuntarily shriek in pain: "Ow! Please let me go, you''re hurting me!" Instead of letting go, he twists your arm behind your back, which hurts even more. The tattooed man doesn''t look like he pities you at all. "Shut the fuck up or I''ll shut you up for good." You''re wincing in pain and are at a loss for words. Meanwhile, he digs through your personal items and finds your passport. "<<$pcs_firstname>> <<$pcs_lastname>>, living in Pavlovsk... Interesting." He pockets your passport. Then he turns back to you and says in a menacing voice. "You know what <<$pcs_firstname>>, you remind me of of one of my girls. She was being rude to me a few days ago, not even as much as you are now. I had to hurt her, really hurt her." The other man twists your arm again to proof his point. "Get her in the car."'
+					
+			act 'Go with them quietly': 
+				cla & *nl
+				minut += 1
+				wl_stats['loyalty'] += 2 
+				'You give up. There is no way that you would get away from them. "By the way," he says, when you reach the car, "my name is Bely, Vadim Bely, but for you it''s Mr. Bely."'
+				gs 'stat'
+										
+				act 'Continue': gt 'mod_wlife_story_sex', 'start'
+			end
+									
+			gs 'willpower', 'misc', 'self', 'easy'
+			if will_cost <= pcs_willpwr:
+				act 'Try to get away (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 2
+					wl_stats['loyalty'] -= 2
+					wl_stats['respect'] += 2
+					gs 'willpower', 'pay', 'self'
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/caught.jpg"></center>'
+					'You scream, hoping that somebody hears you and try to run away again.'
+					'"Get her boys!" the tattooed man screams and two of his guys easily grab you while a third one puts his hand over your mouth.'
+					'"Quick, get here into the car," the tattooed man says and they drag you to it. You scream against the hand, struggle and kick with your feet, but to no effect.'
+					'"That''s a feisty one, Mr. Bely," one of the guys says to the tattooed guy.'
+					'"Don''t worry Iosif, she will learn to behave. They always do."'
+											
+					act 'Continue': gt 'mod_wlife_story_sex', 'start'
+				end
+			else
+				act 'Try to get away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	end			
+end
+
+if $ARGS[0] = 'start_aftermath_volya':
+	*clr & cla
+	menu_off = 1
+	minut += 5
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'Volya is still there when you leave the bathroom. "Are you alright?" he asks with a worried look.'
+	gs 'stat'	
+	
+	act 'Nod weakly':
+		cla & *nl
+		'You just nod and keep your head down.'
+		'"Listen to me <<$pcs_firstname>>, I know that you are probably angry, afraid and don''t know what to do." He stops for a moment waiting for a reaction, but you are still looking down and keeping your mouth shut.'
+		'"There are worse things than to let some guys stick their cocks in you. They could stick knives in you, instead. You need to be strong, keep your head down and stay out of trouble. I''ll help you get through this if I can."'
+		*nl
+		'You look up and think that...'
+		
+		act 'You can''t trust him':
+			cla & *nl
+			npc_rel['A904'] -= 10
+			'... you can''t trust him. He didn''t fuck you like the others, but he is still part of their gang.'
+			'"Just take me to Georgiy," you say quietly.'
+			
+			act 'Follow him': gt 'mod_wlife_story', 'start_aftermath_georgiy'
+		end
+		
+		act 'You can trust him':
+			cla & *nl
+			npc_rel['A904'] += 5
+			'... you can trust him. He seems to care and as part of Mr. Bely''s crew he might be able to help you get through this.'
+			'"Thanks, Volya," you say.'
+			'He smiles. "Ok, follow me. I''ll take you to Georgiy."'
+			
+			act 'Follow him': gt 'mod_wlife_story', 'start_aftermath_georgiy'
+		end
+	end
+	
+	act 'Cry':
+		cla & *nl
+		'"No," you whisper and tears start to fill your eyes. Within a second he takes you into his arms. "<<$pcs_nickname>>, it''s ok, I''ll help you get through this."'
+		
+		act 'Push him away':
+			cla & *nl
+			npc_rel['A904'] -= 20
+			'"Get away from me," you tell him between sobs and push him away. "Just leave me alone."'
+			'"<<$pcs_firstname>>," he says with a calm voice. "There are worse things than to let some guys stick their cocks in you. They could stick knives in you, instead. You need to be strong, keep your head down and stay out of trouble. I''ll help you get through this if I can."'
+			*nl
+			'You wipe away your tears and shake your head. "Really, please leave me alone and just take me to Georgiy."'
+			'"Fine, if that''s what you want, but my offer stands."'
+			
+			act 'Follow him': gt 'mod_wlife_story', 'start_aftermath_georgiy'
+		end
+		
+		act 'Cry into his shoulder':
+			cla & *nl
+			npc_rel['A904'] += 20
+			'The flood gates are open and you can''t stop yourself from crying into his shoulder.'
+			'"<<$pcs_firstname>>," he says with a calm voice and looking more and more worried by the second. "There are worse thinks than to let some guys stick their cocks in you. They could stick knives in you instead. You need to be strong, keep your head down and stay out of trouble. I''ll help you get through this if I can."'
+			'Those words don''t do anything to calm you down and you keep crying. It takes a few more minutes and more soothing words from Volya to really calm you down.'
+			*nl
+			'When you finally let go, he gives you a warm smile. "Are you ready to go to Georgiy?"'
+			'You weakly nod.'
+			'"Remember, be strong and do what they say. We''ll figure out a way to get you through this."'
+			
+			act 'Follow him to Georgiy': gt 'mod_wlife_story', 'start_aftermath_georgiy'
+		end
+	end
+	
+	act 'Tell him to go fuck himself':
+		cla & *nl
+		'"Really? Am I alright? Fuck you Volya!" you swear, but keep your voice down, so that no one else can hear you. "They basically raped me. How do you think I feel?"'
+		'He takes a step closer to you. "Listen to me <<$pcs_firstname>>, I get it, you''re pissed and rightly so, but talking like that can get you in a lot of trouble."'
+		'"Trouble? How can I possibly get into more trouble?" venting your anger. "They want me to... to be... to be a prostitute!"'
+		'"<<$pcs_firstname>>," he says with a calm voice and looking more and more worried by the second. "There are worse things than to let some guys stick their cocks in you. They could stick knives in you, instead. You need to be strong, keep your head down and stay out of trouble. I''ll help you get through this if I can."'
+		
+		act 'Tell him you don''t want his help':
+			cla & *nl
+			npc_rel['A904'] -= 20
+			'"I don''t need and don''t want your help, Volya. Just take me to Georgiy."'
+			'"Fine, follow me."'
+			
+			act 'Follow him': gt 'mod_wlife_story', 'start_aftermath_georgiy'
+		end
+		
+		act 'Calm down and accept his help':
+			cla & *nl
+			npc_rel['A904'] -= 10
+			'You take a breath. "Ok, Volya. I''ll try."'
+			'"Good, now let''s go to Georgiy."'
+						
+			act 'Follow him': gt 'mod_wlife_story', 'start_aftermath_georgiy'
+		end
+	end
+end
+
+if $ARGS[0] = 'start_aftermath_georgiy':
+	*clr & cla
+	minut += 2
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/couch.jpg"></center>'
+	'Volya leads you through an old and neglected hallway. A kitchen is right next to the bathroom, but you never want to cook or eat something in there. It''s in a horrible condition, just like the rest of the house.'
+	'As you walk on, you move past a common room. Two of the guys are sitting on an old couch and watch TV. Both of them belong to the group who assaulted you. It''s strange to see them so relaxed, chatting with each other and drinking a beer after what happened a few minutes ago. "Those are Shura and Iosif." Volya tells you. "They are Georgiy''s right and left hand man.'
+	'"And what about your boss? Mr. Bely?" you ask.'
+	'"Vadim? He mostly keeps away from this part of the business. In fact, I don''t see him very often. Georgiy, his brother, manages the day to day operations."'
+	*nl
+	'Before you can ask him something else, he opens the door to a big but mostly empty room. There is only a lonely couch inside.'
+	'"Wait here," he commands, "and don''t do anything stupid."'
+	*nl
+	'One look at the filthy thing wipes away any thought about sitting down and you decide to just stand where you are and wait.'
+	gs 'stat'		
+	
+	act 'Wait':
+		*clr & cla
+		minut += 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'	
+		'"Sit down," he commands and, in light of Volya''s warning, you change your mind about the couch and do it without hesitation.'
+		'For a moment he only stands there taking a good look at your face and your body. He seems satisfied with what he sees and continues to talk, "Here is how it''s going to be, girl. You are working for us now. You probably have figured out what you are going to do." He looks at you expectedly and you nod.'
+		*nl
+		'"Good, here is the deal. This will be a mutual beneficial agreement, you get some money, we get some money and everybody will be happy," he starts to explain and you nod every time he makes a pause to wait for a reaction. "If you behave, we''ll never have to punish you again. But if you aren''t a good girl, you''ll leave us no other choice. It''s up to you."'
+		'You nod again and keep quiet, as he keeps talking on. "You won''t be working for us here in Pavlovsk. The town is too small, there won''t be enough clients. We have to take you somewhere else."'
+		'"No, you can''t do that, please," you interject and look at him shocked, "my whole life is here, my family, school. Please don''t send me somewhere..."'
+		'"Shut up!" he screams and stares at you angrily, until you lower your head and look down to the floor. "I''m sorry, Sir."'
+		'"Look at me when I''m talking to you," he demands and you look up again. "What do you mean with somewhere?"'
+		'"Abroad?" you say, remembering the stories of young eastern European women that get send somewhere in western Europe and end up in a cheap brothel.'
+		'"Do I look like some traitorous trash that sends our girls away?"'
+		'"No, Sir," you answer him quickly and shake your head.'
+		'"Exactly, Russian girls are for Russians," he says. You seem to have triggered something in him. After a moment he continues to explain, "we will pick you up, drive you to work and drive you back home again, when you are finished. Nothing more. You will be back home the same day."'
+		*nl
+		'"Volya!" he shouts and the young man immediately get''s back inside the room. "Get her some clothes and a pair of heels that are appropriate for her new job."'
+		gs 'stat'
+		
+		act 'Go with Volya': 
+			*clr & cla
+			minut += 5
+			gs 'stat'
+			'<center><b>Welcome to G & M - Clothes for all your needs</b></center>'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/locations/singles/clothes_shop.jpg"></center>'
+			'You go with Volya to the nearby G & M store and rummage through the outfits to find some fitting attire for your new job.'
+			*nl
+			'After five minutes you find something you could wear.'
+			
+			act 'Try on the outfit': gt 'mod_wlife_story', 'start_aftermath_firstoutfit'
+		end
+	end
+end
+
+if $ARGS[0] = 'start_aftermath_firstoutfit':
+	*clr & cla
+	minut += 10
+	'<center><b>Welcome to G & M - Clothes for all your needs</b></center>'
+		
+	i = 0
+	j = 0
+	
+	$wl_shop = '<center><table><tr>'
+	
+	:wl_jump_firstoutfit
+	i += 1
+				
+	gs 'clothing_attributes', 'cheap', i
+	if i < 413 and (cheap[i] = 1 or CloStyle ! 4 or CloBimbo ! 0 or CloInhibit > pcs_inhib): 
+		jump 'wl_jump_firstoutfit'
+	elseif i < 413:
+		j += 1
+		wl_cloth_price[i] = rand(1000,1200)
+		$wl_shop += '<td><a href="exec: wl_total_price = wl_cloth_price[<<i>>] & cheap[<<i>>] = 1 & cheapH[<<i>>] = 50 & cheapB[<<i>>] = pcs_hips & gt ''mod_wlife_story'', ''start_aftermath_firstheels''"><img title="Click on the picture to buy this outfit." height="250" src="images/pc/clothing/1cheap/<<i>>.jpg"></a></td>'
+		if j = 4: j = 0 & $wl_shop += '</tr><tr>'
+		jump 'wl_jump_firstoutfit'
+	elseif $wl_shop = '<center><table><tr>':
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/singles/clothes_shop.jpg"></center>'
+		'Developer Note: It seems you have run into a problem, it could be that you already own all possible prostitution outfits that are available and Volya can''t buy you one. Sorry about that.'
+		act 'Look for a pair of high heels': gt 'mod_wlife_story', 'start_aftermath_firstheels'	
+	else
+		$wl_shop += '</tr></table></center>'
+		$wl_shop += '<br>Click on the outfit you want to buy.'
+		$wl_shop
+	end
+end
+
+if $ARGS[0] = 'start_aftermath_firstheels':
+	*clr & cla
+	minut += 10
+	'<center><b>Welcome to G & M - Clothes for all your needs</b></center>'
+		
+	i = 0
+	j = 0
+	
+	$wl_shop = '<center><table><tr>'
+		
+	:wl_jump_firstheels
+	i += 1
+	
+	gs 'shoe_attributes', 'gandm', i
+	if i < 51 and (sgandm[i] = 1 or ShoHeels < 4 or ShoHeels > 5): 
+		jump 'wl_jump_firstheels'
+	elseif i < 51:
+		j += 1
+		wl_shoe_price[i] = rand(700,900)
+		$wl_shop += '<td><a href="exec: wl_total_price += wl_shoe_price[<<i>>] & sgandm[<<i>>] = 1 & gt ''mod_wlife_story'', ''start_aftermath_pay''"><img title="Click on the picture to buy this pair of heels." height="250" src="images/pc/shoes/G&M/<<i>>.jpg"></a></td>'
+		if j = 4: j = 0 & $wl_shop += '</tr><tr>'
+		jump 'wl_jump_firstheels'
+	elseif $wl_shop = '<center><table><tr>':
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/singles/clothes_shop.jpg"></center>'
+		'Developer Note: It seems you have run into a problem, it could be that you already own all possible high heeled shoes that are available and Volya can''t buy you one. Sorry about that.'
+		act 'Continue': gt 'mod_wlife_story', 'start_aftermath_pay'
+	else
+		$wl_shop += '</tr></table></center>'
+		$wl_shop += '<br>Click on the shoes you want to buy.'
+		$wl_shop
+	end
+end
+
+if $ARGS[0] = 'start_aftermath_pay':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><b>Welcome to G & M - Clothes for all your needs</b></center>'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/singles/clothes_shop.jpg"></center>'
+	'Outfit and heels in hand you walk back to Volya who was typing on his phone the whole time you were shopping. "I found something," you say. "Great, then go pay and we can get out of here," he says and points at the checkout counter.'
+	'Wait... they are forcing you to become a prostitute and you have to pay for the clothes? Anger boils up inside you about the unfairness of the situation. Why should you have to pay the <<wl_total_price>> <b>₽</b>? '+iif(karta + money < wl_total_price, 'You don''t even have enough money to pay for it.', '')
+	
+	gs 'willpower', 'misc', 'self', 'medium'
+	if will_cost <= pcs_willpwr:
+		act 'Protest (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 2
+			wl_stats['loyalty'] -= 1
+			wl_stats['respect'] += 1
+			wl_temp = 1
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"Why do I have to pay for my clothes? Shouldn''t you pay if you''re forcing me into prostitution," you hiss keeping your voice down so that nobody can hear you by accident.'
+			'Volya holds up his hand in a defensive gesture. "Don''t blame me. I''m only the messenger. If it would be up to me, you wouldn''t have to pay for it... you wouldn''t be here at all. If the amount is a problem, I can pay for it, but you''ll have to pay the Bely''s back at some point."'
+			'"Fine," you sigh. This day gets worse by the minute.'
+
+			gs 'mod_wlife_story', 'start_aftermath_pay_action'
+			if karta + money >= wl_total_price:
+				act 'Let him pay for it':
+					cla & *nl
+					minut += 2
+					wl_debt['amount'] += wl_total_price
+					'"If you don''t mind, can you pay for it?" you ask. He just shrugs, takes the clothes from your hands and says. "No problem." After a few minutes he returns from the checkout counter. "Here, this is for you, but you now owe the Bely''s <<wl_debt[''amount'']>> <b>₽</b>," he says and hands you a shopping bag with your new outfit. "Thanks," you reply.'
+					
+					act 'Go outside': gt 'mod_wlife_story', 'start_aftermath_end'
+				end
+			end
+		end
+	else
+		act 'Protest (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	gs 'mod_wlife_story', 'start_aftermath_pay_action'
+end
+
+if $ARGS[0] = 'start_aftermath_pay_action':
+	if karta + money < wl_total_price:
+		act 'Tell him you can''t afford it':
+			cla & *nl
+			minut += 2
+			wl_debt['amount'] += wl_total_price
+			gs 'stat'
+			'"I don''t have enough money," you say, but Volya doesn''t seem to care. He just shrugs, takes the clothes from your hand and says. "No problem, but you''ll have to pay the Bely''s back sooner or later."'
+			'After a few minutes he returns from the checkout counter. "Here, this is for you," he says and hands you a shopping bag with your new outfit. '+iif(wl_temp = 1, '"Gee, thanks," you reply, your voice dripping with sarcasm.', '"Thanks," you say and take your new outfit... your new whore outfit from his hands.')
+			
+			act 'Go outside': gt 'mod_wlife_story', 'start_aftermath_end'
+		end
+	else
+		act 'Pay for it':
+			cla & *nl
+			minut += 2
+			if karta >= wl_total_price:
+				karta -= wl_total_price
+			elseif money >= wl_total_price:
+				money -= wl_total_price
+			else
+				wl_total_price -= karta
+				karta = 0
+				money -= wl_total_price
+			end
+			gs 'stat'
+			'You have no other choice, you sigh and pay for your new clothes.'
+			
+			act 'Go outside': gt 'mod_wlife_story', 'start_aftermath_end'
+		end
+	end
+end
+
+if $ARGS[0] = 'start_aftermath_end':
+	*clr & cla
+	minut += 30
+	wl_status['main'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'You go outside the shop and Volya tells you that he has to go. "I''ll call you tomorrow and we''ll discuss everything else. I''m on the clock, Georgiy is waiting for me."'
+	'You don''t really know what to say, so you just nod. "OK."'
+	'"Bye <<$pcs_nickname>>," he says, but turns around after a few minutes and pulls something out of his pocket. "Here, your passport," he says and hands it back to you, before walking back towards the warehouse.'
+		
+	killvar 'i'
+	killvar 'j'
+	killvar 'wl_shoe_price'
+	killvar 'wl_cloth_price'
+	killvar 'wl_total_price'
+	killvar '$wl_shop'
+	killvar 'wl_temp'
+		
+	act 'Leave': gt 'pav_industrial'
+end
+
+!! Police 
+
+if $ARGS[0] = 'police':
+	CLOSE ALL
+	*clr & cla
+	menu_off = 1
+	minut += 2
+	wl_police['timer'] = daystart
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/search.mp4"></video></center>'
+	'Your heart stops when you turn around and see a police car driving towards you. This isn''t good. You turn back around and casually walk to one of the nearby trucks to vanish behind it. You can''t get caught, not now. You left your clients car only a few seconds ago. If the cops have seen that, you''re toast.'
+	*nl
+	'With each step you take you''re getting closer to the truck. You hope that you didn''t draw any attention towards you and that it''s just a coincidence that they''re driving by.'
+	*nl
+	'Only a few more meters, a few more seconds until you''re out of sight and you can run away. When a car stops next to you, you don''t look and just keep walking.'
+	*nl
+	'A car door opens and closes behind you as you turn around the truck. Just keep going, you think, but a few seconds later a hand grabs you. "Not so fast," a male voice says. It''s a cop. You''re busted.'
+		
+	act 'Tell him you''re innocent':
+		*clr & cla
+		minut += 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/arrested.jpg"></center>'
+		'"I didn''t do anything with him," you blurt out and you realize the mistake you made the moment the words have left your mouth. The cop laughs. He actually laughs. That probably wasn''t the smartest thing to say and makes you look even more guilty as if your clothes not already scream ''whore'' at him.'
+		'"Haven''t heard that before," he tells you and pulls a pair of handcuffs from his belt. "You just happen to get out of car dressed like this at a gas station?"'
+		'Fuck, fuck, fuck... what should you do? You look around and see '+iif(wl_tomas_known = 1, 'Tomas', 'Bely''s guy')+' standing inside the shop of the gas station and an idea forms inside your head.'
+		'"Yeah, I work here. My boss is inside. He will clear up this small misunderstanding," you lie desperately, but the officer only shakes his head and puts the cuffs on you.'
+		'"You know girl, I only believe one part of that story. Can you guess what it is?" You shake your head as he opens the door of his car. "That you work here."'
+		'He applies soft pressure with his hand to your head and guides you safely inside the car.'
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 2
+			'<center><video autoplay loop src="mod/wlife/images/sex/story/police/caught_00.mp4"></video></center>'
+			'Your life is over. Literally over. He will take you to the police station and then you either go to prison or the Bely''s kill you.'
+			'"Hey? Girl?" The voice of the police officer cuts into your thoughts. "You look like you have seen a ghost. Don''t worry. We typically let first time offenders go with a warning."'
+			'"It doesn''t matter. My life is fucking over," you say still shocked from getting arrested.'
+			'"You have to look at it as a chance. I don''t know why a young thing like you works on the streets, but maybe get out before it''s to late?" He suggests.'
+			*nl
+			'He doesn''t understand, why would he? He thinks you are working there like it was your choice. And then you remember his words, first time offenders only get a warning. "Do you have to book me? Can''t you give me the warning here?"'
+			'He looks at you in the rear-view mirror and shakes his head. "I have to follow procedure."'
+			'"Please, can''t you make an exception? Just this one time?" You beg him, but he shakes his head again.'
+			*nl
+			'You realize you only have two choices left. Either give up and take your chances with Volya and the Bely''s. You''re probably not the first whore getting caught on the job and Volya promised several times to help you. He should have a way out of this situation. Especially, if you only get a warning. Or you try and convince him.'
+			
+			gs 'stat'
+			
+			act 'Give up':
+				*clr & cla
+				minut += 2
+				wl_police['convinced'] = 0
+				'<center><video autoplay loop src="mod/wlife/images/sex/story/police/caught_01.mp4"></video></center>'
+				'You give up and hope for the best. Maybe if they let you go with a warning, you can safely get out of this situation. "Fine," you say as if it was up for discussion.'
+				'"That''s it? You give up so easily?" He suddenly asks. "I thought you were a whore." And what he means by that is clear. Of course, why would a cop be any different than all the other assholes you have met in the last weeks.'
+				'"Fine," you say again. If that''s what it takes to make this this mess go away, you will do it.'
+				'He turns right onto an old construction side and parks the car. The moment he steps out of the vehicle you feel a wave of relief washing over you. No prison or worse is waiting for you in your future, just another cock and you have learned how to handle those.'
+				'"Do your job, bitch," he tells you coldly as he pulls out his rapidly growing dick.'
+				
+				gs 'stat'
+				
+				act 'Take his dick into your mouth': gt 'mod_wlife_story_sex', 'police_caught_0'
+			end
+			
+			gs 'willpower', 'sex', 'self'
+			if will_cost <= pcs_willpwr:	
+				act 'Convince him (<<will_cost>> Willpower)':
+					*clr & cla
+					minut += 5
+					wl_stats['acceptance'] += 2
+					wl_police['convinced'] = 1
+					gs 'willpower', 'pay', 'self'
+					'<center><video autoplay loop src="mod/wlife/images/sex/story/police/caught_00.mp4"></video></center>'			
+					'You have fucked for money, you can do it again to avoid prison or worse, you tell yourself and take a deep breath. You have nothing left to lose anyway.'
+					'"Sir," you say and put on the fake smile that you show your customers day after day. "Are you sure? Nobody has to know. Please, isn''t there something I could do to convince you?"'
+					'"What?" He asks surprised and takes his eyes of the road for a moment.'
+					'"You could punish me right here, right now in your car and make sure that I learn my lesson," you suggest as lascivious as possible.'
+					'He is silent for a moment, but encouraged by him not dismissing it outright you say: "Isn''t your motto protect & serve? Why don''t you protect me and I serve you?"'
+					'He laughs out loud. Not the reaction you were hoping for. He laughs and laughs and laughs while you sit there and wait for him to calm down.'
+					*nl
+					'"Too much?" You ask half a minute later.'
+					'"Yeah and you watch to much american television," he grins. "Also, you may have heard stories about us. But we aren''t all corrupt assholes that would take advantage of you."'
+					'You sigh and lean back against the seat. "So, why do I have to meet the only decent cop?"'
+					'"Sorry about that," he says half-jokingly, half-seriously.'
+					gs 'stat'
+					
+					act 'Continue':
+						*clr & cla
+						minut += 5
+						'<center><video autoplay loop src="mod/wlife/images/sex/story/police/caught_01.mp4"></video></center>'
+						'Several minutes pass until he suddenly turns the car around. "You know what, I have changed my mind. I''ll do it."'
+						'That takes you by surprise. "I thought you didn''t want to fuck me?"'
+						'"What? No... Oh I see, that was easy to misunderstand. I mean, I have changed my mind about making an exception," he explains as he drives back to the gas station.'
+						'"Really?" You ask and when he nods you feel a wave of relief washing over you. "What changed your mind?"'
+						'He shrugs. "I don''t know. You''re the first hooker that made me laugh."'
+						*nl
+						'He parks near the gas station in an old abandoned construction side and turns towards you in the car. "I can''t drop you off at the gas station. Somebody could see me, but it''s only a few hundred meters down the road."'
+						'"Ok, thanks. I can find the way," you tell him and when he gets out of the car you realize, he is risking his job by helping you. "Here, let me take those off," he says as he searches for the keys for the handcuffs.'
+						*nl
+						'This is the first time on the job that somebody does something nice for you without asking for everything in return. You ...'
+						
+						act 'Thank him':
+							cla & *nl
+							'... thank him. "Thanks, I know that you didn''t have to do that."'
+							'"Yes, I don''t have to and that''s why you have to promise me something," he says as he pulls out his keys.'
+							'Here it comes, you think.'
+							'"Take care of yourself, OK? I don''t know why you do what you do, but ...," he stops and looks at you for a moment. "Just take care."'
+							'You nod and blush a little bit. He seems to be a genuine good guy.'
+							*nl
+							'"Here take this," he hands you a card with his name and phone number on it. "If you ever have a problem, call me, ok?"'
+							'You nod, but the instant his car is around the corner you let his card fall to the ground. You can''t risk taking it with you. It would be too hard to explain if Volya or one of the other guys find it on you.'
+							
+							act 'Walk to the gas station': minut += 10 & gt 'mod_wlife_highway', 'outside'
+						end
+						
+						gs 'willpower', 'sex', 'self'
+						if will_cost <= pcs_willpwr:
+							act 'Really thank him (<<will_cost>> Willpower)':
+								gs 'willpower', 'pay', 'self'
+								gt 'mod_wlife_story_sex', 'police_caught_0'
+							end
+						else
+							act 'Really thank him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+						end
+					end
+				end
+			else
+				act 'Convince him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	end
+end
+
+!! Police - Aftermath
+
+if $ARGS[0] = 'police_aftermath':
+	*clr & cla
+	minut += 2
+	menu_off = 1
+	wl_whore['shifts_message'] = 0
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/jeep.jpg"></center>'
+	'A familiar car speeds down the road and stops right next to you. Two of Bely''s men exit it while a third stays behind the wheel.'
+	'"Vadim and Georgiy want to talk to you right now." One of them yells as they pull you inside the car.'
+	*nl
+	'That can''t be a good thing. Isn''t Vadim suppose to stay clear of the day to day operations? You at least remember Volya telling you something like this.'
+	'"Phone!" One of them says to you and holds out his hand. You open your mouth, but he cuts you off before you can say anything. "Give me your fucking phone, right now."'
+	'With shaking hands you pull it out of your'+iif(bag = 1, ' purse ', ' pocket ')+'and hand it to him. "What''s going on guys?" You ask, but none of them answer you. The guy next to you only rips your phone out of your hands and puts it in his own pocket.'
+	*nl
+	'After a few minutes you reach the warehouse.'	
+	
+	act 'Go inside':
+		*clr & cla
+		minut += 10
+		$location_type = 'privat'
+		gs 'pain', 8, 'tummy', 'hit'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/vadim_bely.jpg"></center>'
+		'Not only Vadim and his brother Georgiy are already waiting for you but Volya and several other guys are there as well. The menacing look in Vadim Bely''s eyes is only fuel for your panic and every instinct you have, screams at you, to run away.'
+		'"Come here, <<$pcs_nickname>>." Vadim tells you with a cold but calm voice and seeing that you don''t have any other choice you go to him.'
+		*nl
+		'"Fucking snitch," he suddenly yells and punches you so hard in the stomach that you drop down to your knees and can''t breathe for several seconds. He doesn''t care and starts to berate you: "Our guy at the gas station," ''Tomas'' his brother says, but Vadim ignores him and keeps yelling at you. "He told us the cops took you and then you magically reappear at the gas station an hour later?"'
+		'"I...," you try to say, but it''s still hard for you to breathe.'
+		'"What did you tell them?" He screams furious.'
+		'"Nothing, I swear," you reply. "Really, I swear."'
+		'"And why the fuck would he let you go?" He asks you and his demeanor tells you this is your only chance to get yourself out of this situation. You have to...'
+				
+		act 'Tell them the truth':
+			*clr & cla
+			minut += 2
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/vadim_bely.jpg"></center>'
+			if wl_police['fucked'] = 1:
+				wl_stats['respect'] -= 2
+				wl_stats['loyalty'] += 5
+				'"I let him fuck me and he let me go, OK?" You tell him panicking.'+iif(wl_police['condom'] = 0, '"I even let the bastard cum inside me, so that I don''t have to talk to the cops."', '')
+				'You look from Vadim to Georgiy, but the first to react is Volya: "Why didn''t you tell me something?" He asks you, but one look from Vadim shuts him up.'
+				'"I think she is telling the truth," Georgiy says and bends down to you to look directly into your eyes. "Are you telling the truth?" You nod several times and Georgiy smiles. You breathe a sigh of relief. He believes you.'		
+			elseif wl_police['fucked'] = 0 and wl_police['convinced'] = 1:
+				wl_stats['respect'] += 2
+				wl_stats['loyalty'] += 5
+				'"It sounds ridiculous, but he just liked me. I swear, I tried to seduce him, but that just made him laugh and then he let me go. He told me never before did a mooker make him laugh and that''s why he let me go." You tell them and their reaction is silence. But after a moment Georgiy bends down to you to look directly into your eyes. "This is the dumbest excuse I have ever heard, but I think it''s true. You aren''t lying to us or are you <<$pcs_nickname>>?" You shake your head several times and he smiles. You breathe a sigh of relief. He belives you.'  
+			end
+			
+			'"NO! She is fucking lying," his brother Vadim screams and roughly pulls you up from your knees. "I know bitches like her, they''re all disloyal cunts."'
+			'Tears form in your eyes when he grabs you by your hair and pulls you towards the adjacent house. "Vadim, wait," Georgiy shouts and you can hear footsteps following you. "We can find out the truth before you do something irreversible."'
+			'Suddenly Vadim stops still holding you by your hair. "You''re right Georgiy, we can find out the truth. We just have to make her tell us."'
+			*nl
+			'He let''s go of your hair for a moment to roughly pull your clothes of your body. "Please, I told you the truth," you cry, but he doesn''t listen to you.'
+			'"You will stay here with us, until you tell us what we want to know. Either you stop lying or you stay here forever."'
+			*nl
+			'"I did tell you the truth. Georgiy, Volya, please. I didn''t lie to you."'
+				
+			gs 'pain', 6, 'hair', 'twist'
+			gs 'stat'
+			
+			act 'Continue': gt 'mod_wlife_story_sex', 'police_aftermath_start'
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_georgiy':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_status['main'] = 8
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'This time it isn''t Volya that is waiting for you instead Georgiy stands outside the bathroom. "Come." He says and you follow him down the hallway to your usual spot. The dirty room with the lonely couch.'
+	*nl
+	'"Sit," he commands and hands you a bottle of water and a pill. "Take this." When you look at it sceptically he adds: "It''s only a painkiller, don''t worry I don''t get my whores hooked on drugs."'
+	'You take the pill and the bottle and when you don''t swallow it right away he continues to talk. "Drugged up whore are fun for a month or two, but then you can throw them away."'
+	*nl
+	'You look at the pill and ...'
+	
+	gs 'willpower', 'drugs', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Hand it back (<<will_cost>> Willpower)': gs 'willpower', 'pay', 'resist' & gt 'mod_wlife_story', 'police_aftermath_georgiy_pill'
+	else
+		act 'Hand it back (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Swallow it':
+		wl_georgiy['pill'] = 1
+		pain['killer'] += 1
+		pcs_hydra = 100
+		gt 'mod_wlife_story', 'police_aftermath_georgiy_pill'
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_georgiy_pill':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	iif(wl_georgiy['pill'] = 0, 'You shake your head and give him the pill back. "Fine," he says annoyed and swallows it himself.', 'You swallow the pill down with some water and when you hand him the half-empty bottle back, he takes out another one and swallows it.')+' "My back is killing me today." He explains, but you can guess that this probably isn''t the truth. He just wanted to show you that the pill was save.'
+	gs 'stat'
+	*nl
+	'"Can I go now?" You ask, but he shakes his head and pulls a huge roll of cash out of his pocket and starts counting. "Nikita, Shura, Iosif, Volya," he says and the only name you never heard before is Nikita. That''s probably the boy you have never seen before. '+iif(wl_vadim['rough'] > 0, '"And Vadim, that makes 5.000 <b>₽</b>."', '"That makes 4.000 <b>₽</b>."')+' He tells you and throws the money on the couch.'
+	*nl
+	'You stretch out your hand, but in that moment a thought enters your head. If you take it, this becomes a simple transaction as if it was something you agreed to do.'
+		
+	act 'Leave the cash and go':
+		cla & *nl
+		wl_stats['respect'] += 5
+		wl_stats['acceptance'] -= 5
+		'No, you won''t take it and absolve them of their crime. You have some dignity left. "What''s the matter?" He asks.'
+		'"Keep it. You pay a hooker upfront, remember? Let''s not make what happened into something it was not." You say and stand up, ready to face the consequences of your words, but he just nods and says: '+iif(week ! 7, '"OK, see you next Sunday."', iif(wl_georgiy['timer_day'] = daystart, '"OK, see you next Sunday."', '"Fine, but we still have to talk about your performance today, so come back later."'))
+		'You stand up and walk towards the door, when you remember something. He wasn''t one of the guys that fucked you in the attic and he doesn''t seem like somebody who would mind.'
+		
+		act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		act 'Ask him why he didn''t fuck you': gt 'mod_wlife_story', 'police_aftermath_georgiy_fuck'	
+	end
+	
+	act 'Take the cash and go':
+		cla & *nl
+		wl_stats['acceptance'] += 5
+		money += 4000
+		if wl_vadim['rough'] > 0: money += 1000
+		gs 'stat'
+		'You grab the cash, you are a whore after all and whores get paid. '+iif(week ! 7, '"See you next Sunday."', iif(wl_georgiy['timer_day'] = daystart, '"See you next Sunday."', '"We still have to talk about your performance today, so come back later."'))+' Georgiy says.'
+		'You stand up and walk towards the door, when you remember something. He wasn''t one of the guys that fucked you in the attic and he doesn''t seem like somebody who would mind.'
+		
+		act 'Leave': gt 'mod_wlife_warehouse', 'street'
+		act 'Ask him why he didn''t fuck you': gt 'mod_wlife_story', 'police_aftermath_georgiy_fuck'
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_georgiy_fuck':
+	*clr & cla
+	minut += 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely.jpg"></center>'
+	'You stop and turn around. "Why didn''t you visit me upstairs like all the others?"'
+	'He looks at you and shakes his head. "I don''t rape my girls." You frown and look at him as if he was insane. You can clearly remember him roughly deepthroating you on the fateful day you flipped Vadim''s car off.'
+	'"I punish my girls if they misbehave. That is something different," he explains.'
+	'No, that''s not something different, that''s complete and utter bullshit, but it''s probably not the best idea to tell him that. So you keep your mouth shut.'	
+		
+	act 'Leave': gt 'mod_wlife_warehouse', 'street' 
+end
+
+--- mod_wlife_story ---------------------------------

+ 822 - 0
locations/mod_wlife_story_sex.qsrc

@@ -0,0 +1,822 @@
+# mod_wlife_story_sex
+
+!!------ Start ------
+
+if $ARGS[0] = 'start':		
+	CLOSE ALL
+	menu_off = 1
+	$location_type = 'private'
+	
+	*clr & cla
+	minut += 5
+	gs 'stat'
+	
+	gs 'boystat', 'A901', 1
+	gs 'boystat', 'A902', 2
+	gs 'boystat', 'A903', 3
+	gs 'boystat', 'A905', 4
+	gs 'boystat', 'A912', 5
+	
+	npc_sex['A901'] = 1
+	npc_sex['A902'] = 1
+	npc_sex['A903'] = 1
+	npc_sex['A905'] = 1
+	npc_sex['A912'] = 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/street_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'		
+	'It isn''t a long drive, but your anxiety grows with every second. You have no idea what they are going to do to you, but seeing the hungry look in their eyes doesn''t do anything to calm your nerves.'
+	*nl
+	'You finally arrive at a run-down warehouse in the industrial area of Pavlovsk. One of the guys get''s out of the car and opens up the gate. Inside you can see new, old and disassembled cars and three more guys working on them.'
+	'"We are here <<$pcs_firstname>>," Bely says and smiles menacingly at you through the rear-view mirror.'
+	'"What are you going to do to me?" You finally ask, but the guys only laugh and pull you out of the car.'
+	'"Have fun guys!" Bely shouts and leaves you with five of his men.'
+		
+	act 'Continue':
+		*clr & cla
+		if pcs_mood > 80: pcs_mood = 80
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start00.mp4"></video></center>'
+		'You try your best to put up a brave front while the five guys surround you and two of them pull out their cocks.'
+		'It''s obvious what they want and you have no choice. Not wanting to give them any reason to hurt you, you even manage to put a smile on your face, as one of the guys pushes you on your knees.'
+		'Lacking any alternative, you obediently put his dick into your mouth, hoping that going along would spare you a more severe punishment.'
+		gs 'arousal', 'bj', 2, 'sub'
+		gs 'stat'
+		
+		act 'Suck him':
+			*clr & cla
+			if pcs_mood > 60: pcs_mood = 60
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start01.mp4"></video></center>'
+			'You start to suck him off, but it doesn''t take long for the other guys to get in on the action. One of them pulls you towards him and forces his cock into your mouth.'
+			'"Yeah, fuck her face Georgiy," a guy you can''t see shouts and another one smacks your ass.'
+			'You put your arms on his hips to get some support and let him use you.'
+			gs 'pain', 1, 'asscheeks', 'slap'
+			gs 'arousal', 'bj', 2, 'sub', 'rough'
+			gs 'stat'
+			
+			act 'Endure it':
+				*clr & cla
+				if pcs_mood > 40: pcs_mood = 40
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start02.mp4"></video></center>'
+				'Georgiy fucks your face for a short time as you try not to gag and breathe between his thrusts. You feel more and more legs pushing against your sides and back. Zippers are pulled down and the moment Georgiy stops, you realize that you are surrounded by cocks.'
+				'"Come on, grab them," the one called Georgiy shouts. You hesitantly take two of them into your hands and stroke them, but that isn''t enough. "Come on, use your mouth."'
+				'You run your tongue over the heads of their dicks and suck each of them off for a moment. That''s also not going to be enough. Looking up into their eyes, you see them getting frustrated with your work.'
+				'"Enough, show her how she has to do it."'
+				gs 'arousal', 'bj', 3, 'sub', 'gangbang'
+				gs 'stat'
+				
+				act 'Continue':
+					*clr & cla
+					if pcs_mood > 20: pcs_mood = 20
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start03.mp4"></video></center>'	
+					'"They only stop for a moment to take your clothes off, before they push you to the ground again. Georgiy takes the lead, pulls you up by your hair and rams his dick into your mouth, face fucking you without any hesitation.'
+					*nl
+					'"Look up, girl," Georgiy commands.'
+					'You do it, right into his eyes and he grins down at you. "See? That wasn''t so hard," he groans and doesn''t stop, not even for a second, while he is talking with you. "Take that as your first lesson. Always look up at your clients when you blow them."'
+					'Clients? And suddenly the realization what your ''work'' is going to be hits you like a hammer.'
+					*nl
+					'"Second lesson: If there is more than one guy, don''t keep them waiting. Use your hands."'
+					'It takes you a few tries to coordinate your hand movements with his rough fucking, but after a moment you manage to always keep a dick in each of your hands, as they alternate pushing their cocks into your mouth.'
+					'"Looks like we found ourself a pro," the guy who currently fucks you, says. "Let''s see if her mouth, like her hands, can handle two cocks at once."'
+					'"...", you try to say something in protest, but it''s hopeless as the second cock already appears in front of you.'
+					gs 'arousal', 'bj', 5, 'sub', 'rough', 'gangbang'
+					gs 'arousal', 'hj', -5, 'sub', 'rough', 'gangbang'
+					gs 'stat'
+					
+					act 'Open wide':
+						*clr & cla
+						pcs_mood = 0
+						'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start04.mp4"></video></center>'	
+						'Your mouth and jaw hurt, but you manage to do it and two of the men even give you a round of applause.'
+						*nl
+						'"Nice work," the one behind you says and smacks your ass hard. The surprise and pain let your muscles tense up and the men pull their cocks out of your mouth as fast as they can.'
+						'"You fucking idiot, she nearly bit us," one of them screams and for a moment they start shouting between themselves and you are left alone.'
+						'You take the chance to catch your breath and rub your hurting jaw.'
+						*nl
+						'Suddenly one man picks you up effortlessly and holds you upside down by your legs.'
+						gs 'pain', 4, 'mouth', 'stretch'
+						gs 'pain', 3, 'asscheeks', 'slap'
+						gs 'arousal', 'bj', 2, 'sub', 'rough', 'gangbang'
+						gs 'stat'
+						
+						act 'Scream in surprise':
+							*clr & cla
+							'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start05.mp4"></video></center>'
+							'You scream, blood rushing down to your head. "Shut the whore up," Georgiy shouts and within seconds a cock is pushed roughly inside your mouth again and down your throat.'
+							*nl
+							'You don''t know how long they fuck you in this position. But it''s one cock after another until they finally let you down.'
+							*nl
+							'"Good job. Now open up, it''s time you get your reward."'
+							gs 'arousal', 'bj', 6, 'sub', 'rough', 'gangbang', 'deepthroat'
+							gs 'stat'
+							
+							act 'Do as you are told':
+								*clr & cla
+								'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start06.mp4"></video></center>'
+								'You get on your knees on your own and open your mouth. It''s finally going to be over, you hope, as the first guy steps up to you and points his dick at your mouth. It only takes a few strokes and he cums, shooting his cum right onto your tongue.'
+								'"Wait, don''t do anything," he says and keeps you waiting, your mouth filled with his cum. "Get closer," he commands and you wonder for a second what he means by that. You''re already directly in front of him.'
+								'But he isn''t talking to you. To your horror a sixth guy, younger than most of the rest, steps in front of you and he is holding his phone with both hands. It''s obvious what he is doing, he was and is recording the whole thing. "Look up and smile <<$pcs_firstname>>," Georgiy says as he steps up to you stroking his cock.'
+								'You do it, you have no choice after all. With a forced smile you raise your head and look directly into the camera.'
+								'"Yeah, show everybody how much you like it," Georgiy says and with one last hard stroke he cums and shoots his load into your mouth. He moves out of the way and the next guy takes his place, and the next, and the next...'
+								'"Now swallow," Georgiy demands. "Show the world how much you love our cum."'
+
+								cumnostd = 1 & gs 'cum_call', 'mouth', 'A901', 1
+								cumnostd = 1 & gs 'cum_call', 'mouth', 'A902', 1
+								cumnostd = 1 & gs 'cum_call', 'mouth', 'A903', 1
+								cumnostd = 1 & gs 'cum_call', 'mouth', 'A905', 1
+								cumnostd = 1 & gs 'cum_call', 'mouth', 'A912', 1
+								
+								swallow += 5
+								deepthroat += 4
+								bj += 4
+								guy += 5
+																
+								gs 'arousal', 'bj', 2, 'sub', 'gangbang'
+								gs 'arousal', 'end'
+								gs 'stat'
+								
+								act 'Swallow':
+									*clr & cla
+									minut += 5
+									body_write = 1
+									face_write = 1
+									gs 'stat'
+									'<center><img <<$set_imgh>> src="mod/wlife/images/characters/vadim_bely.jpg"></center>'
+									'You swallow and a moment later the guy stops the recording, while you hear Bely''s voice behind them. "Did she do well, Georgiy?" he demands to know.'
+									'"Well enough, brother," he answers. "She has potential."'
+									'Brother? You meekly raise your head and now you can see the resemblance. Georgiy is thiner and probably a decade younger, but they really look alike. The resemblance is heightened by their similar and matching tattoos covering both bodies.'
+									*nl
+									'"Good, good. Let''s mark her, so she knows what she is."'
+									'"Mark?" you whisper without anybody noticing and hope they aren''t actually talking about some kind of branding.'
+									*nl
+									'They don''t. It''s just a black marker. Relieved, you don''t even care that they write ''whore'' and ''slut'' on your body. They even put on a tally mark of five on your breast. Five guys, five marks.'
+									
+									act 'Continue':
+										*clr & cla
+										minut += 2
+										gs 'stat'
+										'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+										'"You probably ask yourself ''Why?'', ''Why me?'' Am I right?" Vadim asks you with a predatory smile. Of course you do, but you instinctively shake your head. You want it to end and every question you ask will only extend your ordeal. "Please, just let me go. I won''t tell anyone what happened. I will do everything you want. I promise!"'
+										'"Yes you won''t and yes you will," he agrees. "But only after you understand why you''ll keep your promise." He pulls out a photo and holds it in front of your face. On it you see a beautiful vibrant young girl. "Do you know, who that is?"'
+										'You''re sure you have never seen her before. "No," you answer hesitantly.'
+										'"You sure? Take a closer look." You take another look and shake your head. "Her name is Zoya Stepanova," he explains and that name fills you with even more dread. "The dead girl," you whisper fearful. "The girl they found in the woods."'
+										'Vadim smiles brightly. "Good girl. So, do you understand now why you will keep the promise you made?"'
+										
+										act 'Yes':										
+											cla & *nl
+											'"Yes," you say and every thought about going to your parents or the police drains from your mind.' 
+											'"Perfect," he says and takes the marker from his brother and increases your tally to six. "And now it''s my turn."'
+											
+											act 'Suck him':
+												*clr & cla
+												'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/start/start07.mp4"></video></center>'
+												'You thought the other guys were rough, but he is brutal. With the first thrust he pushes his cock as deep as he can down your throat.'
+												'He doesn''t stop, doesn''t even give you a second to breathe. You panic and try to push him off to get some air, but he keeps you in place. Finally he cums down your throat and releases you.'
+												*nl
+												'"Get her cleaned up," he says coldly without any emotion.'
+
+												gs 'boystat', 'A900', 1
+												npc_sex['A900'] = 1
+												swallow += 1
+												guy += 1
+																		
+												gs 'cum_call', 'mouth', 'A900', 1
+												gs 'arousal', 'bj', 5, 'sub', 'rough', 'deepthroat', 'humiliation'
+												gs 'arousal', 'end'
+												gs 'stat'
+
+												act 'Catch your breath':
+													*clr & cla
+													minut += 2
+													npc_rel['A904'] = 20
+													gs 'stat'
+													'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+													'One of the guys helps you get back up on your feet. He is surprisingly careful and guides you out of the warehouse, through a run-down hallway and into a bathroom. He is still dressed and you recognize him as the guy that filmed the scene.'
+													'"Sorry about what happened," he whispers and when you look at him, a memory rises up to the surface. "Really, I''m sorry, but I couldn''t have done anything about it <<$pcs_nickname>>." Him using your nickname without you ever telling them, finally triggers your memory. His name is Volya, Volya Sokolov and a few years back he went to your school. He can''t be that much older than you. Maybe two or three years.'
+													'"I tried to...," he stops, clearly searching for the right words to say in such a situation. He can''t find them and instead informs you: "When you are finished, you have to talk to Georgiy before you can leave." He then closes the door and leaves you alone with your thoughts.'
+																																
+													act 'Look around': gt 'mod_wlife_warehouse', 'bathroom'
+												end
+											end
+										end
+									end	
+								end
+							end
+						end
+					end
+				end
+			end
+		end
+	end
+end
+
+!!------ Police: Caught ------
+
+if $ARGS[0] = 'police_caught_0':
+	*clr & cla
+	wl_police['fucked'] = 1
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/caught_02.mp4"></video></center>'
+	
+	gs 'npcgeneratec', 0, 'client', 25
+	gs 'boyStat', $npclastgenerated
+		
+	if wl_police['convinced'] = 1:
+		if pcs_horny < 60: pcs_horny += 20
+		'You put your hands on his pants and rub his cock through the fabric. "What are you doing?" He asks and takes a step back. "I told you, you don''t have to do that."'
+		'"Yes, I know that I don''t <b>have</b> to, but I <b>want</b> to," you explain and pull him back to you at the same time.'
+		'He watches you fiddle with the zip of his pants and you can see the gears turning in his head. But when your hands reach his cock all doubts seem to vanish. He pulls out the keys and says: "Here, let me at least take those off." You shake your head, pull his pants down and grab his rapidly growing cock. "No, let''s leave them on.'+iif(prezik > 0, ' Get my purse instead and hand me a condom."', '"')
+		'He hesitates for a moment taking in the view of you and his cock in your cuffed hands. "To hell with it, let''s do it," he says, finally accepting what is happening.'
+		if prezik > 0:
+			prezik -= 1
+			wl_police['condom'] = 1
+			'You keep massaging his cock until he hands you one of your condoms that you quickly put on him.'
+		end
+		*nl
+	end
+	gs 'arousal', 'bj', 5, 'unknown', 'sub', 'deepthroat'
+	gs 'arousal', 'hj', -5, 'unknown', 'sub'
+	gs 'stat'
+	
+	'You suck the head of his cock into your mouth, twirl your tongue around it and push him down deeper into your throat afterwards. If the blissful look on his face is any indication he really likes it. "Yes," he hisses excitedly when you suck one of his balls into your mouth, so you keep sucking on them and massage his shaft with your hands until you put his cock back deep inside your mouth.'
+	*nl
+	'After a few minutes he pulls out of your mouth and pushes you down onto the seat.'
+	
+	act 'Spread your legs':
+		*clr & cla
+		if pcs_horny < 60: pcs_horny += 20
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/caught_03.mp4"></video></center>'
+		'He undresses you in a heartbeat and you'+iif(pcs_horny > 60, ' eagerly', '')+' spread your legs. "Fuck me," you tell him and rest your cuffed hands on your belly. It''s strangely arousing to feel the cold metal of the cuffs at the same time as he plunges his hot meat into your pussy.'
+		*nl
+		if wl_police['convinced'] = 1:
+			'At one point he forces himself too fast and too deep inside you and a shadow of the short pain you feel clearly shows on your face. "Sorry," he murmurs, but you shake your head and tell him it''s fine.'
+		else
+			'"Yeah bitch, take it," he screams as he forces his cock especially deep inside you. "Stupid whores like you are the best."'
+		end
+		
+		gs 'arousal', 'vaginal', 10, 'unknown', 'sub'
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/caught_04.mp4"></video></center>'
+			'He suddenly speeds up for a moment. "I''m cumming," he shouts and shoots his load'+iif(wl_police['condom'] = 1, ' inside the condom.', ' deep inside you.')
+			if wl_police['convinced'] = 1:
+				*nl
+				'"We shouldn''t have done this," he sighs after his orgasm has faded. "I''m a police officer for gods sake and you are..."'
+				'"Don''t worry, I won''t say anything. Nobody has to know," you assure him as you get dressed.'
+				'He turns around for a moment and walks a few steps. "You''re right," he says rationalizing the whole encounter. "It''s between you and me, just some fun between two consenting adults...," he stops and looks more distressed than before. "You''re eighteen, right?"'
+				'"Sure," you'+iif(age < 18, ' lie.', ' assure him.')
+				'"Good, good, that''s good," he rambles quietly to himself. Probably best to be on your way, you think and close the door behind you.'
+				'"So, I will be on my way, thanks again," you say. He looks towards you and nods.'
+				*nl
+				'"Wait, take this." He calls after you and hands you a card with his name and phone number on it. "Sorry about being so weird. It was great, thanks. If you ever have a problem, call me, OK?"'
+				'You nod, but the instant his car is around the corner you let his card fall to the ground. You can''t risk taking it with you. It would be to hard too explain if Volya or one of the other guys find it on you.'
+			else
+				'"That was great, slut," he says, roughly grabs the handcuffs and pulls you out of the car into the dirt. "Right back where you belong, isn''t that right, bitch?" He asks you, but you stay silent and he just laughs at the fearful expression on your face. The last thing he does is to finally uncuff you before he drives away.'
+				*nl
+				'You collect your stuff and get dressed before you...'
+			end
+						
+			if wl_police['condom'] = 0 or wl_police['convinced'] = 0: gs 'cum_call', 'vaginal', 'police officer'
+			gs 'arousal', 'vaginal', 5, 'unknown', 'sub'
+			gs 'arousal', 'end'
+			gs 'stat'
+		
+			act 'Go back to the gas station': minut += 20 & gt 'mod_wlife_highway', 'outside'
+		end
+	end
+end
+
+!!------ Police: Aftermath ------
+
+if $ARGS[0] = 'police_aftermath_start':
+	CLOSE ALL
+	menu_off = 1
+	$location_type = 'private'
+	
+	*clr & cla
+	minut += 5	
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath00.mp4"></video></center>'
+	'"This is your last chance <<$pcs_nickname>>," he growls and pulls you up the stairs to the attic. "Tell me the fucking truth or ... ."'
+	'"I did, you have to believe me. I didn''t tell them anything!" You scream panicking.'
+	'"Fine, I guess we have to do it the hard way," he says menacingly and to your surprise pulls out a red ball-gag. "Open up, <<$pcs_nickname>>."'
+	'"Please, you don''t have..." you say, but he only takes the opportunity to push the ball into your mouth.'
+	gs 'pain', 2, 'handL', 'bind'
+	gs 'pain', 2, 'handR', 'bind'
+	gs 'pain', 3, 'mouth', 'stretch'
+	gs 'stat'
+	
+	act 'Try to say something':
+		*clr & cla
+		minut += 1
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath01.mp4"></video></center>'
+		'"Let''s see if you tell me what I want to know when we are through with you.'
+		'You try to say something, anything that makes him stop, but only unintelligible sounds escape your mouth.'
+		'Vadim doesn''t care, instead he opens the door to the attic and pushes you inside.'
+		gs 'pain', 2, 'handL', 'bind'
+		gs 'pain', 2, 'handR', 'bind'
+		gs 'pain', 1, 'mouth', 'stretch'
+		gs 'stat'
+		
+		act 'Scream':
+			*clr & cla
+			minut += 2
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath02.mp4"></video></center>'
+			'He pushes you on the filthy bed and all you can do is to hopelessly scream against the plastic ball in your mouth.'
+			'"Screaming won''t help you," he laughs and binds you against a pillar in the middle of the room. "You should have told me the truth. Now it''s to late. Have fun in your new home."'
+			*nl
+			'He leaves without saying another word.'
+			gs 'pain', 2, 'handL', 'bind'
+			gs 'pain', 2, 'handR', 'bind'
+			gs 'pain', 1, 'mouth', 'stretch'
+			gs 'stat'
+			
+			act 'Continue': 			
+				*clr & cla
+				minut += 20
+				'<center><img <<$set_imgh>> src="mod/wlife/images/sex/story/police/aftermath_darkness.jpg"></center>'
+				'You are in complete darkness. One second, two seconds, ten seconds... A minute, two minutes, three minutes pass, but nothing happens.'
+				'After a while you try to find a more comfortable position for your hands and wait dreading what''s going to happen next.'
+				gs 'stat'
+				gs 'mod_wlife_functions', 'darkness'				
+				
+				act 'Wait in the dark': gt 'mod_wlife_story_sex', 'police_aftermath_iosif_1'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_iosif_1':
+	*clr & cla
+	minut += 1
+	gs 'boystat', 'A902'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath03.mp4"></video></center>'
+	'The light suddenly turns back on and you hear somebody entering the attic. You look up and it''s '+iif(wl_iosif['status'] > 1, 'Iosif', 'one of Vadim''s henchmen that fucked you on the first day you met the gang.')+' He grins when you look up. "What do we have here?" He laughs when you try to say something. "You should learn to stay quiet, especially when you are talking to the cops."'
+	'You try to scream ''No'', but to no effect. "Be quiet or I''ll stuff your mouth with something other than a gag," he says and grabs your ass.'
+	gs 'pain', 1, 'handL', 'bind'
+	gs 'pain', 1, 'handR', 'bind'
+	gs 'pain', 1, 'mouth', 'stretch'
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath04.mp4"></video></center>'
+		'"I wanted this to happen '+iif(wl_iosif['status'] < 3,  'since you stumbled into our warehouse for the first time."', 'again since I fucked you in front of Shura."')+' He says and puts you in a doggy style position. "You''re a hot bitch, you know that right?" He asks rhetorically as he runs two fingers through your slit. "Still nice and tight, but let''s see if that''s still the case after we all are through with you."'
+		'He doesn''t even take off his clothes. He just pulls down the zipper of his jeans and pushes his already hard cock inside.'
+		gs 'arousal', 'vaginal', 2, 'sub', 'bound'
+		gs 'arousal', 'foreplay', 2, 'sub', 'bound'
+		gs 'pain', 2, 'handL', 'bind'
+		gs 'pain', 2, 'handR', 'bind'
+		gs 'pain', 1, 'mouth', 'stretch'
+		gs 'stat'
+		
+		act 'Get fucked':
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath05.mp4"></video></center>'
+			'After a few strokes he grabs you by your hips and starts to speed up without any warning.'
+			'Minute after minute passes while he rams his dick inside you. The rope cuts painfully into your wrists every time you are pulled back by him.'
+			'"Your pussy is even better than I '+iif(wl_iosif['status'] < 3, 'imagined', 'remember')+' <<$pcs_nickname>>." He groans and fucks you even faster. "Does it feel good?" He asks without expecting an answer. "Come on, show me how good my cock feels inside you."'
+			
+			gs 'arousal', 'vaginal', 10, 'sub', 'bound' 
+			gs 'pain', 4, 'handL', 'bind'
+			gs 'pain', 4, 'handR', 'bind'
+			gs 'pain', 1, 'mouth', 'stretch'
+			gs 'stat'
+			
+			if pain['total'] < 80:
+				gs 'willpower', 'misc', 'resist', 'hard'
+				if will_cost <= pcs_willpwr:
+					act 'Stay quiet (<<will_cost>> Willpower)':
+						cla & *nl
+						wl_stats['respect'] += 2
+						gs 'willpower', 'pay', 'resist'
+						gs 'stat'
+						'You don''t do anything and keep quiet, but he doesn''t seem to care. He just keeps fucking you.'				
+						*nl
+						'A few minutes later he suddenly pulls back, pushes you onto your right side and holds his cock over you head. You know what''s going to happen next.'	
+						
+						act 'Close your eyes': gt 'mod_wlife_story_sex', 'police_aftermath_iosif_2'
+					end
+				else
+					act 'Stay quiet (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				
+				act 'Moan':
+					cla & *nl
+					wl_stats['respect'] -= 2
+					'You moan against the ball inside your mouth, trying to sound sincere to please him. "Fuck, you really are just a dirty whore, aren''t you?" He says.'
+					*nl
+					'A few minutes later he suddenly pulls back, pushes you onto your right side and holds his cock over you head. You know what''s going to happen next.'	
+				
+					act 'Close your eyes': gt 'mod_wlife_story_sex', 'police_aftermath_iosif_2'
+				end
+			else
+				*nl
+				'The pain is to great. The only way for you to handle this situation is to...'
+			end
+			
+			act 'Scream':
+				cla & *nl
+				'"Oh, <<$pcs_nickname>>. Just don''t..." He sounds annoyed as you scream against the ball. "Either enjoy it or shut the fuck up."'
+				*nl
+				'A few minutes later he suddenly pulls back, pushes you onto your right side and holds his cock over you head. You know what''s going to happen next.'	
+				
+				act 'Close your eyes': gt 'mod_wlife_story_sex', 'police_aftermath_iosif_2'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_iosif_2':
+	*clr & cla
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath06.mp4"></video></center>'
+	'He cums. The first shot misses you and lands next to you on the bed, but the rest lands all over your face.'
+	
+	facial += 1
+	gs 'cum_call', 'face', 'A902', 1
+	gs 'arousal', 'end'
+	gs 'pain', 1, 'handL', 'bind'
+	gs 'pain', 1, 'handR', 'bind'
+	gs 'pain', 1, 'mouth', 'stretch'
+	gs 'stat'
+		
+	act 'Continue':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath07.mp4"></video></center>'
+		'"That was great," he says satisfied and puts his cock back in his pants. "See you later <<$pcs_nickname>>."'
+		'He leaves the room and you awkwardly try to wipe the cum of your face, but without much success. You can only wait and hope to somehow find a way out of this situation.'
+					
+		act 'Wait in the dark':
+			*clr & cla
+			minut += 90
+			gs 'mod_wlife_functions', 'darkness'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/sex/story/police/aftermath_darkness.jpg"></center>'
+			'You are alone again, but this time none of the guys enters your room and you can''t hear anything moving outside.'
+			*nl
+			if pcs_sleep <= 80:
+				pcs_sleep += 10
+				pcs_health += 5
+				'You wake up disoriented by the dark and you don''t remember for a moment what happened, until your realize that you have fallen asleep. But it couldn''t have been long. Maybe an hour or so.'
+			else
+				'You stay still,...'
+				wait 2000 & *nl
+				'and wait...'
+				wait 2000 & *nl
+				'and wait...'
+				wait 2000 & *nl
+				'but nothing happens.'
+			end
+			
+			gs 'stat'
+			gs 'mod_wlife_functions', 'darkness'
+				
+			act 'Wait in the dark': gt 'mod_wlife_story_sex', 'police_aftermath_shura'
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_shura':
+	*clr & cla
+	minut += 1	
+	gs 'boystat', 'A903'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath08.mp4"></video></center>'
+	'Suddenly the light is turned back on and you quickly shut your eyes to shield them from the blinding light.'
+	'"Hi <<$pcs_nickname>>," Shura says and doesn''t react when he sees you lying on the bed half-naked and covered in cum. He walks past you towards the other end of the bed, but you can''t do anything except to prepare yourself for what is about to happen.'
+		
+	act 'Get fucked':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath09.mp4"></video></center>'
+		'This time you are more prepared. When he pulls down his pants you use the the few seconds you have and move closer towards the pillar to give the rope more leeway.'
+		'It worked, even so your body moves with each of his thrusts, your hands stay still and you can rest your forearms on the mattress. It still isn''t a pleasant situation, but at least the rope doesn''t cut into your flesh anymore'+iif(wl_shura['status'] > 2, ' and Shura is much more gentle than the other guys.', '.')
+		*nl
+		'"Ohh...," he says only a few minutes later, pulls out and moves towards your face.'
+		
+		gs 'arousal', 'vaginal', 5, 'sub', 'bound' 
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath10.mp4"></video></center>'
+			'You just lie there and take it as he shoots his load over your already cum-covered face and hair.'
+			iif(wl_shura['status'] < 2, 'He says nothing', '"I''m sorry <<$pcs_nickname>>. I had to," he says')+' as he wipes his cock on your face and hair.'
+			'How many guys will come after him? You ask yourself. Do they really want to keep you here? Here on this rotten mattress? You ask yourself panicking more and more. It can''t be true. You didn''t talk to the police. They have to understand that at some point.'
+			
+			if pcs_makeup > 1: pcs_makeup = 0
+			facial += 1
+			gs 'cum_call', 'face', 'A903', 1
+			gs 'cum_call', 'hair', 'A903', 1
+			gs 'arousal', 'end'
+			gs 'stat'
+						
+			act 'Continue':
+				*clr & cla
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath11.mp4"></video></center>'
+				'And then he just leaves without saying another word.'
+							
+				act 'Wait in the dark':
+					*clr & cla
+					minut += 30
+					gs 'stat'
+					gs 'mod_wlife_functions', 'darkness'
+					'<center><img <<$set_imgh>> src="mod/wlife/images/sex/story/police/aftermath_darkness.jpg"></center>'
+					'Who will be next? Volya? Georgiy or Vadim? You ask yourself, but for the moment nobody visits you in your filthy new home.'
+					*nl
+					'You wait and wait, but the stairwell is quiet.'
+					
+					if pcs_sleep < 80:
+						act 'Try to get some sleep': 
+							cla & *nl
+							minut += 60
+							pcs_sleep += 10
+							pcs_health += 5
+							gs 'stat'
+							gs 'mod_wlife_functions', 'darkness'
+							
+							'You actually manage to sleep for an hour and wake up in the dark. Nobody came.'
+							act 'Wait in the dark': gt 'mod_wlife_story_sex', 'police_aftermath_nikita_volya'
+						end
+					end
+					
+					act 'Keep listening':
+						cla & *nl
+						'You stay still and listen...'
+						wait 2000 & *nl
+						'and listen...'
+						wait 2000 & *nl
+						'and listen...'
+						wait 2000 & *nl
+						'but nothing happens. Nobody came.'
+						minut += 60
+						gs 'stat'
+						gs 'mod_wlife_functions', 'darkness'
+						
+						act 'Wait in the dark': gt 'mod_wlife_story_sex', 'police_aftermath_nikita_volya'
+					end
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_nikita_volya':
+	*clr & cla
+	minut += 1
+	gs 'boystat', 'A905'
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath12.mp4"></video></center>'
+	'The light turns back on and probably the youngest of the crew enters the room. Normally a kid his age should still be in school. He is maybe even a year younger than you, but you have never seen him before.'
+	'He doesn''t say anything. Even as you quietly whimper he doesn''t acknowledge you. He only pulls down his pants and reveals his already hard cock.'
+	'This time it''s different, he only pulls your right leg to the side and rubs his dick against your cunt. He is going to fuck you missionary style.'
+	
+	act 'Get fucked':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath13.mp4"></video></center>'
+		'You just lay there ... again ... and took it ... again. The only thing you remember doing is to hold on to the rope so that it doesn''t hurt your wrists.'
+		'His moves are clumsy and after only a minute, maybe two, he is speeding up and you know that he is already ready to cum.'
+		
+		gs 'arousal', 'vaginal', 2, 'sub', 'bound' 
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 2
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath14.mp4"></video></center>'
+			'He also cums on your face. It''s the third load and you can feel the cum everywhere, on your skin, your lips, your eyes, you can even taste it on the plastic ball in your mouth and the smell is constantly in your nose.'
+			*nl
+			'As you lay there on the bed, he stands still. Even with your eyes closed, you can feel his presence behind you.'
+			'Even after another minute has passed he still doesn''t move, until he suddenly murmurs ''Thanks'' and hurries out of the room.'
+						
+			facial += 1
+			gs 'cum_call', 'face', 'A905', 1
+			gs 'cum_call', 'hair', 'A905', 1
+			gs 'arousal', 'end'
+			gs 'stat'
+			
+			act 'Shift your position':
+				*clr & cla
+				gs 'boystat', 'A904'
+				if npc_sex['A904'] = 0: npc_sex['A904'] = 1
+				gs 'arousal', 'vaginal', 1, 'sub', 'bound'
+				gs 'stat'				
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath15.mp4"></video></center>'
+				'The moment he get''s away from you, you get back up to shift your position to your left side to get a little bit more comfortable. What the fuck? Thanks? What''s up with that boy? Didn''t he realize that he raped you? You ask yourself, but never get a chance to really think about it. He didn''t turn off the light and the next guy is already walking in.' 
+				*nl
+				'"Fuck <<$pcs_nickname>>, are you alright?" Volya asks, but you can only whimper against the ball. "Don''t worry, it will soon be over."'
+				'You try to ask him, what he means by that and your distressed look conveys the message your mouth can''t. "They want to scare you a bit. Just hang tight." You frown and your eyes grow wide when he pulls down his pants. You shout against the ball. He can''t be serious. "Sorry, I have to do it," and with those words he pushes his cock inside you.'
+											
+				act 'Get fucked':
+					*clr & cla
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath16.mp4"></video></center>'
+					'He is more careful at first. Starting slow and increasing the speed only gradually. "Is it ok? Can I go faster?" He asks.'
+					'Maybe you want him to go faster, maybe you want him to finish faster and get it over with, but in any case you nod and he immediately pushes fast and hard into you.'
+					*nl
+					'"<<$pcs_nickname>>," he moans and grabs your ass. "You have to believe me. I don''t want to do it. The guys, they won''t understand it if I didn''t do it."'
+					'You think...'
+					gs 'arousal', 'vaginal', 10, 'sub', 'bound'
+					gs 'stat'
+					
+					act '... he''s lying': npc_rel['A904'] -= 10 & gt 'mod_wlife_story_sex', 'police_aftermath_volya_vadim'
+					act '... he''s telling the truth': npc_rel['A904'] += 10 & gt 'mod_wlife_story_sex', 'police_aftermath_volya_vadim'
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_volya_vadim':
+	*clr & cla
+	minut += 1
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath17.mp4"></video></center>'
+	'"I''m close," he groans, pulls out and shoots his load all over your ass.'
+	'"Be strong, OK?" He says as he wipes his cock on your butt. "Can you do that for me?"'
+	'You nod.'
+	'"Trust me, it''s going to be over soon." He goes to the door and switches the light off.'
+	
+	gs 'cum_call', 'butt', 'A904', 1
+	gs 'arousal', 'end'
+	gs 'stat'
+	
+	act 'Wait in the dark':
+		*clr & cla
+		minut += 5
+		'<center><img <<$set_imgh>> src="mod/wlife/images/sex/story/police/aftermath_darkness.jpg"></center>'
+		'"<<$pcs_nickname>>," Volya suddenly whispers in the dark. "I''m going to take off the gag for a moment, but you have to be absolutely quiet."'
+		'You whimper and he takes that for a yes. He carefully pulls out the gag and you immediately close your mouth to lessen the pain.'
+		'"Here drink that," he says and you feel a bottle on your lips. You open your mouth and water drips into your mouth.'
+		'Cold refreshing water, you could have never imagined how good it can feel and you greedily chuck it down.'
+		'"Thanks," you whisper.'
+		'"Sorry I can''t do more for you," he says and slowly moves the gag towards your mouth. "Again sorry, but I have to."'
+		'"I know." You whisper and open your mouth again. He pushes the ball back inside and tightens it behind your head.'
+		
+		pcs_hydra = 100
+		npc_rel['A904'] += 10
+		
+		gs 'stat'
+		gs 'mod_wlife_functions', 'darkness'
+			
+		act 'Wait in the dark':
+			*clr & cla
+			minut += 5
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath18.mp4"></video></center>'
+			'It doesn''t take long until the light switches on again and Vadim Bely enters the room. He smiles, he genuinely smiles at you. But you don''t know if that is a good or a bad sign'
+			gs 'stat'
+				
+			act 'Continue':
+				*clr & cla
+				wl_stats['loyalty'] += 20
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath19.mp4"></video></center>'
+				'He lays down beside you while you hide your head behind your arms.'
+				'"Look at me," He says in a good mood and you slowly raise your head. "I have good news. Really good news. I don''t have to kill you. Quiet the opposite, actually."'
+				*nl
+				'What does that mean? You want to ask and somehow he guesses what your eyes want to ask him that your mouth can''t.'
+				'"You did good, really good," he grins and you relax a little bit. "Not the fucking I mean, but you really told me the truth. A contact of mine in the police department confirmed it a few minutes ago."'
+				'You point your fingers at the gag, but either he doesn''t care or doesn''t get what you want him to do. He just continues talking: "And it''s impressive that you have kept to your story. Most other girls would have tried to come up with a lie when the truth wouldn''t save them. But you sticked with it and stayed loyal during the encounter with the cop. Loyalty is something most cheap bitches like you lack, but I value a lot."'
+				'You relax more and push out a sigh of relieve. You''re saved. Again you point at your gag, but he ignores you again. Instead he puts one hand on your body and caresses it. "You know, I really looked forward to feel your pussy around my cock," he says and looks greedily at your curves. "Are you up for it?" He asks, but you aren''t sure if it''s a real question or a rhetorical one. He is still smiling, but the look in his eyes is as cold as it always was.'
+
+				gs 'willpower', 'sex', 'resist'
+				if will_cost <= pcs_willpwr:
+					act 'Shake your head (<<will_cost>> Willpower)':
+						cla & *nl
+						gs 'willpower', 'pay', 'resist'
+						gs 'stat'
+						'You weakly shake your head.'
+						'"Your loss," he says and goes to the door. "Get that fucking bitch cleaned up."'
+						act 'Wait': gt 'mod_wlife_story_sex', 'police_aftermath_end_volya'
+					end
+				else
+					act 'Shake your head (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				act 'Nod, because you want to get on his good side': wl_vadim['rough'] = 1 & gt 'mod_wlife_story_sex', 'police_aftermath_vadim'
+				act 'Nod, because you want him to fuck you': 
+					if wl_adrian['status'] < 3: wl_homeless['bad'] += 1
+					wl_vadim['rough'] = 2
+					gt 'mod_wlife_story_sex', 'police_aftermath_vadim'
+				end
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_vadim':
+	*clr & cla
+
+	$orgasm_or = 'no'
+	if pcs_horny < 80 and wl_vadim['rough'] = 2: 
+		pcs_horny = 100
+	elseif wl_vadim['rough'] = 1:
+		pcs_horny = 0
+	end
+	
+	wl_stats['loyalty'] += 2
+	wl_stats['respect'] -= 5
+	
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath20.mp4"></video></center>'
+	'You nod and Vadim doesn''t hesitate for a second. He get''s up, takes his clothes off and positions himself behind you.'
+	'He isn''t going to take of the rope or the gag, you realize, but all those thoughts are pushed aside when he rams his cock inside your '+iif(wl_vadim['rough'] = 1, 'dry', 'dripping')+' cunt.'
+	'You can''t do anything else but to moan and squeal exited. '+iif(wl_vadim['rough'] = 2, 'Maybe it''s the relieve about actually surviving this ordeal or the constant stimulation over the last hours, but right now you''re ready to get ravaged by him.', 'You fake it, of course, but he doesn''t seem to realize or care about it. He just aggressively plows his cock into you.')
+		
+	gs 'boystat', 'A900'
+	$orgasm_or = 'no'
+	gs 'arousal', 'vaginal', 5, 'sub', 'bound', 'rough'
+	gs 'stat'
+	
+	act 'Get fucked':
+		*clr & cla		
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath21.mp4"></video></center>'
+		'After a few minutes of constant pounding he turns you around. For the short moment his cock isn''t inside you'+iif(wl_vadim['rough'] = 2, ' and you feel horribly empty.', '.')
+		iif(wl_vadim['rough'] = 2, 'You' , 'You keep faking it,')+' squirm, stare at him, try to make him put it back in and finally he pulls out the ball-gag. "Fuck me," you scream and try to ignore the cold smile that is forming on his face.'
+		'"As you wish, whore." He says and finally rams his cock back inside you.'
+		if wl_vadim['rough'] = 2:
+			$orgasm_txt = 'You moan like a bitch in heat for several more minutes until your orgasm hits you. Your whole body shakes and your mind goes blank for a second.'
+			$orgasm_or = 'custom'
+		end
+		'"Get ready, bitch." He screams a few moments later and pulls out.'
+			
+		gs 'arousal', 'vaginal', 5, 'sub', 'bound', 'rough' 		
+		gs 'arousal', 'end'
+		gs 'stat'
+		
+		act 'Continue':
+			*clr & cla
+			minut += 1
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath22.mp4"></video></center>'
+			'"Take it," he screams and cums all over your stomach'+iif(wl_vadim['rough'] = 2, ' while you are still recovering from your orgasm.', '.')
+			
+			gs 'cum_call', 'stomach', 'A900', 1
+			gs 'stat'
+			
+			act 'Continue':
+				*clr & cla
+				minut += 2
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/story/police/aftermath23.mp4"></video></center>'
+				'You meekly look up at him when he is finished don''t knowing what to say.'
+				'"Vadim, I...," you finally manage to say, but you can''t say another word. He points his finger angrily at you.'
+				'"It''s Mister fucking Bely, Sir or Boss for you, whore. Me fucking you doesn''t make us friends. Do you understand that?"'
+				'You nod, "of course, Sir."'
+				'"Good", he stands up and takes one good look at your body. "Keep earning me money with that and we won''t have a problem."'
+				*nl
+				'He doesn''t untie you, just goes to the door and shouts: "Get that fucking bitch cleaned up."'
+				gs 'stat'
+				
+				act 'Wait': gt 'mod_wlife_story_sex', 'police_aftermath_end_volya'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'police_aftermath_end_volya':
+	*clr & cla
+	minut += 2
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'A few moments pass after Vadim has left before Volya comes into the room.'
+	'"Everything alright?" He asks worried and starts to untie you.'
+	'"Yes, I''m fine," you answer him, but he still looks at you with a concerned look.'
+	gs 'stat'
+	if wl_vadim['rough'] > 0:
+		'"What happened?" He told me, he told us that he just would go up here to let you go.'
+		'You don''t know what to say and when you look at him, you expect a disappointed look. He and the rest of the guys had to hear you scream that he should fuck you.'
+		'"I don''t...," you start to say, but he stops you.'
+		'"You don''t have to say anything, we all have to do stuff that we have to do." He says with a smile.'
+	
+		if wl_vadim['rough'] = 2:
+			act 'Lie to him':
+				cla & *nl
+				wl_volya['attic_vadim'] = 1
+				wl_stats['respect'] -= 1
+				'"Of course, Volya," you lie. You can''t tell him that you really wanted Vadim to fuck you.'
+				'"OK, let''s get you to the bathroom." He says without mentioning again what happened.'
+				'He leads you down the stairs and into the bathroom, where he hesitates for a moment.'
+				'"I''m fine, really," you say again, before you...'
+								
+				act 'Close the door': gt 'mod_wlife_warehouse', 'bathroom'
+			end
+		end
+		
+		act 'Tell him the truth':
+			cla & *nl
+			if wl_vadim['rough'] = 1:
+				wl_volya['attic_vadim'] = 1
+				wl_stats['respect'] -= 1
+				'"Of course, Volya," you tell him quickly. "I just did it to get on his good side. Nothing more."'
+				'"Ok, let''s get you to the bathroom.'				
+			else
+				wl_volya['attic_vadim'] = 2
+				wl_stats['respect'] -= 2
+				'"No, Volya. I have to tell you the truth. At the end I wanted him to fuck me. I don''t know why, but I just did."'
+				'He looks at you for a moment without moving a muscle. Then the corners of his mouth twitch, twitch again and then he smiles for a split second before it''s gone again. "Let''s get you to the bathroom." He says without mentioning again what you said to him.'
+			end
+			*nl
+			'He leads you down the stairs and into the bathroom, where he hesitates for a moment.'
+			'"I''m fine, really," you say again, before you...'
+		
+			act 'Close the door': gt 'mod_wlife_warehouse', 'bathroom'
+		end
+	else
+		wl_stats['respect'] += 2
+		'"Ok, let''s get you to the bathroom.'
+		'He leads you down the stairs and into the bathroom, where he hesitates for a moment.'
+		'"I''m fine, really," you say again, before you...'
+	
+		act 'Close the door': gt 'mod_wlife_warehouse', 'bathroom'
+	end
+end
+
+--- mod_wlife_story_sex ---------------------------------

+ 837 - 0
locations/mod_wlife_tattoo_piercing.qsrc

@@ -0,0 +1,837 @@
+# mod_wlife_tattoo_piercing
+
+!!------ Branding ------
+
+if $ARGS[0] = 'branding_0':
+	*clr & cla
+	wl_status['main'] = 9
+	wl_timer['branding'] = daystart
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'"Get in," he says with a stern look on his face. It''s your first time back on the job after the Belys confronted you about your encounter with the police and by the looks of it something is definitely up. "Something wrong?" You ask.'
+	'"I fucked up <<$pcs_nickname>> and we have to correct my mistake," he answers without explaining what''s going on. "A mistake? What mistake?" You ask after a minute goes by without him saying another word.'
+	'He sighs. "Please, you need to understand. If I had known, that this would happen I would have done it." He is really struggling and it''s obvious that he is angry with himself. "Done what? Volya, what did you do?"'
+	'"It''s my fault that the police didn''t leave you alone," he finally explains and for a moment you''re mind flashes back inside the attic and you almost can feel the rope around your hands again tying you to the disgusting bed. "<<$pcs_nickname>>??" He asks and pulls you mind back inside the car. "You... You did this to me?" You say anger rising up inside you. "I had to go through this, because of you?" You scream '+iif(npc_rel['A904'] < 40, 'not trying to hide your true feelings for him.', 'ignoring for a moment how you really feel about him.')+' "How could you do this? I hate you, you..."'
+	'"<<$pcs_nickname>>," he stops you before you can say anything you may or may not regret. "I took a chance, OK? I''m sorry, but in my defense I hoped to get you out of this situation before something like this happened."'
+	'You open your mouth to say something, but his next words stop your right in your tracks. "It was either that or branding you like the other whor... girls."'
+	if wl_bad['tongue'] = 1: '"So that''s what the tattoo guy meant with ''the usual''?" you ask and Volya nods. "Yeah, sorry I didn''t mean to lie to you, but as I said, I expected to get you out of this mess before you would need the mark.'
+	
+	act 'Branding???': 
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+		'"Branding? What do you mean?" You ask remembering Vadim and the others writing ''whore'' and ''slut'' on you body the day you met them for the first time. "Every girl that works for us gets a tattoo that marks her as one of our own."'
+		'You don''t know how to react to that. A tattoo '+iif(tattCount > 0, 'isn''t a problem, it wouldn''t be your first', 'is something you maybe considered')+', but they want to brand you like cattle or a slave in the ancient times.'
+		'"I''m sorry," he says but this time it''s you who stops him. "No, I get it."'+iif(npc_rel['A904'] < 40, ' you tell him truthfully. Maybe you were wrong about him? He tried to protect you.', ' you tell him. Even if it didn''t work out, he at least tried to protect you.')
+		'"Really?" He asks cautiously. "Yeah," and without really wanting to know the answer you ask. "But I have to get marked now, don''t I?" You sigh when he nods and turn your eyes away from him. A brand to mark you as a whore? It will protect you, but at the same time it''s more than that. It will mark you as a whore for life. Or does it? Tattoos can be removed as far as you know and if your ordeal is over at some point, you can just erase it. Or can you?'
+		
+		if npc_rel['A904'] < 40:
+			npc_rel['A904'] += 10
+		else
+			npc_rel['A904'] += 5
+		end
+
+		act 'No, it''s who you are':
+			cla & *nl
+			wl_stats['acceptance'] += 5
+			'No, it symbolizes what you have become. Even if you remove it one day, it wouldn''t change what you are. A whore.'
+			act 'Continue': gt 'mod_wlife_tattoo_piercing', 'branding_1'
+		end	
+		
+		act 'Yes, it''s just temporary':
+			cla & *nl
+			wl_stats['acceptance'] -= 5
+			'Yes, it doesn''t mean anything. It''s only some stupid ink without meaning. It''s not like you are really a whore.'
+			act 'Continue': gt 'mod_wlife_tattoo_piercing', 'branding_1'
+		end
+	end
+end
+
+if $ARGS[0] = 'branding_1':
+	*clr & cla
+	minut += 45
+	fakepassport = 1
+	wl_passport = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/passport_get.jpg"></center>'
+	'You''re silent for the rest of the drive to St. Petersburg. Volya parks the car in front of a tattoo parlor, but stops you when you try to open the door. "Here, you will need this from now on," he tells you and hands you a passport. It''s obviously fake, because it has your picture inside, but the rest doesn''t match you. The name, address and birthday are fake'+iif(age < 18, ' which makes you 18 years old.', '.')+' "Carry it with you at all times and make sure to memorize the details. If anything happens again with the police, they will book you under your false name and one of our guys inside the police office will inform us to get you out."'
+	'You nod. That would have been handy if you had that whem the cop caught you at the gas station. "Thanks," you say and leave the car with him.'
+	
+	if $pcs_firstname = 'Mariya' or $pcs_firstname = 'Maria':
+		$wl_names['first'] = 'Anastasia'
+	else
+		$wl_names['first'] = 'Mariya'
+	end
+	if $pcs_lastname = 'Semenova':
+		$wl_names['last'] = 'Ivanova'
+	else
+		$wl_names['last'] = 'Semenova'
+	end
+	
+	act 'Go inside the tattoo shop':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><b>Tattoo & Piercing Salon</b></center>'
+		'<center><img src="images/locations/city/industrial/salon/pirsingstudia.jpg"></center>'
+		'The tattoo shop is empty apart from the guy behind the counter. He looks up, but his warm smile vanishes when he spots Volya next to you. '+iif(wl_bad['tongue'] = 0, 'It''s obvious that he knows what''s going on. "The usual?" he asks and doesn''t seem to be comfortable with with you being here.', '"Back for another piercing or do you want the usual?"')+' he asks. Volya nods '+iif(wl_bad['tongue'] = 0, 'and without uttering another word he leads you towards one of the chairs for the customers.', '"Yeah, she is here to get her mark."')
+		*nl
+		'The tattoo artist doesn''t talk to you, never even looks you in the eyes from the moment he realized who and what you are. Instead he focuses on his work. "I''m finished," he says after a while and stands up. "I will get you a guide on how to take care of it in the coming days."' 
+		
+		act 'Look at your new tattoo': minut += 90 & gt 'mod_wlife_tattoo_piercing', 'branding_2'
+	end
+end
+
+if $ARGS[0] = 'branding_2':
+	*clr & cla
+	gs 'stat'
+	'<center><b>Tattoo & Piercing Salon</b></center>'
+	'<center><img src="images/locations/city/industrial/salon/pirsingstudia.jpg"></center>'
+
+	'<center><table border=1><TH>View tattoos</TH>'
+	if tatarm = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''arms/tatarm'' & gt ''mod_wlife_tattoo_piercing'', ''arm''">Arm</TD></tr>'
+	if tatneck = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''neck/tatnck'' & gt ''mod_wlife_tattoo_piercing'', ''neck''">Neck</TD></tr>'
+	if tatlech = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''shoulder/tatshldr'' & gt ''mod_wlife_tattoo_piercing'', ''shoulder''">Shoulder</TD></tr>'
+	if tatfce = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''face/tatfce'' & gt ''mod_wlife_tattoo_piercing'', ''face''">Face</TD></tr>'
+	if tatankle = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''foot/tatankle'' & gt ''mod_wlife_tattoo_piercing'', ''foot''">Foot</TD></tr>'
+	if tatwrist = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''wrists/tatwrst'' & gt ''mod_wlife_tattoo_piercing'', ''wrist''">Wrist</TD></tr>'
+	if tathand = 0: *p '<tr><TD><a href="exec: $wl_brand[''type''] = ''hand/tathnd'' & gt ''mod_wlife_tattoo_piercing'', ''hand''">Hand</TD></tr></table></center>'
+	*nl
+	'<b>Developer Note</b>: You can freely choose between any tattoo to represent your whore brand. If you already have a tattoo in one or all of these spots, you can set one of your existing tattoos as your whore brand.'
+		
+	if tatarm >= 1: act 'Look at your arm tattoo': $wl_temp = 'arm' & $wl_brand['type'] = 'arms/tatarm' & wl_brand['number'] = tatarm & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+	if tatneck >= 1: act 'Look at your neck tattoo': $wl_temp = 'neck' & $wl_brand['type'] = 'neck/tatnck' & wl_brand['number'] = tatneck & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+	if tatlech >= 1: act 'Look at your shoulder tattoo': $wl_temp = 'shoulder' & $wl_brand['type'] = 'shoulder/tatshldr' & wl_brand['number'] = tatlech & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+	if tatfce >= 1: act 'Look at your face tattoo': $wl_temp = 'face' & $wl_brand['type'] = 'face/tatfce' & wl_brand['number'] = tatfce & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+	if tatankle >= 1: act 'Look at your foot tattoo': $wl_temp = 'foot' & $wl_brand['type'] = 'foot/tatankle' & wl_brand['number'] = tatankle & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+	if tatwrist >= 1: act 'Look at your wrist tattoo': $wl_temp = 'wrist' & $wl_brand['type'] = 'wrists/tatwrst' & wl_brand['number'] = tatwrist & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+	if tathand >= 1: act 'Look at your hand tattoo': $wl_temp = 'hand' & $wl_brand['type'] = 'hand/tathnd' & wl_brand['number'] = tathand & gt 'mod_wlife_tattoo_piercing', 'branding_3'
+end
+
+if $ARGS[0] = 'branding_3':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/<<$wl_brand[''type'']>><<wl_brand[''number'']>>.jpg"></center>'	
+	'Do you want to set this tattoo as your whore brand?'
+
+	act 'No': gt 'mod_wlife_tattoo_piercing', 'branding_2'
+	act 'Yes': gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'arm':
+	*clr & cla
+	n = 1
+	:wl_looptatarm
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''arm_get''"><img src="images/pc/body/tattoos/arms/tatarm<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 82:jump 'wl_looptatarm'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'
+end
+
+if $ARGS[0] = 'arm_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/arms/tatarm<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'arm'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 8000 & wl_brand['number'] = n & tatarm = n & $wl_temp = 'arm' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'face':
+	*clr & cla
+	n = 1
+	:wl_looptatface
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''face_get''"><img src="images/pc/body/tattoos/face/tatfce<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 8:jump 'wl_looptatface'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'
+end
+
+if $ARGS[0] = 'face_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/face/tatfce<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'face'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 10000 & wl_brand['number'] = n & tatfce = n & $wl_temp = 'face' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'foot':
+	*clr & cla
+	n = 1
+	:wl_looptatfoot
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''foot_get''"><img src="images/pc/body/tattoos/foot/tatankle<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 25:jump 'wl_looptatfoot'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'
+end
+
+if $ARGS[0] = 'foot_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/foot/tatankle<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'foot'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 8000 & wl_brand['number'] = n & tatankle = n & $wl_temp = 'foot' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'neck':
+	*clr & cla
+	n = 1
+	:wl_looptatneck
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''neck_get''"><img src="images/pc/body/tattoos/neck/tatnck<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 30:jump 'wl_looptatneck'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'
+end
+
+if $ARGS[0] = 'neck_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/neck/tatnck<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'neck'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 8000 & wl_brand['number'] = n & tatneck = n & $wl_temp = 'neck' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'shoulder':
+	*clr & cla
+	n = 1
+	:wl_looptatlech
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''shoulder_get''"><img src="images/pc/body/tattoos/shoulder/tatshldr<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 25:jump 'wl_looptatlech'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'	
+end
+
+if $ARGS[0] = 'shoulder_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/shoulder/tatshldr<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'shoulder'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 8000 & wl_brand['number'] = n & tatlech = n & $wl_temp = 'shoulder' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'wrist':
+	*clr & cla
+	n = 1
+	:wl_looptatwrist
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''wrist_get''"><img src="images/pc/body/tattoos/wrists/tatwrst<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 51:jump 'wl_looptatwrist'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'	
+end
+
+if $ARGS[0] = 'wrist_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/wrists/tatwrst<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'wrist'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 7000 & wl_brand['number'] = n & tatwrist = n & $wl_temp = 'wrist' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'hand':
+	*clr & cla
+	n = 1
+	:wl_looptathand
+	*p '<a href="exec:n = <<n>> & gt ''mod_wlife_tattoo_piercing'', ''hand_get''"><img src="images/pc/body/tattoos/hand/tathnd<<n>>.jpg" height="250" /></a>'
+	n += 1
+	if n <= 9:jump 'wl_looptathand'
+
+	act 'Choose another type of tattoo': gt 'mod_wlife_tattoo_piercing', 'branding_2'	
+end
+
+if $ARGS[0] = 'hand_get':
+	*clr & cla
+	'<center><img src="images/pc/body/tattoos/hand/tathnd<<n>>.jpg"></center>'
+
+	act 'Choose another tattoo': gt 'mod_wlife_tattoo_piercing', 'hand'
+	act 'Set this tattoo as your whore brand': wl_brand['price'] = 7000 & wl_brand['number'] = n & tathand = n & $wl_temp = 'hand' & gt 'mod_wlife_tattoo_piercing', 'branding_end'
+end
+
+if $ARGS[0] = 'branding_end':
+	*clr & cla
+	minut += 5
+	wl_brand['timer'] = daystart + rand(1,3)
+	$wl_brand['image'] = 'images/pc/body/tattoos/<<$wl_brand[''type'']>><<wl_brand[''number'']>>.jpg'
+	$wl_brand['type'] = $wl_temp
+	killvar '$wl_temp'
+	killvar 'n'
+	if wl_whore['shifts_week'] > 0: wl_whore['shifts_week'] -= 1
+	gs 'mod_wlife_functions', 'tat_pierce_count'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'"I''ll drive you home," he says when you are back inside the car. "What about work?" You ask him, but he immediately shakes his head. "No, it could get infected. I''ll tell Georgiy that you will only have to work <<wl_whore[''shifts_week'']>> shifts this week."'
+			
+	act 'Go home': minut += 30 & gt $wl_loc[0], $wl_loc[1]
+end
+
+!!------ Piercing ------
+
+if $ARGS[0] = 'tongue_piercing_start':
+	*clr & cla
+	minut += 3
+	menu_off = 1
+	wl_whore['customer_total'] += wl_whore['customer_day']
+	wl_whore['customer_day'] = 0
+	wl_whore['shifts_done'] += 1
+	wl_bad['status'] = 2
+	gs 'stat'
+	'<center><video autoplay loop src="mod/wlife/images/prostitution/normal/negotiation/chat'+rand(0,1)+'.mp4"></video></center>'						
+	'A car stops next to you. "Hey sweetie, are you looking for...," you stop in the middle of the sentence, when you realize who is sitting inside it. "Volya? What are you doing here?" you ask confused as your shift isn''t over yet. "Did something happen?"'
+	'He shakes his head. "I got a phone call from Georgiy, we have to go somewhere today. Get in." Go somewhere? That''s sounds ominous. "And where are we going exactly?"'
+	'"I explain it en route," he says and sends you a reassuring smile. "Come on, get in. We don''t have all day.'
+	
+	act 'Get in':
+		*clr & cla
+		minut += 1
+		wl_whore['share_player_money'] = wl_whore['earnings_day'] * wl_whore['share_player'] / 100
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/money.jpg"></center>'
+		if wl_whore['earnings_day'] > 0:
+			if wl_debt['amount'] > 0:
+				wl_whore['share_player_debt'] = wl_whore['earnings_day'] * 20 / 100
+				wl_whore['share_player_money'] = wl_whore['earnings_day'] * (wl_whore['share_player'] - 20) / 100
+			else
+				wl_whore['share_player_money'] = wl_whore['earnings_day'] * wl_whore['share_player'] / 100
+			end
+
+			if wl_stats['acceptance'] > 100:
+				wl_stats['acceptance'] = 100
+			elseif wl_whore['earnings_day'] > 8000:
+				wl_stats['acceptance'] += 3
+			elseif wl_whore['earnings_day'] > 5000:
+				wl_stats['acceptance'] += 2
+			elseif wl_whore['earnings_day'] > 0:
+				wl_stats['acceptance'] += 1
+			else
+				wl_stats['acceptance'] -= 1
+			end
+			
+			if wl_debt['amount'] > 0 and wl_whore['share_player_debt'] >= wl_debt['amount']:
+				wl_whore['share_player_debt'] -= wl_debt['amount'] 
+				money += wl_whore['share_player_money'] + wl_whore['share_player_debt']
+				'You hand over <<wl_whore[''earnings_day'']>> <b>₽</b>. He hands you your share which amounts to <<wl_whore[''share_player_money''] + wl_whore[''share_player_debt'']>> <b>₽</b> and keeps <<wl_debt[''amount''] >> <b>₽</b> to wipe out your remaining debt.'
+				wl_debt['amount'] = 0
+			elseif wl_debt['amount'] > 0 and wl_whore['share_player_debt'] < wl_debt['amount']:
+				'You hand over <<wl_whore[''earnings_day'']>> <b>₽</b>. He hands you your share of <<wl_whore[''share_player''] - 20>>% back (<<wl_whore[''share_player_money'']>> <b>₽</b>) and keeps 20% (<<wl_whore[''share_player_debt'']>> <b>₽</b>) to reduce your debt.'
+				wl_debt['amount'] -= wl_whore['share_player_debt']
+				money += wl_whore['share_player_money']
+			else
+				'You hand over <<wl_whore[''earnings_day'']>> <b>₽</b> and he hands you your share of <<wl_whore[''share_player'']>>% back (<<wl_whore[''share_player_money'']>> <b>₽</b>).'
+				money += wl_whore['share_player_money']
+			end
+			
+			wl_whore['earnings_week'] += wl_whore['earnings_day']
+			wl_whore['earnings_day'] = 0
+			wl_whore['share_player_debt'] = 0
+			wl_whore['share_player_money'] = 0
+		else
+			'"I didn''t found a client," you tell him.'
+			'"Don''t worry about that today, you didn''t have much time to look for one," he replies.'
+		end
+		
+		if wl_whore['earnings_week'] < wl_whore['shifts_done'] * 2500: wl_whore['earnings_week'] = wl_whore['shifts_done'] * 2500
+		
+		if wl_whore['cum_dressed'] = 1:
+			'<br>He looks at you and pulls out some tissues. "You still have some cum on you. You should clean yourself up."'
+			act 'Remove the cum from your body':
+				cla & *nl
+				minut += 2
+				cumspclnt = 20
+				npc_rel['A904'] += 1
+				gs 'cum_cleanup'
+				gs 'stat'
+				'You take the tissues and remove the cum from your body. "Thanks," you say.'
+				
+				act 'Ask him what''s going on': gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_0'
+			end
+		else
+			act 'Ask him what''s going on': gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_0'
+		end
+	end
+end
+
+if $ARGS[0] = 'tongue_piercing_0':
+	*clr & cla
+	minut += 35
+	wl_bad['tongue'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'"So, what is going on?" you ask, when he drives off the parking lot. "Georgiy '+iif(wl_whore['share_timer'] > 0, 'told me that you asked for a bigger share', 'isn''t satisfied with your earnings')+'," he starts to explain as he filters into the traffic. '+iif(wl_bad['status'] = 1, '"You could earn more in his opinion and he', '"He')+' wants to...," he hesitates for two seconds, "...help you with that."'
+	'"Yeah, right," you snort and roll your eyes. "As if Georgiy wants to help me with anything," you say making air quotes around ''help''. "I know, I know," Volya says, "but he''s the boss and we have to do what he wants. This means we have to go to the tattoo parlor in St. Petersburg'+iif(wl_status['main'] > 8, ' again ', ' ')+'to get you a tongue piercing."'
+	'"Uhm...," you stare at him and narrow your eyes as if you don''t believe what he''s saying. "Uhm... what? This is a joke, right?" But Volya shakes his head. "Sorry, no. He wants me to drive you there and get your tongue pierced."'
+	'"But... why? That doesn''t make any...," you stop talking for a second as an idea pops into your head. "Is it for blowjobs?" Volya nods. "Seriously?" Volya nods again. "So Georgiy wants me to get a tongue piercing to enhance the blowjob experience for my clients?" Volya nods again. For a few moments you''re just sitting there, staring out the window as something bubbles up inside you. It is...'
+	
+	act 'Laughter':
+		cla & *nl
+		minut += 2
+		pcs_mood = 100
+		pcs_willpwr += 2
+		wl_stats['acceptance'] += 1
+		wl_stats['respect'] += 2
+		gs 'stat'
+		'... laughter. It bursts out of you like an explosion. You could scream or complain, but not today, not now. It''s just too much and too stupid. Your fit of laughter doesn''t seem to end and it feels utterly liberating to laugh about your whole situation.'
+		*nl
+		'"What was that?" Volya asks amused, when your laughter finally subsides. "What was so funny?"'
+		'"I don''t know. Maybe Georgiy, you, me, life, everything...," you say shaking your head.'
+		
+		act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_1'
+	end
+	
+	act 'Rage':
+		cla & *nl
+		minut += 2
+		wl_stats['acceptance'] -= 1
+		wl_stats['loyalty'] -= 2
+		gs 'stat'
+		'"That shit for brains can''t be serious. I have it up to here with this bullshit," you shout holding your hand over your head. "How can one person be such a fucking retard, asshole and sadist at the same time!" You rant and keep going for the next few minutes letting out all the anger and rage you have bottled up over the last few days.'
+		*nl
+		'"Feeling better?" Volya asks carefully after you finally finished. "Yes," you say and you really do feel better. "But not about the piercing," you add and for a moment Volyas laughter fills the car which tugs the corners of your mouth upward. "I think you made that clear," he says grinningly.'
+	
+		act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_1'
+	end
+
+end	
+
+if $ARGS[0] = 'tongue_piercing_1':
+	*clr & cla
+	minut += 6
+	$location_type = 'public_indoors'
+	gs 'stat'
+	'<center><b>Tattoo & Piercing Salon</b></center>'
+	'<center><img src="images/locations/city/industrial/salon/pirsingstudia.jpg"></center>'
+	'The tattoo shop is empty apart from the guy behind the counter. He looks up, but his warm smile vanishes when he spots Volya next to you. '+iif(wl_status['main'] < 9, '"The usual?" He asks and doesn''t seem to be comfortable with you being here. You send Volya a questioning look, but he either doesn''t see it or ignores it. Instead he shakes his head. "No, my friend wants to get her tongue pierced."', '"Didn''t I already do her tattoo?" he asks narrowing his eyes. "Yeah, great work by the way," you answer sarcastically even if the question was directed at Volya, but both men ignore you. "The boss wants the whore to have a tongue piercing," Volya says coldly. "And it should be a stud, something that feels stimulating."')
+	iif(wl_status['main'] < 9, '"What does he mean with ''the usual''?" you whisper', '"The whore?" you hiss,')+', when the tattoo artist vanishes behind a door to get something. '+iif(wl_status['main'] < 9, '"Don''t worry about it, it has nothing to do with you.', '"Sorry <<$pcs_nickname>>. I didn''t mean that, but I have to keep up appearances."')+' A second later the man returns and points at a display case with different kinds of piercings.'
+	
+	act 'Look at them':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><table cellspacing="3"><tr><td><img  height = 334 src="images/pc/body/piercings/a2.jpg"></td><td><img  height = 334 src="images/pc/body/piercings/a4.jpg"></td></tr></table></center>'
+		'"You should take the one on the right," Volya says pointing to the three smaller studs sitting inside a plush dummy tongue. "This would be the best choice for you."'
+		'You take your time looking at both of them. Maybe Volya is right the three studs probably would be more stimulating, but'+iif(pirsA + pirsB + pirsC + pirsD + pirsE + pirsF + pirsG + pirsN > 0, ' ', ' this is your first piercing and ')+'the one on the left is less conspicuous and slutty.'
+
+		gs 'willpower', 'misc', 'resist', 'easy'
+		if will_cost <= pcs_willpwr:
+			act 'Choose the left one (<<will_cost>> Willpower)':
+				gs 'willpower', 'pay', 'resist'
+				wl_whore['pirsA'] = 2
+				gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_2'
+			end
+		else
+			act 'Choose the left one (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		act 'Follow Volya''s advise and choose the one on the right':
+			wl_whore['pirsA'] = 4
+			gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_2'
+		end
+	end
+end
+
+if $ARGS[0] = 'tongue_piercing_2':
+	*clr & cla
+	minut += 5
+	wl_total_price = 5000
+	gs 'stat'
+	'<center><table cellspacing="3"><tr><td><img  height = 334 src="images/pc/body/piercings/a2.jpg"></td><td><img  height = 334 src="images/pc/body/piercings/a4.jpg"></td></tr></table></center>'
+	'"I take the one on the '+iif(wl_whore['pirsA'] = 2, 'left', 'right')+'," you say pointing at it. "'+iif(wl_whore['pirsA'] = 2, 'Really?" Volya asks. "Don''t you want the other one?" You shake your head and point again at the one on the left. "I want the left one."', 'Good choice." Volya and the tattoo artist say at the same time.')
+	'"Alright, that costs 5.000 <b>₽</b>," the tattooist says and walks towards the cash register. At the same time you look to Volya, but he gives you a non-committal shrug. "It''s your piercing," he whispers and shots you a warning look, when you open your mouth. "Georgiy made it clear. Since it''s your piercing you''ll have to pay for it." You narrow your eyes, but don''t say anything. Making a scene in public would be a bad idea. "Fine," you hiss and follow the tattooist to the counter.'
+	
+	act 'Let Volya pay and increase your debt':
+		cla & *nl
+		wl_debt['amount'] += wl_total_price
+		iif(karta + money < wl_total_price, '"I can''t afford it at the moment, you', '"You')+' will have to pay for it," you say to Volya. "Sure, no problem, but you''ll have to pay me back."'
+		'After Volya has taken care of the payment, the tattoo artist directs you towards a chair. "Please sit down."'
+			
+		act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_3'
+	end
+		
+	if karta + money >= wl_total_price:
+		act 'Pay for it yourself':
+			cla & *nl
+			if karta >= wl_total_price:
+				karta -= wl_total_price
+			elseif money >= wl_total_price:
+				money -= wl_total_price
+			else
+				wl_total_price -= karta
+				karta = 0
+				money -= wl_total_price
+			end
+			gs 'stat'
+			'After you have taken care of the payment, the tattoo artist directs you towards a chair. "Please sit down."'
+				
+			act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tongue_piercing_3'
+		end
+	end	
+end
+
+if $ARGS[0] = 'tongue_piercing_3':
+	*clr & cla
+	minut += 10 * wl_whore['pirsA']
+	'<center><video autoplay src="mod/wlife/images/player/tongue_piercing.mp4"></video></center>'
+	'You grow more tense with every passing second as you wait for the tattooist to begin his work. '+iif(pirsA + pirsB + pirsC + pirsD + pirsE + pirsF + pirsG + pirsN > 0, 'Since it''s not your first piercing, you know that it''s going to hurt and especially if it''s a more sensitive area like your tongue. "How bad is it going to hurt?"', '"Is it going to hurt?"')+' you ask.'
+	'"Most people say it''s a 4 or 5 on a scale from 1 to 10," he answers as he disinfects the piercings and his tools. "Even if it hurts, the pain will subside in seconds. Your tongue will feel irritated for a day or two, but it shouldn''t hurt."'
+	'"Shouldn''t?" you inquire further. "If it hurts, it would mean you have an infection, but let us not worry about that. It basically never happens." He holds up the bottle of disinfected to prove his point.'
+	*nl
+	'You close your eyes and breath through your nose, when he grabs your tongue with the cold metal forceps. Suddenly pain shoots through your tongue as the sharp metal goes through the sensitive flesh. "Ahh...," you exhale sharply and your eyes fly open. "Already done," he says and offers you a sympathetic smile. "I only have to attach the stud," he explains, but it doesn''t take long and after an additional minute he''s finally done.'
+	if wl_whore['pirsA'] = 4: '"And now for the other two," he reminds you and another sharp pain rushes through your tongue and another...'
+	pirsA = wl_whore['pirsA']
+	dynamic 'pirsA<<wl_whore[''pirsA'']>>_owned = 1'
+	pierWearCount += 1
+	gs 'pain', rand(4,5), 'tongue', 'pierce'
+	if wl_whore['pirsA'] = 4:
+		gs 'pain', rand(4,5), 'tongue', 'pierce'
+		gs 'pain', rand(4,5), 'tongue', 'pierce'
+	end
+	gs 'stat'
+	
+	act 'Continue':
+		*clr & cla
+		minut += 30
+		killvar 'wl_total_price'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+		'"I''ll drive you home," Volya says when you are back inside the car and that are the only words you two exchange until you arrive back home. You don''t really want to talk with your tongue freshly pierced. Instead you surf the web and check your messages to distract you from the irritating feeling in your mouth.'
+		
+		act 'Get out of the car': 
+			*clr & cla
+			gs 'mod_wlife_functions', 'tat_pierce_count'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/objects/info.gif"></center>'
+			'Developer Note: From now on you''ll have to wear your tongue piercing in addition to a prostitution outfit and high heels.'
+			'<br><center><img height = 100 src="mod/wlife/images/objects/whore'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></center>'
+			'The icon has changed as well. It will only show up if you''re wearing a tongue piercing in addition to the old requirements. You don''t have to wear the exact tongue piercing you bought today, another one is also fine.'			
+			
+			act 'Continue': gt $wl_loc[0], $wl_loc[1]
+		end
+	end
+end
+
+!!------ Iosif Tattoo ------
+
+if $ARGS[0] = 'tattoo_0':
+	*clr & cla
+	minut += 4
+	menu_off = 1
+	wl_iosif['tattoo'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'"Hey bitch," a voice calls out behind you. Naturally you turn around having grown accustomed to be called in such a way. Who else on the quiet street in the residential area would be the bitch? "Come here," a man shouts out of a car parked next to the curb. It''s Iosif.'
+	'What does he want now?'+iif(kanukuli = 0 and  SchoolAtestat = 0 and SchoolBlock = 0, ' You have to be in school. ', ' ')+'Doesn''t he know that? You walk over to the passenger site and lean inside the car as if your''re working at the gas station. "Get in the fucking car. Right now!" He says and leans through the car to open the door for you.'
+	if wl_whore['shifts_message'] = 1: wl_whore['shifts_message'] = 0 & '"Will it take long? I told Volya...," you try to explain that you wanted to work today. "Don''t worry whore, you can earn money tomorrow. Volya knows that I need you today."'
+		
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Protest (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 4
+			wl_stats['respect'] += 2
+			wl_stats['loyalty'] -= 1
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"I can''t '+iif(kanukuli = 0 and  SchoolAtestat = 0 and SchoolBlock = 0, 'I have to go to school', 'I have to be somewhere else')+'," you protest. "I have a life too, you know?"'
+			'"When I tell you to get in the fucking car, you get in the fucking car," he shouts aggressively and points at the empty seat. "I don''t care if you have to go to school or whatever... Get in now!"'
+			'He''s crazy and if he keeps shouting like this he''ll draw everybody''s attention and you can''t risk somebody seeing him with you. The more time you spent here out in the open, leaning into his car, your ass on full-display the higher the chance is that somebody you know catches him with you.'
+			
+			gs 'mod_wlife_tattoo_piercing', 'tattoo_0_actions'
+		end
+	else
+		act 'Protest (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Do it':
+		cla & *nl
+		minut += 2
+		wl_stats['respect'] -= 1
+		gs 'stat'
+		'You can''t risk somebody seeing him with you. The more time you spent here out in the open, leaning into his car your ass on full-display, the higher the chance is that somebody you know catches him with you.'
+
+		gs 'mod_wlife_tattoo_piercing', 'tattoo_0_actions'
+	end
+end
+
+if $ARGS[0] = 'tattoo_0_actions':		
+	act 'Be quiet': gt 'mod_wlife_tattoo_piercing', 'tattoo_1'	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Ask him what''s going on (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 4
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"Where are we going?" you ask him a bit nervous about what''s going to happen. Iosif never is good news and him picking you up on the street is probably even worse.'
+			'He glances at you with those cold dead eyes as a knowing smirk appears on his face. "Don''t worry. You don''t have to be this tense. It''s nothing bad. In fact I have a surprise for you."'
+			'"But...," you try to say, but you don''t have a chance to even start asking your question before he interjects. "And now shut the fuck up. I don''t give a shit about what you have to say."'
+			
+			act 'Be quiet': gt 'mod_wlife_tattoo_piercing', 'tattoo_1'
+		end
+	else
+		act 'Ask him what''s going on (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'tattoo_1':
+	*clr & cla
+	minut += 35
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+	'You watch in silence how Iosif drives through Pavlovsk and onto the highway to St. Petersburg. He never explains why he''s taking you there or what you''re going to do. Since it''s Iosif it can''t be something good. He''s a sadistic asshole and whatever surprise he has planned for you it will involve pain, your pussy getting fucked hard or both... probably both.'
+	'When you drive by Gadukino you pull out your phone to try to take your mind of things, but nothing you try works. Your anxiety grows every second until you can''t stop yourself anymore. "Could you please tell me where we are going?" you ask when you reach the outskirts of St. Petersburg.'
+	'"We already there," he explains and points to a building about a hundred meters away. It''s the tattoo studio you already visited with Volya. You swallow hard and wonder what Iosif has planned for you inside.'
+	
+	act 'Go inside': 
+		*clr & cla
+		minut += 7
+		$location_type = 'public_indoors'
+		gs 'stat'
+		'<center><b>Tattoo & Piercing Salon</b></center>'
+		'<center><img src="images/locations/city/industrial/salon/pirsingstudia.jpg"></center>'
+		'"Iosif," the man behind the counter says surprised and nervous. He obviously knows who he''s dealing with. "It''s... good to see you again," he clearly lies, but Iosif doesn''t seem to care. "Lock the door," Iosif coldly says to the man as he walks to a long wall with dozens of tattoos.'
+		'"Sure," the man says and nearly trips over his own feet when he rushes to the door. "Do you want something for yourself or for your...," he throws you a questioning look, but you only answer with a shrug.'
+		'"Whore, call her what she is, you piece of shit. She''s a stupid whore, but when you don''t like that word she also responds well to slut or bitch. And to answer your question, it''s for her. I want a nice tattoo for her cunt."'
+		'What did he just say? You clearly must have misheard what he said. It sounded like he wants a tattoo for your pussy. He can''t mean it. Please, he can''t mean it.'
+		'"Something specific?" the tattoo artist asks and Iosif nods, but turns his head to you, when he says. "Why don''t you lie down on your back, I will discuss everything with him."'
+		'"But...," you try to get a word in. Iosif doesn''t care and interjects with an evil smirk. "I saw the picture on your phone." Picture... what picture is he talking about? Then it hits you with the force of a missile. That picture. The picture that shows you completely covered in degrading writing. "Why would you save something like that if you don''t want it to be true," he taunts you. "And now lie down."'
+	
+		gs 'willpower', 'misc', 'self', 'hard'
+		if will_cost <= pcs_willpwr:
+			act 'Protest (<<will_cost>> Willpower)':
+				*clr & cla
+				minut += 4
+				wl_stats['respect'] += 3
+				wl_stats['loyalty'] -= 1				
+				gs 'pain', 10, 'tummy', 'hit'
+				gs 'pain', 10, 'head', 'slap'
+				gs 'willpower', 'pay', 'self'
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/georgiy_bely_angry.jpg"></center>'
+				'"No, Iosif. It isn''t like that. I don''t want that. Especially not a tattoo down there. Please, I do...," you plea, but he doesn''t even bother with a verbal reply. Instead he let''s you experience his brutal side. He rams his fist into your stomach. The air is forced out of your lungs and you bow forward wheezing and trying to breath. You never see the second hit coming. This time it''s not his fist, but his open hand, but when he slaps your head with full force you''re thrown to the ground.'
+				'"Shut the fuck up, you have no right to demand anything," he tells you while the color drains from the tattoo artist face. Whatever he thinks about the situation, he never even tries to help you. "And don''t make me repeat myself again."'
+					
+				act 'Follow his order': gt 'mod_wlife_tattoo_piercing', 'tattoo_2'
+			end
+		else
+			act 'Protest (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		act 'Follow his order': gt 'mod_wlife_tattoo_piercing', 'tattoo_2'
+	end
+end
+
+if $ARGS[0] = 'tattoo_2':
+	*clr & cla
+	minut += 320
+	gs 'pain', 10, 'pubic', 'pierce'
+	gs 'pain', 10, 'pubic', 'pinch'
+	gs 'stat'	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/tattoo_artist.jpg"></center>'
+	'You lie down on your back and try to calm yourself down. It will be fine. You already got branded. This will be no different. Iosif will get his wish and you''ll go home.'
+	'After about five minutes the tattoo artist sits down next to you. "I''ll first have to clean and sanitize the area. If you would be so kind to undress," he explains without looking at you. He avoids your gaze the whole time you''re undressing. Instead he focuses on collecting his supplies. He seems to be more uncomfortable with the situation than you are. What a coward, you think. He only has to do his job. You''re the one that has to get inked.'
+	'He cleans the area above your pussy thoroughly before he takes his needle and begins. It hurts like hell. You thought your first tattoo hurt bad, but this is way worse. After what seems like an hour you ask him, "how long will it take?"'
+	'"Four, maybe five hours," he replies engrossed in his work.'
+	'Five hours? You think shocked and close your eyes trying without avail to block out the pain.'
+	*nl
+	'"I''m done," he finally says after more than five hours.'
+	
+	act 'Look at your new pubic tattoo':
+		*clr & cla
+		minut += 2
+		wl_total_price = 20000
+		gs 'stat'
+		'<center><table cellspacing="3"><tr><td><img  height = 334 src="images/pc/body/tattoos/pubic/tatvag1.jpg"></td><td><img height = 334 src="images/pc/body/tattoos/pubic/tatvag2.jpg"></td></tr></table></center>'
+		
+		'<b>Developer Note</b>: The left tattoo should show the word ''Owned'' the one on the right ''Cumslut''. If that''s not the case, you have not installed the replacement image pack for girl life correctly.'
+		'Which of those two tattoo''s has Iosif chosen for you?'
+		
+		act 'Owned': wl_temp = 1 & $wl_brand['text_pubic'] = 'owned' & gt 'mod_wlife_tattoo_piercing', 'tattoo_3'
+		act 'Cumslut': wl_temp = 2 & $wl_brand['text_pubic'] = 'cumslut' & gt 'mod_wlife_tattoo_piercing', 'tattoo_3'
+	end
+end
+
+if $ARGS[0] = 'tattoo_3':
+	*clr & cla
+	minut += 5
+	tatvag = wl_temp
+	$wl_brand['image_pubic'] = 'images/pc/body/tattoos/pubic/tatvag<<tatvag>>.jpg'
+	gs 'mod_wlife_functions', 'tat_pierce_count'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="<<$wl_brand[''image_pubic'']>>"></center>'
+	'You open your eyes and instinctively your eyes look down at your pubic area. It takes you a moment to decipher the upside down word... <<$wl_brand[''text_pubic'']>>. You stare at it, stare at it a bit longer until you...'
+	
+	act '... start to cry':
+		cla & *nl
+		minut += 3
+		wl_stats['acceptance'] -= 2
+		wl_stats['respect'] += 1
+		pcs_mood = 0
+		gs 'stat'
+		'... start to cry. You don''t want this. Why can''t Iosif leave you alone? You do everything the Belys want, but this is turning out to be even more of a nightmare than you could have anticipated in your darkest dreams. Marked like this is even worse than your first tattoo. Everybody, every client will understand it and think you got it on your own. Tears well up in your eyes and you quickly rub them with your hands to erase the evidence, but Iosif has already seen it. "Look at that. Tears of happiness. I knew you would like it," he says grinning sadistically.'
+		'"Yes," you sniff rubbing away more tears. "Thank you Iosif."'
+		'"Your very welcome <<$pcs_nickname>>."'
+		
+		act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tattoo_4'
+	end
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act '... accept it (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 3
+			wl_stats['acceptance'] += 2
+			wl_stats['respect'] -= 3
+			pcs_mood = 0
+			gs 'willpower', 'misc', 'self', 'hard'
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'... accept it. '+iif($wl_brand['text_pubic'] = 'cumslut', 'Maybe you are a cumslut. Deep down you know it could be true. Most other girls couldn''t cope with this situation. If this isn''t true, why could you deal with the situation so well?', 'The Belys, Iosif, they all own you. There''s no way to deny it.')
+			'"And?" Iosif asks tearing you away from your thoughts. You don''t even have to force yourself to smile, when you say. "Thank you, Iosif. It really suits me."'
+			'If he''s surprised by your answer, he doesn''t show it. "Of course it does. It''s what you are."'
+			
+			act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tattoo_4'
+		end
+	else
+		act '... accept it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	gs 'willpower', 'misc', 'self', 'medium'
+	if will_cost <= pcs_willpwr:
+		act '... just shrug (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 2
+			wl_stats['respect'] += 3
+			pcs_mood = 100
+			gs 'willpower', 'misc', 'self', 'medium'
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'It''s not like you don''t care, but indifference is probably something that Iosif annoys the most. So you shrug and turn your eyes away from your new tattoo. "Is there anything else you want? Or are we done for today? It was a long session and I''m hungry."'
+			'For a moment anger flares up inside his eyes, but it quickly shifts to something else. You can''t really put your finger on it, but he doesn''t hit you, screams at you or has any other outbursts. He only nods like a small sign of respect. Like a non-verbal ''well played''. It''s not much, but you take it.'
+			
+			act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tattoo_4'
+		end
+	else
+		act '... just shrug (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'tattoo_4':
+	*clr & cla
+	minut += 4
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'"Uhm... yeah," the tattoo artist says and nervously rubbing the back of his head. "When there is nothing else. A tattoo like this costs 20,000 <b>₽</b>."'
+	'20,000 <b>₽</b>? You sigh, because you know who is going to pay for it. You are. It''s always the same. They treat you like dirt and in the end they don''t even pay the bill.'
+	'"How about you fuck her and reduce the price a bit?" Iosif suggests, but his expression makes it clear that this isn''t a suggestion. You know it, but the owner of the shop doesn''t. "What? No, I can''t do that."'
+	'"What''s the problem? Do you think '+iif($wl_brand['text_pubic'] = 'cumslut', 'such a cumslut can''t give you a good time?"', 'my property is ugly?"')+' The man shakes his head and stammers. "No, no, of course not. But...," he thinks about his next words carefully. "It''s not a good idea. The area is rather sensitive right now and we shouldn''t take the risk."'
+	'"Alright," Iosif replies slowly as if he''s talking to an imbecile. "It''s not like she doesn''t have other holes, doesn''t she?" He turns his attention to you. "He can fuck your mouth for 500 <b>₽</b>?"'
+	'You guess you have three options. First, you could decline. Yeah, that''s not going to go down well with Iosif. You discard that option. You could accept, lower the price a bit. You could demand more money and either get the man to refuse or get more money out of it or... a sudden idea lights up in your head. Or if he can''t fuck your pussy, he could use your ass. That would either earn you even more or it could maybe force the man to finally reject the whole idea.'		
+			
+	act 'Accept': 
+		cla & *nl
+		minut += 2
+		wl_temp = 500
+		gs 'stat'
+		'You sigh, since rejecting the ''suggestion'' isn''t an option, and gesture to the man to come to you. "See, she''s willing. What are you waiting for?" Iosif says pointing at you. The guy doesn''t offer any resistance and slowly returns to you.'
+		
+		act 'Continue': gt 'mod_wlife_iosif_sex', 'tattoo_start' 
+	end
+	
+	gs 'willpower', 'prostitution', 'self', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Demand more money (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 4
+			wl_stats['respect'] -= 1
+			wl_stats['loyalty'] += 1
+			wl_stats['acceptance'] += 1
+			wl_temp = 1000
+			gs 'willpower', 'prostitution', 'self', 'easy'
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"500? That isn''t enough. I''m at least worth 1,000 <b>₽</b>," you tell both of them.'
+			'"Really?" Iosif asks impressed by this tiny show of dominance. "Yes, I am," you affirm.'
+			'"Very well 1,000 <b>₽</b> it is. What are you waiting for?" Iosif asks the guy. "Come on give the girl what she wants." The guy doesn''t offer any resistance and slowly returns to you.'
+			
+			act 'Continue': gt 'mod_wlife_iosif_sex', 'tattoo_start'
+		end
+	else
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	gs 'willpower', 'prostitution', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Suggest anal (<<will_cost>> Willpower)':
+			cla & *nl
+			minut += 4
+			wl_stats['respect'] -= 2
+			wl_stats['loyalty'] += 2
+			wl_stats['acceptance'] += 2
+			wl_temp = 2000
+			gs 'willpower', 'prostitution', 'self', 'hard'
+			gs 'willpower', 'pay', 'self'			
+			gs 'stat'
+			'"500? That isn''t enough. I''m at least worth 2,000 <b>₽</b>," you tell both of some. '
+			'"2,000 <b>₽</b>?" Iosif shakes his head about so much audacity. "Don''t kid yourself <<$pcs_nickname>>."'
+			'"My mouth may not, but my asshole is," you reply firmly. "Very well 2,000 <b>₽</b> for her asshole," Iosif grins. "What are you waiting for?" Iosif asks the guy. "Come on give the girl what she wants." The guy doesn''t offer any resistance and slowly returns to you.'
+			
+			act 'Continue': gt 'mod_wlife_iosif_sex', 'tattoo_start'
+		end
+	else
+		act 'Suggest anal (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'tattoo_5':
+	*clr & cla
+	minut += 2
+	wl_total_price -= wl_temp
+	
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/iosif_orlov.jpg"></center>'
+	'You don''t have to look far for something to clean yourself. You use the same supplies the tattoo artist used to clean your crotch. "How do you want to pay?" Iosif asks as you wipe away the cum'+iif(wl_temp = 2000, ' and for good measure wipe down your asshole too.', '.')
+		
+	act 'Let Iosif pay and increase your debt':
+		cla & *nl
+		wl_debt['amount'] += wl_total_price
+		gs 'stat'
+		iif(karta + money < wl_total_price, '"I can''t afford it at the moment, you', '"You')+' will have to pay for it," you say to Iosif. "Sure slut, no problem."'
+		'After Iosif has taken care of the payment, you go back to the car.'
+					
+		act 'Continue': gt 'mod_wlife_tattoo_piercing', 'tattoo_end'
+	end
+				
+	if karta + money >= wl_total_price:
+		act 'Pay for it yourself':
+			cla & *nl
+			if karta >= wl_total_price:
+				karta -= wl_total_price
+			elseif money >= wl_total_price:
+				money -= wl_total_price
+			else
+				wl_total_price -= karta
+				karta = 0
+				money -= wl_total_price
+			end
+				gs 'stat'
+			'After you have taken care of the payment, you go back to the car.'
+						
+			act 'Go back to the car': gt 'mod_wlife_tattoo_piercing', 'tattoo_end'
+		end
+	end
+end
+
+if $ARGS[0] = 'tattoo_end':
+	*clr & cla
+	minut += 35
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+	'Iosif ignores you again. He doesn''t speak a single word to you and leaves you to your own thoughts. In the end your predictions was only off by one small detail. The day involved pain and getting fucked hard, but it wasn''t your pussy that was ravaged this time.'
+	*nl
+	'After a bit more than half an hour Iosif parks in front of the warehouse. '+iif(wl_whore['shifts_week'] > 0 and wl_georgiy['payment_method'] = 0, '"Georgiy reminded me you''ll have to work one shift less for spending time with me today...," he looks a bit annoyed that he has to tell you that. "And now get', '"Get')+' the fuck out of my car," is the last thing he says to you.'	
+	if wl_whore['shifts_week'] > 0 and wl_georgiy['payment_method'] = 0: wl_whore['shifts_week'] -= 1
+
+	killvar 'wl_temp'
+	killvar 'wl_total_price'
+	
+	act 'Leave the car': gt 'mod_wlife_warehouse', 'street'
+end
+
+--- mod_wlife_tattoo_piercing ---------------------------------

+ 354 - 0
locations/mod_wlife_temp.qsrc

@@ -0,0 +1,354 @@
+!!This file is to keep already written events that in the end didn''t fit the situation to maybe use them in some other part of the mod
+
+!!------ Regular party ------
+	
+if $ARGS[0] = 'party_mingle':
+	if wl_party['status'] = 2:
+		wl_party['status'] = 3
+!!ToDo: New slutty outfit comments
+	else
+		pcs_mood += rand(-2,4)
+		minut += rand(20,40)
+
+		wl_temp = rand(0,5)
+		if wl_temp = 0 and wl_party['status'] = 1:
+			
+		elseif wl_temp = 1 and wl_party['status'] = 1:
+				
+		elseif (wl_temp = 2 or wl_temp = 3) and wl_party['status'] = 1:
+			
+		elseif wl_temp = 4 and wl_party['status'] = 1:
+			
+		elseif wl_temp = 5 and wl_party['status'] = 1:
+			
+		end
+		
+		wl_temp = rand(1,10)
+		if wl_party['status'] = 0 or wl_temp < 8:
+			act 'Continue': gt 'mod_wlife_demands', 'party_hub'
+		elseif wl_temp = 8:	
+			act 'Continue': gt 'mod_wlife_demands', 'party_tip'
+		elseif wl_temp > 8:
+			'<br>One of the guys takes the chance to approach you when you stand by yourself.' 
+			act 'Talk to him': wl_temp = 0 & gt 'mod_wlife_demands', 'party_prost_act'	
+		end
+	end	
+end
+
+if $ARGS[0] = 'party_hub':
+	*clr & cla
+	killvar 'wl_temp'
+	if wl_party['status'] = 0: 
+		wl_party['status'] = 1
+	elseif wl_party['status'] = 2: 
+		wl_party['status'] = 3
+	end
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/alone.jpg"></center>'
+!!ToDo	
+	*nl
+!!ToDo: This text has to be expanded if more to do is added
+	'You have a moment to yourself right now. You could just mingle with the boys, talk to them and see where that leads you. Or you could take a more aggressive approach and overtly flirt with them to offer your services. There is also an open bar where you could get a drink.'
+	
+	act 'Mingle': gt 'mod_wlife_demands', 'party_mingle'
+	
+	if wl_stats['acceptance'] < 60:
+		if wl_stats['acceptance'] < 20:
+			'<br>You haven''t accepted your live as a whore and are very hesitant to solicit one of the guys.'
+			gs 'willpower', 'prostitution', 'self', 'hard'
+		elseif wl_stats['acceptance'] < 40:
+			'<br>You haven''t accepted your live as a whore, but you are slowly getting used to it and it get''s a bit easier to solicit one of the guys.'
+			gs 'willpower', 'prostitution', 'self'
+		else
+			'<br>You haven''t fully accepted your live as a whore, but you are getting there. It''s easy to bring yourself to solicit one of the guys.'
+			gs 'willpower', 'prostitution', 'self'
+		end
+		if will_cost <= pcs_willpwr:
+			act 'Flirt (<<will_cost>> Willpower)': 
+				gs 'willpower', 'pay', 'self'
+				gt 'mod_wlife_demands', 'party_flirt'
+			end
+		else
+			act 'Flirt <font color="red">(<<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	else
+		act 'Flirt': gt 'mod_wlife_demands', 'party_flirt'
+	end
+	act 'Go to the bar': gt 'mod_wlife_demands', 'party_bar'
+	if hour = 23 or hour < 6: gt 'mod_wlife_demands', 'party_end'
+end
+
+if $ARGS[0] = 'party_flirt':
+	*clr & cla
+	minut += rand(20,40)
+	wl_party_slut_counter += 1
+	gs 'arousal', 'foreplay', -6
+	gs 'arousal', 'end'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/party/mingle_'+rand(0,2)+'.jpg"></center>'
+	'The whole time you walk around the room some part of you is touching one of the guys. Be it your hand that admiringly touches a musceled arm, your hips pushing into a groping hand or your whole body that stands a little to close to somebody. And when this isn''t obvious enough you dish out compliments spiced with sexual innuendo.'
+	*nl
+	wl_temp = rand(1,10)
+	if wl_stats['respect'] < -60:
+		wl_temp += rand(1,2)
+		'They are clearly not surprised by your behaviour. It''s obvious that they think you''re nothing more than a total whore that fucks and does anything for money.'
+	elseif wl_stats['respect'] < -30:
+		wl_temp += 1
+		'They aren''t surprised by your behaviour. It''s obvious that they think you''re a depraved slut that does mostly anything for the right price.'
+	elseif wl_stats['respect'] < 30:
+		if wl_stats['respect'] > 0:
+			wl_temp -= rand(0,1)
+		else
+			wl_temp += rand(0,1)
+		end
+		'They aren''t sure what to think about your behaviour. It''s obvious that they believe you''re a cool chick that does what she has to do.'
+	elseif wl_stats['respect'] < 60:
+		wl_temp -= 1
+		'They are a bit surprised by your behaviour. It''s obvious that they think you''re a good girl that is living this live not by choice.'
+	else
+		wl_temp -= rand(1,2)
+		'They are clearly surprised by your behaviour. It''s obvious that they think you''re a decent woman that is doing this because she has too.'
+	end
+	if wl_temp < 5:
+		'<br>This time you strike out. For the moment none of the guys seems to be interested in you.'
+		act 'Continue': gt 'mod_wlife_demands', 'party_hub'
+	else
+		'<br>One of the guys is clearly interested in you and approaches you when you stand by yourself for a moment.' 
+		act 'Talk to him': wl_temp = 1 & gt 'mod_wlife_demands', 'party_prost_act'	
+	end
+	killvar 'wl_temp'
+end
+
+if $ARGS[0] = 'party_bar':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+!!Image path
+		
+end	
+
+if $ARGS[0] = 'party_prost_act':	
+!!ToDo: Random selection of one of the sex scenes
+
+	if wl_temp = 0:
+		gt 'mod_wlife_demands', 'party_prost_start'
+	else
+		gt 'mod_wlife_demands', 'party_prost_condom'
+	end
+end
+
+if $ARGS[0] = 'party_prost_start':
+	*clr & cla
+	minut += rand(2,4)
+	gs 'stat'
+	'...'
+	
+	gs 'willpower', 'prostitution', 'resist', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Shake your head (<<will_cost>> Willpower)':
+			
+		end
+	else
+		act 'Shake your head <font color="red">(<<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Accept': gt 'mod_wlife_demands', 'party_prost_condom'
+end	
+	
+if $ARGS[0] = 'party_prost_condom':
+	*clr & cla
+	minut += rand(2,4)
+	gs 'stat'
+
+end
+
+if $ARGS[0] = 'party_prost_end':
+	*clr & cla
+	minut += rand(2,4)
+	gs 'stat'
+!!ToDo: Money ... demand (1), poor girl (2), ignore (3)	
+
+end
+
+if $ARGS[0] = 'party_end':
+
+!!ToDo: volya picks her up, maybe add the night fuck scene video in a car as a possible end for the evening, also equip your old clothes .. maybe undressing triggers sex
+!!	gs 'clothing', 'wear_last_worn' and gs 'underwear', 'wear'
+
+end
+
+
+
+
+
+
+
+
+if $ARGS[0] = 'warehouse_prostitution':
+	*clr & cla
+	menu_off = 1
+	minut += 2
+	gs 'stat'
+	if wl_gang['status'] = 1: wl_gang['status'] = 2
+	gs 'mod_wlife_functions', 'rng'
+	wl_temp = rand(1,10)
+	if wl_temp <= 3:
+		wl_gang['scene'] = 0
+		wl_gang['boys'] = 1
+	elseif wl_temp <= 6:	
+		wl_gang['scene'] = 1
+		wl_gang['boys'] = 1
+	elseif wl_temp <= 8:	
+		wl_gang['scene'] = 0
+		wl_gang['boys'] = 2
+	elseif wl_temp <= 10:	
+		wl_gang['scene'] = 1
+		wl_gang['boys'] = 2
+	end	
+	gs 'mod_wlife_functions', 'gang_prostitution', wl_gang['scene'], wl_gang['boys']
+	killvar 'wl_temp'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+	'The warehouse is full of guys, when you return from your weekly check-in with Georgiy. You only make it halfway through the hall before '+iif(wl_temp <= 6, 'a guy stops', 'two guys stop')+' you.'
+	if wl_gang['counter'] > rand(4,20):
+		if wl_temp <= 6:
+			if rand(0,1) = 0:
+				'You immediately recognize him as one of the guys that bought your services in the last few weeks. "Hi, <<$wl_boyname[1]>>," you greet the approaching man. "How are you?"'
+				'"Hi <<pcs_nickname>>, I''m a bit stressed," he tells you and pulls out a few bills. "Are you free at the moment? I need to blow of some steam and I could really need a good time," he asks you.'
+			else
+				'"Hey <<$pcs_nickname>>," <<$wl_boyname[1]>> greets you. He''s one of the guys you serviced in the last weeks. "How about you, me and my cock in your '+iif(wl_rand <= 3, 'mouth', 'snatch')+'?" he ashs you with a boyish grin. "Doesn''t that sound like a great idea?"'
+			end
+		else
+			if rand(0,1) = 0:
+				'"Damn <<$pcs_nickname>>, long time no see," one of the guys says. "Hi <<$wl_boyname[1]>>, who is your friend?" you ask while the other guy looks at every inch of your body except your eyes. "<<$wl_boyname[2]>>, I told him what a great fuck you are. How about you don''t make me a liar and take care of us?"'
+			else
+				'"<<$wl_boyname[1], $wl_boyname[2], let me guess you wanna fuck me tonight?" you ask the two approaching men. "'+iif(wl_temp <= 8, 'No, we don''t have much time. Only a blowjob tonight.', 'Yeah, like always.')+'" <<$wl_boyname[1]>> says.' 
+			end
+		end
+	else
+		if wl_temp <= 6:
+			if rand(0,2) < 2:
+				'"Hey," the guy says. "I have seen you around for a few weeks now. Aren''t you Georgiy''s new whore?"'
+				iif(wl_stats['acceptance'] > 60, 'You slightly shrug. "Yes," you answer. There is no point in denying what you are. "B', 'You sigh internally, but plaster a smile on your face. "Yeah, b')+'ut I prefer <<$pcs_nickname>> over whore."'
+				'He grins. "Sure, <<$pcs_nickname>>. Maybe we should get together to know each other a bit better." You send him a questioning look, but you have no doubt what he''s about to demand from you. "Maybe my dick could meet your '+iif(wl_temp <= 6, 'your mouth?"', 'your pussy?"')			
+			else
+				'"Hi, I don''t think we have met yet," the man says and holds out his hand like a gentleman, "<<$wl_boyname[1]>>."'
+				'"<<$pcs_nickname>>," you reply while shaking his hand. Your pleasant surprise about his behavior quickly vanishes, when he says. "I don''t know how to say it in a nice way, so I''ll just blurt it out. Are you up for some fun?"'
+			end
+		else
+			if rand(0,1) = 0:
+				'"You''re one of our girls...," one of the guys says with a sweet smile. "But I''m afraid I don''t know your name."'
+				'"<<$pcs_nickname>>," you answer and respond with a smile of your own.'
+				'"Nice to meet you <<$pcs_nickname>>. I''m <<$wl_boyname[1]>> and that''s <<$wl_boyname[2]>>."'
+				iif(rand(0,1) = 0, '"Get to the point <<$wl_boyname[1]>>," <<$wl_boyname[2]>>) says rolling his eyes. "We want '+iif(wl_temp <= 6, 'you to blow us', 'to fuck you')+'."', '"Shut up <<$wl_boyname[1]>>, you don''t have to be so fucking nice to the whores," he tells his friend before shifting towards you. "So whore, do you want to earn some rubles?"')
+			else
+				'"Well, well...," one of the guys grins while their gazes wander over every inch of your body. "Who have we here?" the other one asks.'
+				'"<<pcs_firstname>>, but you can call me <<pcs_nickname>>," you introduce yourself. '+iif(rand(0,1), '"Do you want something? I was on my way out."', '"Can I help you with something?"')
+				'"Yeah, maybe <<pcs_nickname>>. You''re one of Georgiy''s girls, aren''t you?" he says directing his question towards your tits. You nod, but wonder if he can even see that with his gaze fixed on your goods. "How about you show us a good time?"'				
+			end
+		end
+	end
+	
+	*nl
+	'Number of clients: <<wl_gang[''boys'']>>'
+	'Payment: <<wl_gang[''payment'']>> <b>₽</b>'
+	'Act: '+iif(wl_client['scene'] = 0, 'Blowjob', 'Sex')
+	
+	if wl_gang['condom'] = 0:
+		gs 'mod_wlife_functions', 'will_unprotected', 'self'
+		if will_cost <= pcs_willpwr:
+			act 'Insist on a condom (<<will_cost>> Willpower)':
+				gs 'mod_wlife_functions', 'will_unprotected', 'self'
+				gs 'willpower', 'pay', 'self'
+				gt 'mod_wlife_gang', 'condom'
+			end
+		else
+			act 'Insist on a condom (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	elseif wl_gang['condom'] = 1:
+		wl_gang['condom'] = 2
+		'<br>You think about asking for a condom, but you quickly discard the idea after what happened last time.'
+	end
+	gs 'willpower', 'prostitution', 'self'
+	if will_cost <= pcs_willpwr:
+		act 'Demand more money (<<will_cost>> Willpower)':
+			gs 'willpower', 'prostitution', 'self'
+			gs 'willpower', 'pay', 'self'
+			if (wl_gang['rand'] = 6 and rand(1,10) = 1) or (wl_gang['rand'] = 5 and rand(1,10) < 4) or (wl_gang['rand'] = 4 and rand(1,10) < 8) or (wl_gang['rand'] = 3 or rand(1,10) < 10):
+				if wl_gang['scene'] = 0 and wl_gang['boys'] = 1:
+					wl_gang['bonus'] = 50
+				elseif (wl_gang['scene'] = 1 and and wl_gang['boys'] = 1) or (wl_gang['scene'] = 0 and wl_gang['boys'] = 2)
+					wl_gang['bonus'] = 100
+				else
+					wl_gang['bonus'] = 200
+				end
+				gt 'mod_wlife_gang', 'warehouse_prostitution_success'
+			else
+				gt 'mod_wlife_gang', 'warehouse_prostitution_failure'		
+			end
+		end
+	else
+		act 'Demand more money (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	if wl_stats['acceptance'] > 60:
+		gs 'willpower', 'prostitution', 'self', 'hard'
+	elseif wl_stats['acceptance'] > 30:
+		gs 'willpower', 'prostitution', 'self', 'medium'
+	else
+		gs 'willpower', 'prostitution', 'self', 'easy'
+	end
+	if will_cost <= pcs_willpwr:
+		act 'Decline (<<will_cost>> Willpower)': 
+			minut += 1
+			wl_stats['respect'] += rand(0,1)
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			if wl_gang['decline'] = 0:
+				cla & *nl
+				wl_stats['respect'] += 1
+				wl_gang['decline'] = 1
+				'You shake your head and send '+iif(wl_gang['boys'] = 1, 'him', 'them')+' an apologetic smile as you explain to them that you aren''t working tonight. '+iif(wl_gang['boys'] = 1, 'He grumbles', 'They grumble')+' a bit, clearly disappointed by your decision, but you get the feeling that declining the opportunity to sell yourself earned you some respect with '+iif(wl_gang['boys'] = 1, 'him', 'them')+'.'
+			
+				act 'Leave': gt 'mod_wlife_warehouse', 'street'
+			else
+				gt 'mod_wlife_warehouse', 'street'
+			end
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Accept':
+		wl_gang['bonus'] = 0
+		gt 'mod_wlife_gang', 'warehouse_prostitution_success'
+	end
+end
+
+if $ARGS[0] = 'warehouse_prostitution_success':
+	*clr & cla
+	minut += 1
+	wl_stats['respect'] += wl_gang['respect']
+	money += wl_gang['payment']
+	money += wl_gang['bonus']
+	gs 'stat'
+		
+!!ToDo: Text 		
+	act 'Follow them': gt 'mod_wlife_gang_sex', 'warehouse_prostitution_start'
+end
+
+if $ARGS[0] = 'warehouse_prostitution_failure':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+!!ToDo: Finish	
+end
+
+if $ARGS[0] = 'condom':
+	*clr & cla
+	minut += 2
+	wl_stats['respect'] += 2
+	wl_stats['loyalty'] -= 5
+	wl_nicholai['condom'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/warehouse_guys.jpg"></center>'
+	'The second you mention condoms you want to snatch your words out of the air and swallow them back down. "A condom?" He frowns and anger flares up inside his eyes. He seems deeply offended by the question. "Why? Do I look like some diseased fuck?"'
+	'"No, no... of course not," you hastily reply. "I would never assume that. It''s just my routine to use a condom," you '+iif(wl_stats['unprotected'] > 20, 'lie', 'say')+', but that explanation doesn''t seem to satisfy him. He angrily shakes his head and points his finger at you. "Maybe the cheap street whore should shut the fuck up, get off her high horse and be glad that she doesn''t have to fuck some unwashed trucker for a change," he growls and walks away before you can say another word.'
+	
+	act 'Leave the warehouse': minut += 1 & gt 'mod_wlife_warehouse', 'street'
+end

+ 488 - 0
locations/mod_wlife_thoughts.qsrc

@@ -0,0 +1,488 @@
+# mod_wlife_thoughts
+
+if $ARGS[0] = 'whore_0':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_thought['timer_whore'] = daystart + rand(5,7)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'So much has happened to you in the last weeks that your mind keeps wandering back to everything that happened.'
+	'As you''re lying in bed you remember the fateful day when your life had changed and you met Vadim Bely in the streets of Pavlovsk.'
+		
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Try to suppress the memory (<<will_cost>> Willpower)': 
+			cla & *nl
+			minut += 5
+			if pcs_mood > 5: pcs_mood = 5
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'No, you don''t want to think about that and try to force yourself to think about something else, something nice. It''s dragging down your mood, but after a few minutes you have successfully pushed the thought aside. You can still feel it lurking in the depths of your mind and it won''t stay suppressed forever.'
+			act 'Continue': gt $loc, $metka
+		end
+	else
+		act 'Try to suppress the memory (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	if wl_pictures['start'] = 1: 
+		act 'Look at the picture on your phone': gt 'mod_wlife_thoughts', 'whore_1', 'picture_yes'
+	else
+		act 'Think about that day': gt 'mod_wlife_thoughts', 'whore_1', 'picture_no'
+	end
+end
+
+if $ARGS[0] = 'whore_1':
+	*clr & cla
+	minut += 1
+	wl_thought['whore'] = 1
+	gs 'stat'
+	if $ARGS[1] = 'picture_yes':
+		'<center><img <<$set_imgh>> src="mod/wlife/images/sex/story/start/start.jpg"></center>'
+		'You take your phone and open the image an unknown number sent to you the day after your ordeal in the warehouse.'
+		'It''s different living through the event and to see yourself getting degraded like this.'		
+	else
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	end	
+	'The roughness of the sex, the pain, how they treated you, everything comes back to you and for a moment you can see every detail of that day clearly before your inner eye. It was degrading and humiliating to be passed around like a toy and get marked as a whore. As if you''re one, you think, but the annoying tiny voice in your head sows doubt immediately. You have now worked several times at the gas station and doesn''t that make everything they wrote on your body true? '+iif(wl_whore['shifts_total'] > wl_whore['shifts_total_minimum'], 'You even worked more shifts than they required of you. They didn''t force you to go there when you didn''t have to.', 'No! You tell yourself. You have only worked the bare minimum and never did more than what they forced you to do.')
+	*nl
+	'In the end you wrestle with yourself about one question that all of your thoughts boil down to: Is the degrading stuff they wrote on you true or not?'
+	
+	act 'No, that''s not the real you':
+		cla & *nl
+		minut += 1
+		pcs_mood = 100
+		wl_stats['acceptance'] -= 2
+		'"No," you whisper. It''s not true. You aren''t a whore and you have to keep reminding yourself of that fact.'
+		'You don''t feel better about your situation, but about yourself.'
+
+		act 'Continue': gt $loc, $metka	
+	end
+			
+	act 'Yes, that''s the real you':
+		cla & *nl
+		minut += 1
+		if pcs_mood > 5: pcs_mood = 5
+		wl_stats['acceptance'] += 3
+		'Yes it is, you have become a whore and even so, nobody can see the degrading writing anymore, it feels like it''s still there.'
+		'You don''t feel better about yourself, but you accept your new role and the situation you''re in a little bit more.' 
+		
+		act 'Continue': gt $loc, $metka	
+	end	
+end
+
+if $ARGS[0] = 'pissing':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_thought['timer_pissing'] = daystart + rand(5,7)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'The moment you lay down in bed images from your first visit at the gynecologist rise up from the unconscious part of your mind. Especially memories of the moment, when he watched you urinating.'
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Try to suppress the memory (<<will_cost>> Willpower)': 
+			cla & *nl
+			minut += 5
+			if pcs_mood > 5: pcs_mood = 5
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'No, you don''t want to think about that and try to force yourself to think about something else, something nice. It''s dragging down your mood, but after a few minutes you have successfully pushed the thought aside. You can still feel it lurking in the depths of your mind and it won''t stay suppressed forever.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+	else
+		act 'Try to suppress the memory (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Remember it':
+		*clr & cla
+		minut += 5
+		wl_thought['pissing'] = 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/locations/clinic/pissing.jpg"></center>'
+		'He watched you pee and for a moment it''s like you can feel his burning gaze on you. It was so humiliating to be watched while doing such a private thing. You can feel a blush creeping up your neck and your cheeks turning warm at the mere thought of it. At the same time your pussy...'
+		
+		act '... doesn''t react at all (Dislike it)':
+			cla & *nl
+			$wl_fetish['pissing'] = 'no'
+			'... doesn''t react at all. If it happens again you''ll hold your nose and go through with it if you have no other choice, but it isn''t turning you on in any way.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+		
+		act '... tingles pleasantly (Like it)':
+			cla & *nl
+			$wl_fetish['pissing'] = 'yes'
+			if pcs_horny < 40: pcs_horny += 40
+			gs 'stat'
+			'... tingles pleasantly. Your pussy is wet just from thinking about it. It''s such a humiliating act and you may have never thought about it before, but you can''t deny the fact that you feel aroused by the thought of somebody watching you piss.'
+
+			act 'Continue': gt $loc, $metka
+		end	
+	end
+end
+
+if $ARGS[0] = 'rim_whore':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_thought['rimjob'] = 2
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'When you lie down in bed the question you have avoided all day pops into your mind and this time you can''t seem to ignore it again.'
+	
+	act 'Remember it':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/normal/sex/rimjob/rimjob.jpg"></center>'
+		'You gave a stranger a rimjob... again. Not for the first time, not even for the second time, but for the third time. The Bely''s forced you to be a street whore, but not a hooker that licks her clients assholes. You decided to become that all on your own. You sigh and shake your head in disbeliefe about your own behavior. Why didn''t you say no? What in gods name made you stick out your tongue and lick an asshole.... an asshole... You shake your head again and let out a frustrated groan. It was the money! It has to be the money. You tell yourself. But was it?'
+		
+		act 'Yes, it was the money (Dislike it)':
+			cla & *nl
+			$wl_fetish['rimjob'] = 'no'
+			'It''s the money and self preservation plays a role as well. It''s always a good idea to not piss off your client. If that means licking an asshole, you swallow your pride and do it.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+		
+		act 'No, it was more than just the money (Like it)':
+			cla & *nl
+			$wl_fetish['rimjob'] = 'yes'
+			if pcs_horny < 40: pcs_horny += 40
+			gs 'stat'
+			'You have to accept the fact that it was more than just the money that made you do it. It''s hard to face that fact, but you can''t lie to yourself. You hide so much from your family and friends, being honest with yourself is more important than ever. And the truth is: You like it. Sure the money is nice, but something inside you get''s turned on by the humiliating and degrading act of licking a strangers ass.'
+
+			act 'Continue': gt $loc, $metka
+		end	
+	end
+end
+
+if $ARGS[0] = 'ass_to_mouth':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_thought['timer_atm'] = daystart + rand(5,7)
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'The moment you lay down in bed your mind conjures up images from one of your last shift at the highway. There was an ass, your tongue, your finger...'
+	
+	gs 'willpower', 'misc', 'self', 'hard'
+	if will_cost <= pcs_willpwr:
+		act 'Try to suppress the memory (<<will_cost>> Willpower)': 
+			cla & *nl
+			minut += 5
+			if pcs_mood > 5: pcs_mood = 5
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'No, you don''t want to think about that and try to force yourself to think about something else, something nice. It''s dragging down your mood, but after a few minutes you have successfully pushed the thought aside. You can still feel it lurking in the depths of your mind and it won''t stay suppressed forever.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+	else
+		act 'Try to suppress the memory (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Remember it':
+		*clr & cla
+		minut += 5
+		wl_thought['atm'] = 2
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/prostitution/normal/sex/rimjob/finger.jpg"></center>'
+		'Your right index finger touches your lips and you open your mouth to let it slip into it without really thinking about what you''re doing. Only when you swirl your tongue around it, you realize that you''re repeating what you did after rimming one of your last clients. "Shit," you mumble and look at your finger like it''s a foreign object. It was in some guys ass and in your mouth. What the fuck were you thinking? You ask yourself and wipe the saliva covered finger on the sheets. You should have done something similar, when you were with your client, instead of putting it into your mouth.'
+		*nl
+		'You lay on your bed for a few more minutes thinking about what you did. Is it really so bad? Your''re already rimming people for money'+iif($wl_fetish['rimjob'] = 'yes', ' and you even get turned on by it. Isn''t this the next logical step? You ask yourself.', ', but you don''t even like that. There is no way you would like ass-to-mouth if you hate giving somebody a rimjob.')
+		
+		act 'You hate it':
+			cla & *nl
+			$wl_fetish['atm'] = 'no'
+			'There is no way in hell that something like this will ever turn you on. Doing it for money? Yes, fine that is something you can go along with, but that''s it.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+		
+		if $wl_fetish['rimjob'] = 'yes':
+			act 'You like it':
+				cla & *nl
+				$wl_fetish['atm'] = 'yes'
+				if pcs_horny < 40: pcs_horny += 40
+				gs 'stat'
+				'You shrug. What''s the difference between licking an ass and taking something from it into your mouth? There isn''t for you. Your pussy even tingles a bit, when you think about a guy making you suck his dick, after fucking your ass.'
+
+				act 'Continue': gt $loc, $metka
+			end	
+		end
+	end
+end
+
+if $ARGS[0] = 'passport':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['passport'] = 1
+	wl_thought['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/passport_hold.jpg"></center>'
+	'When you sit down on your bed, you remember the passport Volya gave you. You pull it out of your '+iif(bag = 1, 'purse', 'pocket')+' to take a closer look at it. If you hadn''t known that it''s fake, you would have assumed it''s real. There is no difference between this one and your real one. It even feels used like it was already a few years old and not brand new.'
+	
+	act 'Open it':
+		*clr & cla
+		minut += 5
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/passport_open.jpg"></center>'
+		'You open it and take a more detailed look at your alter ego. Her name is <<$wl_names[''first'']>> <<$wl_names[''last'']>> and she was born on the 11th of April. It''s a bit strange to see your face next to a different name, but that represents your current situation quite well. Sometimes you have the feeling that there are two of you: The whore <<$wl_names[''first'']>> and your old self <<$pcs_firstname>>. Both share the same <<$pcs_haircol>> hair, <<$pcs_eyecol>> eyes, the same face and body. Suddenly a question pops into your mind. <i>Who am I really?</i>'
+		*nl
+		'You push the thought aside. The question is of course ridiculous. You are <<$pcs_firstname>> not the whore <<$wl_names[''first'']>>. <i>Or am I?</i> Annoyed with yourself you roll your eyes. "Shut up brain," you whisper to yourself. But the question doesn''t go away. It''s as if some part of you wants an answer. You roll the question around in your head. Who are you deep inside?'
+		
+		act '<<$pcs_firstname>>':
+			cla & *nl
+			minut += 1
+			pcs_mood = 100
+			wl_stats['acceptance'] -= 2
+			'What a stupid thing to think about. You''re of course <<$pcs_firstname>>. You put the fake passport back inside your '+iif(bag = 1, 'purse', 'pocket')+' and don''t waste another second thinking about it.'
+
+			act 'Continue': gt $loc, $metka	
+		end
+				
+		act '<<$wl_names[''first'']>>':
+			cla & *nl
+			minut += 1
+			if pcs_mood > 10: pcs_mood = 10
+			wl_stats['acceptance'] += 3
+			'You''re more her, the whore, than your old self, you finally admit to yourself. It doesn''t make yourself feel good to admit it, but you''re accepting your situation a bit more.' 
+			
+			act 'Continue': gt $loc, $metka	
+		end
+	end
+end
+
+if $ARGS[0] = 'volya_car_bj':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_volya['status'] = 4
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'The events of the last few days rise up from your memories the moment you lie down and come to rest. You remember Volya and the blowjob you gave him in the car.'
+	if npc_rel['A904'] < 30:
+		'What have you done? You ask yourself and shake your head. At best you don''t like him, maybe even hate him'+iif($wl_virgin ! '', ' and it doesn''t matter that you already slept with him. That was to prepare yourself for your new line of work.', '.')
+		'He''s one of Belys men, worse he''s your pimp and yes he promised to help you, but what has he really done? Ziltch! But when this is all true. Why did you do it? To be on good terms with him or is there some part of you that does like him?'
+	elseif npc_rel['A904'] >= 30 and npc_rel['A904'] < 70:
+		'What have you done? You ask yourself. It''s not as if you dislike him'+iif($wl_virgin ! '', ' and sure you have already slept with him, but that was a totally different situation. You had to get your virginity out of the way before you started working.', '.')+' But he''s your pimp now and is it really a good idea to get involved with him like that?'
+	elseif npc_rel['A904'] >= 70:
+		'Wasn''t it inevitable? You are quite fond of him'+iif($wl_virgin ! '', ' and you already slept with him.', '.')+' Wasn''t this the logical consequence? But he''s still part of Vadim''s gang and maybe it''s a bad idea to get involved with him?'
+	end
+	*nl
+	'All your thoughts and doubts boil down to one simple question. How do you feel about Volya? Do you like him? Do you trust him? You ask yourself.'
+	
+	if npc_rel['A904'] <= 70:
+		act 'You can''t stand the guy':
+			cla & *nl
+			wl_volya['relationship'] = 0
+			'You can''t stand him and probably never will. You can''t put your finger on it, but there is something about him that prevents you from trusting him.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+	end
+	
+	act 'He''s growing on you':
+		cla & *nl
+		wl_volya['relationship'] = 1
+		'Maybe you were wrong about him. He promised to help you and even if he hasn''t done anything to help you yet, you''re starting to trust and like him.'
+		
+		act 'Continue': gt $loc, $metka
+	end
+	
+	if npc_rel['A904'] > 30:
+		act 'You like him':
+			cla & *nl
+			wl_volya['relationship'] = 2
+			'There is no question about it, you like and trust him. He will definitely help you.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+	end
+end
+
+if $ARGS[0] = 'volya_car_sex':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_volya['status'] = 6
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'One thing led to another and you slept with Volya.'
+	
+	act 'You don''t like him':
+		cla & *nl
+		wl_volya['relationship'] = 0
+		'It''s all transactional. You keep him on your side, so that he''ll keep helping you. If that means sleeping with him on occasion, so be it. Sometimes the tiny nagging voice in your head asks you if you''re unfair to him, but you push it aside and ignore it.'
+		
+		act 'Continue': gt $loc, $metka
+	end	
+	
+	act 'You do like him':
+		cla & *nl
+		wl_volya['relationship'] = 2
+		'It''s time to acknowledge that you like him despite of who he works for. Sometimes the tiny nagging voice in your head asks you if you can really trust him, but you push it aside and ignore it.'
+		
+		act 'Continue': gt $loc, $metka
+	end	
+end
+
+if $ARGS[0] = 'shura_bj':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	if wl_adrian['status'] < 3: wl_homeless['good'] += 1
+	wl_shura['status'] = 10
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'Your mind wanders back to when you gave Shura a blowjob behind the warehouse. You '+iif(wl_shura['relationship'] = 0, 'didn''t like him,', 'weren''t overly fond of him')+' before it happened and you still aren''t quite sure how you feel about him. Was it just a pity fuck that you offered him after hearing the story about his former girlfriend or was it more than that? You ask yourself.'
+
+	act 'Pity fuck':
+		cla & *nl
+		wl_shura['relationship'] = 0
+		'You don''t have to think long before you reach a conclusion. You only took pity on him. Nothing more nothing less. He may be into you and wants more, but that isn''t a road you want to go down with him.'
+		
+		act 'Continue': gt $loc, $metka
+	end
+
+	act 'More than that':
+		cla & *nl
+		wl_shura['relationship'] = 2
+		'You don''t have to think long before you reach a conclusion. You like him even after all that has happened between you two, you can''t deny the fact that there is at least a friendship growing between you.'
+		
+		act 'Continue': gt $loc, $metka			
+	end
+end
+
+if $ARGS[0] = 'piss_whore':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'The moment you lay down in bed images from your last encounter with Iosif rise up inside your mind. There is especially one you can''t seem to shake.'
+	
+	act 'Remember it':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/sex/iosif/warehouse/piss_whore.jpg"></center>'
+		'He pissed on you. The smell, the feeling of the warm liquid hitting your skin, everything of that moment returns for a second. At first you reacted shocked and disgusted and that''s...'
+		
+		act 'Still the case (Dislike it)':
+			cla & *nl
+			$wl_fetish['pissed_on'] = 'no'
+			'... still the case. If it happens again you''ll hold your nose and go through with it if you have no other choice, but it isn''t turning you on in any way.'
+			
+			act 'Continue': gt $loc, $metka
+		end
+		
+		act 'Not the case anymore (Like it)':
+			cla & *nl
+			$wl_fetish['pissed_on'] = 'yes'
+			if wl_adrian['status'] < 3: wl_homeless['bad'] += 2
+			if pcs_horny < 100: pcs_horny = 100
+			'... not the case anymore. You can feel it between your legs. Your pussy is wet just from thinking about it. It''s such a degrading act and maybe it''s your new life that''s slowly changing you, but you can''t deny the fact that you like it.'
+
+			act 'Continue': gt $loc, $metka
+		end	
+	end
+end
+
+if $ARGS[0] = 'homeless_aftermath':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_adrian['timer'] = daystart + rand(2,5)
+	wl_thought['timer'] = daystart
+	wl_thought['homeless'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'Your mind wanders back to the time when you had sex with a homeless man. The smell, the feeling of him inside you returns for a second when you lay down on your bed. It was disgusting in so many ways, but... You push the thought away. There is no but in this situation. You don''t want to do it ever again.'
+	'You try to think about something else, anything else, but you don''t seem to able to shake that one stray thought always finding a way back into your mind whenever you push it away. There was one small, one teeny-tiny nice thing. The rest was disgusting, vile and horrible! You have to remind yourself, but you still feel good about the man''s reaction. You gave him hope for a short time and a good memory for the rest of his messed up life. When he thought this '+iif($pcs_firstname = 'Sasha' or $pcs_nickname = 'Sasha', 'Tatiana', 'Sasha')+' was back, he couldn''t have been more happy. You sigh annoyed about yourself. As if that is going to make up for the fact of how disgusting that was... But was it? Not again! You think getting angry at yourself. What the fuck is wrong with you? But that can''t stop the other teeny-tiny voice in the back of your head from asking if that isn''t something you like and if you don''t want to go back there?'
+
+	act 'No, absolutely not':
+		cla & *nl
+		wl_homeless['good'] -= 1
+		wl_homeless['bad'] -= 1
+		'Of course you don''t want to go back to this rotten place! What a stupid question to ask yourself. You will never do it again, unless Georgiy forces you to.'
+		
+		act 'Continue': gt $loc, $metka
+	end
+	
+	act 'No, but helping that man felt nice':
+		cla & *nl
+		wl_homeless['good'] += 1
+		pcs_mood = 100
+		gs 'stat'
+		'OK, it felt nice to give him a good time. You finally acknowledge that warm and fuzzy feeling inside you, even if the whole situation was disgusting. It feels good to be the one small sliver of hope in his life, but that doesn''t mean you will ever go back there on your own...'
+		
+		act 'Continue': gt $loc, $metka	
+	end
+	
+	act 'Maybe...':
+		*clr & cla
+		wl_homeless['bad'] += 1
+		if pcs_horny < 60: pcs_horny = 60
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/pussy_wet.jpg"></center>'
+		'"Shit," you murmur when you push your hand between your legs and feel wetness. This can''t be true? Can it? Does it really turn you on being degraded like this? You shake your head in disbeliefe and pull your hand back. It was disgusting and vile, you tell yourself several times, but that doesn''t stop the tingling sensation between your legs.'
+		
+		act 'Continue': gt $loc, $metka	
+	end
+end
+
+if $ARGS[0] = 'sacha':
+	*clr & cla
+	minut += 1
+	menu_off = 1
+	wl_thought['timer'] = daystart
+	wl_thought['sacha'] = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/bed.jpg"></center>'
+	'You gave somebody a blowjob... for drugs. You don''t even want to think about it being somebody you knew before your life changed so dramatically. Isn''t it enough that you sell your body? Do you now have to do it for drugs? You ask yourself. Is there no line you will not cross? Is sex only a means to an end for you or was it wrong to kneel done in the dirt for some weed?'
+		
+	act 'No, all sex is transactional':
+		cla & *nl
+		wl_drugs['sex'] = 1
+		wl_stats['acceptance'] += 3
+		minut += 2
+		gs 'stat'
+		'Why should there be a difference? Sucking somebody off for money and then using it to pay for drugs is the same as sucking somebody off for drugs. Sex is just sex. It''s not like somebody got hurt. It was a simple mutual and beneficial transaction. Nothing more and nothing less. In the end it doesn''t matter if you fuck somebody for money, drugs, happiness or even love. It''s all transactional.'
+		
+		act 'Continue': gt $loc, $metka
+	end
+	
+	act 'Yes, it was wrong':
+		cla & *nl
+		wl_drugs['sex'] = -1
+		wl_stats['acceptance'] -= 2
+		minut += 2
+		gs 'stat'
+		'This was a line you shouldn''t have crossed. The Belys forced you into prostitution, but nobody pressured you into buying drugs and especially not to use your body to get it. In this moment you swear to yourself you''ll never use your body like this again. Fucking for money? Fine, you have to do it to survive, but you won''t do it again for drugs.'
+	
+		act 'Continue': gt $loc, $metka
+	end
+end
+
+if $ARGS[0] = 'attic_aftermath':
+
+wl_thought['attic'] = 1
+!!ToDo: thoughts about the aftermath (wl_vadim['rough'])
+
+end
+
+
+--- mod_wlife_thoughts ---------------------------------
+

+ 57 - 0
locations/mod_wlife_vadim.qsrc

@@ -0,0 +1,57 @@
+# mod_wlife_vadim
+
+!!ToDo: Arousal call depend on wl_vadim['rough'], needs a thought even
+
+if $ARGS[0] = 'pick_up':
+	*clr & cla
+	minut += 5
+	'<center><video autoplay loop src="mod/wlife/images/sex/vadim/house/start_0.mp4"></video></center>'
+	if wl_vadim['status'] = 0:
+!!ToDo: Write events		
+	else
+	
+	end
+	
+	act 'Get inside the car':
+		*clr & cla
+		minut += rand(20,30)
+		if wl_vadim['status'] = 0 or rand(1,10) > 6:
+			'<center><video autoplay loop src="mod/wlife/images/sex/vadim/house/start_1.mp4"></video></center>'
+!!ToDo: Pussy grabing, arousal call			
+		else
+!!ToDo: normal ride to vadims house		
+		end
+		
+		gs 'stat'
+		
+		act 'Follow him inside':
+!!ToDo: Three starts spit face, touching, biting ass
+			*clr & cla
+			'<center><video autoplay loop src="mod/wlife/images/sex/vadim/house/start_2.mp4"></video></center>'
+			
+			act 'Continue':
+				*clr & cla
+
+				if rand(0,1) = 0:
+					'<center><video autoplay loop src="mod/wlife/images/sex/vadim/house/start_3a.mp4"></video></center>'
+!!ToDo: bite ass text, arousal call			
+				else	
+					'<center><video autoplay loop src="mod/wlife/images/sex/vadim/house/start_3b.mp4"></video></center>'
+					
+!!ToDo: Spit in face, arousal call					
+				end
+				
+				gs 'stat'
+				
+				act '...':
+				end
+			end
+		end
+	end
+end
+
+!!ToDo: wl_vadim['status'] = 1 has to be set
+
+--- mod_wlife_vadim ---------------------------------
+
+

+ 1627 - 0
locations/mod_wlife_volya.qsrc

@@ -0,0 +1,1627 @@
+# mod_wlife_volya
+
+if $ARGS[0] = 'apartment_entrance':
+	CLOSE ALL
+	$loc = 'mod_wlife_volya'
+	$menu_loc = 'mod_wlife_volya'
+	$metka = 'apartment_entrance'
+	$menu_arg = 'apartment_entrance'
+	menu_off = 0
+	
+	$location_type = 'private'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/stairwell.jpg"></center>'	
+	'You''re standing in front of Volya Sokolov''s apartment.'
+	gs 'stat'
+	
+	act 'Leave': minut += 1 & gt $wl_loc[0], $wl_loc[1]
+	
+	if hour > 7:	
+		act 'Ring the bell':
+			minut += 1
+			menu_off = 1
+			gs 'stat'
+			if wl_status['main'] < 9 and $wl_virgin = 'asked' and (pcs_vag = 0 or anal = 0):
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'	
+				'Volya opens the door and smiles when he sees you. "Hi <<$pcs_nickname>>, come on in."'
+				
+				act 'Go inside': gt 'mod_wlife_volya', 'virginity_0'
+			elseif ((hour = 18 and minut >= 30) or hour = 19) and wl_demand['party'] = 1 and wl_georgiy['timer_week'] = week:
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'	
+				'Volya opens the door and smiles when he sees you. "Hi <<$pcs_nickname>>, come on in."'
+				
+				act 'Go inside': gt 'mod_wlife_demands', 'party_start'
+			else
+				cla & *nl
+				'You ring the bell and wait for a minute, but either Volya isn''t home or doesn''t open the door.'
+							
+				act 'Leave': minut += 1 & gt $wl_loc[0], $wl_loc[1]
+			end
+		end
+	else
+		'<br>It''s too early to visit Volya.'
+	end
+end
+
+if $ARGS[0] = 'virginity_0':
+	*clr & cla
+	minut += 2
+	killvar 'wl_volya_virgin'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'	
+	'His apartment isn''t exactly how you''d picture an apartment of a young guy living alone. The furniture is old and seems second hand, but you don''t see any dirty clothes lying around on the floor, there is no dust on the furniture and even the bathroom and kitchen look surprisingly clean. The small apartment has no living room, just a bedroom with a big bed, a new notebook and a big TV. Those are the only things in his apartment that look more modern and new.'
+	'"Why don''t you sit down," he suggests and sits down on the bed.'
+	gs 'stat'
+	
+	if pcs_vag = 0 and anal > 0:
+		$wl_virgin = 'vaginal'
+	elseif pcs_vag > 0 and anal = 0:
+		$wl_virgin = 'anal'
+	elseif pcs_vag = 0 and anal = 0:
+		$wl_virgin = 'both'
+	end
+	
+	act 'Sit next to him':
+		*clr & cla
+		minut += 2
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'	
+		'"I have a suggestion that you may or may not like. We could use that as an opportunity to prepare you for your job."'
+		'"What do you mean?" you ask, unsure of what he meant.'
+		'"If you want to make your job easier, you should always try to be nice to a client. Make him feel good and show him that you like it, encourage him in whatever he does and fake it if you must," he explains and suggests: "I want you to try that with me."'
+		'You think about it for a moment and decide to...'
+		gs 'stat'
+		
+		gs 'willpower', 'sex', 'resist'
+		if will_cost <= pcs_willpwr:
+			act 'Decline and leave (<<will_cost>> Willpower)':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+				gs 'willpower', 'pay', 'resist'
+				gs 'stat'
+				'You look at him for a moment and finally shake your head. It''s too weird. As if losing your'+iif($wl_virgin = 'anal', ' anal ', ' ')+'virginity to him wasn''t enough, trying "that" is too much. "No, I can''t do it. It was a mistake to come here," you answer and get up.'
+				'He follows you to the door and doesn''t try to stop you. Just when you put your hand on the door handle, he says: "You won''t be able to just get up and leave when you''re with a client. I don''t want you to do it for me, but for yourself. I won''t lie to you, it can be hard out there."'
+				'You think about his words for a moment, maybe he''s right about it. In the end you decide to...'
+				
+				act 'Keep going and leave': 
+					minut += 2
+					npc_rel['A904'] -= 5
+					killvar '$wl_virgin'
+					killvar 'wl_volya_virgin'
+					gt $wl_loc[0], $wl_loc[1]
+				end
+				act 'Change your mind and stay': gt 'mod_wlife_volya', 'virginity_1'
+			end
+		else
+			act 'Decline and leave (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+		
+		act 'Accept and stay':
+			cla & *nl
+			'You look at him for a moment. In a strange way, his suggestion makes sense. It could make it easier if you know how to behave.'
+			'"Ok, I''ll try," you sigh.'
+			
+			act 'Continue': gt 'mod_wlife_volya', 'virginity_1'
+		end	
+	end
+end
+
+if $ARGS[0] = 'virginity_1':
+	*clr & cla
+	minut += 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'It''s an awkward moment and you don''t really know what to say, as Volya stands in front of you while both of you know what is going to happen next. "Are you ready?" he asks and his warm comforting smile puts you a little bit at ease.'
+	'You nod and slowly start to undress. When his eyes wander downwards, to look at your body, you realize that you...' 	
+	gs 'stat'
+		
+	act '... don''t want it to happen':
+		cla & *nl
+		npc_rel['A904'] -= 10
+		'... don''t want it happen. It''s only something you have to do to prepare yourself for your new life. If you could, you wouldn''t be here.'
+		
+		act 'Undress': gt 'mod_wlife_volya_sex', 'virginity_0'
+	end		
+		
+	act '... want it to happen':
+		cla & *nl
+		npc_rel['A904'] += 20
+		'... want it to happen. You wouldn''t have imagined being here a week ago, but you feel comfortable around him.'
+		
+		act 'Undress': gt 'mod_wlife_volya_sex', 'virginity_0'
+	end
+end
+
+if $ARGS[0] = 'introduction_start':
+	*clr & cla
+	minut += 2
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"Yes?" You ask.'
+	'"Hi, <<$pcs_nickname>>." It''s Volya''s voice. "We have to talk about your situation."'
+	'"I know," you sigh. "Let''s get it over with."'
+	'"Georgiy and I had a talk and we came to an understanding that I''ll be your... let''s say, handler."'
+	'You react with ...'
+	gs 'stat'
+
+	act 'Indifference':
+		cla & *nl
+		'"Fine, Volya," you say without an opinion, either way. At the end of the day, it doesn''t matter who is doing it.'
+		'He doesn''t say anything and as the awkward pause continues for several more seconds, you realize that he probably expected a different reaction.'			
+		*nl
+		'"Anyway, we need to discuss the money, your work schedule, the place were you going to work, what you need to have, essentially everything," he tells you.'
+		
+		act 'Continue': gt 'mod_wlife_volya', 'introduction_workplace_1'
+	end
+		
+	act 'Contempt':
+		cla & *nl
+		npc_rel['A904'] -= 5
+		'"Pimp, you mean pimp," you say contemptuously. "Let''s call it for what you are, Volya."'
+		'"Ok, fine. I''ll be your pimp, <<$pcs_nickname>>. A little gratitude would be nice. It wasn''t easy to get this job."'
+		'"Oh sorry, I forgot how hard this whole situation has been on you," you say without even trying to hide your sarcasm.'
+		'"Fine, be that way."'
+		*nl
+		'"Anyway, we need to discuss the money, your work schedule, the place were you going to work, what you need to have, essentially everything," he tells you.'
+		
+		act 'Continue': gt 'mod_wlife_volya', 'introduction_workplace_1'
+	end
+		
+	act 'Gratitude':
+		cla & *nl
+		npc_rel['A904'] += 5
+		'"That couldn''t have been easy, but if it has to be somebody, I''d rather have it be you than one of the other guys."'
+		'"They aren''t all bad <<$pcs_nickname>>, they just do what they have to do. Just like me and just like you."'
+		*nl
+		'"Anyway, we need to discuss the money, your work schedule, the place were you going to work, what you need to have, essentially everything," he tells you.'
+		
+		act 'Continue': gt 'mod_wlife_volya', 'introduction_workplace_1'
+	end
+end	
+
+if $ARGS[0] = 'introduction_workplace_1':
+	*clr & cla
+	minut += 2
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"There is a gas station thirty minutes from here and a few kilometers off the M-10 highway to Moscow...," he starts to explain and you understand what he is saying. They not only want you to be a prostitute, but also a street whore.'
+	*nl
+	'You...'
+	gs 'stat'
+	
+	act 'Keep quiet':
+		cla & *nl
+		'You keep quiet and for a moment you are lost in your own thoughts. All you hear and see are short scenes, repeating over and over in your head. You and an old guy in a public restroom, you and some ugly man, in the backseat of his car, you...' 
+		'"<<$pcs_firstname>>! Are you still there?" Volya asks loudly and pulls you back to reality, back to the conversation.'
+		'"Yes," you say meekly.'
+				
+		act 'Continue': gt 'mod_wlife_volya', 'introduction_workplace_2'
+	end
+	
+	act 'React shocked':
+		cla & *nl
+		'"You... You want me to work... as a... as a street whore???" You ask in utter disbelief.'
+		'"Of course, what did you think?" Volya asks.'
+		'"I... I thought I would work in something like a hotel or a house, but not on the street."'
+		'"Pavlovsk is too small and we have enough girls here, girls that aren''t from Pavlovsk like you," he explains.'
+		'"But... at a gas station? How... Where would I even... you know, do it?"'
+		'"In their car or in the restroom," he answers.'
+		'You don''t know what to say. It''s just too much.'
+		'"<<$pcs_nickname>>?" He asks, but you don''t answer him. For a moment you are lost in your own thoughts. All you hear and see are short scenes, repeating over and over in your head. You and an old guy in a public restroom, you and some ugly man in the backseat of his car, you...'
+		'"<<$pcs_firstname>>! Are you still there?" Volya asks loudly and pulls you back to reality, back to the conversation.'
+		'"I''m here," you say meekly.'
+		'"Do you need a moment?" He asks and the tone of his voice is warm and caring.'
+		'"No, let''s keep going," you answer. Waiting wouldn''t make it any better.'
+		
+		act 'Continue': gt 'mod_wlife_volya', 'introduction_workplace_2'
+	end
+	
+	act 'React angrily':
+		cla & *nl
+		npc_rel['A904'] -= 5
+		'"Are you fucking kidding me? I won''t be a fucking street whore!" You scream. It''s enough. This is the last straw. "I thought you maybe put me in a hotel or a house, but the streets? You can''t do that to me."'
+		'Silence is the only answer you get.'
+		'"Volya?" He keeps quiet. "Volya! Answer me, dammit!"'
+		'Still silence.'
+		'"Volya?" You ask more quietly.'
+		'"I''m still here," he tells you without saying anything else.'
+		'"Aren''t you going to say something?"'
+		'"What shall I say? That it is a lie? That it''s all a bad dream?" He asks you. "You can either deal with it or don''t and you know the consequence of that."'
+		'He is right, you know he is right, but you still hate it. "Fine, tell me more about this lovely gas station."'
+			
+		act 'Continue': gt 'mod_wlife_volya', 'introduction_workplace_2'
+	end
+end
+
+if $ARGS[0] = 'introduction_workplace_2':
+	*clr & cla
+	minut += 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"One employee of the gas station works for us. He is there during the evening shift from 16:00 to 24:00. You won''t have any problems with him or the security cameras during that time," he explains. "He works there every day, except on Sundays."'
+	'"Why is one of you working there? Don''t you have more... I don''t know, shady stuff to do?"'
+	'"Don''t worry about him being there, that doesn''t concern you," he warns you. "But he isn''t one of us, just somebody who works for us, like you. He''ll have to do his normal job when you are there."'
+	gs 'stat'
+		
+	act 'Ask him about your working hours': 
+		*clr & cla
+		minut += 2
+		wl_whore['shifts_minimum'] = 3
+		wl_whore['shifts_week'] = 3
+		wl_whore['share_player'] = 30
+		wl_whore['share_pimp'] = 70
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+		'"I had a talk about that with Georgiy and we both agree that you can''t work full-time. We could let you work somewhere else in the morning, when our guy isn''t at the gas station, but it''s too risky. Somebody will notice that something is up and you don''t want to go to jail, do you?"'
+		if pcs_intel < 40: 
+			'Of course, you realize, you could go to jail. Prostitution is illegal after all.'
+		else 
+			'That''s bullshit. They would all go to jail for pimping out an <<age>> year old girl, but they''ll definitely kill you or your family or both before that is going to happen. Going to the police isn''t an option. At least it isn''t for now.'
+		end
+		'"No, of course not," you reply.'
+		'Volya nods his head. "Exactly. You have to keep up your normal schedule. That''s why you only have to work <<wl_whore[''shifts_minimum'']>> shifts a week, but you could always work more if you want."'
+		'"Why would I ever want to work more?" You ask him.'
+		'"Maybe you need the money? Maybe you want to get on Georgiy''s good side? Or you like to get fucked by random strangers? How should I know?" He shrugs, as he tries to convince you. "I''m just saying if you ever want to work more, you can."'
+		'"And how long is a shift?"'
+		'"Five hours, you can do one after school or on Saturday. Just make sure you work at least <<wl_whore[''shifts_minimum'']>> times a week, or...," he says without uttering the threat. He doesn''t have to, you can easily imagine what they could and would do. "Just send me a text if you want to work. I''ll drive you there at 17:00 and pick you up again at 22:30."'
+		'"When would I have to start?"'
+		'"Next week, so get ready," he says.'
+		gs 'stat'
+
+		act 'Ask about the money':
+			*clr & cla
+			minut += 2
+			wl_medical['status'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+			'"You get <<wl_whore[''share_player'']>>%," Volya says. If you owe the Belys money '+iif(wl_debt['amount'] > 0, 'like for the clothes', 'for whatever reason')+', I''ll keep 20 percentage points of your share until you have worked off your debt."'
+			'"Anything else?" you ask wearily.'
+			'"Yeah, but I probably don''t have to tell you this. If you don''t want to catch something or get pregnant, always use a condom. If you want to be sure, you should also get on the pill." You swallow hard, thinking about his words and their implications as Volya continues, "we have a doctor working for us at the clinic. His name is Mikhailov. He''ll make sure that you stay healthy. He''s in his office from Tuesday till Saturday. Go to him as soon as possible. This isn''t optional, Georgiy doesn''t like it if his girls are sick," he tells you as you make a mental note to go to the clinic.'
+			
+			act 'Is that it?': 
+				*clr & cla
+				minut += 2
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+				'"Well...," he says with a long pause. "Get something to clean yourself, you don''t want an accident if you use the other hole."'
+				if anal = 0:
+					'"Other hole? Accident?" You ask.'
+					'There is another long pause before he speaks again. "Do I really have to spell it out for you? A customer doesn''t want to see shit on his dick when he fucks your ass, ok? To be on the save side, you should clean yourself with an enema."'
+					'"Oh...," you say.'
+				else
+					'"So, I also have to do anal?"'
+				end
+				'"Most guys pay very well for it, since their wifes won''t do it. It''s also helpful during your period, to offer up your other hole."'
+				'"I even have to work during my period?" You gasp.'
+				'"Yes, so warn your clients if it''s that time of the month."'
+				
+				act 'Continue': gt 'mod_wlife_volya', 'introduction_question'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'introduction_question':
+	*clr & cla
+	minut += 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"Do you have anything you want to ask or talk about?"'
+	gs 'stat'
+					
+	act 'You don''t want to talk about anything else': gt 'mod_wlife_volya', 'introduction_end'
+	if wl_asked_picture = 0: act 'Ask him about the picture you have received': gt 'mod_wlife_volya', 'introduction_picture'
+	if wl_volya_virgin = 0 and (pcs_vag = 0 or anal = 0):
+		if pcs_vag = 0 and anal > 0:
+			act 'Tell him that you are a virgin': gt 'mod_wlife_volya', 'introduction_virgin'
+		elseif pcs_vag > 0 and anal = 0:
+			act 'Tell him that you never had anal sex': gt 'mod_wlife_volya', 'introduction_virgin'
+		elseif pcs_vag = 0 and anal = 0:
+			act 'Tell him that you never had sex': gt 'mod_wlife_volya', 'introduction_virgin'
+		end
+	end				
+end
+
+if $ARGS[0] = 'introduction_picture':
+	*clr & cla
+	minut += 1
+	wl_asked_picture = 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"There is something else. Somebody send me a picture, a screenshot from the video you made," you tell him.'
+	'"I had to make it," he interjects quickly.'
+	'"Did you give them the video?" You ask him. There is a long pause before he answers: "I''m sorry <<$pcs_nickname>>, but I had to. You know that, right?"'
+	'You ignore his question and instead, ask why they want a video. He sighs: "I don''t really know. You could ask Georgiy or one of the other guys about it, but I wouldn''t if I were you. I deleted it from my phone, I promise."'
+	gs 'stat'
+			
+	act 'Continue': 
+		if wl_volya_virgin > 0 or (pcs_vag > 0 and anal > 0): 
+			gt 'mod_wlife_volya', 'introduction_end'
+		elseif wl_volya_virgin = 0 and (pcs_vag = 0 or anal = 0):
+			gt 'mod_wlife_volya', 'introduction_question'
+		end		
+	end
+end
+
+if $ARGS[0] = 'introduction_virgin':
+	*clr & cla
+	minut += 2
+	wl_volya['apartment'] = 1
+	$wl_virgin = 'asked'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"There is something I want to talk to you about and...," you pause for a moment to collect your thoughts.'
+	'"You can talk to me about your situation. I''m here for you," he assures you.'
+	if pcs_vag = 0:
+		'"I''m still a virgin'+iif(anal = 0, ' and I''ve also never had anal sex,"', ',"')+' you blurt out.'
+	elseif pcs_vag > 0 :
+		'"I''ve never had anal sex," you blurt out.'
+	end
+	'"Oh, I see," he says. "Are you afraid or nervous?"'
+	'"Both I guess and I don''t just want to lose it, especially to a total stranger."'
+	'"Sure, I get that. Maybe find a close friend, a boyfriend, maybe? Or...," he pauses.'
+	'"Or?"'
+	'"Please, don''t get me wrong. If you don''t have anybody and you really don''t want to lose it with a client. I could... you know, do it."'
+	'You start to ponder on his proposition and after some time, he breaks the silence. "Sorry, stupid idea. Please forget I said anything."'
+	'He has always been nice to you and didn''t touch you in the warehouse. In the end you...'
+	gs 'stat'
+	
+	gs 'willpower', 'sex', 'resist'
+	if will_cost <= pcs_willpwr:
+		act 'Decline his offer (<<will_cost>> Willpower)':
+			cla & *nl
+			gs 'willpower', 'sex', 'resist'
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			npc_rel['A904'] -= 5
+			wl_volya_virgin = 1
+			'"No, I can''t do it with you. You and your friends are the reason I have to do it in the first place," you tell him,'
+			'"They aren''t all my friends, but that''s beside the point. It was a stupid suggestion anyway," he replies, scratching the back of his head.'
+			
+			act 'Continue': 
+				if wl_asked_picture = 1:
+					gt 'mod_wlife_volya', 'introduction_end'
+				else
+					gt 'mod_wlife_volya', 'introduction_question'
+				end
+			end
+		end
+	else
+		act 'Decline his offer (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	gs 'willpower', 'sex', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Tell him you''ll think about it (<<will_cost>> Willpower)':
+			cla & *nl
+			gs 'willpower', 'sex', 'resist', 'easy'
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			npc_rel['A904'] += 5
+			wl_volya_virgin = 2
+			'"I don''t know, Volya. I''ll think about it," you tell him.'
+			'"Yeah, ok. It was just a suggestion," he answers.'
+			
+			act 'Continue': 
+				if wl_asked_picture = 1:
+					gt 'mod_wlife_volya', 'introduction_end'
+				else
+					gt 'mod_wlife_volya', 'introduction_question'
+				end
+			end
+		end
+	else
+		act 'Tell him you''ll think about it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Accept his offer':
+		cla & *nl
+		npc_rel['A904'] += 10
+		wl_volya_virgin = 3
+		'"Ok," you tell him.'
+		'"Oh, wow. I didn''t thought you''d... Ok, great. If you are really sure about it, I live nearby in one of the neighbouring apartment complexes," he says and you write down the address on a piece of paper.'		
+		
+		act 'Continue': 
+			if wl_asked_picture = 1:
+				gt 'mod_wlife_volya', 'introduction_end'
+			else
+				gt 'mod_wlife_volya', 'introduction_question'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'introduction_end':
+	*clr & cla
+	minut += 1
+	wl_status['main'] = 4
+	killvar 'wl_asked_picture'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'"One last thing. Georgiy wants you to report to him every Sunday, to keep an eye on your progress. So make sure that you visit him at the warehouse. You''ll find him there typically after 20:00."'
+	if wl_volya_virgin = 1 or wl_volya_virgin = 2: 'He tells you to visit him at his apartment in the Five Eight Estate if you change your mind about losing your'+iif(pcs_vag > 0, 'anal ', ' ')+'virginity.'	
+	gs 'stat'
+	
+	act 'End the call': 
+		*clr & cla
+		$wl_loc[0] = 'pav_complex'
+		$wl_loc[1] = 'start'
+		$wl_loc[2] = 'Pavlovsk'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/objects/info.gif"></center>'	
+		'Developer Note: At the beginning of the next week the phone/menu of the mod becomes accessible. You will then find an icon for your phone and several other things at the bottom of the stat window.'
+		'<center><table cellspacing="3"><tr><td><img height = 100 src="mod/wlife/images/objects/phone_allowed'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></td><td><img height = 100 src="mod/wlife/images/objects/phone_forbidden'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></td></tr></table></center>'
+		'The symbol on the left indicates that you can use your phone by clicking on it. The symbol on the right is shown, when you can''t access the phone, because an event is happening and using the phone could cause errors.'
+		*nl
+		'<center><img height = 100 src="mod/wlife/images/objects/whore'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></center>'
+		'When you see this image next to the phone icon it means you wear the correct outfit (Clothing + Shoes) to work as a whore.'
+		*nl
+		'<center><img height = 100 src="mod/wlife/images/objects/doc'+iif(night_mode ! 3 and (($location_type = 'public_outdoors' and daystage = 5) or night_mode = 1 or night_mode = 2), '_night', '')+'.png"></center>'
+		'The doctor symbol indicates that you have to visit Doctor Mikhailov before your next meeting with Georgiy Bely.'
+		*nl
+		'<center><img height = 100 src="mod/wlife/images/objects/debt.png"></center>'
+		'The ''debt'' icon will be visible if you owe the Belys money.'
+		
+		act 'Continue': gt $loc, $metka
+	end
+end
+
+if $ARGS[0] = 'shift_start':
+	*clr & cla
+	menu_off = 1
+	wl_whore['shifts_message'] = 0
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	
+	if wl_volya['status'] < 4:
+		if npc_rel['A904'] <= 0:
+			npc_rel['A904'] = 0
+			$wl_volya['relationship'] = 'You hate him.'
+		elseif npc_rel['A904'] > 0 and npc_rel['A904'] <= 10:
+			$wl_volya['relationship'] = 'You really don''t like him.'
+		elseif npc_rel['A904'] > 10 and npc_rel['A904'] <= 30:
+			$wl_volya['relationship'] = 'You don''t like him.'
+		elseif npc_rel['A904'] > 30 and npc_rel['A904'] <= 60:
+			$wl_volya['relationship'] = 'You feel indifferent towards him.'
+		elseif npc_rel['A904'] > 60 and npc_rel['A904'] <= 80:
+			$wl_volya['relationship'] = 'You like him.'
+		elseif npc_rel['A904'] > 80 and npc_rel['A904'] <= 90:
+			$wl_volya['relationship'] = 'You really like him a lot.'
+		elseif npc_rel['A904'] > 90:
+			$wl_volya['relationship'] = 'Your feelings for him have grown beyond friendship.'
+		elseif npc_rel['A904'] > 100:
+			npc_rel['A904'] = 100
+			$wl_volya['relationship'] = 'Your feelings for him have grown beyond friendship.'
+		end
+	else
+		if wl_volya['relationship'] = 0:
+			$wl_volya['relationship'] = 'You really don''t like him.'
+		elseif wl_volya['relationship'] = 1:
+			$wl_volya['relationship'] = 'You feel indifferent towards him.'
+		else
+			$wl_volya['relationship'] = 'You really like him a lot.'
+		end
+	end
+	
+	'Volya Sokolov is waiting for you in his car. <<$wl_volya[''relationship'']>>'
+	
+	gs 'stat'
+
+	if klismaday = daystart or cheatKlisma = 1: 
+		wl_whore['enema'] = 1
+	else
+		wl_whore['enema'] = 0
+	end
+	
+	if wl_whore['shifts_done'] = 0 and wl_whore['shifts_total'] = 0:
+		act 'Get in the car': gt 'mod_wlife_volya', 'shift_start_first' 
+	elseif wl_status['main'] = 8:
+		act 'Get in the car': gt 'mod_wlife_tattoo_piercing', 'branding_0'
+	elseif (wl_timer['startday'] + 35) < daystart and wl_status['main'] > 8 and wl_timer['branding'] < (daystart - 2) and wl_okoro['status'] = 0:
+		act 'Get in the car': gt 'mod_wlife_demands', 'bbc_intro_0'
+	else
+		act 'Get in the car': gt 'mod_wlife_volya', 'shift_start_car'
+	end
+end
+
+if $ARGS[0] = 'shift_start_first':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+		
+	'"Hi, <<$pcs_nickname>>," he greets you with a reassuring smile. "Are you ready for your first day?"'
+	'You look at him and answer ...'
+			
+	if preziktype = 0: 
+		prezik += 20
+	elseif preziktype = 1 or preziktype = 2: 
+		prezikcount += 20
+	end
+	
+	salfetka += 20
+	lubri += 20
+	
+	wl_georgiy['timer_day'] = daystart - week
+			
+	act 'Nervously':
+		*clr & cla
+		npc_rel['A904'] += 10
+		minut += 30
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'			
+		'"No, I''m not," you tell him as he turns the car onto a street that will take you out of Pavlovsk.'
+		'"You have to tackle the problem step by step. If you get through today, you will get through the next day and the next and the next until I can set my plan in motion to get you out of this mess."'
+		'"You have a plan?" You ask him hopefully.'
+		'He smiles. "Of course I have a plan, I did promise to help you. Didn''t I?"'
+		'"That''s awesome, Volya. Can you tell me what your plan is? How long do I have to do this?" You ask him but he shakes his head.'
+		'"It isn''t ready yet and I didn''t want to get your hopes up before. Please, trust me and keep it together until everything is ready. Can you do that for me?"'
+		'You nod and for the rest of the drive you talk about other things.'
+		*nl
+		'Volya and you drive for about half an hour.'
+		*nl
+		'"I''ll pick you up at 22:30. If I have to pick you up earlier, send me a message, but it could me some time to get here," he reminds you when you reach your destination. "And take this," he adds and hands you lube, twenty condoms and some tissues to get you started. "Good luck, <<$pcs_nickname>>. Oh... One more thing, don''t use your real name, OK?"'
+		'You nod. "OK... and thanks," you say your voice sounding a little bit more confident.'
+		'"You can do it, <<$pcs_nickname>>. I believe in you."'
+		gs 'stat'
+				
+		act 'Leave the car': gt 'mod_wlife_highway', 'outside'
+	end
+			
+	act 'Confidently': 
+		*clr & cla
+		npc_rel['A904'] += 5
+		minut += 30
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+		'"I am," you say more to yourself than to him.'
+		'"You are?" He asks sceptically.'
+		'"Don''t I have to be? I thought about it and there is no other way for me to get through this," you explain. "I can''t let it get to me."'
+		'He turns the car onto a street that will take you out of Pavlovsk. "That''s good to hear, because if you get through today, you will get through the next day and the next and the next until I can set my plan in motion to get you out of this mess."' 
+		'"You have a plan?" You ask him hopefully.'
+		'He smiles. "Of course I have a plan, I did promise to help you. Didn''t I?"'
+		'"That''s awesome, Volya. Can you tell me what your plan is? How long do I have to do this?" You ask him but he shakes his head.'
+		'"It isn''t ready yet and I didn''t want to get your hopes up before. Please, trust me and keep it together until everything is ready. Can you do that for me?"'
+		'You nod and for the rest of the drive you talk about other stuff '
+		*nl
+		'Volya and you drive for about half an hour.'
+		*nl
+		'"I''ll pick you up at 22:30. If I have to pick you up earlier, send me a message, but it could me some time to get here," he reminds you when you reach your destination. "And take this," he adds and hands you lube, twenty condoms and some tissues to get you started. "Good luck, <<$pcs_nickname>>. Oh... One more thing, don''t use your real name, OK?" he says and you give him a quick nod in response.'
+		gs 'stat'
+				
+		act 'Leave the car': gt 'mod_wlife_highway', 'outside'
+	end
+			
+	act 'Angrily': 
+		*clr & cla
+		minut += 30
+		npc_rel['A904'] -= 5
+		'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+		'"Sure, I''m always ready to get fucked by strangers," you say sarcastically. "It''s a dream come true, you know. Since I was a little girl I always wanted to become a whore."'
+		'"<<$pcs_nickname>>..."'
+		'"Leave me alone, Volya. Just drive," you say and pull out your phone demonstratively to avoid talking to him.'
+		'He sighs and keeps quiet for the rest of the drive.'
+		*nl
+		'Volya and you drive for about half an hour.'
+		*nl
+		'"I''ll pick you up at 22:30. If I have to pick you up earlier, send me a message, but it could me some time to get here," he reminds you when you reach your destination. "And take this," he adds and hands you lube, twenty condoms and some tissues to get you started. "Good luck, <<$pcs_nickname>>. Oh... One more thing, don''t use your real name, OK?"'
+		'"Fine, will Slutty McSlutface work?" you say before smashing the car door shut and walking away from the car without looking back.'
+		gs 'stat'
+				
+		act 'Continue': gt 'mod_wlife_highway', 'outside'
+	end
+end
+
+if $ARGS[0] = 'shift_start_car':
+	*clr & cla
+	minut += 1
+	$wl_volya['car_exit'] = 'highway'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	
+	if pcs_makeup > 1:
+		'"Hi, <<$pcs_nickname>>," he greets you with a warm smile.'
+		gs 'mod_wlife_volya', 'shift_start_actions'
+	else
+		'He frowns, when you enter the car. "You really want to go to work like this?"'
+		'"Like what?" You ask and he points at your face.'
+		'"You should really wear some makeup."'
+		if kosmetica > 2:
+			'"Fine," you sigh and get back out of the car again.'
+			'"And use enough like the other girls," he says before the car door closes behind you.'
+			act 'Do your makeup':
+				cla & *nl
+				minut += 15
+				makupskl_exp += rand(1,3)
+				kosmetica -= 3
+				vidageday -= 1
+				pcs_makeup = 4
+				gs 'stat'
+				'You go back inside and apply whorish makeup, before you return back to the car.'
+				
+				gs 'mod_wlife_volya', 'shift_start_actions'			
+			end
+		else
+			minut += 15
+			kosmetica += 50
+			wl_debt['amount'] += 1300
+			gs 'stat'
+			'"I would, but I don''t have any."'
+			'"Then we''ll have to take a detour and buy you some." He sighs and starts the car.'
+			'After parking the car outside the super market, he goes inside and buys you some makeup. You wait inside the car after '+iif(wl_volya['buy_makeup'] = 0, 'telling', 'reminding')+' him that your sister works inside the shop.'
+			if wl_volya['buy_makeup'] = 0: wl_volya['buy_makeup'] = 1
+			
+			gs 'mod_wlife_volya', 'shift_start_actions'
+		end
+	end
+end
+
+if $ARGS[0] = 'shift_start_actions':
+	act 'Ignore him': wl_volya['ignore'] = 0 & gt 'mod_wlife_volya', 'shift_ignore'
+	act 'Talk to him': wl_volya['ignore'] = 1 & gt 'mod_wlife_volya', 'shift_talk'
+	if wl_prison['shift'] = 0 and wl_prison['status'] = 1: act 'Ask him to drive you to the prison': gt 'mod_wlife_prison', 'start'
+end
+
+if $ARGS[0] = 'shift_ignore':
+	*clr & cla
+		
+	gs 'mod_wlife_volya', 'shift_event_checks'
+	
+	npc_rel['A904'] -= 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+	'You pull out your phone to avoid talking to him.'
+	*nl
+	'He tried several times to start a conversation, but at some point he gave up on it when you didn''t engage in it.'
+		
+	gs 'mod_wlife_volya', 'shift_leave_car'
+end
+
+if $ARGS[0] = 'shift_event_checks':
+	if (wl_timer['startday'] + 21) < daystart and wl_volya['status'] = 0:
+		gt 'mod_wlife_volya', 'volya_asks_whore'
+	elseif rand(0,2) = 2 and wl_volya['status'] = 2 and wl_volya['timer_bulge'] < (daystart - 1):
+		gt 'mod_wlife_volya', 'shift_bulge'
+	elseif wl_volya['status'] > 3 and wl_volya['timer_bj'] < (daystart - rand(4,7)):
+		gt 'mod_wlife_volya', 'volya_asks_bj'
+	elseif wl_volya['status'] > 3 and wl_volya['timer_sex'] < (daystart - rand(4,7)) and wl_volya['timer_tease'] < (daystart - rand(1,2)) and (wl_volya['relationship'] * 35 + pcs_horny) > rand(40,80):
+		sunWeather = 1 & gt 'mod_wlife_volya', 'shift_tease'
+	elseif wl_volya['counter_bj'] > 1 and wl_volya['timer_finger'] < (daystart - rand(4,7)):
+		sunWeather = 1 & gt 'mod_wlife_volya', 'shift_fingering'
+	end
+end
+
+if $ARGS[0] = 'shift_talk':
+	*clr & cla	
+	
+	gs 'mod_wlife_volya', 'shift_event_checks'
+
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'You want to talk to him about ...'
+				
+	act 'Nothing in particular': 
+		cla & *nl
+		npc_rel['A904'] += 1
+		'You avoid any serious topic and just make small talk with him. Several times he tries to steer the conversation to a more serious topic, but you avoid it and keep the meaningless conversation going until you arrive at the gas station.'
+		gs 'mod_wlife_volya', 'shift_leave_car'
+	end
+		
+	if wl_volya['talk_himself'] < 4 and wl_volya['timer_talk'] > (daystart - 2):
+		'<br>It''s probably not a good idea to talk to him again about his situation so soon after your last conversation about it.'
+	elseif wl_volya['talk_himself'] = 0:
+		act 'Him':
+			*clr & cla
+			npc_rel['A904'] -= 5
+			wl_volya['talk_himself'] = 1
+			wl_volya['timer_talk'] = daystart
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"How did you end up working for the Belys?" You ask him while he is driving you to work. "I can still remember you from school and you never were one of the troublemakers."'
+			'He shrugs. "It''s not some big mystery. I needed money, a lot of it and at short notice. The Belys offered me a chance to earn that, so I took it," he explains.'
+			'"Why...," you start to ask, but he immediately interrupts you. "Can we please not talk about it? We have other things to worry about than that." His tone is harsh. You won''t be able to get anything out of him. That question really triggered him and it''s better to let it go for now.'
+						
+			act 'Pass the time':
+				*clr & cla			
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+				'You decide to let it go and pull out your phone instead. It helps you to take your mind of things until you arrive at your destination.'
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+		end	
+	elseif wl_volya['talk_himself'] = 1:
+		act 'His money problems':
+			*clr & cla
+			wl_volya['talk_himself'] = 2
+			wl_volya['timer_talk'] = daystart
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"You told me that you work for the Belys because you have money troubles, but in school you always looked as if your family was rather well-off," you say to him and he immediately tenses up. '+iif(npc_rel['A904'] > 40, '"Sorry, ', '"')+'I only wanted to know if we are both in the same boat or if you are doing this by choice," you explain, but he frowns and glares at you. "Did you really just ask me if I pimp out'+iif(age < 18, ' underage ', ' ')+'girls by choice?" He asks sounding hurt.'
+			'You put on a apologetic smile and shake your head'+iif(npc_rel['A904'] < 30, ' even if you believe exactly that. ', ' ')+'"No, of course not," you '+iif(npc_rel['A904'] < 30, 'lie.', 'say.')
+			'"My mom died a few month before I could finish school and my asshole of a father couldn''t deal with it," he suddenly blurts out and after the flood gates have been opened he doesn''t seem to be able to stop. "He was weak and started drinking excessively and after a few months he lost his job and I had to quit school to work several shitty jobs myself so we had something to eat."'
+			'He takes a heavy breath before he continues. "Every time he was sober he told me he would fix everything, get a job, I would go back to school, but he always broke his promises. Until he came home one day and told me to quit my jobs and enroll back in school. He had found a good paying job and everything would be fine." He snorts and shakes his head. "That retard borrowed money from the Belys and when they came knocking a month later my father killed himself and left me with the debt."'
+			'"Oh..., I''m sorry," you say not really sure what to say.'
+			'"Don''t <<$pcs_nickname>>. I don''t want your pity. Please, just forget I told you that. Let''s keep our focus on you and get you out of this situation before you are in too deep like me."'
+			
+			if npc_rel['A904'] > 60:
+				npc_rel['A904'] += 20
+			elseif npc_rel['A904'] > 30:
+				npc_rel['A904'] += 10
+			end
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	elseif wl_volya['talk_himself'] = 2:
+		act 'About his situation':
+			*clr & cla
+			wl_volya['talk_himself'] = 3
+			wl_volya['timer_talk'] = daystart
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"You told me that you owed money to the Belys," you say carefully remembering how upset he got when you asked about it last time. He immediately tries to stop you from asking more questions. "<<$pcs_nickname>> we have been down this road before. I shouldn''t have said something in the first place. You don''t have to worry about me."'
+			'You roll your eyes, when he doesn''t look at you and keeps his attention on the road.'+iif(npc_rel['A904'] < 40, ' As if you could be worried about him. ', ' Why doesn''t he understand that you care about him? ')+'"But I do Volya, I care about you." You'+iif(npc_rel['A904'] < 40, ' lie ', ' say ')+'and softly put a hand on his shoulder. "If you don''t want to talk about it, we don''t have to. Just know that you can talk to me about it." You assure him'+iif(npc_rel['A904'] < 40, ' while you actually couldn''t care less about him or his problems.', '.')
+		
+			if npc_rel['A904'] > 60:
+				npc_rel['A904'] += 10
+			elseif npc_rel['A904'] > 30:
+				npc_rel['A904'] += 5
+			end
+		
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	elseif wl_volya['talk_himself'] = 3 and wl_shura['status'] > 2:
+		act 'About his situation':
+			*clr & cla
+			wl_volya['talk_himself'] = 4
+			wl_volya['timer_talk'] = daystart
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'When he stops at a red light, he turns to you and gives you an inquisitive look. "Why do you care?"'
+			iif(npc_rel['A904'] < 40, 'It''s probably best to tell the truth for once. He won''t believe anything else since you aren''t especially best of friends. ', '')+'"How can I trust you to help me, when you''re indebted to the Belys? Sorry, that I have to make your problems about me, but..."'
+			'"I get it," he interjects. "But I have everything under control. So stop worrying about it."'
+			'The more you talk about it the more it becomes clear that he isn''t going to open up about it. You could talk to somebody who knows him better than you, but the only persons that come to mind are Shura and Georgiy, but talking to either one of them seems risky, especially Georgiy.'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+!!	elseif wl_volya['talk_himself'] = 5:
+!!ToDo: Continue his story	
+	end
+	
+	if wl_status['main'] > 6 and wl_volya['status'] > 5 and wl_volya['talk_attic'] = 0 and wl_volya['timer_attic'] > 5:
+		act 'Talk about what happened in the attic':
+			*clr & cla
+			wl_volya['talk_attic'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'You have waited for Volya to say something, anything about the day they tied you up in the attic, but he never mentioned it. You expected at some point he will apologize or at least explain why he just went along with it. Now you can''t take it anymore. "Was it fun for you raping me in the attic?" you ask suddenly and without warning. Volya looks at you as if you have grown a second head. Swallowing hard and shaking his head he replies. "Woah <<$pcs_nickname>> hold on. I didn''t rape you!"'
+			'"Of course you did, you all did," you accuse him angrily.'
+			'"<<$pcs_nickname>>," he says tentatively stretching his hand out to you, but you angrily slap it away. Right now you don''t want him to touch you however you feel about him. "Come on, I didn''t rape you."'
+			'"No? How would you call what happened?" you hiss.'
+			'"We punished you for talking to the cops...," he tries to explain, but you don''t want to hear it and stop him right in his tracks. "I didn''t say anything to the cops. Georgiy believed me, but you all did what Vadim wanted."'
+			'Volya sighs. "Georgiy is Georgiy and Vadim is Vadim."'
+			'"But Georgiy was right and so you didn''t punish me...," you say and let him make his own conclusions. "You could have not fucked me. There was nobody watching us, you could come in, waited for ten minutes and leave again."'
+			'He shakes his head. "No, the risk was to great. What if somebody had entered? Look <<$pcs_nickname>> I like you and maybe you like me too. If Vadim orders me to do something, I do it, no questions asked. You can accept that or not."'
+			
+			act 'Don''t accept it':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+				gs 'stat'
+				iif (wl_volya['relationship'] = 0, 'You have been right all along.', 'How could you have been so blind?')+' He''s not a good guy. His explanation is ridiculous. He prefers to rape a girl over waiting a few minutes on the off chance that somebody entered the room? A simple explanation that he either hadn''t started yet or had already finished would have been enough to dispel any possible doubts about his actions.'
+				'"<<$pcs_nickname>>?" Volya asks, when you don''t answer him.'
+				'"I''m sorry I shouldn''t have said anything," you lie looking away from him.'
+				'"Are you sure. If you...," he starts to ask, but you cut him off. "I''m sure. Really," you lie and turn your head to look directly into his eyes. "It''s OK. I didn''t really think about your side of the story. I know that you couldn''t have done anything differently."'
+				'"Still, I''m sorry about what happened." His apology seems sincere, but you don''t believe it.'+iif(wl_volya['relationship'] = 2, ' Not anymore.', '') 
+
+				wl_volya['relationship'] = 0
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+			
+			gs 'willpower', 'misc', 'self', iif(wl_volya['relationship'] = 2, 'easy', 'hard')
+			if will_cost <= pcs_willpwr:
+				act 'Accept it and forgive him (<<will_cost>> Willpower)':
+					*clr & cla
+					'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+					gs 'stat'
+					'"Sorry, I didn''t mean to accuse you. I know you had no other choice," you say honestly. "Sometimes it''s just too much to handle."'
+					'"Don''t worry about it. I don''t take it personally. Sometimes you need to blow off some steam and let out your feelings. I have no problem with being your punching bag from time to time."'
+					'"Thanks Volya," you say '+iif(wl_volya['relationship'] = 2, 'more than ever convinced that he''s a good guy you can trust.', 'and something inside you shifts. Maybe you were wrong about him all this time. Maybe he''s one a good guy after all.')
+					
+					wl_volya['relationship'] = 2
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end
+			else
+				act 'Accept it and forgive him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	elseif wl_status['main'] > 6 and wl_volya['status'] > 5 and wl_volya['talk_atttic'] = 0 and wl_volya['timer_attic'] <= 5:
+		wl_volya['timer_attic'] += 1
+	end
+	
+	if wl_volya['talk_zoya'] = 0:
+		act 'Talk about Zoya Stepanova':
+			*clr & cla
+			wl_volya['talk_zoya'] = 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"Can I ask you something...," you say unsure if it''s a question you can ask him, but it''s something you need to know. Your life could depend on it.'
+			'"Sure, anything," he reassures you, when he notices your hesitation.'
+			'"The girl ... the girl I replaced, Zoya something. Why did she end up dead?"'
+			'Volya sighs. "This business is rough <<$pcs_nickname>>. Some girls don''t adapt, they can''t get over what''s happening to them."'
+			'"But what did she do to deserve this?" you ask trying to dig deeper.'
+			'"The short and simple answer is she didn''t obey,..."'
+			'"And the long and complicated answer?"'
+			'"The problem wasn''t that she didn''t obey, it was that she couldn''t. She wasn''t cut out for it and in the end the tried to go to the cops and that sealed her fate."'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	elseif wl_volya['talk_zoya'] = 1:
+		act 'Continue your conversation about Zoya':
+			*clr & cla
+			wl_volya['talk_zoya'] = 2
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"You told me last time that Zoya wasn''t cut out for the job. How do you know that? Did you work with her?"'
+			'"If you''re asking me, if I was her pimp than the answer is no. She didn''t work at the gas station like you. She had a much more comfortable job in a ho...," he stops himself as he realizes he''s telling you too much. "Let''s just say it was a much nicer location than yours. She couldn''t even deal with that. It seems that you''re more iron-willed than her."'
+			'For a second you feel good about yourself. Yes, you can make it. You won''t end up like her. But then doubts emerge. Is it even true? Aren''t you weaker than Zoya. She stood up for herself, she didn''t let the Belys push her around. But in the end what did it get her? Only death. What is dignity or self-worth even worth, when you''re dead?'
+			
+			act 'Nothing':
+				cla & *nl
+				wl_stats['acceptance'] += 2
+				'Nothing. Dead is dead. You would sacrifice anything to prevent that. Even your dignity.'
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+			
+			act 'Everything':
+				cla & *nl
+				wl_stats['acceptance'] -= 2
+				'Everything. What is there to live for, when you can''t respect who you are. You won''t lose your dignity... at least you hope you won''t.'
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end			
+		end
+	elseif wl_volya['talk_zoya'] = 2:
+		act 'Ask why the Belys choose you':
+			*clr & cla
+			wl_volya['talk_zoya'] = 3
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"Vadim wanted me to ask him a question on the first day we met. Why they chose me? I didn''t and I still wonder why. Isn''t it way to risky to just pick up some random girl of the street? There must be enough women out there who do stuff like this willingly? Why did I end up here in the car with you?"'
+			'"Because all girls are whores...," Volya let that sentence stand for a few seconds before adding, "at least that''s what Vadim believes. Vadim told me once he helps girls like you to discover who they really are. It''s a really twisted world view and I think he get''s off of it. Knowing that he has you fucking random guys on the street. Turning some sweet school girl into a whore."'
+			'"Okay," you say stretching every syllable of the word. "That is seriously fucked up. You know that right?"'
+			'"Of course, that''s why I''m trying to help you!"'
+			'"What about Georgiy?" you ask.'
+			'Volya tilts his head to the side pondering the question for a bit. "He''s the more rational of the two. In his mind girls earn money, younger girls even more. He doesn''t give a shit as long as Vadim is happy and the girls obey him."'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	end
+		
+	if wl_shura['status'] = 1:
+		act 'Ask about the jaded guy you met outside the warehouse':
+			*clr & cla
+			wl_shura['status'] = 2
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'"Do you know him?" You ask after telling Volya about your encounter. "That''s Shura, I told you about him," he replies. "But I guess you had other stuff on your mind that day."'
+			'"Is he always so...," you say searching for the right word of how to describe him. "Emotionally detached? Jaded?" He suggests.'
+			'"Yeah, what''s up with that?" You ask Volya.'
+			'"I don''t know him that well. I work for Vadim, he for Georgiy and you probably realized that he isn''t the chatty type. If I were you, I would stay away from him."'
+			'"Why?" You ask. "Trust me on this," he says without giving you another reason. "He isn''t a good guy."'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	end
+	
+	if wl_iosif['status'] > 0 and wl_volya['talk_iosif'] = 0:
+		act 'Ask about '+iif(wl_iosif['status'] > 1, 'Iosif', 'the brutal guy inside the warehouse')+'':
+			*clr & cla
+			wl_volya['talk_iosif'] = 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+			'As he pulls away from the curb you open your mouth to tell him about your encounter in the warehouse, but a sudden realization stops you. Shouldn''t he have warned you about going there? He was suppose to tell you all the rules you have to follow.'
+
+			act 'Let it go and tell him what happened':
+				cla & *nl
+				npc_rel['A904'] += 5
+				'"I went to the warehouse," you tell him and quickly continue to explain to him what happened inside it.'
+				'"Shit," he murmurs. '+iif(wl_iosif['status'] > 1, '"', '"That was probably Iosif, one of Georgiy''s lieutenants. ')+'He is...," he searches for the right words. "You''re lucky that he didn''t hurt you even more. He thrives on violence. It''s best you stay away for him and the warehouse," he explains and adds. "And I''m sorry. I should have told you, but we had to talk about so much that I forgot to tell you about the warehouse and I wouldn''t have expected you to go there except to check in with Georgiy. But more importantly what made you do that?"'
+				'"I...," you start, but stop for a moment. What made you do it? You roll the question around in your head before answering. "I guess I wanted to know more about the Belys, my situation, everything."'
+				'He sighs. "That''s understandable, but next time ask me before you get yourself in danger."'
+				if wl_iosif['status'] < 2: wl_iosif['status'] = 2
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+			
+			act 'Be confrontational':
+				cla & *nl
+				npc_rel['A904'] -= 5
+				'"Why didn''t you tell me that I''m not suppose to be inside the warehouse," you say accusatory.'
+				'He throws you a quick but shocked look. "Did you go in there?" You nod. "Why? What made you do that?"'
+				'"I...," you start, but stop for a moment. What made you do it? You roll the question around in your head before answering. "I guess I wanted to know more about the Belys, my situation, everything." You shake your head when you notice that he deflected the question. "But that isn''t the point. You should have warned me. It''s your job to teach me the rules and not for me to figure it out," you tell him and quickly continue with telling him what happened inside the warehouse.'
+				'"Shit," he murmurs. '+iif(wl_iosif['status'] > 1, '"', '"That was probably Iosif, one of Georgiy''s lieutenants. ')+'He is...," he searches for the right words. "You''re lucky that he didn''t hurt you even more. He thrives on violence. It''s best you stay away for him and the warehouse," he explains and adds. "And I''m sorry. I should have told you, but we had to talk about so much that I forgot to tell you about the warehouse and I wouldn''t have expected you to go there except to check in with Georgiy."'
+				if wl_iosif['status'] < 2: wl_iosif['status'] = 2
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+		end
+	elseif wl_volya['talk_iosif'] = 2:
+!!ToDo	*clr & cla
+!!		wl_volya['talk_iosif'] = 3
+!!		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+
+!!		gs 'mod_wlife_volya', 'shift_leave_car'
+	end
+	
+	if wl_nikita['status'] > 0 and wl_volya['talk_nikita'] = 0:
+		act 'Ask about the boy that ''thanked'' you in the attic':
+			*clr & cla
+			wl_volya['talk_nikita'] = 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'"Do you remember, when Vadim tied me up in the warehouse and you all had your way with me?"'
+			'He swallows audibly. "Uhm... yeah, sure," he says a bit unsure where this is going.'
+			'"There was one kid, I don''t know his name," you say and explain in a few short sentences how he thanked you in the attic and what happened, when you met him again.'
+			'"That''s Nikita, he''s not really part of the gang. At least not yet," he explains.'
+			'"Then why is he hanging around you guys? And why did Vadim send him up to the attic, when he isn''t part of the gang?"'
+			'Volya shrugs. "To answer your second question first. I have no clue, I was wondering about that myself. Maybe ask Vadim about that and not me."'
+			'"Yeah, right," you snort.'
+			'Volya grins. "You''re probably right, don''t ask Vadim. You could ask him, he lives somewhere in the apartment complex where I and your parents live."'
+			'"Hm...," you replay as you think about it. Have you ever seen him there? It could be, there are living so many people, you can''t really be certain about it. "And the first question?"'
+			'"His father was killed years ago, when he was working for the Belys and they took care of his mother and him since then... I guess we are the only people he knows that connects him with his dead father," he shrugs again.'
+			'"And why did he ''thank'' me?" you ask.'
+			'"Sorry, <<$pcs_nickname>>. I have no idea."'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	end
+	
+	if $wl_virgin_lost ! '' and wl_volya['talk_virgin'] = 0:
+		act 'Losing your'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity to him':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			wl_volya['talk_virgin'] = 1
+			if npc_rel['A904'] <= 10:
+				'You look at him and you can barely contain your disdain for him. He''s a piece of shit and you can''t believe you gave your'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity to him.' 
+			elseif npc_rel['A904'] > 10 and npc_rel['A904'] <= 30:
+				'You look at him and you can''t stop yourself from feeling only disdain for him and you can''t believe you gave your'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity to him.' 
+			elseif npc_rel['A904'] > 30 and npc_rel['A904'] <= 60:
+				'You look at him you and are unsure if you like him or dislike him. He is your pimp, but he seems nice and he promised to help you. You even had sex with him, giving your'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity to him.' 
+			elseif npc_rel['A904'] > 60:
+				'You look at him '+iif(npc_rel['A904'] <= 80, 'and', 'and your heart beats a little bit faster just by seeing him. You')+' can''t believe how lucky you are that you have to deal with him and not one of the other guys. You''re still grateful that he made everything easier for you when he took your'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity to prepare you for your new job.' 
+			end
+								
+			'You never really talked about that day, about what happened in his apartment and for a moment you ponder the question if you should talk to him about that.'
+				
+			act 'No (Not today)':
+				*clr & cla
+				wl_volya['talk_virgin'] = 0
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'	
+				'You decide to talk about it on another day and pull out your phone instead to take your mind of things until you arrive at your destination.'
+					
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+				
+			act 'No (Never)':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+				'You decide to never talk about it. Better to leave it in the past. You pull out your phone instead to take your mind of things until you arrive at your destination.'
+					
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+				
+			if npc_rel['A904'] > 20:
+				act 'Yes (Understanding)':
+					*clr & cla
+					npc_rel['A904'] += 10
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+					'"We never talked about what happened in your apartment, when you took my'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity," you say to him when the car stops at a traffic light.'
+					'"Is there something to talk about?" he asks a little bit perplexed.'
+					'"You were kinda rough," you say and when he opens his mouth to respond you quickly continue. "I only wanted to thank you."'
+					'"Thank me?" He asks confused. "I guess it wasn''t easy for you to treat me like this," you expain. "But it prepared me for my new job."'
+					'You watch his reaction and aren''t quite sure what you see. For a split second he seems ... pleased? But then he nods and he smiles warmly at you. "Thanks <<$pcs_nickname>>. That means much to me."'
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end
+			end
+				
+			if npc_rel['A904'] < 80:
+				act 'Yes (Confrontational)':
+					*clr & cla
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+					'"You never apologized for what you did when you took my'+iif($wl_virgin_lost ! 'anal', ' ', ' anal ')+'virginity," you state matter-of-factly.'
+					'"Apologize? I don''t have anything to apologize for!" he says visibly annoyed.'
+					'"Maybe for hurting me? Treating me like dirt at the end?" you snap.'
+					'He rolls his eyes and shakes his head. "I told you it was to prepare you for what''s out there."'
+					'"Sure, tell yourself that, but it seemed to me as if you liked it."'
+					'He doesn''t reply to your accusation and after several minutes of constant silence you ask. "You aren''t going to say something about that?"'
+					'"Do you really believe what you said?" he asks.'
+
+					act 'No':
+						cla & *nl
+						npc_rel['A904'] += 5
+						'"No," you '+iif(npc_rel['A904'] < 40, 'lie.', 'say.')+' "It''s just that I didn''t imagine my first time to be this way."'
+						'"No girl does, but would it have been better if it was Vadim or Georgiy? Believe me, I did you a favor by helping you out."'
+						'"Yeah, I''m sorry for suggesting otherwise," you reply'+iif(npc_rel['A904'] < 40, ' without meaning a word you say.', '.')
+						gs 'mod_wlife_volya', 'shift_leave_car'
+					end
+					
+					act 'Yes':
+						cla & *nl
+						npc_rel['A904'] -= 10
+						'"Yes," you reply coldly.'
+						'"Then we don''t have anything to talk about. Believe what you want to believe. I''ll still try to help you and when I get you out of this, you''ll maybe think differently about me.'
+						gs 'mod_wlife_volya', 'shift_leave_car'
+					end
+				end
+			end
+		end
+	end
+	
+	if wl_homeless['status'] = 1 and wl_volya['talk_homeless'] = 0:
+		act 'Ask about fucking a homeless as punishment':
+			*clr & cla
+			wl_volya['talk_homeless'] = 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'"Georgiy took me to the homeless...," you say, but he immediately interjects. "What? Did you have to... you know?" he asks worried.'
+			'"No I didn''t, he just took me there to put the fear of god into me," you say easing his concerns, "but you knew about this? Why didn''t you tell me?"'
+			'He sighs. "You already had enough on your plate without me telling you about that. I wanted you to get through this. So I kept this from you to not completely overwhelm you."'
+			'What he says makes sense. It was'+iif(wl_stats['acceptance'] < 60, ', it still is', '')+' hard for you to deal with all of it. "I get it, but that means it''s true? He will make me do this?"'
+			'"Only if you misbehave. So stay on good terms with him, work and do what you''re told and everything will be fine," but his words don''t do much to reassure you. "OK,... ," you say stopping for a moment to search for the right words, "... I understand why Georgiy believes he has to punish his girls, but why in this way? It can''t be save for his whores, for me. Just think about all the stuff they could be infected with from sharing needles and stuff."'
+			'"That''s why it is an effective threat. I mean do you want to do it?" You shake your head. "See? It keeps the girls in line and to be honest with you. If you mess up enough, there isn''t match reason to keep you around and at that point Georgiy won''t care if your riddled with STDs."'
+						
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	end
+	
+	gs 'mod_wlife_volya', 'ask_erection'
+end
+
+if $ARGS[0] = 'ask_erection':
+	if wl_volya['status'] = 1:
+		act 'Talk about him having an erection':
+			*clr & cla
+			wl_volya['status'] = 2
+			'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_bulge_1.jpg"></center>'
+			'"I saw it," you say and give him a stern look.'
+			'He glances at you confused from the corner of his eyes. "Saw what?"'
+			'"Your erection," you tell him without saying anything else. You can see the realization form on his face when your words slowly sink in. "<<$pcs_nickname>>, I ... sorry, I don''t know what to say." He swallows hard when he sees your eyes. If looks could kill, they would be arrested for murder right now and braces himself for what is about to happen,...'
+			
+			if npc_rel['A904'] > 20: 			
+				act 'Be cool about it':
+					*clr & cla
+					if npc_rel['A904'] > 60:
+						npc_rel['A904'] += 10
+					else
+						npc_rel['A904'] += 5
+					end
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+					'A grin forms on your lips and you shake your head laughing. "What? What''s so funny?"'
+					'"You should have seen your face," you manage to say as your laughter ebbs away. He exhales loudly and looks still a little bit startled. "I thought you would tear my head off."'
+					'"No, it''s fine. I was shocked at first, but I understand it. All the talk about sex'+iif($wl_virgin_lost ! '', ',', ' and ')+'my revealing outfit'+iif($wl_virgin_lost ! '', ' and that we already slept together ', '')+' resulted in a reaction you have no control over. I can''t blame you for that."'
+					'"Still, I''m sorry," he says again, but you brush his apology aside. "Stop, it''s OK. No harm done."'
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end				
+			end	
+			
+			if npc_rel['A904'] > 40: 			
+				act 'Tease him about it':
+					*clr & cla
+					if npc_rel['A904'] > 60:
+						npc_rel['A904'] += 10
+					else
+						npc_rel['A904'] += 5
+					end
+					'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_bulge_0.jpg"></center>'
+					'A smile forms on your lips and your eyes go soft. "Did it turn you on? Thinking about me getting ravaged by some dirty old man." You say with a lascivious undertone and lean closer to him.'
+					'"What? No! Of course not." Your smile grows wider as he tries to defend himself. "Oh, come on. You can tell me, if you like it. Do you think about it a lot? Me standing there in a slutty dress, giving some lonely trucker a good time?"'
+					'He looks confused when you move even closer and stretch out your arm towards his crotch. "Why didn''t you say something, I could have taken care of it," you whisper, but when your hand nearly touches the newly formed bulge in his pants, you ...'
+					
+					act 'Pull away and laugh':
+						cla & *nl
+						'... you pull away and break out into laughter. "Boys...," you manage to say as your shake your head. That was too easy.'
+						'"That was mean," he grins, but quickly strike a more serious tone. "Again, I''m sorry." But you brush his apology aside. "Stop, it''s OK. No harm done."'
+						
+						gs 'mod_wlife_volya', 'shift_leave_car'
+					end
+					
+					gs 'willpower', 'bj', 'self'
+					if will_cost <= pcs_willpwr:
+						act 'Touch it (<<will_cost>> Willpower)':
+							cla & *nl
+							gs 'willpower', 'pay', 'self'
+							gs 'stat'
+							wl_volya['timer_bj'] = daystart + rand(-2,2)
+							'... you touch it. It started as a joke. A bit of innocent teasing to irritate him has turned into something else. "<<$pcs_nickname>>." He draws in a sharp breath and for a second he looses his concentration and the car drifts partly into the next line.'
+							'"Drive and let me do the rest," you say and pull down the zipper of his pants.'
+							
+							act 'Pull out his cock': gt 'mod_wlife_volya_sex', 'car_blowjob'
+						end
+					else
+						act 'Touch it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+					end
+				end
+			end
+			
+			if npc_rel['A904'] < 80: 
+				act 'Be confrontational':
+					*clr & cla
+					npc_rel['A904'] -= iif(npc_rel['A904'] > 60, 20, 10)
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+					'"Did it get you exited thinking about me getting fucked by some dirty old trucker?" You shout. "What the fuck is wrong with you? I thought you wanted to help me and not get off on me whoring myself out to some fat fuck at a dirty gas station."'
+					'"<<$pcs_nickname>>," he says, but you interrupt him at once. "Don''t fucking start. Your sick and disgusting." He doesn''t say anything after it as you turn away from him to stare out of the window.'
+					*nl
+					'Minutes pass as you silently fume in the passanger seat. "It''s disgusting," he suddenly says and before you can scream at him again he tries to explain what happened. "The thought of you having to go through that makes me sick and I didn''t react in that way because of it but instead of it."'
+					'"I like you, I really do'+iif(npc_rel['A904'] > 60, ' and I get the feeling you do too.',' even if you don''t.')+' Seeing you, thinking about you naked, '+iif(wl_virgin_lost ! '', 'remembering how it felt', 'imagining how it would feel')+' to be with you got the better of me. It had absolutly nothing to do with what you have to do every week."'
+					*nl
+					'You give him the silent treatment until he parks the car at the gas station. You grab the door handle, but hesitate for a second. "Volya, I get it," you say without looking at him.'
+					'"Are we OK?" He asks.'
+					'"Yeah, no harm done."'
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end
+			end	
+		end
+	end
+end
+
+if $ARGS[0] = 'volya_asks_whore':
+	*clr & cla
+	wl_volya['status'] = 1
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'<<$pcs_nickname>>, we have never really talked about your...," he pauses for a second, "...work," he says while he overtakes a truck on the highway on your way to the gas station.'
+	'"Why should we talk about it?" You ask. "Isn''t it enough that I have to do it? I don''t need to relive the details."'
+	'"Sure, but I''m your...," another pause followed by a sigh. "...pimp and as such I need to know if anything is wrong."'
+	'Something wrong? How about everything is wrong, you think. "The better question would be if something is still right," you dryly reply.'
+	'"Sorry, I meant problems at work not that you have to work," he clarifies.'
+	'"It''s fine," you say, but your reply doesn''t satisfy him. "Look <<$pcs_nickname>>, there are two types of girls in this line of work. One who have to get everything of their chest and can''t stop talking about it and the other one who says nothing and bottles everything up inside." He explains. "You don''t have to talk to me, but sometimes talking helps to deal with stuff."'
+	'You look away from him and watch the landscape pass by through the windshield. Maybe he''s right. At least it can''t hurt.'
+
+	act 'Give in':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+		'Finally you give in. "Fine, we can talk about it if you insist," you sigh dejectedly.'
+		'"Sorry, but we really have to and not only because I''m your... pimp, but because I''m your friend'+iif(npc_rel['A904'] < 40, '. Yes you heard correctly," he adds when he sees you frown from the corner of his eyes. "I''m your friend even if you don''t feel that way about me.', ' and ')+' I need to know how you''re holding up," he tries to reassure you. "Doesn''t make much sense to set everything up to get you away from the Belys, when you break under pressure before my plan is ready."'
+		'"I won''t," you say at once, but a flicker of doubt rises up inside you when the words escape your mouth. You push it aside and add more to reassure yourself than him. "I can deal with it!"'
+		'"Good and talking about it will help you with it."'
+		
+		act 'Tell him about your experiences':
+			*clr & cla
+			minut += 30
+			wl_stats['acceptance'] += 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'Until you arrive at the gas station you talk to him about your clients and what you had to do for them. He offers some small advice here and there at the beginning, but the more you talk the quieter he gets until he doesn''t say anything at all.'
+			*nl
+			'"And?" He wonders as he parks the car in one of the parking spaces at the gas station. "How do you feel about talking now? Does it help?"'
+			'You shrug. "Yeah, maybe. I don''t know," you answer not really sure how you feel about it. Recounting all the details to him isn''t as bad as you would have suspected, but still nothing you really want to repeat. "See you later," you say as you step out of the car.'
+			
+			act 'Continue':
+				*clr & cla
+				if npc_rel['A904'] > 60:
+					npc_rel['A904'] -= 5
+				else
+					npc_rel['A904'] -= 10
+				end
+				'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_bulge_1.jpg"></center>'
+				'You were about to close the door, when you turn around again. "Thanks for listening," you tell him. He didn''t have to hear you complain and you can appreciate that he''s trying to be helpful.'
+				'"Sure, no problem," he replies and starts the car as you close the door behind you. Then you see it. It was easier talking about prostituting yourself while not looking at him and that''s why you didn''t notice it before, but you see it now. A huge bulge in his pants. He has an erection.'
+				'"What the fuck," you say to yourself as he drives away. He got a hard from that? You watch in disbelief how his car disappears and wonder what you will do about it the next time you meet him.' 
+				
+				act 'Get to work': gt 'mod_wlife_highway', 'outside' 
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'shift_bulge':	
+	*clr & cla
+	wl_volya['timer_bulge'] = daystart
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_bulge_'+rand(0,1)+'.jpg"></center>'
+	'Your watch Volya out of the corner of your eyes when he''s unusually silent. Normally he would try to talk to you, but today he says nothing and after a quick glance at his crotch you know why. He is hard, again.'
+	
+	act 'Do nothing':
+		*clr & cla
+		npc_rel['A904'] -= 1
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_day.jpg"></center>'
+		'You pull out your phone to avoid to draw attention to his ''situation''.'
+
+		gs 'mod_wlife_volya', 'shift_leave_car'
+	end
+	
+	gs 'willpower', 'bj', 'self'
+	if will_cost <= pcs_willpwr:
+		act 'Touch it (<<will_cost>> Willpower)':
+			cla & *nl
+			wl_volya['timer_bj'] = daystart + rand(-2,2)
+			gs 'willpower', 'pay', 'self'
+			gs 'stat'
+			'"<<$pcs_nickname>>." He draws in a sharp breath as you put your hand on his cock without warning. For a second he looses his concentration and the car drifts partly into the next line. "What are you doing?"'
+			'"Drive and let me do the rest," you say and pull down the zipper of his pants.'
+							
+			act 'Pull out his cock': gt 'mod_wlife_volya_sex', 'car_blowjob'	
+		end
+	else
+		act 'Touch it (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end	
+end
+
+if $ARGS[0] = 'volya_asks_bj':
+	*clr & cla
+	wl_volya['timer_bj'] = daystart + rand(-2,2)
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_bulge_'+rand(0,1)+'.jpg"></center>'
+	'"Uhm... <<$pcs_nickname>>, I...," he stammers, pauses and continues after taking a second to sort his thoughts. "I''m a little tense, done there," he nods his head done to his crotch. "Could you help me with that, again?"'
+	
+	gs 'willpower', 'bj', 'resist', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Shake your head (<<will_cost>> Willpower)':
+			*clr & cla
+			npc_rel['A904'] -= 1
+			gs 'willpower', 'pay', 'resist'
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_day.jpg"></center>'
+			'You shake your head and pull out your phone. "Sorry Volya, not today. I''m not in the mood."'
+			'"Sure, no problem," he says and you check your messages until you arrive at the gas station.'
+					
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	else
+		act 'Shake your head (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	act 'Do it': npc_rel['A904'] += 2 & gt 'mod_wlife_volya_sex', 'car_blowjob'
+end
+
+if $ARGS[0] = 'shift_tease':
+	*clr & cla
+	pcs_mood = 100
+	npc_rel['A904'] += 2
+	wl_volya['timer_tease'] = daystart + rand(-1,1)
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/drive.mp4"></video></center>'
+	'You can''t put your finger on it, but you have the feeling today is a good day. The sun is shinning, '+iif(npc_rel['A904'] > 60, 'it''s always pleasant to be around Volya', 'even Volya doesn''t get on your nerves today')+' and for once you don''t think about where you''re driving. Volya and you are joking around and happily talking about random topics.'
+	*nl
+	'After a few minutes an idea forms in your happy mind and a mischievous grin takes shape on your lips. You know that he has the hots for you and maybe you can have some fun with that.'
+	
+	act 'Keep talking to him':
+		cla & *nl
+		npc_rel['A904'] += 2
+		'You decide against it and instead continue to make small talk with him. The meaningless but entertaining conversation keeps going until you arrive at the gas station.'	
+		gs 'mod_wlife_volya', 'shift_leave_car'
+	end
+	
+	gs 'willpower', 'exhib', 'self', 'easy'
+	if will_cost <= pcs_willpwr:
+		act 'Tease him (<<will_cost>> Willpower)':
+			*clr & cla
+			gs 'willpower', 'pay', 'self'
+			gs 'arousal', 'foreplay', -2
+			gs 'exhibitionism', 1
+			gs 'stat'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/tease_start.mp4"></video></center>'
+			'Sensually bitting down on your lower lip you pull down one side of your top and expose your left breast. "Volya?" You say to get his attention.'
+			'"What?" He asks and his eyes flicker to you for a blink of an eye. For a few seconds he looks back towards the road before his brain has processed the situation. You laugh when his eyes lock onto your exposed breast and stares at your hand that alternates between playfully twisting your hard nipple and softly kneading your breast.'
+			*nl
+			'You could stop it here, fix your top and move on, but for a second an image pops into your head of Volya fucking you hard on the backseat and you ask yourself if you should go further beyond innocent teasing.' 
+					
+			act 'Fix your top':
+				*clr & cla			
+				gs 'arousal', 'foreplay', -2
+				gs 'arousal', 'end'
+				gs 'stat'			
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/tease_end.mp4"></video></center>'
+				'You laugh when he looks back and forth between your exposed tit and the road. His confused look his too cute and you can''t stop yourself from laughing and wink at him before you put your top back in place.'
+				'"Very funny <<$pcs_nickname>>," he says rolling his eyes, but you can see that he''s trying to stop himself from grinning.'
+				*nl
+				'You pick up the meaningless but entertaining conversation and keep chatting until you arrive at the gas station.'	
+						
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+					
+			gs 'willpower', 'sex', 'self', 'easy'		
+			if will_cost <= pcs_willpwr:
+				act 'Blow him (<<will_cost>> Willpower)':
+					wl_volya['timer_sex'] = daystart + rand(-2,2)
+					gs 'willpower', 'pay', 'self'
+					gt 'mod_wlife_volya_sex', 'car_sex'
+				end
+			else
+				act 'Blow him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		end
+	else
+		act 'Tease him (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+end
+
+if $ARGS[0] = 'shift_fingering':
+	*clr & cla
+	pcs_mood = 100
+	wl_pic_rand = rand(4,5)
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_'+iif(wl_pic_rand = 4, '4', '5')+'/chat_'+rand(0,2)+'.mp4"></video></center>'
+	iif(wl_volya['ignore'] = 1, 'You can''t stop yourself from chatting with him today. ', '')+'The sun is out and even if you don''t discuss anything meaningful, you still feel a bit better about what you will have to do in half an hour. Your conversation sometimes strays into '+iif(wl_stats['acceptance'] > 50, 'now comfortable', 'uncomfortable')+' territory like what you do with your clients. '+iif(wl_volya['status_finger'] = 0, 'When you tell him about the good and the bad days, he asks you if you ever had an orgasm with a client. "Sometimes," you answer, "but they usually don''t care about my needs." He looks at you for a split second and seems to roll a question around in his head as he keeps his eyes fixed at the road ahead. "What are you thinking about Volya?"', 'You take a few moments to complain about some of the men that never care about your pleasure.')
+	if wl_volya['status_finger'] = 0:
+		wl_volya['status_finger'] = 1
+		'"I did that as well," he replies sounding guilty. "How about I return the favor now?" He asks.'
+		'"Uhm... having my pussy in your face, as tempting as that sounds, is probably a guaranteed way to get us killed." He laughs and shakes his head. "I can use my hand," he says, takes one hand of the steering wheel and wiggles his fingers.'
+	elseif wl_volya['status_finger'] = 1:
+		'"You know, my offer still stands," he says and lifts one hand of the steering wheel to indicate that he wants to return the favor of getting him off.'
+	else 
+		'"Are you up for a bit of fun? I missed touching your pussy," he says.'
+	end
+	
+	gs 'willpower', 'resist', 'sex', iif(wl_volya['relationship'] = 0, 'easy', 'hard')
+	if will_cost <= pcs_willpwr:
+		act 'Decline (<<will_cost>> Willpower)':
+			*clr & cla
+			wl_volya['timer_finger'] = daystart + rand(-2,2)
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_'+iif(wl_pic_rand = 4, '4', '5')+'/chat_'+rand(0,2)+'.mp4"></video></center>'
+			'"That isn''t necessary Volya. Not everything is a debt or a favor that has to be repaid. I did it and that is it," you explain. He doesn''t argue instead he replies with a sassy grin, "OK, but that won''t stop me from asking again."'
+			*nl
+			'You resume your meaningless chat until you arrive at the gas station.'	
+			killvar 'wl_pic_rand'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+	else
+		act 'Decline (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+	end
+	
+	act 'Undress': wl_temp = 0 & wl_volya['status_finger'] = 2 & gt 'mod_wlife_volya_sex', 'car_fingering'
+end	
+
+if $ARGS[0] = 'shift_leave_car':	
+	if $wl_volya['car_exit'] = 'highway':
+		minut += 30
+		act 'Get out of the car': gt 'mod_wlife_highway', 'outside' 
+	else
+		minut += 20
+		act 'Get out of the car': gt $wl_loc[0], $wl_loc[1]
+	end
+	gs 'stat'
+end
+
+if $ARGS[0] = 'shift_premature_end':
+	*clr & cla
+	minut += 1
+	if hour = 22: 
+		wl_wait_time = 30 - minut
+	else
+		wl_wait_time = (22-hour) * rand(15,25)
+	end
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/phone_holding.jpg"></center>'
+	iif(wl_temp = 0, 'You have enough for today and can''t bring yourself to look for another client. ', '')+'You send a quick message to Volya asking him to pick you up earlier. After a few minutes you get a reply from him that '+iif(wl_wait_time < 60, 'he''s there in under an hour.', 'it will take him some time.')
+	
+	killvar 'wl_temp'
+	
+	act 'Wait for him': minut += wl_wait_time & gt 'mod_wlife_volya', 'shift_end'
+end
+
+if $ARGS[0] = 'shift_end':
+	*clr & cla
+	menu_off = 1
+	$wl_volya['car_exit'] = 'home'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'
+	'You see Volya''s car driving onto the parking lot and stops next to you. "Get in," he calls.'
+		
+	wl_whore['customer_total'] += wl_whore['customer_day']
+	wl_whore['customer_day'] = 0
+	wl_whore['shifts_done'] += 1
+	
+	!!	---- This is my bit -----
+	wl_burnout_count += 1
+	
+	if wl_burnout_count = 3:
+		vidageday -= 2
+		wl_burnout_count = 0
+	end	
+
+	!!	---- My bit ends ------		
+		
+	if wl_whore['shifts_done'] = 1 and wl_whore['shifts_total'] = 0:
+		act 'Get in the car': gt 'mod_wlife_volya', 'shift_end_first' 
+	else
+		act 'Get in the car': gt 'mod_wlife_volya', 'shift_end_money'
+	end
+end
+
+if $ARGS[0] = 'shift_end_first':
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov_car.jpg"></center>'	
+	'"Hi, <<$pcs_nickname>>. How was your first day? Do you want to talk about it?" He asks cautiously.'
+					
+	act 'No':
+		*clr & cla
+		minut += 20
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_night.jpg"></center>'
+		'You shake your hand and pull out your phone. A conversation with Volya is the last thing you want to do right now.'
+		'He waits for a few seconds, but when you keep staring at the screen, he sighs and starts the engine.'
+		*nl		
+		'You arrive at your parents apartment complex twenty minutes later. This day is finally over. You reach for the door, but Volya stops you.'
+		'"Sorry, but we need to talk about the money.'
+		
+		act 'Give him the money': gt 'mod_wlife_volya', 'shift_end_money'		
+	end
+			
+	act 'Yes':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+		'You nod and as he starts the engine to get you underway you start talking. Your reaction to your first day on the job is...'
+		
+		act 'Stoic':
+			cla & *nl
+			minut += 20
+			wl_stats['acceptance'] += 1
+			gs 'stat'
+			'"It was fine," you say without revealing what''s going on inside you. Your eyes are staring out into the night and your thoughts wander back to everything you have lived through today. The men, the sex, the money.'
+			'"Ok, that''s good," he says still treating carefully around you. "So, I''ll see you again this week? You keep being strong until I can get you out of here?"'
+			'"Sure," you answer him and you realize this is your new life now. You will get into his car again this week, next week and the week after that and the week after that, until... Until when? You finally break? They have enough of you or Volya helps you? You have no idea, but you will tackle each day and each new challenge and stay strong.'
+			*nl
+			'You arrive at your parents apartment complex twenty minutes later. This day is finally over. You reach for the door, but Volya stops you.'
+			'"Sorry, but we need to talk about the money."'
+						
+			act 'Give him the money': gt 'mod_wlife_volya', 'shift_end_money'
+		end
+		
+		act 'Hopeful':
+			cla & *nl
+			minut += 20
+			gs 'stat'
+			'"It wasn''t great, but I can do it, at least until you help me," you tell him hopeful that your ordeal won''t become your new life. It will be fine, you just have to keep doing what you have done today and it will all be over at some point.'
+			'"Good to hear," he says. "That''s the right way to tackle this situation. Keep it up <<$pcs_nickname>>."'
+			*nl
+			'You arrive at your parents apartment complex twenty minutes later. This day is finally over. You reach for the door, but Volya stops you.'
+			'"Sorry, but we need to talk about the money."'
+						
+			act 'Give him the money': gt 'mod_wlife_volya', 'shift_end_money'
+		end
+		
+		act 'Disgusted and angry':
+			cla & *nl
+			minut += 20
+			wl_stats['acceptance'] -= 1
+			gs 'stat'
+			'"It was horrifying, the men, the sex. I can''t stand it," he throws you a warning look as he drives. "What? Do you want to get touched by some old dude? I''m not doing this for fun."'
+			'"Think about it differently. Think about the money," he tries to make you see the situation in a different way.'
+			'"Yeah, the <<wl_whore[''share_player'']>>% of it. I have to do all the work and I have to give you <<wl_whore[''share_pimp'']>>%. For what? What am I getting in return?"'
+			'Volya takes his eyes off the road for another second and explains it to you as clearly as he possibly can: "That the Belys don''t kill you and put you in an unmarked grave in the woods." That shuts you up for the rest of the drive.'
+			*nl
+			'You arrive at your parents apartment complex twenty minutes later. This day is finally over. You reach for the door, but Volya stops you.'
+			'"Sorry, but we need to talk about the money."'
+						
+			act 'Give him the money': gt 'mod_wlife_volya', 'shift_end_money'
+		end
+	end
+end
+
+if $ARGS[0] = 'shift_end_money':
+	*clr & cla
+	minut += 1
+	if wl_debt['amount'] > 0:
+		wl_whore['share_player_debt'] = wl_whore['earnings_day'] * 20 / 100
+		wl_whore['share_player_money'] = wl_whore['earnings_day'] * (wl_whore['share_player'] - 20) / 100
+	else
+		wl_whore['share_player_money'] = wl_whore['earnings_day'] * wl_whore['share_player'] / 100
+	end
+	'<center><img <<$set_imgh>> src="mod/wlife/images/objects/money.jpg"></center>'
+	if wl_whore['earnings_day'] > 0:		
+		if wl_stats['acceptance'] > 100:
+			wl_stats['acceptance'] = 100
+		elseif wl_whore['earnings_day'] > 8000:
+			wl_stats['acceptance'] += 3
+		elseif wl_whore['earnings_day'] > 5000:
+			wl_stats['acceptance'] += 2
+		elseif wl_whore['earnings_day'] > 0:
+			wl_stats['acceptance'] += 1
+		else
+			wl_stats['acceptance'] -= 1
+		end
+		
+		if wl_debt['amount'] > 0 and wl_whore['share_player_debt'] >= wl_debt['amount']:
+			wl_whore['share_player_debt'] -= wl_debt['amount'] 
+			money += wl_whore['share_player_money'] + wl_whore['share_player_debt']
+			'You hand over <<wl_whore[''earnings_day'']>> <b>₽</b>. He hands you your share which amounts to <<wl_whore[''share_player_money''] + wl_whore[''share_player_debt'']>> <b>₽</b> and keeps <<wl_debt[''amount''] >> <b>₽</b> to wipe out your remaining debt.'
+			wl_debt['amount'] = 0
+		elseif wl_debt['amount'] > 0 and wl_whore['share_player_debt'] < wl_debt['amount']:
+			'You hand over <<wl_whore[''earnings_day'']>> <b>₽</b>. He hands you your share of <<wl_whore[''share_player''] - 20>>% back (<<wl_whore[''share_player_money'']>> <b>₽</b>) and keeps 20% (<<wl_whore[''share_player_debt'']>> <b>₽</b>) to reduce your debt.'
+			wl_debt['amount'] -= wl_whore['share_player_debt']
+			money += wl_whore['share_player_money']
+		else
+			'You hand over <<wl_whore[''earnings_day'']>> <b>₽</b> and he hands you your share of <<wl_whore[''share_player'']>>% back (<<wl_whore[''share_player_money'']>> <b>₽</b>).'
+			money += wl_whore['share_player_money']
+		end
+		
+		wl_whore['earnings_week'] += wl_whore['earnings_day']
+		wl_whore['earnings_day'] = 0
+		wl_whore['share_player_debt'] = 0
+		wl_whore['share_player_money'] = 0
+	else
+		'"I didn''t found a client," you tell him meekly.'
+		'"Shit, that isn''t good <<$pcs_nickname>>, I''ll talk to Georgiy about that, but try to earn more next time, ok? He wants his money and he will get it in any way possible. Do you understand?"'
+		'You nod and hope that Volya can keep Georgiy of your back for a week.'
+	end
+	
+	gs 'stat'
+	
+	if wl_whore['cum_dressed'] = 1:
+		'<br>He looks at you and pulls out some tissues. "You still have some cum on you. You should clean yourself up."'
+		act 'Remove the cum from your body':
+			cla & *nl
+			minut += 2
+			npc_rel['A904'] += 1
+			cumspclnt = 20
+			gs 'cum_cleanup'
+			gs 'stat'
+			'You take the tissues and remove the cum from your body. "Thanks," you say.'
+			gs 'mod_wlife_volya', 'shift_end_talk'
+		end
+	else
+		gs 'mod_wlife_volya', 'shift_end_talk'
+	end
+end
+
+if $ARGS[0] = 'shift_end_talk':
+	if wl_whore['shifts_done'] = 1 and wl_whore['shifts_total'] = 0:
+		act 'Get out of the car': gt $wl_loc[0], $wl_loc[1]
+	else 
+		act 'Relax':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_phone_night.jpg"></center>'
+			'You pull out your phone to play some games and check your messages to take your mind off things. Not even once did Volya try to start a conversation with you, instead giving you some space to get away from it all.'	
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+		
+		act 'Make small talk':
+			*clr & cla
+			npc_rel['A904'] += 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+			'You aren''t in the mood after a long day at work to tackle any serious topic and just make small talk with Volya. He doesn''t seem to mind and happily keeps the conversation going.'
+			
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+		
+		if joint > 0 and wl_drugs['status'] > 0:
+			act 'Smoke a joint':
+				*clr & cla
+				if wl_whore['car_weed'] = 0:
+					pc_rel['A904'] -= 10
+					wl_whore['car_weed'] = 1
+					'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+					'"Do you mind?" you ask holding up your bag of weed.'
+					'Volya frowns and looks at you disapprovingly. "Is that weed?" You nod and the frown deepens. "Why do you take drugs? It''s not a good idea <<$pcs_nickname>>."'
+					'"It''s just some weed," you say defending yourself. "Is my pimp really telling me I shouldn''t smoke some weed?"'
+					'"Drugs are drugs...," he says but you interject. "Oh come on, you probably drink vodka every week. That''s way more harmful than smoking a joint."'
+					'"It''s a slippery slope <<$pcs_nickname>>. First it''s weed and then..."'
+					'You roll your eyes and shake your head. "Geez Mom, thanks for the warning," you reply sarcastically. You can''t believe that a guy like him really tells you that a joint is bad. He''s a criminal and a pimp. He really should clean up his own backyard first before giving you shit about your behavior.'
+					'"Fine, go ahead, but open the window please."'
+					
+					act 'Continue': gt 'mod_wlife_volya', 'car_joint'
+				else
+					gt 'mod_wlife_volya', 'car_joint'
+				end
+			end
+		end
+		
+		if wl_iosif['timer'] = 1 and wl_iosif['volya_car'] ! daystart:
+			act 'Tell him to drop you off at the warehouse':
+				*clr & cla
+				wl_iosif['volya_car'] = daystart
+				'<center><img <<$set_imgh>> src="mod/wlife/images/player/car_talk.jpg"></center>'
+				if wl_volya['talk_iosif'] = 1:
+					wl_volya['talk_iosif'] = 2
+					'"Could you drop me off at the warehouse?" You ask him without further explaining why.'
+					'"The warehouse? Why?" He asks looking confused. "What''s going on?"'
+					'"Iosif wants to see me," you say only explaining half of it.'
+					'"<<$pcs_nickname>>, tell me what''s going on!"'
+					'You sigh. "He wants to fuck me... again," and quickly add. "He pays me and I don''t can refuse... or can I?"'
+					'He doesn''t say anything for like a minute or so while he processes this new information. "Uhm... I... So, to answer your question. "No, you can''t. How did that happen?"'
+					'"Can we not talk about it now? I''m really not in the mood tonight."'
+					'"Sure, whatever you want," he says unconvincingly.'
+				else
+					'"Could you drop me off at the warehouse again?" You ask.'
+					'"Sure, no problem," he says through gritted teeth.'
+				end				
+				
+				act 'Leave the car': gt 'mod_wlife_warehouse', 'street'
+			end
+		end
+		gs 'mod_wlife_volya', 'ask_erection'
+	end	
+end
+
+if $ARGS[0] = 'car_joint':
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/player/joint_smoking_car.jpg"></center>'
+	'You take your time to carefully roll your joint before lighting it up. Not before long you''re starting to feel the relaxing effects'+iif(wl_stats['acceptance'] < 20, ' wash away the anxiety about your job.', ' as you''re getting high.')
+					
+	gs 'mod_wlife_functions', 'weed_check'
+	gs 'stat'
+				
+	gs 'mod_wlife_volya', 'shift_leave_car'
+end
+
+--- mod_wlife_volya ---------------------------------

+ 427 - 0
locations/mod_wlife_volya_sex.qsrc

@@ -0,0 +1,427 @@
+# mod_wlife_volya_sex
+
+!!------ Virginity ------
+
+if $ARGS[0] = 'virginity_0':
+	*clr & cla
+	minut += 1
+	cumnostd = 1
+	gs 'boystat', 'A904'
+	npc_sex['A904'] = 1	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+	'You slowly remove your clothes and Volya uses each second to devour you with his eyes.'
+	'"Lie down," he commands and quickly takes his clothes off. His cock is already semi-hard when he pulls down his underwear.'
+	'He kneels down next to you on the bed and points his cock at your mouth. "Get me ready."' 
+	gs 'stat'
+	
+	act 'Put his cock into your mouth':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin00.mp4"></video></center>'
+		'You slowly begin to lick the tip of his cock and circle your tongue around it before taking it into your mouth.'
+		'His hand moves down between your legs and starts to tease your clit. "Try to take it deeper," he says after a minute of continued sucking. You obediently push his cock deeper inside and he groans satisfied.'
+		'After a few more moments he stops you and orders you on your back.'
+		'He moves between your legs, but you remember something he said to you on the phone. "Not without a condom," you whisper and to your surprise he grins. "You remembered." He rolls to the edge of the bed, grabs his jeans and pulls a condom out of his pocket.'
+		
+		gs 'arousal', 'bj', 5, 'sub'
+		gs 'arousal', 'foreplay', -5
+		gs 'stat'
+		
+		if $wl_virgin ! 'anal':
+			act 'Loose your virginity': gt 'mod_wlife_volya_sex', 'virginity_1'
+		else
+			act 'Let him put it in': gt 'mod_wlife_volya_sex', 'virginity_1'
+		end
+	end
+end
+	
+if $ARGS[0] = 'virginity_1':
+	*clr & cla
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin01.mp4"></video></center>'
+	'He spits into his hand and rubs his saliva on your pussy. You give him a quick nod when he looks at you before he pushes inside.'
+	iif($wl_virgin ! 'anal', 'You wince when he penetrates you and tears your hymen. That''s it, you aren''t a virgin anymore. He', 'He')+' waits for a moment giving you a moment to get used to it before he starts to fuck you in earnest.'
+		
+	gs 'arousal', 'vaginal', 2, 'sub'
+	gs 'stat'
+	
+	$wl_virgin_lost = $wl_virgin
+		
+	act 'Get fucked':
+		*clr & cla
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin02.mp4"></video></center>'
+		'With every push of his hips he speeds up until he pounds you hard. There is something different about him, the warmth is gone from his eyes and he stares at you with an animalistic hunger. You close your eyes to avoid his gaze and instead concentrate on the feeling between your legs.'+iif($wl_virgin ! 'anal', ' This isn''t how you have imagined your first time and the pain isn''t getting much better. His powerful moves hurt every time he pushes inside you.', '') 
+		'"Do you like it?" He suddenly asks and the demanding tone in his voice reminds you of what you are supposed to do.'
+		'"Yes," you gasp'+iif($wl_virgin ! 'anal', ' between two surges of pain ', ' ')+'when he pushes his cock especially hard inside you. "Fuck me, Volya."'
+		'"I knew it," he responds and increases the pace even further.'
+		'After a few minutes of hard and '+iif($wl_virgin ! 'anal', 'painful', 'constant')+' fucking he leans in closer to you and whispers into your ear. "You need to be more convincing <<$pcs_nickname>>. Moan, tell me to fuck you harder, scream in pleasure, do something to convince me."'
+		
+		gs 'arousal', 'vaginal', 5, 'sub'
+		gs 'stat'
+		
+		act 'Do it':
+			cla & *nl
+			'You let out a moan when he pushes inside again and with every thrust you try to get more into it. You breath hard and'+iif(pcs_horny < 80, ' fake ', ' ')+'moan with every movement of his hips.'
+			'"Fuck, your pussy is awesome," he grunts, digs his fingers into you and pulls you towards him in one final push. You feel him twitch inside you as he cums inside the condom.'
+			
+			gs 'arousal', 'vaginal', 5, 'sub'
+			gs 'stat'
+			
+			*nl
+			'He pulls the condom off his dick with a satisfied look on his face. "Really <<$pcs_nickname>>, you are born for this."'
+			'You remember what he said to you about playing nice and so you again force a smile on your face and thank him for his ''compliment''.'
+			'"Come here," Volya says lying down on his bed. "Get me ready again, I still have to do your ass."'
+			
+			act 'Suck him':
+				*clr & cla
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin03.mp4"></video></center>'
+				'The taste of cum is on your tongue when you start to suck him hard again. It takes you several minutes of licking and sucking on his limb dick until you feel life returning to it.'
+				'"Get on all fours, <<$pcs_nickname>>," he tells you and grabs another condom. "It''s time for me to fuck your ass."'
+				
+				gs 'arousal', 'bj', 10, 'sub'
+				gs 'stat'
+					
+				act 'Continue':
+					*clr & cla
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin04.mp4"></video></center>'
+					'"Yes Volya," you say playing your role as you get in position. "Do it, fuck me!"'
+					'"As you wish." He spreads your cheeks and spits on your hole. "Now relax or it will hurt."'
+					iif($wl_virgin ! 'vaginal', 'The pain is unbearable when he pushes his dick inside you and when you think it can''t get any worse', 'You try to relax knowing what is about to happen. When he is inside you')+' he slaps your ass hard. "Fuck you''re too tight. You have to relax more."'					
+					gs 'pain', 3, 'asscheeks', 'slap'
+					gs 'arousal', 'anal', 2, 'sub'
+					gs 'stat'
+						
+					act 'Try to relax':
+						*clr & cla
+						'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin05.mp4"></video></center>'
+						'You try to relax, but the moment your ass gives him a little leeway he rams his dick deeper inside.'
+						'"Volya," you scream and as he pulls out you hang on to the hope he won''t push it back inside, but that hope is quickly shattered when he brutally rams his dick back in.'
+						'"Yeah, scream my name," he shouts completely misinterpreting your scream. You only manage to claw your fingers into the bed and try to bear with it.'
+						'It takes him roughly five minutes to finish his assault and every now and then he slaps your ass again.'
+						'"Oh <<$pcs_nickname>>," he groans, pulls out and without warning drags you off the bed and onto the ground.'
+						'"Open," he manages to say as he furiously strokes his dick. "Take it."'
+							
+						gs 'pain', 6, 'asscheeks', 'slap'
+						gs 'arousal', 'anal', 5, 'sub', 'rough', 'humiliation'
+						gs 'stat'
+							
+						act 'Open your mouth':
+							*clr & cla
+							'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/virgin/virgin06.mp4"></video></center>'
+							'In one quick move he takes off the condom, points his dick at your mouth and strokes it for a last time.'
+							'He finally cums, shooting thick ropes of cum directly into your wide open mouth.'
+							'"Swallow it," he says in a commanding tone and you do it without hesitation.'
+							'"You did great <<$pcs_nickname>>, really great" he says and his demeanor has changed again. The warm and comforting smile is back. He holds out a hand to help you up. "I didn''t thought you had it in you. But whatever I did, you kept going."'
+							
+							swallow += 1
+							guy += 1
+														
+							killvar '$wl_virgin'
+							killvar 'wl_volya_virgin'
+							
+							gs 'cum_call', 'mouth', 'A904', 1
+							gs 'arousal', 'end'
+							gs 'stat'
+																																
+							act 'Swat his hand away':
+								*clr & cla
+								minut += 5
+								npc_rel['A904'] -= 20
+								'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+								'"You have helped me enough for one day," you hiss angrily and stand up.'
+								'"<<$pcs_nickname>>..." he tries to say.'
+								'"Don''t, just don''t." You say and get dressed as quickly as possible.'
+								'He follows you through the hallway as you storm out of the apartment. "Come on <<$pcs_nickname>>, don''t be that way."'
+								gs 'stat'
+										
+								act 'Leave': gt 'pav_complex', 'start'
+							end
+									
+							act 'Take his hand':
+								*clr & cla
+								minut += 5
+								npc_rel['A904'] += 5
+								'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+								'"Thanks," you say meekly as he helps you up.'
+								'"You really did great," he repeats as if nothing had happened. Maybe the rough fucking was just an act.'
+								'You both get dressed and he walks you to the door. "Sorry <<$pcs_nickname>> I don''t want to throw you out like this, but I have something to do."'
+								'"It''s fine Volya," you tell him and ...'
+										
+								gs 'stat'
+										
+								act 'Leave': minut += 2 & gt 'pav_complex', 'start'
+								act 'Kiss him':
+									*clr & cla
+									minut += 1
+									npc_rel['A904'] += 10
+									'<center><img <<$set_imgh>> src="mod/wlife/images/characters/volya_sokolov.jpg"></center>'
+									'Maybe it''s just the heat of the moment, maybe you want to thank him for his help or maybe you think kissing should be a part of having sex, whatever your reasons are, you lean forward and try to kiss him.'
+									'"Oh..., no <<$pcs_nickname>>," he says and keeps you at arms length. "Seriously don''t kiss a guy when you had his cum inside your mouth a moment ago."'
+									gs 'stat'
+										
+									act 'Roll your eyes':
+										cla & *nl
+										minut += 3
+										npc_rel['A904'] -= 5
+										'You demonstratively roll your eyes and leave without saying another world. You had his dick inside your ass, he could at least give you a kiss for that.'  
+										gs 'stat'
+											
+										act 'Leave': gt 'pav_complex', 'start'											
+									end
+									
+									act 'Apologize': 
+										cla & *nl
+										minut += 3
+										npc_rel['A904'] += 5
+										'"Sorry, Volya," you say realizing your mistake. "It won''t happen again."'
+										'"Don''t worry about it <<$pcs_nickname>>. At some point you''ll know how to behave," he assures you.'											
+										gs 'stat'
+											
+										act 'Leave': gt 'pav_complex', 'start'													
+									end
+								end
+							end
+						end
+					end
+				end
+			end
+		end
+	end
+end
+
+!!------ Car: Blowjob ------
+
+if $ARGS[0] = 'car_blowjob':
+	*clr & cla
+	cumnostd = 1
+	if npc_sex['A904'] = 0: guy += 1 & npc_sex['A904'] = 1
+	if wl_volya['status'] < 3: wl_volya['status'] = 3
+	if wl_volya['counter_bj'] < 2: wl_volya['counter_bj'] += 1
+	wl_pic_rand = rand(1,2)
+	gs 'boystat', 'A904'
+	gs 'arousal', 'bj', -5
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_'+iif(wl_pic_rand = 1, '1', '2')+'/start.mp4"></video></center>'
+	'You pull out his cock and it only takes you two, three quick strokes to get it fully hard. '+iif(wl_volya['first_bj'] = 0, 'Pushing away all the burning questions in your mind, why you''re doing it you', 'You')+' give the head a tender lick before engulfing it fully with your lips.'
+	if wl_volya['first_bj'] = 0:
+		'For once you feel in control'+iif($wl_virgin_lost ! '', ', not like the first time you had sex with him. It', ' and it')+' feels great, empowering. Even if you''re in such a submissive position, but it''s your choice.'
+	else
+		'It''s different than the first time. He asked you. It''s you who is sucking him off at his request, but your mind is occupied otherwise to think about what feels better. Being in control or fulfilling his wish.'
+	end
+	
+	act 'Blow him':
+		*clr & cla
+		gs 'arousal', 'bj', -5, 'deepthroat'
+		gs 'stat'
+		if wl_pic_rand = 1:
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_1/bj_'+rand(0,2)+'.mp4"></video></center>'
+		else
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_2/bj_'+rand(0,1)+'.mp4"></video></center>'
+		end
+		'"You like it?" You ask with an innocent sounding voice while you slowly keep stroking his saliva covered cock.'
+		'"Yes," he moans and grabs the steering wheel with both hands to keep the car steady.'
+		'You sit back up a bit, still working his dick. "Do you want me to continue?" You ask and biting down softly on your lower lip. "Fuck, yes... please <<$pcs_nickname>>."'
+		'You move your head back and take him back into your mouth. You alternate between sucking softly on the tip, licking down along the entire length of his shaft and pushing it all the way down your throat. Still, it takes Volya a few minutes before he tells you that he is about to cum.' 
+		
+		act 'Swallow it':
+			*clr & cla
+			swallow += 1
+			gs 'cum_call', 'mouth', 'A904', 1
+			gs 'arousal', 'bj', -2
+			gs 'arousal', 'end'
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_'+iif(wl_pic_rand = 1, '1', '2')+'/end.mp4"></video></center>'
+			killvar 'wl_pic_rand'
+			'"Damn, <<$pcs_nickname>>," Volya shouts as he pushes his hips up a bit as he unleashes one spurt after another of cum into your mouth. Sealing your lips around the tip of his cock you catch every single drop of it and sit back up.'
+			'With the familiar bitter taste in your mouth you look at him, open your mouth for a moment to show him that you got all of it and swallow it all down making it as apparent as possible.'
+			if wl_volya['first_bj'] = 0:
+				*nl
+				wl_volya['first_bj'] = 1
+				'A silent second passes between you, a second more, half a minute until he opens his mouth. "Let''s not talk about it," you say still not sure why you did it. He holds his mouth open for a second or two looking like a fish out of water until he nods.'
+				'You pull out your phone and shifting through your messages until you arrive at the gas station.'
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			elseif $wl_temp = 'prison':
+				killvar '$wl_temp'
+				act 'Exit the the car': gt $wl_loc[0], $wl_loc[1]
+			elseif wl_volya['counter_bj'] < 2 or rand(0,2) = 0:				
+				'"Thanks <<$pcs_nickname>>. I really needed that."'
+				'"No problem," you reply with a smile on your face before you pull out your phone and shifting through your messages until you arrive at the gas station.'
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			else
+				'"Thanks," he says looking utterly satisfied. "Do you want me to return the favor? '+iif(wl_volya['first_finger'] = 1, 'I think, I have proven to you that I can drive with one hand', 'I think, I can drive with one hand')+'." he says while flashing you a cheeky grin.'
+				
+				gs 'willpower', 'sex', 'resist', iif(wl_volya['relationship'] = 0, 'easy', 'hard')
+				if will_cost <= pcs_willpwr:
+					act 'Refuse (<<will_cost>> Willpower)':
+						cla & *nl
+						gs 'willpower', 'pay', 'resist'
+						gs 'stat'
+						'"You don''t have to, at least not today," you reply before you pull out your phone and shifting through your messages until you arrive at the gas station.'
+						
+						gs 'mod_wlife_volya', 'shift_leave_car'
+					end
+				else
+					act 'Refuse (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+				end
+				
+				act 'Accept': wl_temp = 1 & wl_pic_rand = rand(4,5) & gt 'mod_wlife_volya_sex', 'car_fingering'
+			end
+		end
+	end
+end
+
+!!------ Car: Fingering ------
+
+if $ARGS[0] = 'car_fingering':
+	*clr & cla
+	cumnostd = 1
+	wl_orgasm_count = orgasm
+	wl_volya['timer_finger'] = daystart + rand(-2,2)
+	gs 'boystat', 'A904'
+	gs 'arousal', 'foreplay', -2
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_'+iif(wl_pic_rand = 4, '4', '5')+'/undress_'+rand(0,1)+'.mp4"></video></center>'
+	'The mood in the car quickly '+iif(wl_temp = 0, 'changes from relaxed to', 'returns to being')+' sexually charged as he wastes no time to touch you. His hand moves between your legs and rubs over the thin layer of clothing that is separating your pussy from his roaming fingers. "Take of your clothes," he says. You have gotten quite skilled in taking your clothes off inside a car and your pussy is exposed within seconds of his command, ready to be touched.'
+	
+	act 'Spread your legs':
+		*clr & cla
+		wl_time_rand = rand(-12,-2)
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_'+iif(wl_pic_rand = 4, '4', '5')+'/pussy_'+rand(0,2)+'.mp4"></video></center>'
+		'While keeping his eyes fixed on the road his right hand caresses your inner thigh for a few beats of your accelerating heart before moving on to your pussy. For the rest of the '+iif(wl_time_rand < -6, 'long', 'short')+' drive to the gas station he expertly plays with your clit or pushes a finger inside. There is nothing else to do than to let go and concentrate on the tingling sensation between your legs.'
+		$orgasm_txt = 'You close your eyes and throw your head back against the seat when the orgasm washes over you.'
+		gs 'arousal', 'foreplay', wl_time_rand
+		gs 'arousal', 'vaginal_finger', wl_time_rand
+		gs 'arousal', 'end'
+		killvar 'wl_time_rand'
+				
+		if wl_volya['first_finger'] = 0 and orgasm = wl_orgasm_count: 
+			wl_volya['first_finger'] = 1
+			'The ride ends way to early and you didn''t manage to cum. '+iif(pcs_horny > 60, 'Aroused and a', 'A')+' little bit frustrated you slip back into your clothes '+iif(wl_volya['relationship'] = 0, 'thank him and', 'and')+' say goodbye.'
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		elseif wl_volya['first_finger'] = 0 and orgasm > wl_orgasm_count:
+			wl_volya['first_finger'] = 1
+			'You bath a few minutes in the afterglow of your orgasm before you slip back into your clothes, thank Volya and say your goodbyes.'
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		elseif wl_pic_rand = 4 and (orgasm > wl_orgasm_count or pcs_horny > 40) and (wl_volya['fingering_clean'] = 0 or (wl_volya['fingering_clean'] = 1 and rand(0,2) < 2)):
+			'Volya looks at his finger glistening with your pussy juice seemingly not sure what to do with it. Really? A little bit of pussy juice is such a problem? You roll your eyes when you think about how much cum you had to deal with in the last few weeks. Maybe he could try to get cum out of his ass or hair between clients. "Could you help me with that'+iif(wl_volya['fingering_clean'] = 0, '."', ' again."')+' he asks holding his finger near your mouth.'
+			gs 'willpower', 'misc', 'resist', iif(wl_volya['relationship'] = 0, 'easy', 'hard')
+			if will_cost <= pcs_willpwr:
+				act 'Shake your head (<<will_cost>> Willpower)':
+					cla & *nl
+					gs 'willpower', 'pay', 'resist'
+					gs 'stat'
+					'You laugh and shake your head. "Really?" you ask and roll your eyes. "Why don''t you use your jeans," you suggest. "They are brand new," he answers and after a moment hesitation licks his finger clean himself. Boys, you think and roll your eyes again.'
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end	
+			else
+				act 'Shake your head (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+			
+			act 'Lick his finger clean':
+				*clr & cla
+				if wl_volya['fingering_clean'] = 0: wl_volya['fingering_clean'] = 1
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_4/taste.mp4"></video></center>'
+				'You don''t even hesitate for a second before sucking his finger into your mouth and swirl your tongue around it to clean the last drop of your own juices of it.'
+				
+				gs 'mod_wlife_volya', 'shift_leave_car'
+			end
+		elseif wl_pic_rand = 5 and wl_temp = 0 and (wl_volya_bj_return = 0 or (wl_volya_bj_return = 1 and rand(0,1) = 1)):			
+			act 'Get out of the car': minut += 30 & gt 'mod_wlife_highway', 'outside' 
+			
+			gs 'willpower', 'bj', 'self', iif(wl_volya['relationship'] = 0, 'hard', 'easy')
+			if will_cost <= pcs_willpwr:
+				act 'Return the favor (<<will_cost>> Willpower)':
+					*clr & cla
+					swallow += 1
+					if wl_volya_bj_return = 0: wl_volya_bj_return = 1
+					gs 'willpower', 'pay', 'self'
+					gs 'cum_call', 'mouth', 'A904', 1
+					gs 'arousal', 'bj', -5
+					gs 'arousal', 'end'
+					gs 'stat'
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_5/bj_'+rand(0,3)+'.mp4"></video></center>'
+					'"Let me return the favor," you say as Volya parks the car near the gas station. Your hands are already fiddling with the zipper of his jeans. "No, <<$pcs_nickname>>...," he starts to stop you from doing what you are about to do, when his weak resistance falters in seconds as you free his cock from his textile prison and engulf it with your mouth. "This was suppose to be me returning the favor...," he mumbles before closing his eyes and enjoying the feeling of your tongue swirling around the tip of his cock.'
+					'It doesn''t take him very long, having played with your pussy has him already pretty aroused, and after a few minutes he shoots his load into your mouth which you swallow without objection.'
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end	
+			else
+				act 'Return the favor (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			end
+		else
+			'<br>The ride ends way to early and you didn''t manage to cum. A little bit frustrated you slip back into your clothes '+iif(wl_volya['relationship'] = 0, 'thank him and', 'and')+' say goodbye.'
+			gs 'mod_wlife_volya', 'shift_leave_car'
+		end
+		killvar 'wl_pic_rand'
+		killvar 'wl_temp'
+	end
+end
+
+!!------ Car: Sex ------
+
+if $ARGS[0] = 'car_sex':
+	*clr & cla
+	cumnostd = 1
+	if wl_volya['status'] < 5: wl_volya['status'] = 5
+	gs 'boystat', 'A904'
+	gs 'arousal', 'bj', 5
+	gs 'stat'
+	'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/bj_'+rand(0,1)+'.mp4"></video></center>'
+	'You fiddle with the zipper of his pants to free his cock from it. "Find a secluded spot," you tell him as you unbuckle your seatbelt with one hand and stroke his cock with your other. He doesn''t say anything, but you can feel his understanding growing when his cock perks up in your hand.'
+	'He drives off the mainroad onto one of the smaller streets which leads to one of the countless smaller villages in the area while you greedily suck his cock to get him ready for whats about to happen.'
+	*nl
+	'"Stop, we''re here," he tells you and shuts down the engine. Volya has driven the car down an old dirt road leading into a small forest. Both of you get out of the car, but instead of using the backseat he opens up the trunk.'
+	
+	act 'Undress':
+		*clr & cla
+		$orgasm_or = 'no'
+		gs 'arousal', 'vaginal', 5
+		gs 'stat'
+		'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/pussy_start.mp4"></video></center>'
+		'As quickly as possible the two of you loose your clothes without any foreplay or romance involved. This is two people needing to fuck. '+iif($pantyworntype ! 'none', 'You don''t even take the time to take of your panties before you', 'You')+' push him down and get on top of him.'+iif($pantyworntype ! 'none', ' You pull your panties to the side with two fingers and lower', ' You lower')+' yourself onto his dick.'
+		*nl
+		'Fucking in a trunk even one as roomy as Volyas isn''t the most comfortable way to do it and after a few minutes you signal him to switch position.'
+		
+		act 'Continue to fuck him':
+			*clr & cla						
+			'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/pussy_'+rand(0,2)+'.mp4"></video></center>'
+			'His cock feels so good inside you and it''s easy to get lost in the moment. There is nothing else in the word for you than his cock inside your pussy. That you will fuck strangers for money in a few minutes or that Volya broke his own rule'+iif(wl_volya['status'] > 5, ' again ', ' ')+'and fucks you raw doesn''t matter when you can feel warmth rising from your crotch, your toes curl up and a few seconds later an intense orgasm makes your mind go blank and your legs shake.'
+			*nl
+			$orgasm_txt = 'As wave after wave of orgasmic bliss rolls through your body Volya reaches his own point of no return. "Open your mouth," he orders you and your body moves on his own when you do it.' 
+			$orgasm_or = 'custom'
+			gs 'arousal', 'vaginal', 5
+			gs 'arousal', 'vaginal', -5
+			gs 'arousal', 'end'
+			gs 'stat'
+						
+			act 'Continue':
+				*clr & cla
+				facial += 1
+				swallow += 1
+				gs 'cum_call', 'face', 'A904', 1
+				gs 'cum_call', 'mouth', 'A904', 1
+				gs 'stat'
+				'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/end.mp4"></video></center>'
+				'He strokes his cock furiously and shoots his load all over your face and open mouth.'
+				'"Wow, we have to do that again sometime," he tells you looking utterly satisfied. He collects your clothes and throws them next to you in the trunk. "Here, get dressed. We have to go."'
+				
+				act 'Get dressed and clean your face':
+					*clr & cla
+					cumspclnt = 11
+					gs 'cum_cleanup'
+					killvar 'wl_temp'
+					gs 'stat'
+					'<center><video autoplay loop height = 480 src="mod/wlife/images/sex/volya/car/set_3/drive.mp4"></video></center>'
+					'"There should be some tissues in the glove compartment," he says as turns back onto the mainroad to the highway. "Best you get cleaned up before we reach the gas station."'
+					'"Sure," you answer still happy from your orgasm.'
+					'"Also, we didn''t use protection'+iif(wl_volya['status'] > 5, ', again.', '.')+'" He reminds you. "Next time we really should use a condom."'
+					if wl_volya['status'] < 6: 'Next time? You ask yourself. Will there be a next time?'
+					
+					gs 'mod_wlife_volya', 'shift_leave_car'
+				end
+			end
+		end
+	end
+end
+
+--- mod_wlife_volya_sex ---------------------------------

+ 401 - 0
locations/mod_wlife_warehouse.qsrc

@@ -0,0 +1,401 @@
+# mod_wlife_warehouse
+
+$loc = 'mod_wlife_warehouse'
+$locM = 'mod_wlife_warehouse'
+$menu_loc = 'mod_wlife_warehouse'
+
+if $ARGS[0] = 'street':	
+	$metka = 'street'
+	$menu_arg = 'street'
+	menu_off = 0
+	
+	$location_type = 'public_outdoors'
+
+	*clr & cla
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/street_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+	'Vadim Bely''s old warehouse is in a remote part of the industrial area. One of the most run-down parts of Pavlovsk. The house next to it is also part of his operation, but the only entrance is inside the warehouse.'
+		
+	act 'Go back to the industrial area': minut += 5 & gt 'pav_industrial'
+
+	if (week = 7 and hour > 19) or (week = 1 and hour < 6):
+		'<br>Several windows of the house and the warehouse are lit, some members of the gang must be inside.'
+		if week = 7 and wl_georgiy['timer_day'] ! daystart:
+			if wl_shura['status'] < 11: iif(wl_shura['status'] > 0, 'Shura', 'A guy')+' is sitting outside the warehouse smoking a cigarette. '+iif(wl_shura['status'] > 0, '"Georgiy is waiting for you inside," he says pointing at the door.', 'He completely ignores you.')
+			
+			act 'Go inside the warehouse': minut += 1 & gt 'mod_wlife_warehouse', 'warehouse'
+		elseif wl_georgiy['timer_day'] >= (daystart - 1) and wl_shura['status'] < 11:
+			gs 'mod_wlife_warehouse', 'shura_actions'
+		end	
+	elseif week < 7 and wl_iosif['status'] = 0:
+		act 'Go inside the warehouse': gt 'mod_wlife_iosif', 'first_meet'
+	elseif ((week = 2 and hour > 19) or (week = 3 and hour < 6)) and wl_shura['status'] > 1 and wl_shura['status'] < 11:
+		gs 'mod_wlife_warehouse', 'shura_actions'
+	elseif ((week = 2 and hour > 19) or (week = 3 and hour < 6)) and wl_shura['status'] = 11 and wl_shura['ignore_day'] ! daystart:
+		wl_shura['ignore_day'] = daystart
+		if wl_shura['ignore_counter'] < 3 and wl_shura['ignore_day'] ! daystart:
+			wl_shura['ignore_counter'] += 1
+			'<br>Shura is nowhere to be seen.'	
+		elseif wl_shura['ignore_counter'] < 6:
+			wl_shura['ignore_counter'] += 1
+			'<br>There''s still no sign of Shura outside the warehouse.'
+		elseif wl_shura['ignore_counter'] < 7:
+			'<br>Still no Shura in sight. Maybe you should ask somebody if something happened to him?'
+		elseif wl_shura['ignore_counter'] = 7:
+			wl_shura['status'] = 12
+			'<br><b>Developer Note: Shura will return, but for now he doesn''t want to talk to you</b>.'
+		end
+	elseif week < 7 and wl_iosif['status'] > 0:
+		'You aren''t allowed to go inside the warehouse except for your weekly check-in with Georgiy.'
+	else
+		'<br>There is nobody outside and the entrance to the warehouse is locked. Somebody who wouldn''t know that it belongs to the Belys, would assume it was abandoned years ago by its owner. Maybe you should return later.'	
+	end
+	if wl_iosif['timer'] = 1 and hour = 23:	act 'Go to Iosif': gt 'mod_wlife_iosif', 'warehouse_prostitution'
+	if wl_homeless['status'] > 0: act 'Go to the homeless': minut += 3 & gt 'mod_wlife_warehouse', 'homeless_outside'
+	act 'Wait':gs 'obj_din', 'wait'
+end
+
+if $ARGS[0] = 'shura_actions':
+	if wl_shura['timer'] < (daystart - 1) and wl_shura['status'] ! 4: 
+		iif(wl_shura['status'] > 1, 'Shura', 'A guy')+' is '+iif(temper < 10 or sunWeather = 0, 'standing outside the warehouse smoking a cigarette.', 'sitting outside the warehouse in an old armchair.')
+	elseif wl_shura['timer'] < (daystart - 1) and wl_shura['status'] = 4:
+		'Shura is sitting next to the curb drinking vodka.'
+	end
+		
+	if wl_shura['status'] = 0:
+		act 'Approach him': menu_off = 1 & gt 'mod_wlife_shura', 'first_meet_0'
+	elseif wl_shura['status'] = 2 and wl_shura_temp = 0 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & gt 'mod_wlife_shura', 'second_meet_0'
+	elseif wl_shura['status'] = 2 and wl_shura_temp = 1 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & gt 'mod_wlife_shura', 'second_meet_joint_refused'
+	elseif wl_shura['status'] = 3 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & gt 'mod_wlife_shura', 'third_meet_0'
+	elseif wl_shura['status'] = 4 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & wl_shura['status'] = 5 & gt 'mod_wlife_shura', 'regular_outside_0'				
+	elseif wl_shura['status'] = 5 and wl_shura_temp < 2 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & gt 'mod_wlife_shura', 'inside_first_0'
+	elseif wl_shura['status'] = 5 and wl_shura_temp = 2 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & wl_shura_temp = 1 & gt 'mod_wlife_shura', 'regular_outside_0'				
+	elseif wl_shura['status'] > 5 and wl_shura['status'] < 9 and wl_shura['timer'] < (daystart - 1):
+		act 'Talk to Shura': menu_off = 1 & gt 'mod_wlife_shura', 'cuckold_aftermath_0'
+	elseif wl_shura['status'] > 8 and wl_shura['timer'] < (daystart - 1):
+		act 'Visit Shura': 
+			menu_off = 1
+			
+			if wl_shura['status'] = 10 and wl_shura['party'] = 0 and wl_status['main'] > 8 and wl_shura['party_timer'] > rand(1,4) and wl_sacha['status'] = 2:
+				gt 'mod_wlife_shura', 'party_0'
+			elseif wl_shura['status'] = 10 and wl_shura['party'] = 0 and wl_status['main'] > 8 and wl_sacha['status'] = 2:
+				wl_shura['party_timer'] += 1
+			end
+			
+			if sunWeather = 0 or temper < 10:
+				gt 'mod_wlife_shura', 'regular_inside_0'
+			else
+				gt 'mod_wlife_shura', 'regular_outside_0'	
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'homeless_outside':
+	*clr & cla
+	$metka = 'homeless_outside'
+	$menu_arg = 'homeless_outside'
+	menu_off = 0
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/homeless/outside_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+	'Only a few minutes away from the warehouse is the old run-down factory building that is occupied by the <a href="exec: gt ''mod_wlife_warehouse'', ''homeless''">homeless</a> of Pavlovsk.'
+!!	if $wl_homeless['counter'] > 5: iif(wl_katharina_status = 0, 'A young <a href="exec: gt ''mod_wlife_warehouse'', ''katharina''">woman</a> attracts your attention. She throws you pitying looks every now and then.', '')
+		
+	act 'Leave': 
+		if wl_status['main'] > -1:
+			minut += 3 & gt 'mod_wlife_warehouse', 'street'
+		elseif wl_status['main'] = -1:
+			minut += 8 & gt 'pav_industrial'
+		end
+	end
+	
+	if $wl_homeless['like'] > 0 and wl_homeless['timer'] ! daystart and $wl_homeless['counter'] < 10:
+		if $wl_homeless['counter'] < 3:
+			'<br>You haven''t gotten used to having sex with homeless men and are very hesitant to fuck them.'
+			gs 'willpower', iif($wl_homeless['like'] = 2, 'prostitution', 'sex'), 'self', 'hard'
+		elseif $wl_homeless['counter'] < 6:
+			'<br>You haven''t accepted selling yourself to the homeless, but you are slowly getting used to it.'
+			gs 'willpower', iif($wl_homeless['like'] = 2, 'prostitution', 'sex'), 'self', 'medium'
+		else
+			'<br>You haven''t fully accepted selling yourself to the homeless, but you are getting there.'
+			gs 'willpower', iif($wl_homeless['like'] = 2, 'prostitution', 'sex'), 'self', 'easy'
+		end
+		if will_cost <= pcs_willpwr:
+			act 'Do ''community service'' (<<will_cost>> Willpower)': 
+				gs 'willpower', 'pay', 'self'
+				$wl_homeless['sex'] = 'freely'
+				gt 'mod_wlife_punishment', 'homeless_regular'
+			end
+		else
+			act 'Do ''community service'' (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+		end
+	elseif $wl_homeless['like'] > 0 and wl_homeless['timer'] ! daystart and $wl_homeless['counter'] >= 10:
+		act 'Do ''community service'' ': 
+			$wl_homeless['sex'] = 'freely'
+			gt 'mod_wlife_punishment', 'homeless_regular'
+		end
+	end	 
+end
+
+if $ARGS[0] = 'homeless':
+	*clr & cla
+	menu_off = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/homeless/homeless_'+iif(daystage = 5, 'night', 'day')+'.jpg"></center>'
+	'Mostly men but also some women are living inside the abandoned building if you can call that living. Empty vodka bottles and used needles are everywhere, most of the homeless seem to be either alcoholics, drug addicts or both.'
+	
+	act 'Leave': minut += 3 & gt 'mod_wlife_warehouse', 'street'
+end
+
+if $ARGS[0] = 'katharina':
+	*clr & cla
+	menu_off = 1
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="mod/wlife/images/characters/katharina.jpg"></center>'	
+!!ToDo:	only a few years older than you ... kathrina ... scratches her arm/drug use, she knows what sveta is doing, fucking homeless 
+end
+
+if $ARGS[0] = 'warehouse':
+	CLOSE ALL
+	$metka = 'warehouse'
+	$menu_arg = 'warehouse'
+	menu_off = 0
+	
+	$location_type = 'privat'
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/warehouse.jpg"></center>'
+	'The interior of the warehouse is as run-down as the rest of the area. Car parts are everywhere, the roof is leaking and some of the metal parts are rusty. There is a door leading out of the warehouse into the adjacent house.'	
+	
+	if week = 7 and wl_georgiy['timer_day'] ! daystart and (wl_timer['startday'] + 14) < daystart and hour < 23 and (rand(0,2) < 2 or wl_gang['status'] = 0):
+		gt 'mod_wlife_gang', 'random_warehouse'
+	elseif week = 7 and wl_georgiy['timer_day'] ! daystart: 
+		'The warehouse is empty except for Georgiy Bely who is chatting with one of his guys.'
+		act 'Check in with Georgiy': gt 'mod_wlife_georgiy', 'check_in'
+	else
+		act 'Go outside': minut += 1 & gt 'mod_wlife_warehouse', 'street'
+		act 'Go to the adjacent house': minut += 1 & gt 'mod_wlife_warehouse', 'hallway'
+	end
+end
+
+if $ARGS[0] = 'hallway':
+	$metka = 'hallway'
+	$menu_arg = 'hallway'
+	menu_off = 0
+	
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/hallway.jpg"></center>'
+	'The hallway of the old house has seen better days. The paint is peeling off the walls and you aren''t sure, but that looks like mold on one of the walls.'
+	
+	act 'Go back to the warehouse': minut += 1 & gt 'mod_wlife_warehouse', 'warehouse'
+	act 'Go the bathroom': minut += 1 & gt 'mod_wlife_warehouse', 'bathroom'
+	act 'Go to the common room': minut += 1 & gt 'mod_wlife_warehouse', 'common_room'
+	act 'Go to the kitchen': minut += 1 & gt 'mod_wlife_warehouse', 'kitchen'
+	act 'Go to the pantry': minut += 1 & gt 'mod_wlife_warehouse', 'pantry'
+	
+!!	ToDo: Rooms
+!!	bedrooms???
+!! 	attic
+end
+
+if $ARGS[0] = 'kitchen':
+	$metka = 'kitchen'
+	$menu_arg = 'kitchen'
+	menu_off = 0
+
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/kitchen.jpg"></center>'	
+!!ToDo: Description	
+!!	'...'	
+	act 'Leave': minut += 1 & gt 'mod_wlife_warehouse', 'hallway'
+end
+
+if $ARGS[0] = 'common_room':
+	$metka = 'common_room'
+	$menu_arg = 'common_room'
+	menu_off = 0
+
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/common_room.jpg"></center>'
+	'The room is in the same condition as the rest of the house. The TV is probably the most expensive thing in the whole house and worth more than it.'
+	
+!!ToDo: Watch TV, guys watching something
+	
+	act 'Leave': minut += 1 & gt 'mod_wlife_warehouse', 'hallway'
+end
+
+if $ARGS[0] = 'pantry':
+	$metka = 'pantry'
+	$menu_arg = 'pantry'
+	menu_off = 0
+
+	*clr & cla
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/pantry.jpg"></center>'
+	'Vodka, bourbon, more vodka and even some wine is stored inside the small room. You don''t see any food, only some water.'
+			
+	act 'Leave': minut += 1 & gt 'mod_wlife_warehouse', 'hallway'
+	if bottle = 0:
+		act 'Take a bottle of water':
+			*clr & cla
+			minut += 1
+			bottle = 1
+			'<center><img <<$set_imgh>> src="mod/wlife/images/objects/water.jpg"></center>'
+			'You take a bottle of water with you.'
+			gs 'stat'
+			
+			act 'Continue': gt 'mod_wlife_warehouse', 'pantry'
+		end
+	end
+end
+
+if $ARGS[0] = 'bathroom':
+	$metka = 'bathroom'
+	$metkaM = 'bathroom'
+	$menu_arg = 'bathroom'	
+	menu_off = 0
+	
+	$location_type = 'bathroom'
+	
+	*clr & cla	
+	if stanok > 0 and stanok_storage = 0: stanok_storage = stanok & stanok = 2
+	gs 'stat'
+	
+	'<center><img <<$set_imgh>> src="mod/wlife/images/locations/warehouse/bathroom.jpg"></center>'
+	'The bathroom is surprisingly clean but old. It has a small shower.'
+	'There are some razors lying around. You could shave yourself or try a new <a href="exec: gs ''din_van'', ''shave_options''">style</a> for your pubic hair.'
+	*nl
+	'A <a href="exec:gt ''mirror'',''start''">mirror</a> hangs over the sink, where you can '+iif(pcs_hairbsh = 0,'<a href="exec: gt ''mirror'',''brush''">brush</a>','brush')+' your hair.'
+	*nl
+	'The door is missing a key and lacks another way to lock it.'
+	
+	if wl_status['main'] > 0 and (wl_status['main'] ! 6 or (wl_status['main'] = 6 and cumloc[4] = 0)):
+		act 'Leave':
+			minut += 2
+			stanok = 0
+			
+			if stanok_storage > 0:
+				stanok = stanok_storage
+				stanok_storage = 0
+			end
+						
+			if wl_status['main'] = 1:
+				gt 'mod_wlife_story', 'start_aftermath_volya'
+			elseif wl_status['main'] = 7:
+				gt 'mod_wlife_story', 'police_aftermath_georgiy'
+			else
+				gt 'mod_wlife_warehouse', 'hallway'
+			end			
+		end
+	elseif wl_status['main'] < 1:
+		*nl
+		'Your body is still covered in degrading writing.'
+	elseif wl_status['main'] = 6 and cumloc[4] > 0:
+		*nl
+		'Your body is still covered in cum.'
+	end
+	
+	act 'Take a shower (0:15)':
+		*clr & cla
+		menu_off = 1
+		minut += 15
+
+		if wl_status['main'] < 1: 
+			wl_status['main'] = 1
+		elseif wl_status['main'] = 6: 
+			wl_status['main'] = 7
+		end
+		
+		if shampoo < 0: shampoo = 0
+		if frost > 0: frost = 0
+
+		dynamic $showerdin
+
+		body_write = 0
+		face_write = 0
+
+		'<center><video autoplay loop src="images/shared/home/bathroom/dush.mp4"></center>'
+		*nl
+		'You undress and turn on the water in the shower. When it hits the right temperature you enter the shower and let the warm water rain down on you.'
+		'You carefully soap yourself trying not to miss any spot and then wash off.'
+		if hypnoAddict > 0:'You have no reason to, but you carefully avoid cleaning out your pussy and ass.'
+		pcs_horny += rand(0,2)
+		
+		if btwarn > 0:
+			if btwarn = 1: $weightwarn = 'losing'
+			if btwarn = 2: $weightwarn = 'gaining'
+			'<font color="red"><b>You seem to be <<$weightwarn>> weight.</b></font>'
+			killvar '$weightwarn' & btwarn = 0
+		end
+		
+		if lactation['active'] > 0 and pain['nipples'] < 60 and pcs_knowsaboutlactation <= 0:
+			if pcs_usedbreastpumponherself > 0 and pcs_massagedherbreasts <= 0:
+				'During showering you clean your breasts and something catches your eye. White drops come from your nipples. It is milk.<br>Using the breast pump regularily probably made you lactate!'
+				lactation['induced'] = 1
+			elseif pcs_usedbreastpumponherself <= 0 and pcs_massagedherbreasts > 0:
+				'During showering you clean your breasts and something catches your eye. White drops come from your nipples. It is milk. Regularily massaging your breasts probably made you lactate!<br>'
+				lactation['induced'] = 1
+			elseif pcs_usedbreastpumponherself > 0 and pcs_massagedherbreasts > 0:
+				'During showering you clean your breasts and something catches your eye. White drops come from your nipples. It is milk. All that pumping and massaging your breasts probably caused you to lactate!<br>'
+				lactation['induced'] = 1
+			else
+				'During showering you clean your breasts and something catches your eye. White drops come from your nipples. To your surprise it is milk. You started lactating!<br>'
+				if thinkpreg = 1 or knowpreg = 1:
+					'This is probably happening because you are pregnant.'
+				else
+					'You should have this checked out by a doctor. You could be pregnant.'
+				end
+				lactation['induced'] = 0
+			end
+			pcs_usedbreastpumponherself = 0
+			pcs_massagedherbreasts = 0
+			pcs_knowsaboutlactation = 1
+		end
+		
+		gs 'stat'
+		
+		if pcs_horny >= 40:
+			act 'Use the shower head on your pussy':
+				*clr & cla
+				if rand(0, 5) = 0 and obdysh = 1:gt 'vann', 'v4'
+				'<center><video src="images/shared/home/bathroom/wash2.mp4"></center>'
+				*nl
+				'You place the shower head onto your pussy and a powerful jet of warm water begins to caress you.'
+
+				if pcs_inhib < 30:inhib_exp += rand(1,3)
+				pcs_mood += 15
+				$orgasm_or = 'yes'
+				gs 'arousal', 'masturbate', 10
+				gs 'arousal', 'end'
+
+				if hypnoAddict ! 0:
+					'You unconsciously avoid spraying water into your vagina.'
+				else
+					cumspclnt = 8
+					gs 'cum_cleanup'
+				end
+
+				dynamic $dryOff
+			end
+		end
+		dynamic $dryOff
+		dynamic $brit
+	end
+	
+	if wl_status['main'] >= 1 and wl_status['main'] ! 6:
+		dynamic $brit
+		gs 'din_van', 'prvt_pee'
+		dynamic $enema
+		dynamic $tampon
+		dynamic $quickwash
+		dynamic $basin
+		if breastpump > 0 and bp_unbox >= 1: act 'Use breast pump' :gt 'lact_lib', 'bp_milking'
+	end
+end
+
+--- mod_wlife_warehouse ---------------------------------

+ 7 - 0
locations/wlife.code-workspace

@@ -0,0 +1,7 @@
+{
+	"folders": [
+		{
+			"path": ".."
+		}
+	]
+}

BIN
txt2gam.exe


BIN
txt2gam.linux


BIN
txt2gam.mac


BIN
txt2gam64.exe


+ 44 - 0
txtmerge.py

@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# usage: txtmerge.py <input_dir> <output_file_name> 
+# does the exact opposite of txtsplit.py
+
+import os
+import sys
+import re
+import io 
+import xml.etree.ElementTree as ET
+
+assert len(sys.argv) == 3, "usage:\ntxtmerge.py <input_dir> <output_file_name>"
+idir = str(sys.argv[1])
+oname = str(sys.argv[2])
+
+# read the project xml file first
+# let's do this later in order to implement directory structure
+tree = ET.parse('wlife.qproj')
+root = tree.getroot()
+
+
+ofile = io.open(oname, 'w', encoding='utf-16', newline='\r\n')
+
+for location in root.iter('Location'):
+    iname = location.attrib['name']
+    iname = iname.replace("$","_")
+
+    try:
+        ifile = io.open(os.path.join(idir,iname + '.qsrc'), 'rt', encoding='utf-8')
+        text = ifile.read()
+
+        # make sure there's a line at the end of file
+        # (why wouldn't there be one? WINDOWS!
+        if text[-1] != u'\n':
+            text += u'\n\n'
+
+        ofile.write(text)
+        ifile.close()
+    except IOError:
+        print("WARNING: missing location %s" % iname)
+        pass
+
+ofile.close()
+    
+        

+ 46 - 0
txtsplit.py

@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# usage: txtsplit.py <input_file_name> <output_dir>
+# splits a txt2gam file into individual location files
+# encoded in utf-8, for git to better handle
+
+import os
+import sys
+import re
+import io
+import xml.etree.ElementTree as ET
+
+assert len(sys.argv) == 3, "usage:\ntxtsplit.py <input_file_name> <output_dir>"
+iname = str(sys.argv[1])
+odir = str(sys.argv[2])
+
+# read the project xml file first
+# let's do this later in order to implement directory structure
+"""
+tree = ET.parse('glife.qproj')
+root = tree.getroot()
+"""
+
+ifile = io.open(iname, 'rt', encoding='utf-16')
+
+counter = 1
+
+oname = None
+firstline = ifile.readline().replace(u'\ufeff','')
+match = re.search(ur'^#\s(\$?[_.\w]+)$', firstline)
+if match:
+    oname = os.path.join(odir, match.group(1).replace("$","_") + '.qsrc' )
+    counter += 1
+assert oname, "file is in the wrong format, must start with a location name"
+
+ofile = io.open(oname, 'w', encoding='utf-8')
+ofile.write(firstline)
+
+for line in ifile:
+    match = re.search(ur'^#\s(\$?[_.\w]+)$', line)
+    if match:
+        ofile.close()
+        oname = os.path.join(odir, match.group(1).replace("$","_") + '.qsrc' )
+        counter += 1
+        ofile = io.open(oname, 'w', encoding='utf-8')
+    ofile.write(line)
+        

+ 46 - 0
txtsplit3.py

@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+# usage: txtsplit.py <input_file_name> <output_dir>
+# splits a txt2gam file into individual location files
+# encoded in utf-8, for git to better handle
+
+import os
+import sys
+import re
+import io
+import xml.etree.ElementTree as ET
+
+assert len(sys.argv) == 3, "usage:\ntxtsplit.py <input_file_name> <output_dir>"
+iname = str(sys.argv[1])
+odir = str(sys.argv[2])
+
+# read the project xml file first
+# let's do this later in order to implement directory structure
+"""
+tree = ET.parse('glife.qproj')
+root = tree.getroot()
+"""
+
+ifile = io.open(iname, 'rt', encoding='utf-16')
+
+counter = 1
+
+oname = None
+firstline = ifile.readline().replace(u'\ufeff','')
+match = re.search('^#\s(\$?[_.\w]+)$', firstline)
+if match:
+    oname = os.path.join(odir, match.group(1).replace("$","_") + '.qsrc' )
+    counter += 1
+assert oname, "file is in the wrong format, must start with a location name"
+
+ofile = io.open(oname, 'w', encoding='utf-8')
+ofile.write(firstline)
+
+for line in ifile:
+    match = re.search('^#\s(\$?[_.\w]+)$', line)
+    if match:
+        ofile.close()
+        oname = os.path.join(odir, match.group(1).replace("$","_") + '.qsrc' )
+        counter += 1
+        ofile = io.open(oname, 'w', encoding='utf-8')
+    ofile.write(line)
+        

+ 55 - 0
wlife.qproj

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<QGen-project version="5.5.0">
+ <Structure>
+  <Folder name="Base">
+   <Location name="mod_wlife_setup"/>
+   <Location name="mod_wlife_readme"/>
+   <Location name="mod_wlife"/>
+  </Folder>
+  <Folder name="Functions/Data">
+   <Location name="mod_wlife_npc"/>
+   <Location name="mod_wlife_functions"/>
+   <Location name="mod_wlife_phone"/>
+   <Location name="mod_wlife_saveupdater"/>
+   <Location name="mod_wlife_cheatmenu"/>
+  </Folder>
+  <Folder name="Story">
+   <Location name="mod_wlife_story"/>
+   <Location name="mod_wlife_story_sex"/>
+   <Location name="mod_wlife_volya"/>
+   <Location name="mod_wlife_volya_sex"/>
+   <Location name="mod_wlife_georgiy"/>
+   <Location name="mod_wlife_georgiy_sex"/>
+   <Location name="mod_wlife_shura"/>
+   <Location name="mod_wlife_shura_sex"/>
+   <Location name="mod_wlife_sacha"/>
+   <Location name="mod_wlife_sacha_sex"/>
+   <Location name="mod_wlife_iosif"/>
+   <Location name="mod_wlife_iosif_sex"/>
+   <Location name="mod_wlife_maxim"/>
+   <Location name="mod_wlife_maxim_sex"/>
+   <Location name="mod_wlife_nikita"/>
+   <Location name="mod_wlife_okoro"/>
+   <Location name="mod_wlife_okoro_sex"/>
+   <Location name="mod_wlife_thoughts"/>
+   <Location name="mod_wlife_tattoo_piercing"/>
+   <Location name="mod_wlife_mother"/>
+   <Location name="mod_wlife_prison"/>
+   <Location name="mod_wlife_misc"/>
+  </Folder>
+  <Folder name="Locations/Prostitution">
+   <Location name="mod_wlife_highway"/>
+   <Location name="mod_wlife_highway_sex"/>
+   <Location name="mod_wlife_warehouse"/>
+   <Location name="mod_wlife_hotelroom"/>
+   <Location name="mod_wlife_clinic"/>
+   <Location name="mod_wlife_gang"/>  
+   <Location name="mod_wlife_gang_sex"/>
+   <Location name="mod_wlife_demands"/>
+   <Location name="mod_wlife_demands_sex"/>
+   <Location name="mod_wlife_punishment"/>
+   <Location name="mod_wlife_punishment_sex"/>
+   <Location name="mod_wlife_solicitation"/>
+  </Folder>
+ </Structure>
+</QGen-project>

BIN
wlife.qsp


BIN
wlife.txt