Scarlett Schäfer 2 سال پیش
کامیت
a97a3c56a9
100فایلهای تغییر یافته به همراه5751 افزوده شده و 0 حذف شده
  1. 16 0
      .gitignore
  2. BIN
      .vs/Berlin/v16/.suo
  3. 3 0
      .vs/ProjectSettings.json
  4. 6 0
      .vs/VSWorkspaceState.json
  5. BIN
      .vs/slnx.sqlite
  6. 25 0
      .vscode/tasks.json
  7. 13 0
      MakeQSP.bat
  8. 1 0
      README.md
  9. 8 0
      cws.code-workspace
  10. 3 0
      desktop.ini
  11. BIN
      misc/Names.xlsx
  12. 10 0
      source/effect/tv.qsps
  13. 21 0
      source/event/apartment/janitor/introduction.qsps
  14. 76 0
      source/event/apartment/janitor/introductionAfterSwap.qsps
  15. 519 0
      source/event/barwitch.qsps
  16. 35 0
      source/event/bed.qsps
  17. 3 0
      source/event/cosmetics.qsps
  18. 71 0
      source/event/mirror.qsps
  19. 30 0
      source/event/shower.qsps
  20. 307 0
      source/event/slaveOwned.qsps
  21. 71 0
      source/event/sleep.qsps
  22. 145 0
      source/event/tv.qsps
  23. 9 0
      source/event/university/course.qsps
  24. 50 0
      source/event/university/enroll.qsps
  25. 68 0
      source/event/university/gender/course.qsps
  26. 36 0
      source/event/university/gender/experiment.qsps
  27. 101 0
      source/event/university/gender/experiment_bj.qsps
  28. 179 0
      source/event/university/gender/experiment_cuckold.qsps
  29. 22 0
      source/event/university/gender/experiment_phone.qsps
  30. 56 0
      source/event/university/gender/experiment_punish.qsps
  31. 158 0
      source/event/university/gender/experiment_shave.qsps
  32. 306 0
      source/event/university/gender/experiment_start.qsps
  33. 197 0
      source/event/university/gender/experiment_strapon.qsps
  34. 4 0
      source/gameLoad.qsps
  35. 80 0
      source/inventory/magazin_porn.qsps
  36. 16 0
      source/inventory/magazin_women.qsps
  37. 16 0
      source/inventory/snack.qsps
  38. 16 0
      source/inventory/softdrink.qsps
  39. 18 0
      source/item/bra1.qsps
  40. 15 0
      source/item/casual_male1.qsps
  41. 329 0
      source/item/dress1.qsps
  42. 252 0
      source/item/jeans1.qsps
  43. 18 0
      source/item/panties1.qsps
  44. 19 0
      source/item/shoes1.qsps
  45. 14 0
      source/item/shoes_business1.qsps
  46. 11 0
      source/item/underpants1.qsps
  47. 24 0
      source/location/citycenter/cityCenterBar.qsps
  48. 25 0
      source/location/citycenter/citycenter.qsps
  49. 28 0
      source/location/citycenter/citycenterKebap.qsps
  50. 14 0
      source/location/citycenter/citycenterMall.qsps
  51. 26 0
      source/location/citycenter/citycenterMallFN.qsps
  52. 18 0
      source/location/citycenter/citycenterSubway.qsps
  53. 19 0
      source/location/industrial/industrial.qsps
  54. 13 0
      source/location/industrial/industrialSubway.qsps
  55. 20 0
      source/location/north/centralStation.qsps
  56. 20 0
      source/location/north/charite/charite.qsps
  57. 17 0
      source/location/north/charite/chariteEmergency.qsps
  58. 13 0
      source/location/north/northSubway.qsps
  59. 34 0
      source/location/residential/apartment/apartment.qsps
  60. 17 0
      source/location/residential/apartment/bath.qsps
  61. 29 0
      source/location/residential/apartment/bedroom.qsps
  62. 86 0
      source/location/residential/apartment/kitchen.qsps
  63. 23 0
      source/location/residential/residential.qsps
  64. 13 0
      source/location/residential/residentialSubway.qsps
  65. 164 0
      source/location/residential/residentialSupermarket.qsps
  66. 33 0
      source/location/template/kiosk.qsps
  67. 95 0
      source/location/template/subway.qsps
  68. 10 0
      source/location/university/kiosk.qsps
  69. 56 0
      source/location/university/university.qsps
  70. 25 0
      source/location/western/university_gender_guide_home/university_gender_guide_home.qsps
  71. 28 0
      source/location/western/western.qsps
  72. 16 0
      source/location/western/westernSubway.qsps
  73. 26 0
      source/location/woods.qsps/shackInterior.qsps
  74. 13 0
      source/location/zoo/zooSubway.qsps
  75. 12 0
      source/module/dahlem/location/dahlem.qsps
  76. 10 0
      source/module/school/effect/genderswap.qsps
  77. 10 0
      source/module/school/effect/genderswap_positive.qsps
  78. 31 0
      source/module/school/event/blackmail.qsps
  79. 105 0
      source/module/school/event/intro/court.qsps
  80. 188 0
      source/module/school/event/intro/doctor.qsps
  81. 114 0
      source/module/school/event/intro/guide.qsps
  82. 90 0
      source/module/school/event/intro/psychologist.qsps
  83. 7 0
      source/module/school/event/intro/start.qsps
  84. 148 0
      source/module/school/event/npc/guide.qsps
  85. 83 0
      source/module/school/event/npc/janitor.qsps
  86. 39 0
      source/module/school/event/npc/pierre.qsps
  87. 53 0
      source/module/school/event/npc/psychologist.qsps
  88. 294 0
      source/module/school/event/party.qsps
  89. 46 0
      source/module/school/item/eventitems.qsps
  90. 21 0
      source/module/school/location/dorm/0hallway.qsps
  91. 29 0
      source/module/school/location/dorm/211.qsps
  92. 16 0
      source/module/school/location/dorm/2bath.qsps
  93. 17 0
      source/module/school/location/dorm/2hallway.qsps
  94. 15 0
      source/module/school/location/dorm/302.qsps
  95. 17 0
      source/module/school/location/dorm/3hallway.qsps
  96. 15 0
      source/module/school/location/dorm/basement.qsps
  97. 20 0
      source/module/school/location/dorm/exterior.qsps
  98. 83 0
      source/module/school/location/dorm/kitchen.qsps
  99. 17 0
      source/module/school/location/dorm/living.qsps
  100. 13 0
      source/module/school/location/school/classroom.qsps

+ 16 - 0
.gitignore

@@ -0,0 +1,16 @@
+.git/*
+
+media/*
+Rubbish/*
+Qqsp-1.9.0-win64/*
+
+~*
+
+*.lnk
+*.sav
+
+qqsp.ini
+
+*.qsp
+
+raw.txt

BIN
.vs/Berlin/v16/.suo


+ 3 - 0
.vs/ProjectSettings.json

@@ -0,0 +1,3 @@
+{
+  "CurrentProjectSetting": null
+}

+ 6 - 0
.vs/VSWorkspaceState.json

@@ -0,0 +1,6 @@
+{
+  "ExpandedNodes": [
+    ""
+  ],
+  "PreviewInSolutionExplorer": false
+}

BIN
.vs/slnx.sqlite


+ 25 - 0
.vscode/tasks.json

@@ -0,0 +1,25 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "MakeQSP",
+            "type": "shell",
+            "command": "./MakeQSP.bat",
+            "presentation": {
+                "echo": true,
+                "reveal": "always",
+                "focus": false,
+                "panel": "shared",
+                "showReuseMessage": false,
+                "clear": true
+            },
+            "group": {
+                "kind": "build",
+                "isDefault": true
+            },
+            "problemMatcher": []
+        }
+    ]
+}

+ 13 - 0
MakeQSP.bat

@@ -0,0 +1,13 @@
+
+:build
+echo.
+echo Building ...
+
+@ECHO ON
+python txtmerge.py source raw.txt
+txt2gam.exe raw.txt berlin.qsp > nul
+
+echo Build complete
+@ECHO OFF
+start Qqsp.exe.lnk %~dp0berlin.qsp
+:exit

+ 1 - 0
README.md

@@ -0,0 +1 @@
+Germania Vice

+ 8 - 0
cws.code-workspace

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

+ 3 - 0
desktop.ini

@@ -0,0 +1,3 @@
+[.ShellClassInfo]
+InfoTip=MEGA-synchronisierter Ordner
+IconResource=C:\Users\c_hof\AppData\Local\MEGAsync\MEGAsync.exe,3

BIN
misc/Names.xlsx


+ 10 - 0
source/effect/tv.qsps

@@ -0,0 +1,10 @@
+# effect_tv
+
+if $ARGS[0] = 'load':
+    $effectData['label'] = 'TV'
+    effectData['maxDuration'] = 7200
+    effectData['mood'] = 500
+    $effectData['type'] = 'entertainment'
+end
+
+-

+ 21 - 0
source/event/apartment/janitor/introduction.qsps

@@ -0,0 +1,21 @@
+# event_apartment_janitor_introduction
+
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''apartmentJanitor''">'
+    gs 'util_image','render_image','npc/apartmentJanitor/janitor(0).jpg'
+    *P '</a>'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','Who do we have here? The new tenant.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','I hope you don''t intend to make any trouble. Me and my dachshund Dobo here will make sure everything stays morally around here.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','And donn''t even think about becomming one of these lazy hippies like the ones on the second floor.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','Anyways, here are your keys.'
+
+    act 'Enter apartment':
+        gt 'util_event','end','residential_aparment'
+    end
+end
+
+-

+ 76 - 0
source/event/apartment/janitor/introductionAfterSwap.qsps

@@ -0,0 +1,76 @@
+# event_apartment_janitor_introductionAfterSwap
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','npc/apartmentJanitor/janitor(0).jpg'
+
+    'On the way to your apartment you run into the janitor in the hallway.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','And who do we have here? Might I ask who you are, young Lady?'
+
+    act 'Introduce as your male self':
+        xgt 'event_apartment_janitor_introductionAfterSwap','male'
+    end
+
+    act 'Introduce as your girlfriend':
+        xgt 'event_apartment_janitor_introductionAfterSwap','girlfriend'
+    end
+
+    act 'Introduce as your sister':
+        xgt 'event_apartment_janitor_introductionAfterSwap','sister'
+    end
+elseif $ARGS[0] = 'girlfriend':
+    'I am here to visit oldname. He is my boyfriend.'
+
+    'He begins to smile.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','The sister. Of course, of course. I hope you apologize my curiosity. My job is to make sure that everything stays morally around here. And if a young woman ... who knows ... there are so many lost souls who work in the horizontal business.'
+
+    'He apparently believes your story.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','Not that you would do such a thing. Of course not. Please enjoy the visit at your boyfriend.'
+
+    act 'Leave':
+        gs 'event_apartment_janitor_introductionAfterSwap','end'
+    end
+elseif $ARGS[0] = 'male':
+    'We met before. I am oldname'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','What? Do you hold me for a fool? I know what oldname looks like.'
+
+    'I takes a closer look at you.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','I my times we knew who was a man and who was a woman. There was no funny business. And if a young man dressed up as a girl his old man set him straight.'
+
+    'He comes one step closer. You can now smell his breath. It smells like cheap beer and cabbage.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','But no. Not even one of this weirdos could change this much. You are a girl, that''s for sure. So I''m asking again: who are you?'
+
+    act 'Introduce as your girlfriend':
+        xgt 'event_apartment_janitor_introductionAfterSwap','girlfriend'
+    end
+
+    act 'Introduce as your sister':
+        xgt 'event_apartment_janitor_introductionAfterSwap','sister'
+    end
+elseif $ARGS[0] = 'sister':
+    'I am here to visit oldname. He is my brother.'
+
+    'He begins to smile.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','The sister. Of course, of course. I hope you apologize my curiosity. My job is to make sure that everything stays morally around here. And if a young woman ... who knows ... there are so many lost souls who work in the horizontal business.'
+
+    'He runs his eyes up and down your body. His stare makes you feel uncomfortable.'
+
+    gs 'util_npc','render_dialogue','apartmentJanitor','Not that you would do such a thing. Of course not. Please enjoy the visit at your brother. And just inform me if there is anything I could help you with. I am always happy to help.'
+
+    act 'Leave':
+        gs 'event_apartment_janitor_introductionAfterSwap','end'
+    end
+elseif $ARGS[0] = 'end':
+
+    gs 'util_interrupt','del','ALL','residential_aparment','apartment_janitor_introductionAfterSwap'
+
+    gt 'util_event','end','residential_aparment'
+end
+
+-

+ 519 - 0
source/event/barwitch.qsps

@@ -0,0 +1,519 @@
+# event_barwitch
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','events/barwitch/witch3.jpg'
+
+    *PL 'You walk over to the young goth and start a conversation. You talk for half an hour but it''s mostly you who is talking. It is hard to keep track of what you are saying. Somehow you are lost in her beautiful eyes.'
+
+    *PL 'She only listens and nods from time to time while nipping at her drink.'
+
+    *PL '"Okay." she says abruptly. "Lets go to my place!" It wasn''t a question. She is commanding you.'
+
+    *PL 'You feel the urge to follow her. But a quite voice in your head warns you that this person might be dangerous.'
+
+    act 'Follow her':
+        gt 'event_barwitch','outside'
+    end
+
+    act 'Decline':
+        event_barwitch_fail = 1
+        gs 'util_time','pass',600
+        gt 'util_event','end'
+    end
+
+elseif $ARGS[0] = 'outside':
+    gs 'util_image','render_image','events/barwitch/outside.jpg'
+
+    *PL 'She leads you outside and the two of you take a TAXI. After some minutes you reach a lost industrial area.'
+
+    *PL 'You step out of the TAXI and your companion sends it off. You realize that you don''t even know her name. What are you doing here?'
+
+    *PL 'And does she really live here? There are ruins!'
+
+    *PL 'She must have guessed your thoughts. "No, that''s not where I live. But I have prepared something for us in there. You don''t want to miss it."'
+
+    act 'Follow her':
+        gt 'event_barwitch','inside'
+    end
+
+    act 'Decline':
+        event_barwitch_fail = 1
+        gs 'util_time','pass',2400
+        gt 'util_event','end','industrial'
+    end
+elseif $ARGS[0] = 'inside':
+    gs 'util_image','render_image','events/barwitch/inside.jpg'
+
+    *PL 'You follow her inside. She leads you down into the basement. God thing she has a flashlight with her or you wouldn''t be able to see anything.'
+
+    *PL 'After another turn she is suddenly gone. How could she have vanished?!'
+
+    *PL 'There is a door in front of you. She must have entered it. Have you been so slow? She was right in front of you after all.'
+
+    act 'Open door':
+        gt 'event_barwitch','room'
+    end
+
+    act 'Run away':
+        gt 'event_barwitch','run'
+    end
+
+elseif $ARGS[0] = 'room':
+    gs 'util_image','render_image','events/barwitch/room.jpg'
+
+    *PL 'You open the door. Behind it lies what appears to be a satanic shrine. There are pentagrams drawn all over the place and red candles emit a weak red light.'
+
+    *PL 'Before you can realize what happens you hear a swift sound near your head, followed by a sharp pain in your back head.'
+
+    *PL 'The world goes black.'
+
+    act '...':
+        gt 'event_barwitch','sacrifice'
+    end
+
+elseif $ARGS[0] = 'run':
+    gs 'util_image','render_image','events/barwitch/room.jpg'
+
+    *PL 'This is getting too spooky for your taste. As you turn around to run away you hear a swift sound near your head, followed by a sharp pain in your back head.'
+
+    *PL 'With the last bit of consciousness you see the door being opened. Behind it lies what appears to be a satanic altar. The world goes black.'
+
+    act '...':
+        gt 'event_barwitch','sacrifice'
+    end
+elseif $ARGS[0] = 'sacrifice':
+    gs 'util_image','render_image','events/barwitch/knife.jpg'
+
+    *PL 'You awaken. Where are you? You open your eyes, only to see the goth girl standing above you, holding a bloody knife in her hand.'
+
+    *PL 'You panic. You try to stand up, but you are chained to the ground. You can''t even make a sound. Something nasty tasting fills your mouth and you can''t push it out.'
+
+    *PL 'You can''t even turn your head enough to see your body, but the cold air on your skin makes it clear that you are completely naked.'
+
+    *PL 'At least you don''t feel any pain. Hopefully that''s not your blood on this knife.'
+
+    act '...':
+        gt 'event_barwitch','sacrifice2'
+    end
+
+elseif $ARGS[0] = 'sacrifice2':
+    gs 'util_image','render_image','events/barwitch/knife2.jpg'
+
+    *PL 'The girls recites some sort of poem in a language you don''t understand. Is it a spell?'
+
+    *PL 'She get louder and louder while kneeling down above your crotch. You feel her warm soft lips embracing your stonehard member. Of can you be excited right now?'
+
+    *PL 'She starts riding you like a cowgirl while continuing to recite her spell. She still holds her knife in one hand, while she places a green gem between her own eyes. It stays in place as if it were glued on.'
+
+    *PL 'Suddenly she creams out and rams her knife into your heart. The last thing you hear are her painful screams.'
+
+    act '...':
+        gt 'event_barwitch','wake'
+    end
+
+elseif $ARGS[0] = 'wake':
+    event_barwitch_breasts = ARGS[1]
+
+    gs 'util_image','render_image','events/barwitch/wake.jpg'
+
+    *PL 'You wake up once again. How are you not dead? Your body feels weird. Very weird. But you are not in pain.'
+
+    *PL 'You reach for your chest. Didn''t this crazy girl stab you?'
+
+    *PL 'Wait, what is this?! What is on your chest? It feels like some sort of soft weight. Yet it is sensible to your touch. Just as if...'
+
+    if event_barwitch_breasts <= -2:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of petite <b>A-cup</b> boobs!'
+    elseif event_barwitch_breasts = -1:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of average-sized <b>B-cup</b> boobs!'
+    elseif event_barwitch_breasts = 0:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of average-sized <b>C-cup</b> boobs!'
+    elseif event_barwitch_breasts = 1:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of above-average <b>D-cup</b> boobs!'
+    elseif event_barwitch_breasts = 2:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of big <b>DD-cup</b> boobs!'
+    elseif event_barwitch_breasts = 3:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of huge <b>E-cup</b> boobs!'
+    elseif event_barwitch_breasts >= 4:
+        *PL 'You open your eyes. And you were not mistaken! You have a pair of gigantic <b>F-cup</b> boobs!'
+    end
+
+    *PL '<font color=blue>You can customize the female character you will be playing with some of the options in the following steps.</font>.'
+
+    act 'Continue':
+        gt 'event_barwitch','genitals'
+    end
+
+    if event_barwitch_breasts < 4:
+        act '<font color=blue>Bigger Breasts</font>':
+            gt 'event_barwitch','wake',event_barwitch_breasts+1
+        end
+    end
+
+    if event_barwitch_breasts > -2:
+        act '<font color=blue>Smaller Breasts</font>':
+            gt 'event_barwitch','wake',event_barwitch_breasts-1
+        end
+    end
+
+elseif $ARGS[0] = 'genitals':
+    gs 'util_image','render_image','events/barwitch/genital.jpg'
+
+    *PL 'In shock you reach down. And your fears came true. Your dick is gone.'
+
+    *PL 'You feel your fingers searching for your lost member on your pussylips. It is an alien but not uncomfortable feeling. What the hell happened?!'
+
+    *PL 'You lean up and take a closer look at your body. Your hands, your chest, your legs... there can be no doubt. You are in this strange girls body!'
+
+    *PL 'Is this an haluzination? What happened? Where are you?'
+
+    act 'Continue':
+        gt 'event_barwitch','stand'
+    end
+elseif $ARGS[0] = 'stand':
+    if ARGS[1] > -100:
+        event_barwitch_hairlength = ARGS[1]
+    end
+
+    if $ARGS[2] ! '':
+        $event_barwitch_haircolor = $ARGS[2]
+    else
+        $event_barwitch_haircolor = 'black'
+    end
+
+    gs 'util_image','render_image','events/barwitch/stand.jpg'
+
+    *PL 'You try to stand up. It feels very uncommon. You are not used to this body and the new weight distribution makes you totter a little bit.'
+
+    if event_barwitch_hairlength <= -3:
+        *PL 'As you are now standing upright you don''t feel any change in the flow of your hair. You remember that the girl had <<$event_barwitch_haircolor>> very short hair.'
+    elseif event_barwitch_hairlength = -2:
+        *PL 'As you are now standing upright you don''t feel any change in the flow of your hair. You remember that the girl had <<$event_barwitch_haircolor>> short hair.'
+    elseif event_barwitch_hairlength = -1:
+        *PL 'As you are now standing upright your hair falls down on your shoulders. You can see it from the corner of your eyes. It is <<$event_barwitch_haircolor>>.'
+    elseif event_barwitch_hairlength = 0:
+        *PL 'As you are now standing upright your hair falls down on your breasts. The tips reach your nipples. It is <<$event_barwitch_haircolor>>.'
+    elseif event_barwitch_hairlength = 1:
+        *PL 'As you are now standing upright your hair falls down on your breasts. The tips reach your belly button. It is <<$event_barwitch_haircolor>>.'
+    elseif event_barwitch_hairlength = 2:
+        *PL 'As you are now standing upright your hair falls down on your breasts. The tips reach your buttocks. It is <<$event_barwitch_haircolor>>.'
+    elseif event_barwitch_hairlength >= 3:
+        *PL 'As you are now standing upright your hair falls down on your breasts. The tips reach your knees. It is <<$event_barwitch_haircolor>>.'
+    end
+
+    act 'Continue':
+        gt 'event_barwitch','mirror'
+    end
+
+    if event_barwitch_hairlength < 3:
+        act '<font color=blue>Longer Hair</font>':
+            gt 'event_barwitch','stand',event_barwitch_hairlength+1,$event_barwitch_haircolor
+        end
+    end
+
+    if event_barwitch_hairlength > -3:
+        act '<font color=blue>Shorter Hair</font>':
+            gt 'event_barwitch','stand',event_barwitch_hairlength-1,$event_barwitch_haircolor
+        end
+    end
+
+    if $event_barwitch_haircolor ! 'black':
+        act '<font color=blue>Black Hair</font>':
+            gt 'event_barwitch','stand',-100,'black'
+        end
+    end
+
+    if $event_barwitch_haircolor ! 'blond':
+        act '<font color=blue>Blond Hair</font>':
+            gt 'event_barwitch','stand',-100,'blond'
+        end
+    end
+
+    if $event_barwitch_haircolor ! 'brown':
+        act '<font color=blue>Brown Hair</font>':
+            gt 'event_barwitch','stand',-100,'brown'
+        end
+    end
+
+    if $event_barwitch_haircolor ! 'red':
+        act '<font color=blue>Red Hair</font>':
+            gt 'event_barwitch','stand',-100,'red'
+        end
+    end
+elseif $ARGS[0] = 'mirror':
+    gs 'util_image','render_image','events/barwitch/mirror.jpg'
+    'TODO: Face selection'
+    *PL 'You take a look around. You are still in this weird room in the old industrial complex.'
+
+    *PL 'Not much time could have passed. Most of the candles are still burning.'
+
+    *PL 'Looking around you see a dead chicken on the ground. That''s where the bllod on the knife must have come from before...'
+
+    *PL '... before it stabbed you. Speaking of your body. It is nowhere to be seen.'
+
+    *PL 'Instead you see a big mirror in one edge of the room. You step closer to take a look at yourself.'
+
+    *PL 'You were not mistaken. You are in the body of the got girl that brought you here!'
+
+    *PL 'From the other side of the mirror a young girl is looking back at you.'
+
+    act 'Continue':
+        gt 'event_barwitch','getdressed'
+    end
+
+elseif $ARGS[0] = 'getdressed':
+    *PL 'Obviously you can''t stay in this room. You look around for some clothes you could put on.'
+
+    *PL 'On a pile you see the clothes of your old self. The girl must have left them there after she undressed you.'
+
+    *PL 'Alternatively you could put the girls clothes on.'
+
+    act 'Put on your (male) clothes':
+        gt 'event_barwitch','getdressed_male'
+    end
+
+    act 'Put on the girls (female) clothes':
+        gt 'event_barwitch','getdressed_female'
+    end
+
+elseif $ARGS[0] = 'getdressed_female':
+
+    *PL 'You pick up the dress and the undies on the floor. The dress is clearly designed for seduction purposes. Wearing it would show way more skin that you would be comofrtable with.'
+
+    *PL 'After a short hesitation you decide that it''s not worth it. You might be stuck in the body for now, but that doesn''t mean that you also have to dress accordingly.'
+
+    act 'Put on your (male) clothes instead':
+        gt 'event_barwitch','getdressed_male'
+    end
+
+elseif $ARGS[0] = 'getdressed_male':
+
+    *PL 'You pick up your clothes and put them on. Of course they don''t fit you. They are several sizes too big.'
+
+    *PL 'Your shirt rubs your nipples, making them uncomfortably stiff.'
+
+    *PL 'Once you are done dressing yourself you inspect yourself in the mirror. You look like a tomboy.'
+
+    act 'Put on shoes':
+        gt 'event_barwitch','shoes'
+    end
+elseif $ARGS[0] = 'shoes':
+    gs 'util_image','render_image','events/barwitch/boots.jpg'
+    *PL 'Lastly you need to put on shoes. Wearing your own shoes would be quite uncomfortable. They are way too big for your feet.'
+
+    *PL 'You pick up the boots on the floor. Of course they are your size, so you don''t have any problem slipping your feet into them while sitting down.'
+
+    *PL 'The real problem is standing up. You realize that you would have a hard time standing in these boots. And walking in them would be next to impossible.'
+
+    *PL 'With a sigh of annoyance you put them back off and put your own shoes on. Your feet will start to hurt soon, but at least you can walk this way.'
+
+    act '...':
+        gt 'event_barwitch','id'
+    end
+
+elseif $ARGS[0] = 'id':
+    gs 'util_image','render_image','events/barwitch/id.jpg'
+
+    if $event_barwitch_name_first = '':
+        $event_barwitch_name_first = 'Janine'
+    end
+
+    if $event_barwitch_name_last = '':
+        $event_barwitch_name_last = 'Bauer'
+    end
+
+    *PL 'Next to the door you see the handbag of the girl whose body you now posess. Interesting. Maybe you could find some leads to changing into your old body in there.'
+
+    *PL 'You open the bag. It contains some keys and a wallet. You open the wallet and take a look at the ID card.'
+
+    *PL 'Apparently the name of the girl is <<$event_barwitch_name_first>> <<$event_barwitch_name_last>>.'
+
+    act 'Continue':
+        gt 'event_barwitch','prepareLeave'
+    end
+
+    act '<font color=blue>Change First Name</font>':
+        $event_barwitch_name_first = INPUT('First Name')
+        gt 'event_barwitch','id'
+    end
+
+    act '<font color=blue>Change Last Name</font>':
+        $event_barwitch_name_last = INPUT('Last Name')
+        gt 'event_barwitch','id'
+    end
+
+elseif $ARGS[0] = 'prepareLeave':
+    gs 'util_image','render_image','events/barwitch/bag.jpg'
+    *PL 'You also see the address of the girl on her id card. It is not far away. Maybe you could get some answers there? Maybe she is there right now in your body? But why would she have left all her stuff and your clothes behind then?'
+
+    *PL 'You pick up her clothes and boots and place them inside her bag. The gem I used during the ceromony lies on the ground. You place it in the bag as well.'
+
+    *PL 'It seems as if you have everything you might need. You hesitate as you reach for the door. What if somebody sees you like this? '
+
+    act 'Leave':
+        gt 'event_barwitch','leave'
+    end
+
+elseif $ARGS[0] = 'leave':
+    gs 'util_image','render_image','events/barwitch/street.jpg'
+
+    *PL 'You leave the room and go back the way you came. It doesn''t take long before you are at the street again.'
+
+    *PL 'It has gotten pretty late and thankfully there are next to no people left on the streets.'
+
+    *PL 'You hurry to the addess you from the id card. Every step you take reminds you that you are wearing too big shoes and your breasts in front of your chest still feel weird as they swing in the rhythm of your steps.'
+
+    act 'Continue':
+        gt 'event_barwitch','flat'
+    end
+
+elseif $ARGS[0] = 'flat':
+    gs 'util_image','render_image','events/barwitch/flat.jpg'
+
+    *PL 'You finally arrive at the right address. It is an old ugly house. It doesn''t look like somebody lives here. You take the keys from the bag after a few trys you find the right one to open the front door.'
+
+    *PL 'Climbing up the stairwell you look at every door sign. At the 3rd floor you finally find the right name and after another set of try you manage to open the door.'
+
+    *PL 'You enter it only to be shocked. There is only one big room and it looks extremely dirty. There are damaged pieces of furniture and on the floor is debris.'
+
+    *PL 'In one corner of the room you see a pile of clothes. There is also a table with a book on top of it.'
+
+    act 'Inspect Clothes':
+        gt 'event_barwitch','clothes'
+    end
+
+    act 'Take a look at the book on the table':
+        gt 'event_barwitch','book'
+    end
+
+elseif $ARGS[0] = 'clothes':
+    gs 'util_image','render_image','events/barwitch/clothes.jpg'
+
+    *PL 'You take a closer look at the clothes. To your surprise they are fresh. You see a jeans and a shirt as well as some sneakers.'
+
+    *PL 'Maybe it would be a good idea to change into these clothes? They should fit you way better.'
+
+    act 'Change Clothes':
+        event_barwitch_clothes = 1
+        gt 'event_barwitch','clothes2'
+    end
+
+    
+
+    if event_barwitch_book_done = 1:
+        act 'Leave Apartment':
+            gt 'event_barwitch','leaveApartment'
+        end
+    else
+        act 'Take a look at the book on the table':
+            event_barwitch_clothes_done = 1
+            gt 'event_barwitch','book'
+        end
+    end
+
+elseif $ARGS[0] = 'clothes2':
+    gs 'util_image','render_image','events/barwitch/clothes.jpg'
+
+    if event_barwitch_clothes = 1:
+        *PL 'Now that you are wearing the female clothes you have placed your old clothes on the ground. You could change into them again.'
+        act 'Change Clothes':
+            event_barwitch_clothes = 0
+            gt 'event_barwitch','clothes2'
+        end
+    elseif event_barwitch_clothes = 0:
+        *PL 'You are wearing your male clothes, but you could also put on the more comfortable female clothes on the ground.'
+        act 'Change Clothes':
+            event_barwitch_clothes = 1
+            gt 'event_barwitch','clothes2'
+        end
+    end
+
+    if event_barwitch_book_done = 1:
+        act 'Leave Apartment':
+            gt 'event_barwitch','leaveApartment'
+        end
+    else
+        act 'Take a look at the book on the table':
+            event_barwitch_clothes_done = 1
+            gt 'event_barwitch','book'
+        end
+    end
+
+elseif $ARGS[0] = 'book':
+    gs 'util_image','render_image','events/barwitch/book.jpg'
+
+    *PL 'The book on the table seems to be very old. It has at least thousand pages and is opened. You see some drawings on the pages, but the words are written in a language you don''t know.'
+
+    *PL 'You conclude that this might be some kind of spell book. You place it in your bag. Maybe you need it later.'
+    event_barwitch_book_done = 1
+    if event_barwitch_clothes_done = 1:
+        act 'Leave Apartment':
+            gt 'event_barwitch','leaveApartment'
+        end
+        act 'Inspect Clothes':
+            gt 'event_barwitch','clothes2'
+        end
+    else
+        act 'Inspect Clothes':
+            gt 'event_barwitch','clothes'
+        end
+    end
+
+elseif $ARGS[0] = 'leaveApartment':
+    gs 'util_image','render_image','events/barwitch/choke.jpg'
+
+    *PL 'There is nothing more you could do here. A little dissapointed you open the door to leave the apartment again.'
+
+    *PL 'Just as you step outside you feel some kind of rope being put over your head. Too fast to react it gets tightened.'
+
+    *PL 'You panic, which makes it easy for the assailant who must have waited in the house floor to push you to your knees.'
+
+    *PL 'Breathing is hard with the rope around your neck. You reach for the rope, but there is no way to escape. You are completely at this strangers mercy now.'
+
+    act '...':
+        gt 'event_barwitch','choked'
+    end
+elseif $ARGS[0] = 'choked':
+    gs 'util_image','render_image','events/barwitch/choke.jpg'
+
+    *PL '"Stupid bitch! I didn''t think you would be stupid enough to come back here."'
+
+    *PL 'The rope gets tightened even more. You panic. You don''t get any air.'
+
+    *PL 'After what feels like an eternity the rope gets loosened a little again.'
+
+    *PL '"I want my money. And since you are such a deceitful cunt I will add 1.000€ to your debt. You might call it cunt tax."'
+
+    *PL 'The man pushes his knee into your back, forcing you to bend over. He pushes your face on the dirty ground and places his shoe on your neck.'
+
+    *PL '"6.000€. Cash. Next week. Or the will be conequences. Dire consequences."'
+
+    *PL 'He releases you and walks down the stairwell. You haven''t even seen his face. What kind of madness was that?!'
+
+    act 'Leave':
+        gs 'util_gender','set_body_female'
+
+        gs 'util_body','chest_size_set',event_barwitch_breasts
+        gs 'util_body','hair_head_set',event_barwitch_hairlength
+        $body_hair_head_color = $event_barwitch_haircolor
+
+        $alterEgo_name_first['original'] = $name_first
+        $alterEgo_name_last['original'] = $name_last
+
+        $name_first = $event_barwitch_name_first
+        $name_last  = $event_barwitch_name_last
+
+        killvar 'event_barwitch_breasts'
+        killvar 'event_barwitch_hairlength'
+        killvar '$event_barwitch_haircolor'
+        killvar '$event_barwitch_name_first'
+        killvar '$event_barwitch_name_last'
+
+        gs 'util_interrupt','add','ALL','residential_aparment','apartment_janitor_introductionAfterSwap'
+        gs 'util_time','pass',rand(3000,3400)*3
+        gt 'util_event','end','industrial'
+    end
+
+end
+
+-

+ 35 - 0
source/event/bed.qsps

@@ -0,0 +1,35 @@
+# event_bed
+
+if $ARGS[0] = 'start':
+    if $gender_appearance = 'm':
+        if $chastity ! '':
+            gs 'util_image','render_image','events/bed/male_chastity(0).jpg'
+        else
+            gs 'util_image','render_image','events/bed/male(0).jpg'
+        end
+    else
+        if $wardrobe_current_style = 'Naked' or $wardrobe_current_style = 'Topless':
+            gs 'util_image','render_image','events/bed/female_naked(0).jpg'
+        else
+            gs 'util_image','render_image','events/bed/female_nightwear(0).jpg'
+        end
+    end
+
+    act 'Sleep':
+        gt 'util_event','start','sleep'
+    end
+
+    act 'Masturbate':
+        if stat_horniness_level < 2:
+            *PL 'You are not horny enough to masturbate.'
+        else
+            *PL 'Masturbate'
+        end
+    end
+
+    act 'Stand up':
+        gt 'util_event','end'
+    end
+end
+
+-

+ 3 - 0
source/event/cosmetics.qsps

@@ -0,0 +1,3 @@
+# event_cosmetics
+
+-

+ 71 - 0
source/event/mirror.qsps

@@ -0,0 +1,71 @@
+# event_mirror
+
+if $ARGS[0] = 'start':
+    if $gender_appearance = 'f':
+        gs 'util_image','render_image','events/bath/mirror_female.png'
+    else
+        gs 'util_image','render_image','events/bath/mirror_male.png'
+    end
+
+    if body_hair_head_unkempt > 0:
+        gs 'util_action','render_action','Comb Hair','gt ''event_mirror'',''hair_comb'' '
+    end
+
+    if gender_usesMakeup > 0:
+        if makeup = 0:
+            'You don''t have any cosmetics.'
+        elseif makeup = 1:
+            'You enough cosmetics to apply light make-up one time.'
+        else
+            'You have <b><<makeup>></b> portions of cosmetics.'
+        end
+
+        if makeup >= 1:
+            gs 'util_action','render_action','Apply light make-up (1x Cosmetics)','gt ''event_cosmetics'',''light'' '
+        end
+
+        if makeup >= 2:
+            gs 'util_action','render_action','Apply medium make-up (2x Cosmetics)','gt ''event_cosmetics'',''medium'' '
+        end
+
+        if makeup >= 3:
+            gs 'util_action','render_action','Apply heavy make-up (3x Cosmetics)','gt ''event_cosmetics'',''heavy'' '
+            gs 'util_action','render_action','Train applying make-up (3x Cosmetics)','gt ''event_cosmetics'',''train'' '
+        end
+    end
+
+    if body_hair_face > 0 :
+        if razor = 0:
+            'You don''t have any razors.'
+        else
+            'You have <b><<razor>></b> razors.'
+            gs 'util_action','render_action','Shave face (1x Razor)','gt ''event_cosmetics'',''shaveFace'' '
+        end
+    end
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'hair_comb':
+    body_hair_head_unkempt = 0
+
+    temp_time = max(1,body_hair_head+5) * 60
+
+    if $gender_appearance = 'm':
+        gs 'util_image','render_image','events/bath/comb_male(0).jpg'
+    else
+        gs 'util_image','render_image','events/bath/comb_female('+rand(0,3)+').jpg'
+    end
+
+    *P 'It takes you about '+FUNC('util_time','seconds2readable',temp_time)+' to comb your hair.'
+
+    gs 'util_time','pass',temp_time
+
+    killvar 'temp_time'
+
+    act 'Back':
+        gt 'event_mirror','start'
+    end
+end
+
+-

+ 30 - 0
source/event/shower.qsps

@@ -0,0 +1,30 @@
+# event_shower
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','events/bath/shower.jpg'
+    'You enter the shower and turn on the water.'
+
+    act 'Shower':
+        gt 'event_shower','shower'
+    end
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'shower':
+    if $gender_appearance = 'm':
+        gs 'util_image','render_image','events/bath/shower_male(0).jpg'
+    else
+        gs 'util_image','render_image','events/bath/shower_female('+rand(0,3)+').jpg'
+    end
+    
+    stat_hygiene = 1000000
+
+    gs 'util_time','pass',300
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+end
+
+-

+ 307 - 0
source/event/slaveOwned.qsps

@@ -0,0 +1,307 @@
+# event_slaveOwned
+
+!'
+    Fear
+    Loyalty:
+        0: Rebellious
+        1: Rebellious
+        2: Reluctant
+        3: Reluctant
+        4: Accepting
+        5: Loyal
+    Affection
+
+    Paintreshold
+    Lonelyteshold
+'
+
+if version_global > version_slave:
+    slave_const_effect_big = 30
+    slave_const_effect_med = 20
+    slave_const_effect_small=10
+
+    slave_const_fear_effect_big = slave_const_effect_big
+    slave_const_fear_effect_med = slave_const_effect_med
+    slave_const_fear_effect_small=slave_const_effect_small
+
+    slave_const_loyalty_effect_big = slave_const_effect_big
+    slave_const_loyalty_effect_med = slave_const_effect_med
+    slave_const_loyalty_effect_small=slave_const_effect_small
+
+    version_slave = version_global
+
+    gs 'util_debug','msg','Update event_slaveOwned'
+end
+
+
+$sid = $ARGS[1]
+
+if $ARGS[0] = 'start':
+
+    gs 'event_slaveOwned','renderPortrait',$sid
+
+    if $slave_storage_mode[$sid]  = 'cage':
+        
+        *PL '<center><<$npc_name_used[$sid]>> is locked inside her cage.</center>'
+    end
+
+    act 'Interact': gt 'event_slaveOwned','interact',$sid
+    act 'Options': gt 'event_slaveOwned','options',$sid
+    act 'Leave her': gt 'util_event','end'
+
+elseif $ARGS[0] = 'interact':
+    if $ARGS[2] = '':
+        if $slave_storage_mode[$sid] = '':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'cage':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'cageT':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'kennel':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'chainS':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'chainM':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'chainL':
+            *P 'TODO'
+        end
+
+        if something > 0:
+
+            '<<$npc_name_used[$sid]>> smells bad. She hasn''t been washed for days.'
+
+            act 'Hose her down (ice cold water)':
+
+            end
+
+            act 'Hose her down (cold water)':
+                
+            end
+
+            act 'Hose her down (warm water)':
+                
+            end
+
+        elseif something > 0:
+            'You notice abrasions at the wrists of <<$npc_name_used[$sid]>>. She must have tried to wriggle out of them.'
+        else
+            act 'Bondage':
+                gt 'event_slaveOwned','interact',$sid,'bondage_start'
+            end
+
+            act 'Punish her':
+                gt 'event_slaveOwned','interact',$sid,'bondage_start'
+            end
+
+            act 'Talk to her':
+                gt 'event_slaveOwned','interact',$sid,'talk_start'
+            end
+        end
+
+        
+
+    elseif $ARGS[2] = 'bondage':
+        if $ARGS[3] = 'start':
+            gs 'util_image','render_image',$slave_scenario_media_first
+            *PL $slave_scenario_description_first_resistant
+        elseif slave_scenario_dildo = 0:
+            if $ARGS[3] = 'return':
+                gs 'util_image','render_image',$slave_scenario_media_return
+            else
+                gs 'util_image','render_image',$slave_scenario_media
+            end
+        else
+            if $ARGS[3] = 'return':
+                gs 'util_image','render_image',$slave_scenario_media_vibrator_return
+            else
+                gs 'util_image','render_image',$slave_scenario_media_vibrator
+            end
+        end
+        
+        if slave_scenario_dildo = 0:
+            act 'Insert Vibrator':
+                cla & *clr
+                gs 'util_image','render_image',$slave_scenario_media_vibrator_first
+                slave_scenario_dildo = 1
+                act 'Continue': gt 'event_slaveOwned','interact',$sid,'bondage'
+            end
+        end
+
+
+        act 'Leave her restrained for a while':
+            cla
+            '<hr>'
+            'As <<$npc_name_used[$sid]>> realizes that you are about to leave she starts squirming. Her red turns red as she screams out her protest, but thanks to the gag in her mouth only a quite voices reaches your ears.'
+            act '30 Minutes': gt 'event_slaveOwned','interact',$sid,'bondage','return',1800
+            act '1 Hour': gt 'event_slaveOwned','interact',$sid,'bondage','return',3600
+            act '2 Hours': gt 'event_slaveOwned','interact',$sid,'bondage','return',7200
+            act '4 Hours': gt 'event_slaveOwned','interact',$sid,'bondage','return',14400
+        end
+
+
+        if $slave_storage_mode[$sid] = '':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'cage':
+            act 'Lock her up inside her cage':
+                gt 'event_slaveOwned','interact',$sid,'end'
+            end
+        elseif $slave_storage_mode[$sid] = 'cageT':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'kennel':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'chainS':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'chainM':
+            *P 'TODO'
+        elseif $slave_storage_mode[$sid] = 'chainL':
+            *P 'TODO'
+        end
+        
+
+
+    elseif $ARGS[2] = 'bondage_start':
+        $slave_scenario = 'bondage'
+        slave_scenario_id = 0
+        $slave_scenario_media = 'events/slave/bondage0/1.jpg'
+        $slave_scenario_media_first = 'events/slave/bondage0/1.jpg'
+        $slave_scenario_media_return = 'events/slave/bondage0/15.jpg'
+        $slave_scenario_media_vibrator = 'events/slave/bondage0/13.jpg'
+        $slave_scenario_media_vibrator_first = 'events/slave/bondage0/5.jpg'
+        $slave_scenario_media_vibrator_return = 'events/slave/bondage0/11.jpg'
+        
+        $slave_scenario_description = 'You have used some metal pipes to fixate <<$npc_name_used[$sid]>> lying on her back on the ground. Her arms are raised above her head while her legs are bend backwards, forcing them into an awkward position. They are spread far enough to give you an easy access to her pussy. You also put another pipe under her back, pushing her belly upwards and making her even more vulnerable.'
+
+        $slave_scenario_description_first_resistant = 'With a strong grip around her neck and your other hand fixating her hands behind her back you push <<$npc_name_used[$sid]>> over to some pipes you have bolted to the ground. As you push her further she begins to struggle. She understands waht you are about to do. But there is no help. With you directing her movement she can''t find a point of balance. You push her to her knees and then you force her on her back. She tries to struggle away, but having her wrists in a tight grip it is easy for you to fixate them to the ground using a pipe you have prepared in advance. Next you fold her legs beneath her and lock them up as well. Her struggles stop as she realizes that they only hurt her and accomplish nothing. You push another pipe beneath her back, forcing her belly up. This is a very vulnerable position for her. You have full access to her body without her being able to do anything against your touch.'
+
+        gt 'event_slaveOwned','interact',$sid,'bondage','start'
+    elseif $ARGS[2] = 'end':
+        if $slave_storage_mode[$sid] = 'cage':
+            'TODO You force <<$npc_name_used[$sid]>> back into her cage.'
+        else
+            *PL 'TODO: $slave_storage_mode[$sid] (<<$slave_storage_mode[$sid]>>)'
+        end
+        act 'Continue':
+            gt 'util_event','end'
+        end
+    elseif $ARGS[2] = 'talk':
+        gs 'util_image','render_image','events/slave/slaveFace(0).jpg'
+
+    elseif $ARGS[2] = 'talk_start':
+        $temp_scenario = 'talk'
+        temp_scenario_id = 0
+        gt 'event_slaveOwned','interact',$sid,'talk','start'
+    end
+elseif $ARGS[0] = 'options':
+    gs 'event_slaveOwned','renderPortrait',$sid
+    *PL 'Slave <<$npc_name_used[$sid]>> (<a href="exec:gt ''event_slaveOwned'',''optionsNameChange'',''<<$sid>>''">Change Name</a>)'
+    *PL 'Restraints while you are away:'
+    
+    *P 'General: '
+    if $slave_storage_mode[$sid] = '':
+        *P 'Free (Besides the restraints listed below <<$npc_name_used[$sid]>> is not restrained.) '
+    elseif $slave_storage_mode[$sid] = 'cage':
+        *P 'Cage (<<$npc_name_used[$sid]>> will be locked inside a small cage. There is enough room for her to turn around and sit up, but not much else. She has to rest crouched.) '
+    elseif $slave_storage_mode[$sid] = 'cageT':
+        *P 'Tiny Cage (<<$npc_name_used[$sid]>> will be locked inside a tiny cage. There is no room for her to move and she is forced into an awkward kneeling position.) '
+    elseif $slave_storage_mode[$sid] = 'kennel':
+        *P 'Kennel (<<$npc_name_used[$sid]>> will be locked inside a kennel. There is enough room for her to stand upright and she can lay down stretched out.) '
+    elseif $slave_storage_mode[$sid] = 'chainS':
+        *P 'Short Chain (<<$npc_name_used[$sid]>> has her neck chained to the wall. The chain is long enough for her to reach her resting place and the toilet.) '
+    elseif $slave_storage_mode[$sid] = 'chainM':
+        *P 'Medium Chain (<<$npc_name_used[$sid]>> has her neck chained to the wall. The chain is long enough for her to reach her resting place, the toilet and a window.) '
+    elseif $slave_storage_mode[$sid] = 'chainL':
+        *P 'Medium Chain (<<$npc_name_used[$sid]>> has her neck chained to the wall. The chain is long enough for her to reach every point in the room.) '
+    end
+
+    if $slave_storage_mode[$sid] ! '': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = '''' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">None</a> '
+    if $slave_storage_mode[$sid] ! 'cage': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = ''cage'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Cage</a> '
+    if $slave_storage_mode[$sid] ! 'cageT': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = ''cageT'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Tiny Cage</a> '
+    if $slave_storage_mode[$sid] ! 'kennel': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = ''kennel'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Kennel</a> '
+    if $slave_storage_mode[$sid] ! 'chainS': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = ''chainS'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Short Chain</a> '
+    if $slave_storage_mode[$sid] ! 'chainM': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = ''chainM'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Medium Chain</a> '
+    if $slave_storage_mode[$sid] ! 'chainL': *P '<a href="exec: $slave_storage_mode[''<<$sid>>''] = ''chainL'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Long Chain</a> '
+
+    
+    *P '<br>Mouth: '
+    if $slave_storage_gag[$sid] = '':
+        *P 'None (Not wearing any gag allows <<$npc_name_used[$sid]>> to drink and eat anything that is inside her range.) '
+    elseif $slave_storage_gag[$sid] = 'ball':
+        *P 'Ball-Gag (Wearing a ball-gag <<$npc_name_used[$sid]>> can''t eat or drink anything. On the upside she can''t make loud sounds neither.) '
+    elseif $slave_storage_gag[$sid] = 'ballL':
+        *P 'Large Ball-Gag (Wearing a large ball-gag <<$npc_name_used[$sid]>> can''t eat or drink anything. On the upside she can''t make any vocal sounds neither. Wearing a gag this big forces her jaw into a painful position constantly.) '
+    elseif $slave_storage_gag[$sid] = 'ring':
+        *P 'Ring-Gag (Wearing a ring-gag <<$npc_name_used[$sid]>> can drink anything within her reach. She can eat non-solid food as well. She can make vocal sounds, but they are unintelligible.) '
+    end
+
+    if $slave_storage_gag[$sid] ! '': *P '<a href="exec: $slave_storage_gag[''<<$sid>>''] = '''' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">None</a> '
+    if $slave_storage_gag[$sid] ! 'ball': *P '<a href="exec: $slave_storage_gag[''<<$sid>>''] = ''ball'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Ball-Gag</a> '
+    if $slave_storage_gag[$sid] ! 'ballL': *P '<a href="exec: $slave_storage_gag[''<<$sid>>''] = ''ballL'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Large Ball-Gag</a> '
+    if $slave_storage_gag[$sid] ! 'ring': *P '<a href="exec: $slave_storage_gag[''<<$sid>>''] = ''ring'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Ring-Gag</a> '
+
+    *P '<br>Eyes: '
+    if $slave_storage_eyes[$sid] = '':
+        *P 'Nothing (<<$npc_name_used[$sid]>> is allowed to see without restrictions.) '
+    elseif $slave_storage_eyes[$sid] = 'blindfold':
+        *P 'Blindfold (<<$npc_name_used[$sid]>> has to wear a blindfold.) '
+    end
+
+    if $slave_storage_eyes[$sid] ! '': *P '<a href="exec: $slave_storage_eyes[''<<$sid>>''] = '''' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Nothing</a> '
+    if $slave_storage_eyes[$sid] ! 'blindfold': *P '<a href="exec: $slave_storage_eyes[''<<$sid>>''] = ''blindfold'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Blindfold</a> '
+    
+
+    *P '<br>Arms: '
+    if $slave_storage_arms[$sid] = '':
+        *P 'Nothing (The arms of <<$npc_name_used[$sid]>> are not chained up.) '
+    elseif $slave_storage_arms[$sid] = 'heavy':
+        *P 'Heavy Metal Cuffs (The wrists of <<$npc_name_used[$sid]>> are chained up with heavy metal cuffs. They are extremely hard to struggle out of and even with the right tools it would take hours to cut them off.) '
+    elseif $slave_storage_arms[$sid] = 'heavyC':
+        *P 'Custom Heavy Metal Cuffs (The wrists of <<$npc_name_used[$sid]>> are chained up with heavy metal cuffs. They have been created to fit her wrists perfectly. There is no way she would ever be able to struggle out of them and even with the right tools it would take hours to cut them off.) '
+    end
+
+    if $slave_storage_arms[$sid] ! '': *P '<a href="exec: $slave_storage_arms[''<<$sid>>''] = '''' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Nothing</a> '
+    if $slave_storage_arms[$sid] ! 'heavy': *P '<a href="exec: $slave_storage_arms[''<<$sid>>''] = ''heavy'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Heavy Metal Cuffs</a> '
+    if $slave_storage_arms[$sid] ! 'heavyC': *P '<a href="exec: $slave_storage_arms[''<<$sid>>''] = ''heavyC'' & gt ''event_slaveOwned'',''options'',''<<$sid>>''">Heavy Metal Cuffs (Custom)</a> '
+
+    act 'Back': gt 'event_slaveOwned','start',$sid
+elseif $ARGS[0] = 'optionsNameChange':
+    gs 'event_slaveOwned','renderPortrait',$sid
+    *PL 'Change Name'
+    *PL 'Current Name: <<$npc_name_used[$sid]>>'
+    *PL 'Degrading Name'
+    *PL 'Female Name'
+    *PL 'Original Name'
+
+    act 'Degrading Name':
+        $slave_name_mode[$sid] = 'degrading'
+        $npc_name_used[$sid] = INPUT('Enter a degrading name or leave empty for a random one:')
+        if $npc_name_used[$sid] = '': $npc_name_used[$sid] = 'Cunt'
+        gt 'event_slaveOwned','options',$sid
+    end
+
+    act 'Female Name':
+        $slave_name_mode[$sid] = 'female'
+        $npc_name_used[$sid] = INPUT('Enter a female name or leave empty for a random one:')
+        if $npc_name_used[$sid] = '': $npc_name_used[$sid] = 'Janine'
+        gt 'event_slaveOwned','options',$sid
+    end
+
+    act 'Original Name':
+        $slave_name_mode[$sid] = 'original'
+        $npc_name_used[$sid] = 'Janine'
+        gt 'event_slaveOwned','options',$sid
+    end
+
+    act 'Back': gt 'event_slaveOwned','options',$sid
+elseif $ARGS[0] = 'renderPortrait':
+    gs 'util_npc','renderPortrait',$sid
+
+elseif $ARGS[0] = 'statInc':
+    if $ARGS[2] = 'loyalty':
+        $slave_stat_loyalty_number += ARGS[3]
+    elseif $ARGS[2] = 'fear':
+        $slave_stat_fear_number += ARGS[3]
+    end
+end
+
+-

+ 71 - 0
source/event/sleep.qsps

@@ -0,0 +1,71 @@
+# event_sleep
+if $ARGS[0] = 'start':
+    sleep_duration = 0
+
+    sleepiness = (1000000 - stat_sleep) / 25
+
+    secondsToAlarm = FUNC('util_time','timeUntilTimeOfDay',alarmclock_time)
+
+    temp_rand = rand(1,100)
+
+    if temp_rand >= 80:
+        !Bad dream
+        temp_rand2 = rand(1,2)
+        if temp_rand2 = 1:
+            temp_rand3 = rand(0,1)
+            gs 'util_image','render_image','events/sleep/hunt(<<temp_rand3>>).jpg'
+            'Something evil is hunting you. You run and run, but you can''t get away. Too afraid to look around you push forward. But you can feel it cold breath in your back.'
+            'When you finally wake up you realize that it was just a nightmare.'
+        else
+            temp_rand3 = rand(0,1)
+            gs 'util_image','render_image','events/sleep/presence(<<temp_rand3>>).jpg'
+            'Something evil is watching you. You can feel its vile presence.'
+            'When you finally wake up you realize that it was just a nightmare.'
+        end
+    else
+        !Good/Neutral dream
+        temp_rand2 = rand(1,4)
+        if temp_rand2 = 1:
+            temp_rand3 = rand(0,1)
+            if $gender_identification = 'm':
+                gs 'util_image','render_image','events/sleep/fly_male(<<temp_rand3>>).jpg'
+            else
+                gs 'util_image','render_image','events/sleep/fly_female(<<temp_rand3>>).jpg'
+            end
+            'You dream of flying high up in the sky. The world lies and all your troubles lie beneath you.'
+        elseif temp_rand2 = 2:
+            temp_rand3 = rand(0,1)
+            gs 'util_image','render_image','events/sleep/space(<<temp_rand3>>).jpg'
+            'In your dreams you visit alien places. You try to remeber them after waking up, but they are gone like dust in the wind.'
+        elseif temp_rand2 = 3:
+            temp_rand3 = rand(0,0)
+            gs 'util_image','render_image','events/sleep/warning(<<temp_rand3>>).jpg'
+            'Some sort of strange entity tells you a warning. You should watch out in the near future. It''s surely your mind tricking yourself during the sleep, right?'
+        elseif temp_rand2 = 4:
+            temp_rand3 = rand(0,3)
+            gs 'util_image','render_image','events/sleep/weird(<<temp_rand3>>).jpg'
+            'You dream of a wild variety of places, entities and people. It doesn''t make sense and after waking up you forgot most of it.'
+        end
+    end
+
+    if body_hair_head >= -5:
+        body_hair_head_unkempt = 1
+    end
+
+    if alarmclock_activated = 0:
+        gs 'util_time','pass',sleepiness,'sleep'
+    else
+        if secondsToAlarm < sleepiness:
+            'The alarm wakes you up'
+            gs 'util_time','pass',secondsToAlarm,'sleep'
+        else
+            'You wake up'
+            gs 'util_time','pass',secondsToAlarm,'sleep'
+        end
+    end
+
+    act 'Stand Up':
+        gt 'util_event','end'
+    end
+end
+-

+ 145 - 0
source/event/tv.qsps

@@ -0,0 +1,145 @@
+# event_tv
+
+$event_id = 'tv'
+
+if $ARGS[0] = 'start':
+    statsHide = 0
+    if $ARGS[1] ! '': $tv['current'] = $ARGS[1]
+    if $tv['current'] = 'home':
+        gt 'util_event','stage',$event_id,'quality_home'
+    end
+elseif $ARGS[0] = 'options':
+    if tv['on'] = 0:
+        act 'Turn On':
+            tv['on'] = 1
+            !gt 'util_debug','refresh'
+            gt 'util_event','stage',$event_id,'start'
+        end
+
+        act 'Leave':
+            gt 'util_event','end'
+        end
+    else
+        act 'Watch (30 minutes)':
+            gt 'util_event','stage',$event_id,'program'
+        end
+
+        act 'Watch Porn (30 minutes)':
+            gt 'util_event','stage',$event_id,'porn'
+        end
+
+        act 'Turn Off':
+            tv['on'] = 0
+            !gt 'util_debug','refresh'
+            gt 'util_event','stage',$event_id,'start'
+        end
+
+        act 'Turn off and leave':
+            tv['on'] = 0
+            gt 'util_event','end'
+        end
+    end
+elseif $ARGS[0] = 'porn':
+    if ARGS[1] = 0:
+        gs 'util_sex','horninessInc','low','voyeur','',0,1800
+        gs 'util_debug','updateAll'
+        !gt 'util_debug','refresh'
+    end
+
+    $temp_possible_media[] = 'lesbian'
+
+    $temp_media = $temp_possible_media[rand(0,ARRSIZE('$temp_possible_media')-1)]
+
+    if $temp_media = 'lesbian':
+        gs 'util_image','render_image','events/tv/porn/lesbian('+rand(0,7)+').jpg'
+        'You watch 30 minutes of lesbian porn.'
+    end
+    
+    killvar '$temp_possible_media'
+    killvar '$temp_media'
+    
+
+    gs 'event_tv','options'
+elseif $ARGS[0] = 'program':
+    if ARGS[1] = 0:
+        gs 'util_effect','inc','tv',3600,1800
+        gs 'util_time','pass',1800
+        gs 'util_debug','updateAll'
+        !gt 'util_debug','refresh'
+    end
+
+    $temp_possible_media[] = 'action'
+    $temp_possible_media[] = 'bigBrother'
+    $temp_possible_media[] = 'friedrich3'
+    $temp_possible_media[] = 'gameshow'
+    $temp_possible_media[] = 'historic'
+    $temp_possible_media[] = 'romance'
+    $temp_possible_media[] = 'royalty'
+    $temp_possible_media[] = 'scifi'
+    $temp_possible_media[] = 'space'
+    $temp_possible_media[] = 'spy'
+    $temp_possible_media[] = 'teen'
+    $temp_possible_media[] = 'UESS'
+    $temp_possible_media[] = 'wilhelm2'
+    $temp_possible_media[] = 'wilhelm3'
+
+
+    $temp_media = $temp_possible_media[rand(0,ARRSIZE('$temp_possible_media')-1)]
+
+    if $temp_media = 'action':
+        gs 'util_image','render_image','events/tv/program/action('+rand(0,2)+').jpg'
+        'You watch an action movie. The plot seems to be pretty simple: the main hero has a grudge and settles it by killing all his enemies. In the end he gets the girl and drives into the sunset.'
+    elseif $temp_media = 'bigBrother':
+        gs 'util_image','render_image','events/tv/program/action('+rand(0,1)+').jpg'
+        'You watch an episode of Big Brother. Some people have been locked in an house together. You feel your brain shutting down as you watch them struggling with rather mundane tasks.'
+    elseif $temp_media = 'friedrich3':
+        gs 'util_image','render_image','events/tv/program/friedrich3('+rand(0,1)+').jpg'
+        'You watch the history channel. It shows a documentary about Friedrich III, Emperor of Germany and the great-great-grandfather of the current Emperor. His long and just reign made Germany a respected and prosperous nation.'        
+    elseif $temp_media = 'gameshow':
+        gs 'util_image','render_image','events/tv/program/gameshow('+rand(0,2)+').jpg'
+        'You watch a game show. The candidates have to perform several tasks to get a price money. You wonder if you could participate there as well. The tasks don''t look to difficult.'
+    elseif $temp_media = 'historic':
+        gs 'util_image','render_image','events/tv/program/historic('+rand(0,2)+').jpg'
+        'You watch an historic drama.'  
+    elseif $temp_media = 'romance':
+        gs 'util_image','render_image','events/tv/program/romance('+rand(0,2)+').jpg'
+        'You watch a romance movie. There is a lot of heart-breaking, but in the end the two protagonists live happily ever after.'
+    elseif $temp_media = 'royalty':
+        gs 'util_image','render_image','events/tv/program/royalty('+rand(0,2)+').jpg'
+        'You watch celebrety news. Foreign nobels have married, have gotten pragnent and are visiting each other. Apperently the live of nobels is very stressful.'  
+    elseif $temp_media = 'scifi':
+        gs 'util_image','render_image','events/tv/program/scifi('+rand(0,2)+').jpg'
+        'You watch a Science Fiction movie.'
+    elseif $temp_media = 'space':
+        gs 'util_image','render_image','events/tv/program/space('+rand(0,1)+').jpg'
+        'You watch a documentary about space. And it makes you feel quite small.' 
+    elseif $temp_media = 'spy':
+        gs 'util_image','render_image','events/tv/program/spy('+rand(0,2)+').jpg'
+        'You watch a spy movie. The gentleman spy has gadgets to solve every problem and in the end he gets the sexy damsel in distress.' 
+    elseif $temp_media = 'teen':
+        gs 'util_image','render_image','events/tv/program/teen('+rand(0,2)+').jpg'
+        'You watch a teen movie. Heart-breaking, school problems and growing up: this movie covers it all.' 
+    elseif $temp_media = 'UESS':
+        gs 'util_image','render_image','events/tv/program/UESS(0).jpg'
+        'You watch a documentary about the United Earth Space Station. It is inhabited by more than 100 scientists, engineers and other personel. Apparently there are plans to attach a new module to make sending supplies to the Mars Colony more efficient.'
+    elseif $temp_media = 'wilhelm2':
+        gs 'util_image','render_image','events/tv/program/wilhelm2('+rand(0,2)+').jpg'
+        'You watch the history channel. It shows a documentary about Wilhelm II, Emperor of Germany and the great-grandfather of the current Emperor. He was short-tempered and had low self esteem. Most scholars agree, that his reign could have been disastrous for Europe. But fate had other plans and he died during an hunting accident only 99 days after his father died.'  
+    elseif $temp_media = 'wilhelm3':
+        gs 'util_image','render_image','events/tv/program/wilhelm3(0).jpg'
+        'You watch the history channel. It shows a documentary about Wilhelm III, Emperor of Germany and the grandfather of the current Emperor. It is said, that his skilled dimpolmaty prevented a war that could have thrown Europe into Chaos.'
+    end
+    
+    killvar '$temp_possible_media'
+    killvar '$temp_media'
+
+    gs 'event_tv','options'
+elseif $ARGS[0] = 'quality_home':
+    if home['tv_quality'] = 0:
+        gs 'util_image','render_image','events/tv/tv_q0.jpg'
+        'Your tv is not old, it is ancient.'
+    end
+    gs 'event_tv','options'
+end
+
+-

+ 9 - 0
source/event/university/course.qsps

@@ -0,0 +1,9 @@
+# event_university_course
+
+if $ARGS[0] = 'start':
+    if $university_discipline = 'gender':
+        gt 'util_event','start','university_gender_course'
+    end
+end
+
+-

+ 50 - 0
source/event/university/enroll.qsps

@@ -0,0 +1,50 @@
+# event_university_enroll
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','events/university/enroll/enroll.jpg'
+
+    *PL 'There are many different subjects you could study.'
+
+    gs 'util_action','render_action','Gender studies','gt ''event_university_enroll'',''enroll'',''gender'' '
+
+    act 'Leave (you can still enroll later)':
+        gs 'util_time','pass_rand',600
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'enroll':
+    if $ARGS[1] = 'gender':
+        gs 'util_image','render_image','events/university/enroll/gender.jpg'
+        university_course_days[] = 1
+        university_course_times[] = 101500
+
+        university_course_days[] = 2
+        university_course_times[] = 160000
+
+        university_course_days[] = 3
+        university_course_times[] = 120000
+
+        $university_discipline = 'gender'
+    end
+
+    *PL '<b>Your course times:</b>'
+    
+    i = 0
+    : LoopEnrollTimes
+    if i <ARRSIZE('university_course_times'):
+        *PL FUNC('util_time','dayOfWeekReadable',university_course_days[i]) +', '+FUNC('util_time','timeOfDay2readable',university_course_times[i])
+        i += 1
+        jump 'LoopEnrollTimes'
+    end
+
+    university_enrollment_possible = 0
+    university_enrollment_active = 1
+
+    gs 'util_task','setStage','university_enroll','stage_1'
+
+    act 'Leave':
+        gs 'util_time','pass_rand',1200
+        gt 'util_event','end'
+    end
+
+end
+-

+ 68 - 0
source/event/university/gender/course.qsps

@@ -0,0 +1,68 @@
+# event_university_gender_course
+
+if $ARGS[0] = 'start':
+    if university_gender_course_count = 0:
+        gt 'event_university_gender_course','course_0_0'
+    end
+elseif $ARGS[0] = 'course_0_0':
+    university_gender_course_count += 1
+    gs 'util_image','render_image','events/university/course/lectureHall.jpg'
+
+    'You enter the lecture hall. There are about 100 seats here and most of them are allready filled with other students. You spot a free seat at the edge of one row.'
+
+    'You sit down and take out a pen and a notebook. There is a girl sitting next to. She is chatting with her neighbor on her other side and doesn''t pay you any attention.'
+
+    act 'Wait for the lecture to start':
+        gt 'event_university_gender_course','course_0_1'
+    end
+
+    
+elseif $ARGS[0] = 'course_0_1':
+
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_lecturer''">'
+    gs 'util_image','render_image','npc/university/gender/lecturer.webp'
+    *P '</a>'
+
+    'You don''t have to wait long before the lecturer arrives. She is a young woman in her late twenties with black hair and an authoritarian aura.'
+
+    'She signals everybody to take their seats, then she starts her lecture. She introduces herself as '+FUNC('util_npc','get','university_gender_lecturer','$name_used')+' and speaks about the history of Gender Studies and how it is relevant today.'
+
+    'You make some notes as she continues. The minutes fly by. Lastly she arrives at the subject of performance test.'
+
+    gs 'util_npc','render_dialogue','university_gender_lecturer','There will be an exam at the end of the semester. All of you will participate. Except for 6 students who have been selected already. They will take part in a study performed by our senior students.'
+    gs 'util_npc','render_dialogue','university_gender_lecturer','They will present the results at the end of the semester. And yes, participation is mandatory for these 6. And no, there is no trading places. They have been chosen specifically.'
+
+    'She reads out the list of these students. And your heart almost stops for a beat: the last name is yours!'
+
+    gs 'util_npc','render_dialogue','university_gender_lecturer','These students will report to me right now. Everybody else is dismissed for today.'
+
+    act 'Report to her':
+        gt 'event_university_gender_course','course_0_2'
+    end
+
+elseif $ARGS[0] = 'course_0_2':   
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_lecturer''">'
+    gs 'util_image','render_image','npc/university/gender/lecturer.webp'
+    *P '</a>'
+
+    'You and the other five students approach '+FUNC('util_npc','get','university_gender_lecturer','$name_used')+' while the other students leave the hall.'
+    'There are two other male students and three girls.'
+    'They are given the contact information of a senior student each. All of them have female names. Finally '+FUNC('util_npc','get','university_gender_lecturer','$name_used')+' turns towards you.'
+
+    gs 'util_npc','render_dialogue','university_gender_lecturer','You will report to '+FUNC('util_npc','get','university_gender_guide','$name_used')+'. And that''s also the way you will call her.'
+    'She hands you a card with the address of '+FUNC('util_npc','get','university_gender_guide','$name_used')+'. She lives in one of the residential areas in the western part of the town. There is also <i>10:00-18:00</i> written on the card.'
+    gs 'util_npc','render_dialogue','university_gender_lecturer','Visit her as soon as possible. She will be expecting you.'
+    'You nod and store away the contact information. You say your goodbyes. The other five students already left and so you are alone now.'
+
+    gs 'util_task','start','university_gender_experiment'
+    university_gender_guide_home_known = 1
+    university_gender_guide_home_available = 1
+    subway_known['western'] = 1
+
+    act 'Leave':
+        gs 'util_time','pass_rand',5400
+        gt 'util_event','end'
+    end
+end
+
+-

+ 36 - 0
source/event/university/gender/experiment.qsps

@@ -0,0 +1,36 @@
+# event_university_gender_experiment
+
+if $ARGS[0] = 'start':
+    if university_gender_guide_timer < time_current:
+        gt 'event_university_gender_experiment_punish','start',university_gender_guide_timer-time_current
+    end
+    
+    if university_gender_guide_requires_panties = 1:
+        gs 'util_wardrobe','loadItemAtSlot','panties'
+        if $item_gender ! 'f':
+            gt 'event_university_gender_experiment_punish','panties'
+        end
+    end
+    if university_gender_guide_requires_bra = 1:
+        gs 'util_wardrobe','loadItemAtSlot','bra'
+        if $item_gender ! 'f':
+            gt 'event_university_gender_experiment_punish','bra'
+        end
+    end
+
+    if university_gender_expetiment_counter = 0:
+        gt 'event_university_gender_experiment_start','start'
+    elseif university_gender_expetiment_counter = 1:
+        gt 'event_university_gender_experiment_bj','start'
+    elseif university_gender_expetiment_counter = 2:
+        gt 'event_university_gender_experiment_cuckold','start'
+    elseif university_gender_expetiment_counter = 3:
+        gt 'event_university_gender_experiment_strapon','start'
+    elseif university_gender_expetiment_counter = 4:
+        gt 'event_university_gender_experiment_shave','start'
+    else
+        gt 'util_event','error','not_available'
+    end
+end
+
+-

+ 101 - 0
source/event/university/gender/experiment_bj.qsps

@@ -0,0 +1,101 @@
+# event_university_gender_experiment_bj
+
+$event_id = 'university_gender_experiment_bj'
+
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/bj0.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' opens the door. She is wearing a short black skirt, a white top that exposes her belly and black high heels. She leads you into the living room again.'
+    gs 'util_npc','render_dialogue','university_gender_guide','I hope you had a nice time without touching your dick all the time.'
+    'She lifts her skirt a little bit.'
+    gs 'util_npc','render_dialogue','university_gender_guide','It is way easier to concentrate on important matters without touching women all the time, isn''t it?'
+
+    act 'Yes':
+        gt 'util_event','stage',$event_id,'stage_1'
+    end
+elseif $ARGS[0] = 'stage_1':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/bj1.jpg'
+    *P '</a>'
+
+    'She turns around and lifts her top. She is wearing a pink bra. It is sheer and you can clearly see her skin beneath it.'
+    gs 'util_npc','render_dialogue','university_gender_guide','A real man would get excited now. A real man would want to fuck me, to squeeze my breasts, to conquer me.'
+    'She squeezes her breasts a little to underline her words.'
+    gs 'util_npc','render_dialogue','university_gender_guide','But you are no real man. You don''t think about fucking me. You think about getting out of this cage, right?'
+
+    act 'Sure':
+        gt 'util_event','stage',$event_id,'stage_2'
+    end
+elseif $ARGS[0] = 'stage_2':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/bj2.jpg'
+    *P '</a>'
+    gs 'util_npc','render_dialogue','university_gender_guide','And I am the one holding the key to your freedom. So by wanting to get free you really want to convince me to let you free.'
+    'She lifts her skirt again. She is sheer pink panties matching her bra. They leave nothing to the imagination.'
+    gs 'util_npc','render_dialogue','university_gender_guide','You want me to be happy. Last time I made you happy. I think it is time for you to return the favor.'
+
+    act 'Okay':
+        gt 'util_event','stage',$event_id,'stage_3'
+    end
+elseif $ARGS[0] = 'stage_3':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/bj3.jpg'
+    *P '</a>'
+    gs 'util_npc','render_dialogue','university_gender_guide','No, not okay. I told you that you are no longer entitled to touching me. And that includes your tongue.'
+    'She slips out of her clothes. Except for her shoes she is completely naked now.'
+    gs 'util_npc','render_dialogue','university_gender_guide','If you want to lick me you have to beg for it.'
+
+    act 'Beg':
+        gt 'util_event','stage',$event_id,'stage_4'
+    end
+
+elseif $ARGS[0] = 'stage_4':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/bj4.jpg'
+    *P '</a>'
+    gs 'util_npc','render_dialogue','university_gender_guide','Good boy.'
+    'She lies down and her sofa, presenting her pussy to you.'
+
+    act 'Lick her':
+        cla
+        'Her breath becomes quicker as your tongue touches her lower lips.'
+        act 'Continue':
+            cla
+            'You slide your tongue inside and out her pussy while occasionally sucking at her clit.'
+            act 'Continue':
+                cla
+                'She starts to moan. Louder, and quicker. When it finally ends in a scream of pleasure you feel rather exhausted.'
+                act 'Continue':
+                    gt 'util_event','stage',$event_id,'stage_5'
+                end 
+            end
+        end
+    end
+
+elseif $ARGS[0] = 'stage_5':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/bj5.jpg'
+    *P '</a>'
+    gs 'util_npc','render_dialogue','university_gender_guide','Well, that was mediocre at best. But we have plenty of time to improve your skills.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Now leave me. I will call you when I want to see you again.'
+    
+
+    act 'What about my dick?':
+        'What about my dick? Won''t you unlock it now?'
+        gs 'util_npc','render_dialogue','university_gender_guide','You have to be kidding me. I won''t make it this easy for you. Continue being a good boy and I might think about it next time.'
+    end
+
+    act 'Leave':
+        gt 'util_event','stage',$event_id,'finish'
+    end
+elseif $ARGS[0] = 'finish':
+    gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*48*0
+    university_gender_guide_home_available = 0
+    university_gender_expetiment_counter += 1
+    gs 'util_time','pass_rand',1800
+    gs 'util_event','end'
+end
+
+-

+ 179 - 0
source/event/university/gender/experiment_cuckold.qsps

@@ -0,0 +1,179 @@
+# event_university_gender_experiment_cuckold
+
+$event_id = 'university_gender_experiment_cuckold'
+
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/cuckold0.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' opens the door.As usual she is wearing a very attracitve outfit. She leads you into her study.'
+    gs 'util_npc','render_dialogue','university_gender_guide','I assume your balls are blue by now. Don''t worry, you have been a good boy lately. Therefore you will get your relief today.'
+    'She points to her chair which has some cuffs attached to it.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Sit down!'
+
+    act 'Sit down':
+        gt 'util_event','stage',$event_id,'stage_1'
+    end
+elseif $ARGS[0] = 'stage_1':
+    gs 'util_image','render_image','events/university/experiment/milking.jpg'
+
+    'She takes your wrists and connects cuffs behind your back to the chair. Afterwards she cuffs your ankles to the chair as well. You wonder what comes next. Will you get another blowjob.'
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' must have been reading your thoughts.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Don''t be ridiculous. I won''t suck your tiny man-pussy again. Now hold still.'
+    'She places the VR-glasses over your head again. They are not turned on right now, so everything you see is blackness. She also plugs earplus into your ears.'
+    'You feel the chastity cage being removed from your penis. Finally! Your dick immidiatley jumps into action and your feel an massive erection building up.'
+
+    'Then you feel something else being slided over your dick. It''s another tube, but it is larger then the previous one. It feels alien yet rather comfortable.'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_2'
+    end
+elseif $ARGS[0] = 'stage_2':
+    gs 'util_image','render_image','events/university/experiment/simulation0.jpg'
+
+    'Suddenly the VR glasses turn on.'
+    'In front of you you see an attractive girl wearing black lingerie. No, wait. That''s a mirror. You are this girl!'
+    'What you are seeing is a video created with a 3D-technology unknown to you. You can move your eyes normally. From the corner of your eyes you can see your ..no, her!... breasts beneath you.'
+    'But you are unable to move any other part of this girls body.'
+    'You also hear quite sounds. They are clearly the sounds this girl was hearing during the recording of this video.'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_3'
+    end
+
+elseif $ARGS[0] = 'stage_3':
+    gs 'util_image','render_image','events/university/experiment/simulation1.jpg'
+
+    'The girl inspects herself in the mirror. Then she turns around while still looking at the mirror and inspects her back side.'
+    'She bends forwards to present her butt to herself.'
+    'You hear a quite persuasive voice. You have to listen carefully, otherwise you wouldn''t be able to hear it.'
+    '<i>Oh yes, I am a little slut. I need to suck cock.</i>'
+    'The voice repeats itself over and over again. It is not the girl speaking. Has it been added after the recording?'
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_4'
+    end
+
+elseif $ARGS[0] = 'stage_4':
+    gs 'util_image','render_image','events/university/experiment/simulation2.jpg'
+
+    'Apperently satisfied by her image in the mirror the girl kneels down.'
+    'She looks down herself and caresses her body. This point of view makes it very hard for you not to identify yourself with her.'
+
+    '<i><b>Slut!</b> Where are you?!</i>'
+    'This time the voice comes from inside the recording. It is dark and male. And you hear yourself answe..... no, the girl answering with a soft feminie voice.'
+    '<i>In here, my bull!</i>'
+    'Oh no, what now?'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_5'
+    end
+
+elseif $ARGS[0] = 'stage_5':
+    gs 'util_image','render_image','events/university/experiment/simulation3.jpg'
+
+    'You see a black man entering the room. He is completely naked.'
+    '<i>What are you waiting for, bitch? Get to work!</i>'
+    'Without hesitation you crawl over to him. His massive dick is right in front of your face.'
+    'You open your mouth and begin licking it. You can also watch yourself in the mirror giving this man a blowjob.'
+    'No, no! You are not the one giving the blowjob here! You are watching somebody else!'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_6'
+    end
+
+elseif $ARGS[0] = 'stage_6':
+
+    gs 'util_image','render_image','events/university/experiment/simulation4.jpg'
+
+    'You continue sucking this mans dick. Apparently you are good at what you are doing, because is begins to moan in pleasrue.'
+    'After a short while he walks over to a couch, dragging you by your hair behind him.'
+    'He sits down and you continue sucking him.'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_7'
+    end
+
+elseif $ARGS[0] = 'stage_7':
+    gs 'util_image','render_image','events/university/experiment/simulation5.jpg'
+    '<i>Enough! Get your pussy here. I want to fuck it!</i>'
+    'You do as you are commanded and climb on top of this man.'    
+    'Looking down you carefully place your pussy over his erect dick before lowering yourself.'
+    'As his penis enters your vagina you suddenly feel a strange sensation. The contraption around your real penis has begun to suck on you!'
+    'As the girl begins to ride this man you feel like the sucking sensation on your penis has exactly the same rhythm as the fucking in the video you are watching.'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_8'
+    end
+elseif $ARGS[0] = 'stage_8':
+    gs 'util_image','render_image','events/university/experiment/simulation6.jpg'    
+
+    'The fucking continues. And so does the sucking on your dick.'
+    'The feeling on your dick is nice. But watching this porn from the girls perspective... basically being trapped inside her point of view... utterly alienates you.'
+    'Why does this arouse you? Is it just watching this porn, no matter the perspective? Or do you actually enjoying being the girl?'
+    'Suddenly the man grabs your hips and turns you on your back. He pushes himself relentlessly inside you.'
+    'You hear yourself moan in pleasure. Actually it is the girls voice, but you know that you are moaning for real as well right now.'
+    'The girl scream out in pleasure as she achieves her orgasm. And you come at exactly the same time.'
+    'The man pulls himself out of you, his penis leaking of cum. He must have cum as well.'
+    '<i>Well done, slut.</i>'
+    'After a final look down your female body the recording ends.'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_9'
+    end
+
+elseif $ARGS[0] = 'stage_9':
+    gs 'util_image','render_image','npc/university/gender/guide/cuckold1.jpg'  
+
+    'The VR set must have a mechanism built in to clear your view after the recording ended, because suddenly you can see the real world again.'
+    'And you are shocked to see, that there is another man in this room, standing less than one mter away from you.'
+    'Just like in the video it is a black man and just like in the video he gets his dick sucked. But this time it is '+FUNC('util_npc','get','university_gender_guide','$name_used')+' performing the blowjob.'
+    'He must have realized that you are looking at him.'
+    '<i>It appears as if your pet woke up.</i>'
+    gs 'util_npc','render_dialogue','university_gender_guide','Just ignore her. She won''t interrupt us.'
+    'Did she just call you <i>her</i>?!'
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_10'
+    end
+
+elseif $ARGS[0] = 'stage_10':
+    gs 'util_image','render_image','npc/university/gender/guide/cuckold2.jpg'  
+
+    'The man bends her over her couch and begins pushing himself inside her pussy. Again you are reminded of the video.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Oh yes! Yes! Take me! You are a real man! Not a dickless loser!'
+    'It takes about three minutes, then both of them cum.'
+    'The man leaves without another word, while '+FUNC('util_npc','get','university_gender_guide','$name_used')+' puts on her clothes again.'
+
+
+    act '...':
+        gt 'util_event','stage',$event_id,'stage_11'
+    end
+
+elseif $ARGS[0] = 'stage_11':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/cuckold3.jpg'  
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+' she sits down on her couch.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Don''t look at me like this. Jerome can pleasure me in a way you never could. Besides, I think my little video was more to your liking anyways.'
+    'She removes the milking machine around your dick and cleans you up with a towel.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Look at this mess. There is no denying.'
+    'She presents your chastity device back to you.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Oh shut up. Wer both know that I can''t have you running around with a free dick. You should be thankful that I prevent it from geting you into trouble.'
+    'She locks you back inside the cage. Then you unlocks your restraints.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Next time you come here I want you to be wearing panties. I don''t care where you get them. No get out! Jerome should be ready for round two soon.'
+
+    act 'Leave':
+        gt 'util_event','stage',$event_id,'finish'
+    end
+elseif $ARGS[0] = 'finish':
+    shopLingerieUnlocked = max(1,shopLingerieUnlocked)
+    gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*48*0
+    university_gender_guide_home_available = 0
+    university_gender_expetiment_counter += 1
+    gs 'util_time','pass_rand',3600
+    gs 'util_event','end'
+end
+
+-

+ 22 - 0
source/event/university/gender/experiment_phone.qsps

@@ -0,0 +1,22 @@
+# event_university_gender_experiment_phone
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','events/phone.jpg'
+    'Your phone is ringing. It is '+FUNC('util_npc','get','university_gender_guide','$name_used')+'.'
+    act 'Answer':
+        cla
+        gs 'util_npc','render_dialogue','university_gender_lecturer','Get over to my house! You have 4 hours.'
+        'She hangs up.'
+        university_gender_guide_home_available = 1
+        university_gender_guide_timer = time_current + 4*3600
+        gs 'event_university_gender_experiment_phone','hangUp'
+    end
+elseif $ARGS[0] = 'hangUp':
+    act 'Hang up':
+        gs 'util_interrupt','del','ALL','ALL','university_gender_experiment_phone'
+        gt 'util_event','end',$ARGS[2]
+        !gt 'util_location','goto',$ARGS[2],1
+    end
+end
+
+-

+ 56 - 0
source/event/university/gender/experiment_punish.qsps

@@ -0,0 +1,56 @@
+# event_university_gender_experiment_punish
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/punish.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used') + ' opens the door. For some reason she is wearing attractive lingerie. And she seems to be angry at you.'
+
+    if ARGS[1] < 3600:
+        gs 'util_npc','render_dialogue','university_gender_guide','You are too late. Only a few minutes, but too late is too late. Maybe you don''t mind having your dick locked up after all? You don''t seem to be too eager to have it freed again. I guess some additional days in chastity might change that. I will call you again. Now get off my property!'
+    elseif ARGS[1] < 10000:
+        gs 'util_npc','render_dialogue','university_gender_guide','You are too late. Maybe you don''t mind having your dick locked up after all? You don''t seem to be too eager to have it freed again. I guess some additional days in chastity might change that. I will call you again. Now get off my property!'
+    else
+        gs 'util_npc','render_dialogue','university_gender_guide','So you decided to show up after all. Maybe you don''t mind having your dick locked up after all? You don''t seem to be too eager to have it freed again. I guess some additional days in chastity might change that. I will call you again. Now get off my property!'
+    end
+
+    
+
+    act 'Leave':
+        gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*90*0
+        university_gender_guide_home_available = 0
+        gs 'util_time','pass_rand',90
+        gs 'util_event','end'
+    end
+elseif $ARGS[0] = 'panties':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/punish.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used') +' leads you inside and demands you to strip down.'
+
+    gs 'util_npc','render_dialogue','university_gender_guide','What the hell? I told you to wear panties! Get out! I won''t tolerate your disobedience!'
+    
+    act 'Leave':
+        gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*90*0
+        university_gender_guide_home_available = 0
+        gs 'util_time','pass_rand',180
+        gs 'util_event','end'
+    end
+elseif $ARGS[0] = 'bra':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/punish.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used') +' leads you inside and demands you to strip down.'
+
+    gs 'util_npc','render_dialogue','university_gender_guide','What the hell? I told you to wear a bra! Get out! I won''t tolerate your disobedience!'
+    
+    act 'Leave':
+        gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*90*0
+        university_gender_guide_home_available = 0
+        gs 'util_time','pass_rand',180
+        gs 'util_event','end'
+    end
+end
+-

+ 158 - 0
source/event/university/gender/experiment_shave.qsps

@@ -0,0 +1,158 @@
+# event_university_gender_experiment_shave
+
+$event_id = 'university_gender_experiment_shave'
+
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/shave/shave0.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' opens the door and leads you inside.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Today I want you to shave yourself. And this means every single hair except for your eyebrows and the hair on top of your head.'
+    'She leads you to her bathroom. You see several razors and shaving foam there.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Take your time. I don''t want to see a single hair left after you are done.'
+
+    act 'Shave yourself':
+        gt 'util_event','stage',$event_id,'shave'
+    end
+elseif $ARGS[0] = 'shave':
+    gs 'util_image','render_image','events/university/experiment/shave.jpg'
+    'You carefully shave yourself, making sure you don''t miss a single hair.'
+    'It takes more than an hour, but finally you have removed all the hair from your face and body.'
+    act 'Done':
+        gt 'util_event','stage',$event_id,'inspect'
+    end
+elseif $ARGS[0] = 'inspect':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/shave/shave1.jpg'
+    *P '</a>'
+    'You call for '+FUNC('util_npc','get','university_gender_guide','$name_used')+' and she inspects your carefully.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Okay, good enough. Now follow me.'
+    act 'Follow her':
+        gt 'util_event','stage',$event_id,'latexsuit'
+    end
+elseif $ARGS[0] = 'latexsuit':  
+    gs 'util_image','render_image','events/university/experiment/train_bodysuit.webp'
+    'She leads you to her basement. There she presents a red latex catsuit to you.'
+    gs 'util_npc','render_dialogue','university_gender_guide','This is a very new technology. It is not only a latex suit. But you will see that in time. Now put it on!'
+    'You slip into the suit. It is not as hard as you expected. You now smooth skin helps a lot with this. You also put the matching gloves and latex socks on.'
+    FUNC('util_npc','get','university_gender_guide','$name_used')+' pulls up the zipper on the back of the suit. Weird, it doesn''t feel like wearing anything.'
+    'She then attaches something to the back of the suit, directly above your butt. You can''t see what it is.'
+
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'gag'
+    end
+elseif $ARGS[0] = 'gag': 
+    gs 'util_image','render_image','events/university/experiment/train_gag.jpg'
+    gs 'util_npc','render_dialogue','university_gender_guide','Open your mouth!'
+    'She pushes something between your teeth. It is some kind of gag that is connect to some sort of tube.'
+    'Finally '+FUNC('util_npc','get','university_gender_guide','$name_used')+' puts a matching latex mask over your head. You realize that it has no opening for your eyes and ears but instead features earplugs and two monitors in front of your eyes.'
+    gs 'util_npc','render_dialogue','university_gender_guide','You are ready to go. Enjoy the show!'
+    
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr0'
+    end
+elseif $ARGS[0] = 'vr0':
+    gs 'util_image','render_image','events/university/experiment/vr/vr0.jpg'
+    'The monitors spring into action. And once again you are in a vr-simulation. But this time it is different.'
+    'You can actually feel the orange fabric on your chest. And you can the hair flowing down your back.'
+    'You look down. And yet another surprise: you can not only move your head this time, but every other part of your body as well.'
+    'Reaching down you realize that your penis and the cage around it is gone. You have a vagina there! Touching it feels very alien. Does it really feel like this?'
+    'You take a look around. Where are you? It looks like you are lying in a bed, locked in a prison cell.'
+
+    act 'Stand up':
+        gt 'util_event','stage',$event_id,'vr1'
+    end
+
+elseif $ARGS[0] = 'vr1':
+    gs 'util_image','render_image','events/university/experiment/vr/vr1.jpg'
+    'You try to stand up. And you realize that you are wearing high heels. Standing like this feels very strange as your ankles are forced into an unfamiliar ankle.'
+    'The bars you are behind look very sturdy. And there won''t be any way you could overcome the lock.'
+    'Just as you start to wonder what this is all about the door outside your cell opens and a police officer enters.'
+    '<i>Well, little lady. You got yourself into quite some trouble.</i>'
+    'He walks over to the bars.'
+    '<i>What should we do about this?</i>'
+    act 'Let me out!':
+        cla
+        '<i>You will call me sir. I guess before I let you out I have to teach you some manners.</i>'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'vr2'
+        end
+    end
+    act 'I don''t know':
+        cla
+        '<i>Don''t worry. I know exactly what you could do to get out of here.</i>'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'vr2'
+        end
+    end
+    act 'Whatever you want':
+        cla
+        '<i>I like the sound of this.</i>'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'vr2'
+        end
+    end
+elseif $ARGS[0] = 'vr2':
+    gs 'util_image','render_image','events/university/experiment/vr/vr2.jpg'  
+    'He compeltely undresses himself, then he enters your cell.'
+    'He pulls down your top to your belly, exposing your breasts. You can feel the cold air on your nipples.'
+    '<i>Get to your knees! And start licking!</i>'
+    'You do as you are commanded. As you touch is penis with your tongue feel something moving in your real mouth. The gag in your mouth translates the feeling of this virtual cock to the real world!'
+    'As you push the penis further into your mouth you feel the gag extending into your mouth the same way. And it tastes like flesh too!'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr3'
+    end
+elseif $ARGS[0] = 'vr3':
+    gs 'util_image','render_image','events/university/experiment/vr/vr3.jpg'
+    'You continue sucking for a minute or two. Then the policeman turns you around and pushes you to a chair.'
+    'And you feel him pushing his penis into your ass. You really feel it! The thing at your back is actually a dildo that translates the sensation of the simulation just like the gag in your mouth!'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr4'
+    end
+elseif $ARGS[0] = 'vr4':
+    gs 'util_image','render_image','events/university/experiment/vr/vr4.jpg'
+    'This man continues fucking you. It is a painful sensation. But also weirdly pleasuring.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr5'
+    end
+elseif $ARGS[0] = 'vr5':
+    gs 'util_image','render_image','events/university/experiment/vr/vr5.jpg'
+    'How long will this fucking continue? It must have been more then ten minutes now!'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr6'
+    end
+elseif $ARGS[0] = 'vr6':
+    gs 'util_image','render_image','events/university/experiment/vr/vr6.jpg'
+    'The pain is almost completely gone now. You no longer hope that this fucking will end as your pleasure intensifies.'
+    'Could you possibly cum from this?'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr7'
+    end
+elseif $ARGS[0] = 'vr7':
+    gs 'util_image','render_image','events/university/experiment/vr/vr7.jpg'
+    'You feel your penis pressing against its cage. You are so close!'
+    'And then you finally cum. It feels unfamiliar, but not less pleasuring then usual.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'vr8'
+    end
+elseif $ARGS[0] = 'vr8':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/shave/shave2.jpg'
+    *P '</a>'
+    'The simulation ends and you see '+FUNC('util_npc','get','university_gender_guide','$name_used')+' in front of you.'
+    gs 'util_npc','render_dialogue','university_gender_guide','I knew that you would enjoy this. Isn''t that way more natural for you than cumming as a man?'
+    'She helps you undress and then gives you a towel to clean up your cum.'
+    gs 'util_npc','render_dialogue','university_gender_guide','You will take this suit home. And I expect you to train with it each night. Understood? Good. Now get lost!'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'finish'
+    end
+elseif $ARGS[0] = 'finish':
+    gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*48*0
+    university_gender_guide_home_available = 0
+    university_gender_expetiment_counter += 1
+    gs 'util_time','pass_rand',3600*3
+    gs 'util_event','end'
+end
+
+-

+ 306 - 0
source/event/university/gender/experiment_start.qsps

@@ -0,0 +1,306 @@
+# event_university_gender_experiment_start
+
+$event_id = 'university_gender_experiment_start'
+
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro0.jpg'
+    *P '</a>'
+
+    'You ring the doorbell. Shortly after an attractive young woman opens the door.'
+    gs 'util_npc','render_dialogue','university_gender_guide','You are here for the experiment, right? Okay, come in then.'
+    'She leads you into her living room. You are not sure what is expected from you now, so you decide to stay silent for now.'
+    
+
+    act 'Continue':
+        !gt 'event_university_gender_experiment_start','sparklingwine'
+        gt 'util_event','stage',$event_id,'sparklingwine'
+    end
+
+elseif $ARGS[0] = 'sparklingwine':
+    gs 'util_image','render_image','events/consume/sparklingwine.jpg'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used') + ' walks over to a cupboard and takes out two glasses and a bottle of sparkling wine.'
+    gs 'util_npc','render_dialogue','university_gender_guide','It seems as if we are stuck with each other for at least a semester. I assume we can get to know each other as well.'
+    'She fills both glasses with sparkling wine.'
+    gs 'util_npc','render_dialogue','university_gender_guide','And I prefer to do so with something to drink.'
+    'She hands you one of the glasses.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Cheers.'
+
+    act 'Drink':
+        !gt 'event_university_gender_experiment_start','stage_1'
+        gt 'util_event','stage',$event_id,'stage_1'
+    end
+
+    act 'Hesitate':
+        cla
+        'She notices your hesitation.'
+        gs 'util_npc','render_dialogue','university_gender_guide','You wouldn''t want to shame me by not drinking, right?'
+
+        act 'Drink reluctantly':
+            !gt 'event_university_gender_experiment_start','stage_1'
+            gt 'util_event','stage',$event_id,'stage_1'
+        end
+    end
+elseif $ARGS[0] = 'stage_1':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro1.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+' smiles as you drink. She must have taken a sip herself although you didn''t see her do it.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Okay then, tell me about yourself.'
+
+    act 'Tell her about yourself':
+        !gt 'event_university_gender_experiment_start','stage_2'
+        gt 'util_event','stage',$event_id,'stage_2'
+    end
+
+    act 'How about <i>you</i> tell me about <i>yourself</i> first?':
+        cla
+        'She frowns.'
+        gs 'util_npc','render_dialogue','university_gender_guide','We have time for this later. Telling me about yourself is important for our experiment, so please go ahead.'
+
+        act 'Tell her about yourself':
+            !gt 'event_university_gender_experiment_start','stage_2'
+            gt 'util_event','stage',$event_id,'stage_2'
+        end
+    end
+elseif $ARGS[0] = 'stage_2':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro2.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+' leads you to a chair to sit down. She listens attentively while you tell her what she wants to hear. First she asks you about your family and your education, then about your goals in life.'
+    'After a while she stands up from her seat. You notice her hands wandering down her dress and slowly lifting it up.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Interesting. But what you really is a fresh pussy every now and then. Isn''t that what it is all about?'
+    'You can see her panties now. You have to force yourself to not stare at them.'
+
+    act 'Yes':
+        !gt 'event_university_gender_experiment_start','stage_3'
+        gt 'util_event','stage',$event_id,'stage_3'
+    end
+
+    act 'No':
+        cla
+        gs 'util_npc','render_dialogue','university_gender_guide','Oh, don''t lie to me. You are just like any other man. You wouldn''t turn any opportunity to fuck a woman down.'
+    
+        act 'Maybe':
+            !gt 'event_university_gender_experiment_start','stage_3'
+            gt 'util_event','stage',$event_id,'stage_3'
+        end
+    end
+elseif $ARGS[0] = 'stage_3':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro3.jpg'
+    *P '</a>'
+
+    gs 'util_npc','render_dialogue','university_gender_guide','Of course. And why would it be any other way? As a man you are entitled to my pussy, right?'
+    'She slides one hand into her panties and starts playing with her privates.'
+    
+    act 'Y... eh... No!':
+        !gt 'event_university_gender_experiment_start','stage_4'
+        gt 'util_event','stage',$event_id,'stage_4'
+    end
+
+    act 'Sure!':
+        !gt 'event_university_gender_experiment_start','stage_4'
+        gt 'util_event','stage',$event_id,'stage_4'
+    end
+elseif $ARGS[0] = 'stage_4':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro4.jpg'
+    *P '</a>'
+    gs 'util_npc','render_dialogue','university_gender_guide','Yes, the patriarchy places you at the top of society.'
+    'She slips out of her dress. You realize now, that she is not wearing a bra.'
+    gs 'util_npc','render_dialogue','university_gender_guide','And silly little girls like myself are toys to have fun with.'
+    'This is getting weird. You try to stand up, but a strange numbness in your body prevents you from doing so.'
+
+    act 'Relax':
+        !gt 'event_university_gender_experiment_start','stage_5'
+        gt 'util_event','stage',$event_id,'stage_5'
+    end
+
+    act 'What the hell?':
+        'You try to articulate your words. You were able to do so mere seconds ago, but now you can''t produce nothing but an unintelligible moan.'
+        act '...':
+            !gt 'event_university_gender_experiment_start','stage_5'
+            gt 'util_event','stage',$event_id,'stage_5'
+        end
+    end
+
+    act 'What is going on?':
+        'You try to articulate your words. You were able to do so mere seconds ago, but now you can''t produce nothing but an unintelligible moan.'
+        act '...':
+            !gt 'event_university_gender_experiment_start','stage_5'
+            gt 'util_event','stage',$event_id,'stage_5'
+        end
+    end
+
+    act 'Help!':
+        'You try to articulate your words. You were able to do so mere seconds ago, but now you can''t produce nothing but an unintelligible moan.'
+        act '...':
+            !gt 'event_university_gender_experiment_start','stage_5'
+            gt 'util_event','stage',$event_id,'stage_5'
+        end
+    end
+elseif $ARGS[0] = 'stage_5':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro5.jpg'
+    *P '</a>'
+    'She lets her panties slide down her legs and to the ground. Except for her shoes she is completely naked now.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Yes, I am your toy. Didn''t you think that when you saw me for the first time? A few holes to fill. Who cares about her personality?'
+
+    act '...':
+        !gt 'event_university_gender_experiment_start','stage_6'
+        gt 'util_event','stage',$event_id,'stage_6'
+    end
+elseif $ARGS[0] = 'stage_6':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro6.jpg'
+    *P '</a>'
+    'She turns around and bends over, presenting her pussy to you.'
+    gs 'util_npc','render_dialogue','university_gender_guide','And as a compliant little I have to do what society demands from me. So go ahead and use me!'
+    'She turns her head to look at you.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Oh, are you a little dazed? Don''t worry, my sparkling wine has this effect from time to time.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','stage_7'
+        gt 'util_event','stage',$event_id,'stage_7'
+    end
+elseif $ARGS[0] = 'stage_7':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro7.jpg'
+    *P '</a>'
+    'She comes over and kneels down between your legs. She pulls down your pants and underpants. There is no point in protesting or even resisting, you are still unable to move and speak. In contrast to the other parts of your body your penis is very much in form. You have a massive erection.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Yes, that''s what I thought. Let me help you with that.'
+    'She closes her lips around the tip of your cock. Gently she start circling it with her tongue. This feels great, she is apparently very experienced.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','stage_8'
+        gt 'util_event','stage',$event_id,'stage_8'
+    end
+elseif $ARGS[0] = 'stage_8':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro8.jpg'
+    *P '</a>'
+    'She grabs your dick with both hands and pushes it as far down her throat as she can. She continues to do until you are just about to cum.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','stage_9'
+        gt 'util_event','stage',$event_id,'stage_9'
+    end
+elseif $ARGS[0] = 'stage_9':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro9.jpg'
+    *P '</a>'
+    'She strokes your dick only a little further. It is enough for you to cum. This orgasm feels incredible. And '+FUNC('util_npc','get','university_gender_guide','$name_used')+' still kneels in front of you, your sperm now warmly resting on her face.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','chastity'
+        gt 'util_event','stage',$event_id,'chastity'
+    end
+elseif $ARGS[0] = 'chastity':
+    gs 'util_image','render_image','events/university/experiment/chastity0.webp'
+    'You still can''t move. Therefore you can only watch while '+FUNC('util_npc','get','university_gender_guide','$name_used')+' takes out some kind of plastic ring and places it around your balls and penis.'
+    'Then she slides a plastic tube over your cock. It feels rather tight, even with your penis being limp right now.'
+    'Lastly she connects both plastic pieces with a plastic bolt and locks it up with a padlock.'
+    'She tucks at the plastic, but it won''t move a tiny bit. Your dick as effectively been locked out of reach.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','stage_10'
+        gt 'util_event','stage',$event_id,'stage_10'
+    end
+elseif $ARGS[0] = 'stage_10':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro10.jpg'
+    *P '</a>'
+    'Standing up '+FUNC('util_npc','get','university_gender_guide','$name_used')+'put her underwear back on.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Look how the tables have turned. Now I am in control and you are my toy.'
+    'She turns around and presents her butt to you.'
+    gs 'util_npc','render_dialogue','university_gender_guide','In reality you were never entitled to this. All this patriarchy bullshit is nothing but a social construct. And in case you didn''t figure it out for yourself: we will prove that it is easy to overcome.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','vr'
+        gt 'util_event','stage',$event_id,'vr'
+    end
+elseif $ARGS[0] = 'vr':
+    gs 'util_image','render_image','events/university/experiment/vr.webp'
+    gs 'util_npc','render_dialogue','university_gender_guide','Actually everything we are doing today is planed for way later in the semester. But I have never been the patient type.'
+    'She takes what appears to be a VR set.'
+    gs 'util_npc','render_dialogue','university_gender_guide','And I think that you will agree that there is no sense in waiting.'
+    'She places the glasses over your head and activates it. You see a video of '+FUNC('util_npc','get','university_gender_guide','$name_used')+'. But somehow it is impossible for you to remember what she is saying.'
+    act '...':
+        !gt 'event_university_gender_experiment_start','stage_11'
+        gt 'util_event','stage',$event_id,'stage_11'
+    end
+elseif $ARGS[0] = 'stage_11':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro11.jpg'
+    *P '</a>'
+    'You have no idea how much time has passed. 10 minutes? Or maybe 60? 3 hours? Your head feels numb when '+FUNC('util_npc','get','university_gender_guide','$name_used')+' finally removes the VR-headset.'
+    'To your relief you realize that you can move again. And you also feel like being able to talk again.'
+    'When you look up you see '+FUNC('util_npc','get','university_gender_guide','$name_used')+' standing above you. She has changed her outfit and is now wearing a slutty pink fishnet outfit that''s basically conists of a bra and panties.'
+    gs 'util_npc','render_dialogue','university_gender_guide','I hope you enjoyed your first special education course.'
+    act 'No!':
+        cla
+        'Yes, thank you, '+FUNC('util_npc','get','university_gender_guide','$name_used')+'!'
+        'Wait, what the hell?! That''s the opposite of what you wanted to say!'
+        gs 'util_npc','render_dialogue','university_gender_guide','Good to hear.'
+        'She just grins.'
+        act 'Push her':
+            cla
+            'You contemplate attacking her, but deep down you know that there is no way you could ever hurt her.'
+            act '...':
+                !gt 'event_university_gender_experiment_start','stage_12'
+                gt 'util_event','stage',$event_id,'stage_12'
+            end
+        end
+    end
+    act 'Unlock my dick!':
+        cla
+        'Yes, thank you, '+FUNC('util_npc','get','university_gender_guide','$name_used')+'!'
+        'Wait, what the hell?! That''s the opposite of what you wanted to say!'
+        gs 'util_npc','render_dialogue','university_gender_guide','Good to hear.'
+        'She just grins.'
+        act 'Push her':
+            cla
+            'You contemplate attacking her, but deep down you know that there is no way you could ever hurt her.'
+            act '...':
+                !gt 'event_university_gender_experiment_start','stage_12'
+                gt 'util_event','stage',$event_id,'stage_12'
+            end
+        end
+    end
+    act 'Are you mad?!':
+        cla
+        'Yes, thank you, '+FUNC('util_npc','get','university_gender_guide','$name_used')+'!'
+        'Wait, what the hell?! That''s the opposite of what you wanted to say!'
+        gs 'util_npc','render_dialogue','university_gender_guide','Good to hear.'
+        'She just grins.'
+        act 'Push her':
+            cla
+            'You contemplate attacking her, but deep down you know that there is no way you could ever hurt her.'
+            act '...':
+                !gt 'event_university_gender_experiment_start','stage_12'
+                gt 'util_event','stage',$event_id,'stage_12'
+            end
+        end
+    end
+elseif $ARGS[0] = 'stage_12':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/intro12.jpg'
+    *P '</a>' 
+
+    gs 'util_npc','render_dialogue','university_gender_guide','We are done for today. Get out of my house now! My boyfriend will be here soon. And yes, he is a real man. Nothing like you.'
+    'She points to her entrance door.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Oh, and yes, your dick will stay locked up until we meet again. Don''t dare coming here on your own. I will call you on your cellphone if I want to see you.'
+    
+    
+    
+    act 'Yes, '+FUNC('util_npc','get','university_gender_guide','$name_used'):
+        !gt 'event_university_gender_experiment_start','finish'
+        gt 'util_event','stage',$event_id,'finish'
+    end
+elseif $ARGS[0] = 'finish':
+    gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*48*0
+    university_gender_guide_home_available = 0
+    university_gender_expetiment_counter += 1
+    gs 'util_time','pass_rand',7200
+    gs 'util_event','end'
+end
+
+-

+ 197 - 0
source/event/university/gender/experiment_strapon.qsps

@@ -0,0 +1,197 @@
+# event_university_gender_experiment_strapon
+
+$event_id = 'university_gender_experiment_strapon'
+
+if $ARGS[0] = 'start':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/strapon/portrait.jpg'
+    *P '</a>'
+
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' opens the door and leads you inside.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Before we start I want to see your panties. Pull your pants down!'
+    
+
+    act 'Pull your pants down':
+        cla
+        gs 'util_wardrobe','loadItemAtSlot','panties'
+        if $item_gender = 'f':
+            gt 'util_event','stage',$event_id,'strapon_1'
+        else
+            'You pull your pants down. And you are obviously not wearing the panties '+FUNC('util_npc','get','university_gender_guide','$name_used')+' demanded you to wear.'
+            gs 'util_npc','render_dialogue','university_gender_guide','Are you kidding me? I demanded you to wear panties. Did you really think I wouldn''t notice.'
+            'She thinks for a moment.'
+            gs 'util_npc','render_dialogue','university_gender_guide','All right then. I guess we have to improvise. Follow me.'
+            act 'Follow her':
+                gt 'util_event','stage',$event_id,'shop_1'
+            end
+        end
+    end
+ elseif $ARGS[0] = 'shop_1':
+    gs 'util_image','render_image','locations/lingeriestore/lingerie(0).jpg'
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' leads you to her car. You take the seat to her side while the two of you drive to a nearby mall.'
+    'She turns the radio up. It''s some kind of mainstream rock radio station. The two of you don''t talk during the drive.'
+    'When you arrive '+FUNC('util_npc','get','university_gender_guide','$name_used')+ ' parks her car at the parking lot and you enter the mall.'
+    'Finally you reach your desintation: a lingerie shop.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Since you didn''t by the panties on your own we will do so now. And while we are here we can buy a bra for you as well.'
+    'She enters the shop.'
+    act 'Follow her':
+        gt 'util_event','stage',$event_id,'shop_2'
+    end
+ elseif $ARGS[0] = 'shop_2':
+    gs 'util_image','render_image','events/university/experiment/lingerieShopping.jpg'
+    'You feel quite uncomfortably. You tell yourself that the two girls employees and the four female clients in this shop will think that you are here with your girlfriend and that you are here to chose underwear for her, but what if they don''t?'
+    gs 'util_npc','render_dialogue','university_gender_guide','Here, I think you should try these on.'
+    'She hands you white panties and a matching bra. The bra is padded and wearing it will make you look like having B-cup breasts even with a flat natural chest.'
+    act 'Try it out':
+        gt 'util_event','stage',$event_id,'shop_3'
+    end
+ elseif $ARGS[0] = 'shop_3':
+    gs 'util_image','render_image','events/university/experiment/lingerieChanging.jpg'
+    'The two of you go over to the changing rooms. You look around to make sure nobody sees you before entering one of them.'
+    act 'Undress':
+        cla
+        'You remove your clothes and put them on a pile.'
+        act 'Put the lingerie on':
+            cla
+            'You try putting on the lingerie. You don''t have a problem putting on the panties, but the bra seems to be several numbers too small.'
+            FUNC('util_npc','get','university_gender_guide','$name_used')+' is waiting in front of the changing room. Maybe you should tell her about the problem.'
+            act 'Tell '+FUNC('util_npc','get','university_gender_guide','$name_used'):
+                cla
+                '<i>I think the bra is too small.</i> you whisper.'
+                gs 'util_npc','render_dialogue','university_gender_guide','Really? Let me see?'
+                'She makes no effort to lower her voice. She enters the changing room and inspects the bra.'
+                gs 'util_npc','render_dialogue','university_gender_guide','Okay. You are right. This won''t do. Wait here.'
+                'She leaves and returns shortly after with the same bra in a bigger size.'
+                gs 'util_npc','render_dialogue','university_gender_guide','Try this one.'
+                'She leaves again.'
+                act 'Try out the new bra':
+                    gt 'util_event','stage',$event_id,'shop_4'
+                end
+            end
+        end
+    end
+ elseif $ARGS[0] = 'shop_4':
+    gs 'util_image','render_image','events/university/experiment/lingerieChanging.jpg'
+    'You try out the new bra. It is a pefect fit... for somebody who doesn''t have breasts.'
+    'And you were right. The padding of the bra makes it look as if you had breasts. If you were wearing a shirt above it it would look as if you had real breasts of average size.'
+    'Speaking of which... where is your shirt? You look around, but the pile of your clothes is gone!'
+    'You start to panic as you realize that your smartphone is still here. And you have an unread message on it:'
+    '<i>Your clothes are at the toilet.</i>'
+    'Your heart races. You remember the toilets being on the opposite side of the store.'
+    act 'Leave the changing room':
+        gt 'util_event','stage',$event_id,'shop_5'
+    end
+ elseif $ARGS[0] = 'shop_5':
+    gs 'util_image','render_image','locations/lingeriestore/lingerie(1).jpg'
+    'There are still two employees and four customers in the store. You don''t see '+ FUNC('util_npc','get','university_gender_guide','$name_used')+' anywhere.'
+    'If you are careful you might make it to the toilets while nobody is looking. You contemplate putting off the bra you are wearing right now. But then you realize that you wearing it is part of this cruel game. And if you put it off there might be worse consequences.'
+    'You wait until everybody else looks the other way, then you quickly sneak over to the toilets. You hope nobody saw you.'
+    act 'Mens toilet':
+        'You slip inside the mens toilet. It is completely empty. Your clothes are not here.'
+    end
+    act 'Womens toilet':
+         gt 'util_event','stage',$event_id,'shop_6'
+    end
+ elseif $ARGS[0] = 'shop_6':
+    gs 'util_image','render_image','events/university/experiment/lingerieToilet.jpg'
+    'You slip inside the womens toilet. One of the stalls seems to be occupied.'
+    'In one corner of the room you see your clothes.'
+    act 'Change into your clothes':
+        cla
+        'You take your clothes a swiftly head for a stall. In there you put the lingerie off and your old clothes back again.'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'shop_7'
+        end
+    end
+elseif $ARGS[0] = 'shop_7':
+    gs 'util_image','render_image','locations/lingeriestore/lingerie(0).webp'
+    'As you leave the womens toilet you see '+FUNC('util_npc','get','university_gender_guide','$name_used')+' waiting right next to the entrance. She seems to be amused.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Are you done? Lets check out then.'
+    'She takes the lingerie from your hands and proceeds to the check out. After she paid for the lingerie the two of you leave the shop.'
+    'She hands you the shopping bag containing the panties and the bra. Then she takes out her smartphone and turns it so you can see it. It shows a video. A video of you sneaking through the shop in female lingerie. She has recorded all of it!'
+    gs 'util_npc','render_dialogue','university_gender_guide','Let this be a warning to you. The next time I expect you to follow my order. I think I don''t need to tell you that you will be wearing both these panties and this bra the next time we meet. Now leave me. We are done for today.'
+    'She walks back to her car, leaving you behind.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'shop_finish'
+    end
+elseif $ARGS[0] = 'shop_finish':
+    gs 'util_item','add_item','panties1','0'
+    gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*48*0
+    university_gender_guide_home_available = 0
+    university_gender_guide_requires_panties = 1
+    university_gender_guide_requires_bra = 1
+    gs 'util_time','pass_random',5400
+    gt 'util_event','end','citycenterMall'
+elseif $ARGS[0] = 'strapon_1':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/strapon/portrait.jpg'
+    *P '</a>'
+
+    gs 'util_npc','render_dialogue','university_gender_guide','I know that you want to want to have sex with me. I saw it in your eyes when I had you watch me being fucked by Jerome.'
+    FUNC('util_npc','get','university_gender_guide','$name_used')+ ' softly slides her fingers down her neck and to her breasts.'
+    gs 'util_npc','render_dialogue','university_gender_guide','And since you have been a good girl I think you earned it.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'strapon_2'
+    end
+elseif $ARGS[0] = 'strapon_2':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/strapon/start('+rand(0,4)+').jpg'
+    *P '</a>'
+    'She pulls her skirt up. Beneath it she wears a flesh colored strapon. It looks a little bit bigger than your own penis if it was erect (or if it was able to get erect).'
+    'It partly covers the pussy of '+FUNC('util_npc','get','university_gender_guide','$name_used')+' and seems to be attached to her clit.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Yes, that''s right. That''s a marvelous invention. It allows me to experience sex in a way similiar to a man.'
+    'She strokes her fake penis a little.'
+    gs 'util_npc','render_dialogue','university_gender_guide','I can actually feel that. It''s great. Now get over here and lick my cock!'
+
+    act 'Suck her <i>cock</i>':
+        gt 'util_event','stage',$event_id,'strapon_3'
+    end
+elseif $ARGS[0] = 'strapon_3':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/strapon/suck('+rand(0,1)+').jpg'
+    *P '</a>'
+    'You put the strapon in your mouth. You expect it to taste like plastic but instead it tastes like the flesh of '+FUNC('util_npc','get','university_gender_guide','$name_used')+'.'
+    'You begin to lick and suck it. You don''t exactly know what you are doing and how the sensation gets translated to '+FUNC('util_npc','get','university_gender_guide','$name_used')+' so you test different approaches and continue what appears to make her moan louder.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Oh yes, bitch, that''s good. Yes, more!'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'strapon_4'
+    end
+
+elseif $ARGS[0] = 'strapon_4':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/strapon/fuck('+rand(0,2)+').jpg'
+    *P '</a>'
+    'After a few minutes '+FUNC('util_npc','get','university_gender_guide','$name_used')+' orders you to turn around.'
+    'You assume that she wants to fuck you. And you are not mistaken. Your dick strains against its cage as she pushes her fake cock into your back.'
+    'It is an uncomfortable and painful yet curiously pleasing feeling.'
+    'It doesn''t take long before her voice gets louder and higher. She is clealy approaching an orgasm.'
+    'She grabs your hips and pulls you closer to herself. Then she cums with a loud scream of pleasure.'
+
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'strapon_5'
+    end
+
+elseif $ARGS[0] = 'strapon_5':
+    *P '<a href="exec:gs ''util_npc'',''detailsShow'',''university_gender_guide''">'
+    gs 'util_image','render_image','npc/university/gender/guide/strapon/photo.jpg'
+    *P '</a>'
+
+    'As you turn around you see her playing with her smartphone. She has recorded how she fucked you!'
+    gs 'util_npc','render_dialogue','university_gender_guide','Don''t worry. Nobody will see this video. At least as long as you keep being a good girl.'
+    'She takes a look at your encaged cock.'
+    gs 'util_npc','render_dialogue','university_gender_guide','Too bad you were not able to cum. I guess you will need a little training before you cum from anal penetration.'
+
+    gs 'util_npc','render_dialogue','university_gender_guide','Now get out. I am tired. I will call you when I want to see you again.'
+
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'finish'
+    end
+elseif $ARGS[0] = 'finish':
+    gs 'util_interrupt','add','ALL','ALL','university_gender_experiment_phone',0,20*0,time_current+3600*48*0
+    university_gender_guide_home_available = 0
+    university_gender_expetiment_counter += 1
+    university_gender_guide_requires_panties = 1
+    gs 'util_time','pass_rand',1800
+    gs 'util_event','end'
+ end
+-

+ 4 - 0
source/gameLoad.qsps

@@ -0,0 +1,4 @@
+# gameLoad
+
+gt 'start'
+-

+ 80 - 0
source/inventory/magazin_porn.qsps

@@ -0,0 +1,80 @@
+# inventory_magazin_porn
+
+$inv_id = 'magazin_porn'
+
+if $ARGS[0] = 'info':
+    $inv_name = 'Porn Magazin'
+    $inv_media = 'inventory/magazin_porn('+magazin_config['porn_cover']+').jpg'
+    $inv_action_caption[] = 'Read'
+    $inv_action_id[] = 'read'
+    $inv_action_caption[] = 'Dispose'
+    $inv_action_id[] = 'dispose'
+elseif $ARGS[0] = 'dispose':
+    gs 'util_inventory','remove',$inv_id,1
+elseif $ARGS[0] = 'onRemove':
+    magazin_config['porn_cover'] = (magazin_config['porn_cover'] + rand(1,2)) mod 3
+    magazin_config['porn_0'] = 0
+    magazin_config['porn_1'] = 0
+    magazin_config['porn_2'] = 0
+    magazin_config['porn_views'] = 0
+    magazin_page['porn'] = 0
+elseif $ARGS[0] = 'read':
+    gt 'inventory_magazin_porn','read_event'
+elseif $ARGS[0] = 'read_event':
+ 
+    if magazin_config['porn_0'] = 0:
+        magazin_config['porn_0'] = rand(1,15)
+        : Loop1
+        magazin_config['porn_1'] = rand(1,15)
+        if magazin_config['porn_1'] = magazin_config['porn_0'] : jump 'Loop1'
+        : Loop2
+        magazin_config['porn_2'] = rand(1,15)
+        if magazin_config['porn_2'] = magazin_config['porn_0'] or magazin_config['porn_2'] = magazin_config['porn_1'] : jump 'Loop2'
+    end
+
+    temp_imageset = magazin_config['porn_'+(magazin_page['porn']/3)]
+    temp_image = magazin_page['porn'] mod 3
+    gs 'util_image','render_image','inventory/magazine_porn/<<temp_imageset>>_<<temp_image>>.jpg'
+
+    magazin_config['porn_views'] += 1
+    if magazin_config['porn_views'] <= 20:
+        'The magazine is rather new and the images in it haven''t lost their appeal yet.'
+        gs 'util_sex','horninessInc','low','voyeur','>f',10
+    elseif magazin_config['porn_views'] <= 40:
+        'You have looked through the magazine several times now. You have already gotten used somewhat to the images in here. They don''t have the effect they used to have.'
+        gs 'util_sex','horninessInc','vlow','voyeur','>f',5
+    else
+        'You have looked through the magazine many times and the images in there don''t have an effect on you anymore.'
+    end
+
+    gs 'util_time','pass',30
+    gs 'util_stat','render_widget'
+    
+
+    if magazin_page['porn'] < 8:
+        act 'Next Page':
+            magazin_page['porn'] += 1
+            gt 'inventory_magazin_porn','read_event'
+        end
+    end
+
+    if magazin_page['porn'] > 0:
+        act 'Previous Page':
+            magazin_page['porn'] -= 1
+            gt 'inventory_magazin_porn','read_event'
+        end
+    end
+
+    act 'Store it away':
+        gt 'util_event','end'
+    end
+
+    if magazin_page['porn'] = 8:
+        act '<b><font="red">Dispose</font></b>':
+            gs 'inventory_magazin_porn','dispose'
+            gt 'util_event','end'
+        end
+    end
+end
+
+-

+ 16 - 0
source/inventory/magazin_women.qsps

@@ -0,0 +1,16 @@
+# inventory_magazin_women
+
+$inv_id = 'magazin_women'
+
+if $ARGS[0] = 'info':
+    $inv_name = 'Magazin for Women'
+    $inv_media = 'inventory/magazin_women.jpg'
+    $inv_action_caption[] = 'Read'
+    $inv_action_id[] = 'read'
+elseif $ARGS[0] = 'read':
+    !gs 'util_inventory','remove',$inv_id,1
+    *PL 'Read'
+    
+end
+
+-

+ 16 - 0
source/inventory/snack.qsps

@@ -0,0 +1,16 @@
+# inventory_snack
+
+$inv_id = 'snack'
+
+if $ARGS[0] = 'info':
+    $inv_name = 'Snack'
+    $inv_media = 'inventory/lickers.webp'
+    $inv_action_caption[] = 'Consume'
+    $inv_action_id[] = 'consume'
+elseif $ARGS[0] = 'consume':
+    gs 'util_inventory','remove',$inv_id,1
+    *PL 'Consume Snack'
+    
+end
+
+-

+ 16 - 0
source/inventory/softdrink.qsps

@@ -0,0 +1,16 @@
+# inventory_softdrink
+
+$inv_id = 'softdrink'
+
+if $ARGS[0] = 'info':
+    $inv_name = 'Softdrink'
+    $inv_media = 'inventory/softdrink.png'
+    $inv_action_caption[] = 'Consume'
+    $inv_action_id[] = 'consume'
+elseif $ARGS[0] = 'consume':
+    gs 'util_inventory','remove',$inv_id,1
+    *PL 'Consume Softdrink'
+    
+end
+
+-

+ 18 - 0
source/item/bra1.qsps

@@ -0,0 +1,18 @@
+# item_bra1
+
+! $item_color = red, black, white, pink
+! $item_price = vlow,low,mid,high,vhigh
+! $item_sluttiness = prude,decent,sexy,slutty
+! $item_style = Casual, Opera, Party
+
+$item_gender = 'f'
+$item_type = 'bra'
+
+if $ARGS[0] = '0':
+    $item_name = 'White Bra'
+    $item_image = 'items/bra1/bra(0).jpg'
+    $item_price = 'high'
+    $item_color = 'white'
+end
+
+-

+ 15 - 0
source/item/casual_male1.qsps

@@ -0,0 +1,15 @@
+# item_casual_male1
+
+$item_type = 'clothes'
+$item_style = 'Casual'
+$item_sluttiness = 'none'
+$item_gender = 'm'
+
+if $ARGS[0] = '0':
+    $item_name = 'Green Pullover Outfit'
+    $item_image = 'items/clothes/m_casual/casual(0).jpg'
+    $item_price = 'low'
+    $item_color = 'green'
+end
+
+-

+ 329 - 0
source/item/dress1.qsps

@@ -0,0 +1,329 @@
+# item_dress1
+
+! $item_color = red, black, white, pink
+! $item_price = vlow,low,mid,high,vhigh
+! $item_sluttiness = prude,decent,sexy,slutty
+! $item_style = Casual, Opera, Party
+
+$item_gender = 'f'
+$item_type = 'clothes'
+$item_subtype = 'dress'
+
+if $ARGS[0] = 'A0':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(0).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'slutty'
+    $item_color = 'red'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A1':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(1).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A2':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(2).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A3':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(3).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A4':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(4).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A5':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(5).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A6':
+    $item_name = 'Pink Dress'
+    $item_image = 'items/clothes/f_dress/dress(6).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'decent'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A7':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(7).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'red'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A8':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(8).jpg'
+    $item_price = 'vhigh'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Opera'
+elseif $ARGS[0] = 'A9':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(9).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'red'
+    $item_style = 'Opera'
+elseif $ARGS[0] = 'A10':
+    $item_name = 'Blue Dress'
+    $item_image = 'items/clothes/f_dress/dress(10).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'blue'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A11':
+    $item_name = 'Orange Dress'
+    $item_image = 'items/clothes/f_dress/dress(11).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'orange'
+    $item_style = 'Opera'
+elseif $ARGS[0] = 'A12':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(12).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A13':
+    $item_name = 'Blue Dress'
+    $item_image = 'items/clothes/f_dress/dress(13).jpg'
+    $item_price = 'vlow'
+    $item_sluttiness = 'decent'
+    $item_color = 'blue'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A14':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(14).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A15':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(15).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A16':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(16).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'slutty'
+    $item_color = 'white'
+    $item_style = 'Opera'
+elseif $ARGS[0] = 'A17':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(17).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'prude'
+    $item_color = 'red'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A18':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(18).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A19':
+    $item_name = 'Grey Dress'
+    $item_image = 'items/clothes/f_dress/dress(19).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A20':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(20).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A21':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(21).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A22':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(22).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A23':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(23).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'slutty'
+    $item_color = 'red'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A24':
+    $item_name = 'Grey Dress'
+    $item_image = 'items/clothes/f_dress/dress(24).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'decent'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A25':
+    $item_name = 'Turquoise Dress'
+    $item_image = 'items/clothes/f_dress/dress(25).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'turquoise'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A26':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(26).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'slutty'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A27':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(27).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A28':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(28).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A29':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(29).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A30':
+    $item_name = 'Pink Dress'
+    $item_image = 'items/clothes/f_dress/dress(30).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A31':
+    $item_name = 'Black Leather Dress'
+    $item_image = 'items/clothes/f_dress/dress(31).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'slutty'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A32':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(32).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A33':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(33).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A34':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(34).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A35':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(35).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A36':
+    $item_name = 'Red Dress'
+    $item_image = 'items/clothes/f_dress/dress(36).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'decent'
+    $item_color = 'red'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A37':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(37).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A38':
+    $item_name = 'Green Dress'
+    $item_image = 'items/clothes/f_dress/dress(38).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'green'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A39':
+    $item_name = 'Pink Dress'
+    $item_image = 'items/clothes/f_dress/dress(39).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'decent'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A40':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(40).jpg'
+    $item_price = 'vhigh'
+    $item_sluttiness = 'prude'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A41':
+    $item_name = 'Blue Dress'
+    $item_image = 'items/clothes/f_dress/dress(41).jpg'
+    $item_price = 'vhigh'
+    $item_sluttiness = 'decent'
+    $item_color = 'blue'
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'A42':
+    $item_name = 'White Dress'
+    $item_image = 'items/clothes/f_dress/dress(42).jpg'
+    $item_price = 'vhigh'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Party'
+elseif $ARGS[0] = 'A43':
+    $item_name = 'Blue Dress'
+    $item_image = 'items/clothes/f_dress/dress(43).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'blue'
+    $item_style = 'Opera'
+elseif $ARGS[0] = 'A44':
+    $item_name = 'Black Dress'
+    $item_image = 'items/clothes/f_dress/dress(44).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'slutty'
+    $item_color = 'black'
+    $item_style = 'Party'
+end
+
+-

+ 252 - 0
source/item/jeans1.qsps

@@ -0,0 +1,252 @@
+# item_jeans1
+
+! $item_color = red, black, white, pink
+! $item_price = vlow,low,mid,high,vhigh
+! $item_sluttiness = prude,decent,sexy,slutty
+! $item_style = Casual, Opera, Party
+
+$item_gender = 'f'
+$item_type = 'clothes'
+$item_subtype = 'jeans'
+
+if $ARGS[0] = '0':
+    $item_name = 'White Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(0).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '1':
+    $item_name = 'White Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(1).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'slutty'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '2':
+    $item_name = 'Grey Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(2).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '3':
+    $item_name = 'Black Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(3).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '4':
+    $item_name = 'Jeans Jacket and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(4).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'prude'
+    $item_color = 'blue'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '5':
+    $item_name = 'Grey Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(5).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '6':
+    $item_name = 'Grey Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(6).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '7':
+    $item_name = 'Pink Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(7).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'decent'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '8':
+    $item_name = 'White Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(8).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '9':
+    $item_name = 'White Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(9).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '10':
+    $item_name = 'Purple Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(10).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'purple'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '11':
+    $item_name = 'Pink Top and Jeans Skirt'
+    $item_image = 'items/clothes/f_jeans/jeans(11).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '12':
+    $item_name = 'Black Sheer Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(12).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'slutty'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '13':
+    $item_name = 'Black Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(13).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'slutty'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '14':
+    $item_name = 'Grey Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(14).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'prude'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '15':
+    $item_name = 'Flower Top and Black Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(15).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'red'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '16':
+    $item_name = 'Blue Top and Jeans Skirt'
+    $item_image = 'items/clothes/f_jeans/jeans(16).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'blue'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '17':
+    $item_name = 'Brown Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(17).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'decent'
+    $item_color = 'brown'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '18':
+    $item_name = 'Black Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(18).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '19':
+    $item_name = 'Pink Cardigan and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(17).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'decent'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '20':
+    $item_name = 'White Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(20).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'decent'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '21':
+    $item_name = 'Black Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(21).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '22':
+    $item_name = 'Brown Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(22).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'decent'
+    $item_color = 'brown'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '23':
+    $item_name = 'White Sheer Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(23).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'slutty'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '24':
+    $item_name = 'White Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(24).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'white'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '25':
+    $item_name = 'Purple Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(25).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'purple'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '26':
+    $item_name = 'Sheer Black Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(26).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'slutty'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '27':
+    $item_name = 'Green Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(27).jpg'
+    $item_price = 'low'
+    $item_sluttiness = 'sexy'
+    $item_color = 'green'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '28':
+    $item_name = 'Green Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(28).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'green'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '29':
+    $item_name = 'Black Top and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(29).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'prude'
+    $item_color = 'black'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '30':
+    $item_name = 'Grey Cardigan and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(30).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'prude'
+    $item_color = 'grey'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '31':
+    $item_name = 'Blue and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(31).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'blue'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '32':
+    $item_name = 'Pink Pullover and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(32).jpg'
+    $item_price = 'high'
+    $item_sluttiness = 'prude'
+    $item_color = 'pink'
+    $item_style = 'Casual'
+elseif $ARGS[0] = '33':
+    $item_name = 'Black and Jeans'
+    $item_image = 'items/clothes/f_jeans/jeans(33).jpg'
+    $item_price = 'mid'
+    $item_sluttiness = 'sexy'
+    $item_color = 'black'
+    $item_style = 'Casual'
+end
+
+-

+ 18 - 0
source/item/panties1.qsps

@@ -0,0 +1,18 @@
+# item_panties1
+
+! $item_color = red, black, white, pink
+! $item_price = vlow,low,mid,high,vhigh
+! $item_sluttiness = prude,decent,sexy,slutty
+! $item_style = Casual, Opera, Party
+
+$item_gender = 'f'
+$item_type = 'panties'
+
+if $ARGS[0] = '0':
+    $item_name = 'White Panties'
+    $item_image = 'items/panties1/panties(0).jpg'
+    $item_price = 'low'
+    $item_color = 'white'
+end
+
+-

+ 19 - 0
source/item/shoes1.qsps

@@ -0,0 +1,19 @@
+# item_shoes1
+
+$item_gender = 'f'
+
+$item_type = 'shoes'
+
+if $ARGS[0] = 's21':
+    $item_name = 'Black Sandals'
+    item_height = 10
+    $item_image = 'items/shoes/f_sandals/s(21).jpg'
+    item_price = 3000
+elseif $ARGS[0] = 's22':
+    $item_name = 'Black Sandals'
+    item_height = 10
+    $item_image = 'items/shoes/f_sandals/s(22).jpg'
+    item_price = 4500
+end
+
+-

+ 14 - 0
source/item/shoes_business1.qsps

@@ -0,0 +1,14 @@
+# item_shoes_business1
+
+$item_gender = 'm'
+
+$item_type = 'shoes'
+
+if $ARGS[0] = '0':
+    $item_name = 'Black Shoes'
+    item_height = 0
+    $item_image = 'items/shoes/m_business/business(0).jpg'
+    item_price = 3000
+end
+
+-

+ 11 - 0
source/item/underpants1.qsps

@@ -0,0 +1,11 @@
+# item_underpants1
+
+$item_type = 'panties'
+$item_gender = 'm'
+
+if $ARGS[0] = '0':
+    $item_name = 'Blue Underpants'
+    $item_image = 'items/underpants/underpants(0).jpg'
+    $item_color = 'blue'
+end
+-

+ 24 - 0
source/location/citycenter/cityCenterBar.qsps

@@ -0,0 +1,24 @@
+# location_citycenterBar
+
+if $ARGS[0] = 'info':
+    $location_label = 'Bar'
+    location_openStart = 160000
+    location_openEnd = 020000
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Bar'
+
+    gs 'util_image','render_image','locations/bar/bar.jpg'
+
+    gs 'util_location','render_goto','citycenter',300
+
+    if event_barwitch_fail = 0:
+        *PL 'At the other end of the bar you see a young goth woman. She winks at you. Maybe you should go over?'
+
+        gs 'util_action','render_action','Speak to woman','gt ''util_event'',''start'',''barwitch'' '
+    end
+
+    gs 'util_action','render_action','Order a beer','gt ''start'''
+end
+
+-

+ 25 - 0
source/location/citycenter/citycenter.qsps

@@ -0,0 +1,25 @@
+# location_citycenter
+
+if $ARGS[0] = 'info':
+    $location_label = 'City Center'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','City Center'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/cityCenter/cityCenterNight0.jpg'
+    else
+        gs 'util_image','render_image','locations/cityCenter/cityCenterDay0.jpg'
+    end
+
+    gs 'util_location','render_goto','citycenterMall',300
+    gs 'util_location','render_goto','citycenterKebap',300
+    gs 'util_location','render_goto','citycenterBar',300
+    gs 'util_location','render_goto','citycenterSubway',120
+
+    gs 'util_location','render_goto_seperator'
+    
+    gs 'util_location','render_goto','university',1800
+end
+
+-

+ 28 - 0
source/location/citycenter/citycenterKebap.qsps

@@ -0,0 +1,28 @@
+# location_citycenterKebap
+if $ARGS[0] = 'info':
+    $location_label = 'Kebap House'
+    location_openStart = 100000
+    location_openEnd = 020000
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'order':
+    if $ARGS[1] = 'doener':
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',360
+        *PL 'You sit down and eat your döner.'
+    end
+
+    gs 'util_stat','render_widget'
+
+    act 'Back':
+        gt 'util_location','back'
+    end
+elseif $ARGS[0] = 'show':
+    'Kebap House'
+
+    gs 'util_image','render_image','services/kebabHouseInside.jpg'
+
+    gs 'util_location','render_goto','citycenter',300
+
+    gs 'util_action','render_action','Order Döner','gt ''location_citycenterKebap'',''order'',''doener''',500,'events/strawberry.png'
+end
+-

+ 14 - 0
source/location/citycenter/citycenterMall.qsps

@@ -0,0 +1,14 @@
+# location_citycenterMall
+if $ARGS[0] = 'info':
+    $location_label = 'Mall'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    'City Center Mall'
+
+    gs 'util_image','render_image','locations/cityCenter/cityCanterMall1.jpg'
+
+    gs 'util_location','render_goto','citycenter',300
+    gs 'util_location','render_goto','citycenterMallFN',60
+    
+end
+-

+ 26 - 0
source/location/citycenter/citycenterMallFN.qsps

@@ -0,0 +1,26 @@
+# location_citycenterMallFN
+if $ARGS[0] = 'info':
+    $location_label = 'FN (Young & Young Adult Fashion)'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','FN'
+
+    gs 'util_image','render_image','locations/shop/fnInterior.jpg'
+
+    gs 'util_location','render_goto','citycenterMall',60
+
+    if $gender_identification = 'f':
+        gs 'util_action','render_action','Buy Dress','gt ''util_shop'',''render_shop'', ''fnDresses'' '
+        gs 'util_action','render_action','Buy Shoes (Female Attire)','gt ''util_shop'',''render_shop'', ''fnShoes'' '
+        gs 'util_action','render_action','Buy Bra','gt ''util_shop'',''render_shop'', ''fnBra'' '
+        gs 'util_action','render_action','Buy Panties','gt ''util_shop'',''render_shop'', ''fnPanties'' ' 
+    else
+        if shopLingerieUnlocked > 0: 
+            gs 'util_action','render_action','Buy Bra','gt ''util_shop'',''render_shop'', ''fnBra'' '
+            gs 'util_action','render_action','Buy Panties','gt ''util_shop'',''render_shop'', ''fnPanties'' ' 
+        end
+    end
+    gs 'util_action','render_action','Wardrobe','gt ''util_wardrobe'',''render_wardrobe'' '
+
+end
+-

+ 18 - 0
source/location/citycenter/citycenterSubway.qsps

@@ -0,0 +1,18 @@
+# location_citycenterSubway
+
+if $ARGS[0] = 'info':
+    gs 'location_template_subway','info'
+elseif $ARGS[0] = 'show':
+    gs 'location_template_subway','show'
+    !gs 'location_template_subway','render_travel','northSubway','Central Station',600
+    !gs 'location_template_subway','render_travel','industrialSubway','Industrial Area',600
+    !gs 'location_template_subway','render_travel','residentialSubway','Residential Area',600
+    
+    !gs 'location_template_subway','render_travel','zooSubway','Zoo',600
+    
+    gs 'location_template_subway','render_travel_options','cityCenter'
+    
+    gs 'util_location','render_goto','citycenter',120
+end
+
+-

+ 19 - 0
source/location/industrial/industrial.qsps

@@ -0,0 +1,19 @@
+# location_industrial
+
+if $ARGS[0] = 'info':
+    $location_label = 'Industrial Area'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Industrial Area'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/industrial/industrialNight0.jpg'
+    else
+        gs 'util_image','render_image','locations/industrial/industrialDay0.jpg'
+    end
+    
+    gs 'util_location','render_goto','industrialSubway',120
+    
+end
+
+-

+ 13 - 0
source/location/industrial/industrialSubway.qsps

@@ -0,0 +1,13 @@
+# location_industrialSubway
+
+if $ARGS[0] = 'info':
+    gs 'location_template_subway','info'
+elseif $ARGS[0] = 'show':
+    gs 'location_template_subway','show'
+    
+    gs 'location_template_subway','render_travel_options','industrial'
+
+    gs 'util_location','render_goto','industrial',120
+end
+
+-

+ 20 - 0
source/location/north/centralStation.qsps

@@ -0,0 +1,20 @@
+# location_centralStation
+
+if $ARGS[0] = 'info':
+    $location_label = 'Central Station'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Central Station'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/north/northNight.jpg'
+    else
+        gs 'util_image','render_image','locations/north/northDay.jpg'
+    end
+
+    gs 'util_location','render_goto','charite',300
+    gs 'util_location','render_goto','northSubway',120
+    
+end
+
+-

+ 20 - 0
source/location/north/charite/charite.qsps

@@ -0,0 +1,20 @@
+# location_charite
+
+if $ARGS[0] = 'info':
+    $location_label = 'Charité'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Charité'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/north/chariteNight.jpg'
+    else
+        gs 'util_image','render_image','locations/north/chariteDay.jpg'
+    end
+
+    gs 'util_location','render_goto','centralStation',300
+    gs 'util_location','render_goto','chariteEmergency',60
+    
+end
+
+-

+ 17 - 0
source/location/north/charite/chariteEmergency.qsps

@@ -0,0 +1,17 @@
+# location_chariteEmergency
+
+
+if $ARGS[0] = 'info':
+    $location_label = 'Emergency Department'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Charité Emergency Department'
+
+
+    gs 'util_image','render_image','locations/north/chariteEmergency.jpg'
+    
+    gs 'util_location','render_goto','charite',60, 'Leave'
+    
+end
+
+-

+ 13 - 0
source/location/north/northSubway.qsps

@@ -0,0 +1,13 @@
+# location_northSubway
+
+if $ARGS[0] = 'info':
+    gs 'location_template_subway','info'
+elseif $ARGS[0] = 'show':
+    gs 'location_template_subway','show'
+    
+    gs 'location_template_subway','render_travel_options','north'
+
+    gs 'util_location','render_goto','centralStation',120
+end
+
+-

+ 34 - 0
source/location/residential/apartment/apartment.qsps

@@ -0,0 +1,34 @@
+# location_residential_aparment
+
+if $ARGS[0] = 'info':
+    $location_label = 'Apartment'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Apartment'
+
+    gs 'util_image','render_image','locations/apartments/testHallway.jpg'
+
+    if $wardrobe_current_style = 'Naked' or $wardrobe_current_style = 'Underwear' or $wardrobe_current_style = 'Topless':
+        act '<b>Leave <font color="red">(Put on some clothes first)</font></b>':
+
+        end
+    else
+        gs 'util_location','render_goto','residential',300,'<b>Leave</b>'
+    end
+
+    gs 'util_location','render_goto','residential_aparment_bath',20
+    gs 'util_location','render_goto','residential_aparment_bedroom',20
+    gs 'util_location','render_goto','residential_aparment_kitchen',20
+
+
+    gs 'util_action','render_action','Debug: Pass 30 Minutes','gs ''util_time'',''pass'',1800 & gs ''util_debug'',''refresh'' '
+    gs 'util_action','render_action','Debug: Pass 1 Day','gs ''util_time'',''pass'',86400 & gs ''util_debug'',''refresh'' '
+
+    act 'Test':
+        gs 'util_interrupt','add','ALL','residential_aparment','apartment_janitor_introductionAfterSwap'
+        gs 'util_interrupt','execute','ANY','residential_aparment'
+    end
+    
+end
+
+-

+ 17 - 0
source/location/residential/apartment/bath.qsps

@@ -0,0 +1,17 @@
+# location_residential_aparment_bath
+
+if $ARGS[0] = 'info':
+    $location_label = 'Bathroom'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Bathroom'
+
+    gs 'util_image','render_image','locations/apartments/testBathroom.jpg'
+
+    gs 'util_action','render_action','Mirror','gt ''util_event'',''start'',''mirror'' '
+    gs 'util_action','render_action','Shower','gt ''util_event'',''start'',''shower'' '
+
+    gs 'util_location','render_goto','residential_aparment',20
+end
+
+-

+ 29 - 0
source/location/residential/apartment/bedroom.qsps

@@ -0,0 +1,29 @@
+# location_residential_aparment_bedroom
+
+if $ARGS[0] = 'info':
+    $location_label = 'Bedroom'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Bedroom'
+
+    gs 'util_image','render_image','locations/apartments/testBedroom.jpg'
+
+    gs 'util_action','render_action','Lay down in bed','gt ''util_event'',''start'',''bed'' '
+
+    if alarmclock_activated = 0:
+        *PL '<center>Your alarmclock is <b>deactivated</b>.</center>'
+        gs 'util_action','render_action','Activate','alarmclock_activated = 1 & gt ''util_location'',''back'' '
+    else
+        *PL '<center>Your alarmclock is <b>set to '+FUNC('util_time','timeOfDay2readable',alarmclock_time)+'</b>.</center>'
+        gs 'util_action','render_action','Deactivate','alarmclock_activated = 0 & gt ''util_location'',''back'' '
+        gs 'util_action','render_action','Set Time','gs ''util_time'',''alarm_time_showDialog'' & gt ''util_location'',''back'' '
+    end
+
+    gs 'util_action','render_action','Television','gt ''util_event'',''start'',''tv'',''home'' '
+
+    gs 'util_action','render_action','Wardrobe','gt ''util_wardrobe'',''render_wardrobe'' '
+
+    gs 'util_location','render_goto','residential_aparment',20
+end
+
+-

+ 86 - 0
source/location/residential/apartment/kitchen.qsps

@@ -0,0 +1,86 @@
+# location_residential_aparment_kitchen
+
+if $ARGS[0] = 'info':
+    $location_label = 'Kitchen'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Kitchen'
+
+    gs 'util_image','render_image','locations/apartments/testKitchen.jpg'
+
+    if food_low = 0 and food_med = 0 and food_high = 0:
+        *PL 'You have no food stored. You should buy some at a supermarket.'
+    end
+
+    if food_low > 0:
+        gs 'util_action','render_action','Cook a low quality meal|You can cook this <<food_low>> times','gt ''location_residential_aparment_kitchen'',''cook'',''low'''
+    end
+
+    if food_med > 0:
+        gs 'util_action','render_action','Cook a medium quality meal|You can cook this <<food_med>> times','gt ''location_residential_aparment_kitchen'',''cook'',''med'''
+    end
+
+    if food_high > 0:
+        gs 'util_action','render_action','Cook a high quality meal|You can cook this <<food_high>> times','gt ''location_residential_aparment_kitchen'',''cook'',''high'''
+    end
+
+    gs 'util_action','render_action','Drink water','gt ''location_residential_aparment_kitchen'',''drink'',''water'''
+    
+
+    gs 'util_location','render_goto','residential_aparment',20
+elseif $ARGS[0] = 'cook':
+    
+
+    if $ARGS[1] = 'low':
+        temp_rand = rand(1,2)
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',1200
+        food_low-=1
+        if temp_rand = 1:
+            gs 'util_image','render_image','events/consume/pizza.jpg'
+            *PL 'You place a frozen pizza in the oven. After a few minutes it is finished. You sit down to eat it. It doesn''t taste too good, but at least it fills your stomach.'
+        else
+            gs 'util_image','render_image','events/consume/soup.jpg'
+            *PL 'You start to prepare a portion of canned soup. After a few minutes it is finished. You sit down to eat it. It doesn''t taste too good, but at least it fills your stomach.'
+        end
+    elseif $ARGS[1] = 'med':
+        temp_rand = rand(1,3)
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',1200
+        food_med-=1
+        if temp_rand = 1:
+            gs 'util_image','render_image','events/consume/noodles('+rand(0,2)+').jpg'
+            *PL 'You prepare a nice tasting noodle meal.'
+        elseif temp_rand = 2:
+            gs 'util_image','render_image','events/consume/rice('+rand(0,1)+').jpg'
+            *PL 'You prepare a nice tasting rice meal.'
+        else
+            gs 'util_image','render_image','events/consume/wok('+rand(0,1)+').jpg'
+            *PL 'You prepare a nice tasting vegetable meal.'
+        end
+    elseif $ARGS[1] = 'high':
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',360
+        food_high-=1
+        *PL 'You sit down and eat your high quality meal.'
+    end
+
+    gs 'util_stat','render_widget'
+
+    act 'Back':
+        gt 'util_location','back'
+    end
+elseif $ARGS[0] = 'drink':
+    gs 'util_stat','consume',0,500000,0
+    gs 'util_time','pass',60
+    gs 'util_image','render_image','events/consume/water.jpg'
+    *PL 'You fill a glas of water and drink it. Refreshing.'    
+
+    gs 'util_stat','render_widget'
+
+    act 'Back':
+        gt 'util_location','back'
+    end
+end
+
+-

+ 23 - 0
source/location/residential/residential.qsps

@@ -0,0 +1,23 @@
+# location_residential
+
+if $ARGS[0] = 'info':
+    $location_label = 'Residential Area'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Residential Area'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/residential/residentialNight.jpg'
+    else
+        gs 'util_image','render_image','locations/residential/residentialDay.jpg'
+    end
+
+    gs 'util_location','render_goto','residential_aparment',300,'<b>Go Home</b>'
+
+    gs 'util_location','render_goto','residentialSubway',120
+
+    gs 'util_location','render_goto','residentialSupermarket',300
+    
+end
+
+-

+ 13 - 0
source/location/residential/residentialSubway.qsps

@@ -0,0 +1,13 @@
+# location_residentialSubway
+
+if $ARGS[0] = 'info':
+    gs 'location_template_subway','info'
+elseif $ARGS[0] = 'show':
+    gs 'location_template_subway','show'
+    
+    gs 'location_template_subway','render_travel_options','residential'
+
+    gs 'util_location','render_goto','residential',120
+end
+
+-

+ 164 - 0
source/location/residential/residentialSupermarket.qsps

@@ -0,0 +1,164 @@
+# location_residentialSupermarket
+
+if $ARGS[0] = 'info':
+    $location_label = 'Supermarket'
+    location_openStart = 060000
+    location_openEnd = 220000
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    supermarket_hasShopped = 0
+
+    gs 'util_location','render_title','KAEDA Supermarket'
+
+    gs 'util_image','render_image','locations/supermarket/supermarket.png'
+
+    'KAEDA is a supermarket chain that sells food and several other items for your everyday needs at an affordable price.'
+
+    gs 'util_location','render_goto','residential',300, '<b>Leave</b>'
+
+    act 'Fresh Food':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','freshFood'
+    end
+
+    act 'Durable Food':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','durableFood'
+    end
+
+    act 'Cosmetics & Hygiene':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','hygiene'
+    end
+
+elseif $ARGS[0] = 'durableFood':
+    temp_priceLowFood = 240
+
+    gs 'util_stat','render_widget'
+
+    gs 'util_image','render_image','locations/supermarket/durableFood.jpg'
+
+
+    'You have stored <<food_low>> low quality food in your fridge.'
+    if money >= temp_priceLowFood:
+        gs 'util_action','render_action','Buy Medium quality Food (1x, '+FUNC('util_money','int2readable',temp_priceLowFood)+')','food_low+=1 & supermarket_hasShopped = 1 & money -= '+temp_priceLowFood+' & gt ''location_residentialSupermarket'',''durableFood'' '
+    end
+
+    if money >= temp_priceLowFood*5:
+        gs 'util_action','render_action','Buy Medium quality Food (5x, '+FUNC('util_money','int2readable',temp_priceLowFood*5)+')','food_low+=5 & supermarket_hasShopped = 1 & money -= '+temp_priceLowFood*5+' & gt ''location_residentialSupermarket'',''durableFood'' '
+    end
+
+    if money >= temp_priceLowFood*20:
+        gs 'util_action','render_action','Buy Medium quality Food (20x, '+FUNC('util_money','int2readable',temp_priceLowFood*20)+')','food_low+=20 & supermarket_hasShopped = 1 & money -= '+temp_priceLowFood*20+' & gt ''location_residentialSupermarket'',''durableFood'' '
+    end
+
+    if supermarket_hasShopped = 1:
+        act '<b>Checkout</b>':
+            gt 'location_residentialSupermarket','pay'
+        end
+    else
+        gs 'util_location','render_goto','residential',300, '<b>Leave</b>'
+    end
+
+    act 'Fresh Food':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','freshFood'
+    end
+
+    act 'Cosmetics & Hygiene':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','hygiene'
+    end
+
+elseif $ARGS[0] = 'freshFood':
+    temp_priceMediumFood = 400
+
+    gs 'util_stat','render_widget'
+
+    gs 'util_image','render_image','locations/supermarket/freshFood.jpg'
+
+
+    'You have stored <<food_med>> medium quality food in your fridge.'
+    if money >= temp_priceMediumFood:
+        gs 'util_action','render_action','Buy Medium quality Food (1x, '+FUNC('util_money','int2readable',temp_priceMediumFood)+')','food_med+=1 & supermarket_hasShopped = 1 & money -= '+temp_priceMediumFood+' & gt ''location_residentialSupermarket'',''freshFood'' '
+    end
+
+    if money >= temp_priceMediumFood*5:
+        gs 'util_action','render_action','Buy Medium quality Food (5x, '+FUNC('util_money','int2readable',temp_priceMediumFood*5)+')','food_med+=5 & supermarket_hasShopped = 1 & money -= '+temp_priceMediumFood*5+' & gt ''location_residentialSupermarket'',''freshFood'' '
+    end
+
+    if money >= temp_priceMediumFood*20:
+        gs 'util_action','render_action','Buy Medium quality Food (20x, '+FUNC('util_money','int2readable',temp_priceMediumFood*20)+')','food_med+=20 & supermarket_hasShopped = 1 & money -= '+temp_priceMediumFood*20+' & gt ''location_residentialSupermarket'',''freshFood'' '
+    end
+
+    if supermarket_hasShopped = 1:
+        act '<b>Checkout</b>':
+            gt 'location_residentialSupermarket','pay'
+        end
+    else
+        gs 'util_location','render_goto','residential',300, '<b>Leave</b>'
+    end
+
+    act 'Durable Food':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','durableFood'
+    end
+
+    act 'Cosmetics & Hygiene':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','hygiene'
+    end
+elseif $ARGS[0] = 'hygiene':
+
+    gs 'util_stat','render_widget'
+
+    gs 'util_image','render_image','locations/supermarket/hygiene.jpg'
+
+    if money >= 500:
+        gs 'util_action','render_action','Buy 10-pack Razors. You have <<razor>>','razor+=10 & supermarket_hasShopped = 1 & gt ''location_residentialSupermarket'',''hygiene'' ',500
+    end
+
+    if gender_usesMakeup > 0 and money >= 3000:
+        gs 'util_action','render_action','Buy 50-pack Make-Up. You have <<makeup>>','makeup+=50 & supermarket_hasShopped = 1 & gt ''location_residentialSupermarket'',''hygiene'' ',3000
+    end
+
+    if supermarket_hasShopped = 1:
+        act '<b>Checkout</b>':
+            gt 'location_residentialSupermarket','pay'
+        end
+    else
+        gs 'util_location','render_goto','residential',300, '<b>Leave</b>'
+    end
+
+    act 'Fresh Food':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','freshFood'
+    end
+
+    act 'Durable Food':
+        gs 'util_time','pass',30
+        gt 'location_residentialSupermarket','durableFood'
+    end
+
+elseif $ARGS[0] = 'pay':
+    gs 'util_image','render_image','locations/supermarket/cashier('+rand(0,4)+').jpg'
+
+    temp_rand = rand (1,100)
+
+    if temp_rand > 90:
+        'You are lucky. One of the check desks just opened and now you are first in line.'
+        gs 'util_time','pass',rand(20,40)
+    elseif temp_rand > 5:
+        'A few people wait in line and you take your place behind them. It takes a few minutes before it is your turn to pay.'
+        gs 'util_time','pass',rand(120,300)
+    else
+        'Bad luck. The cash register are understaffed and waiting for your turn to pay feels like an eternity.'
+        gs 'util_time','pass',rand(450,750)
+    end
+
+    'After you payed everything the cashier smiles at you and wishes you a nice day.'
+
+    gs 'util_location','render_goto','residential',300, '<b>Leave</b>'
+end
+
+-

+ 33 - 0
source/location/template/kiosk.qsps

@@ -0,0 +1,33 @@
+# location_template_kiosk
+
+if $ARGS[0] = 'info':
+    $location_label = 'Kiosk'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Kiosk'
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/kiosk/kioskNight(0).jpg'
+    else
+        gs 'util_image','render_image','locations/kiosk/kiosk('+rand(0,4)+').jpg'
+    end
+
+
+    if FUNC('util_time','isTimeOfDay',-1,60000,220000) = 1:
+        gs 'util_action','render_action','Buy Snack|You have '+FUNC('util_inventory','count','snack'),'gs ''util_inventory'',''add'',''snack'' & gt ''util_location'',''back'' ',199
+        gs 'util_action','render_action','Buy Softdrink|You have '+FUNC('util_inventory','count','softdrink'),'gs ''util_inventory'',''add'',''softdrink'' & gt ''util_location'',''back'' ',119
+
+        if FUNC('util_inventory','count','magazin_women') = 0:
+            gs 'util_action','render_action','Buy Magazine for women|Fasion, Entertainment, Beauty, Relationship and Sex','gs ''util_inventory'',''add'',''magazin_women'' & gt ''util_location'',''back'' ',390
+        end
+
+        if FUNC('util_inventory','count','magazin_porn') = 0:
+            gs 'util_action','render_action','Buy Porn Magazine|Naked women and lingerie models','gs ''util_inventory'',''add'',''magazin_porn'' & gt ''util_location'',''back'' ',690
+        end
+    else
+        *PL 'The kiosk is opened between 06:00 and 22:00.'
+    end
+
+
+end
+
+-

+ 95 - 0
source/location/template/subway.qsps

@@ -0,0 +1,95 @@
+# location_template_subway
+
+subway_distance_short = 600
+subway_distance_med = 900
+
+
+if $ARGS[0] = 'info':
+    $location_label = 'Subway Station'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'render_travel':
+    $temp_text = $ARGS[2]
+
+    if ARGS[3] > 0:
+        $temp_text += ' ('+FUNC('util_time','seconds2readable',ARGS[3])+')'
+    end
+
+    if transport_tickets > 0:
+        gs 'util_action','render_action','<<$temp_text>>','transport_tickets-=1 & gs ''util_time'',''pass'',<<ARGS[3]>> & gt ''util_location'',''goto'',''<<$ARGS[1]>>'''
+   else
+
+    end
+elseif $ARGS[0] = 'render_travel_options':
+
+    temp_time = FUNC('location_template_subway','travel_distance',$ARGS[1],'cityCenter')
+    if temp_time > 0: gs 'location_template_subway','render_travel','citycenterSubway','City Center',temp_time
+
+    temp_time = FUNC('location_template_subway','travel_distance',$ARGS[1],'industrial')
+    if temp_time > 0: gs 'location_template_subway','render_travel','industrialSubway','Industrial Area',temp_time
+    
+    temp_time = FUNC('location_template_subway','travel_distance',$ARGS[1],'north')
+    if temp_time > 0: gs 'location_template_subway','render_travel','northSubway','Central Station',temp_time
+
+    temp_time = FUNC('location_template_subway','travel_distance',$ARGS[1],'residential')
+    if temp_time > 0: gs 'location_template_subway','render_travel','residentialSubway','Residential Area',temp_time
+
+    if subway_known['western'] > 0:
+        temp_time = FUNC('location_template_subway','travel_distance',$ARGS[1],'western')
+        if temp_time > 0: gs 'location_template_subway','render_travel','westernSubway','Western Residential Area',temp_time
+    end
+
+    temp_time = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo')
+    if temp_time > 0: gs 'location_template_subway','render_travel','zooSubway','Zoo',temp_time
+
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Subway Station'
+    gs 'util_image','render_image','locations/subway/subway('+rand(0,8)+').jpg'
+
+    *PL 'You have <<transport_tickets>> tickets left.'
+
+    gs 'util_action','render_action','Buy 1 Ticket','transport_tickets+=1 & gt ''util_location'',''back''',290
+    gs 'util_action','render_action','Buy 4 Ticket','transport_tickets+=4 & gt ''util_location'',''back''',900
+elseif $ARGS[0] = 'travel_distance':
+    if $ARGS[1] = 'cityCenter':
+        if $ARGS[2] = 'industrial':     RESULT = subway_distance_short
+        if $ARGS[2] = 'north':          RESULT = subway_distance_short
+        if $ARGS[2] = 'western':        RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + subway_distance_short
+        if $ARGS[2] = 'residential':    RESULT = subway_distance_short
+        if $ARGS[2] = 'zoo':            RESULT = subway_distance_short
+    elseif $ARGS[1] = 'industrial':
+        if $ARGS[2] = 'cityCenter':     RESULT = subway_distance_short
+        if $ARGS[2] = 'north':          RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'cityCenter') + subway_distance_short
+        if $ARGS[2] = 'western':        RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + FUNC('location_template_subway','travel_distance',$ARGS[2],'zoo')
+        if $ARGS[2] = 'residential':    RESULT = subway_distance_med
+        if $ARGS[2] = 'zoo':            RESULT = subway_distance_med
+    elseif $ARGS[1] = 'north':
+        if $ARGS[2] = 'cityCenter':     RESULT = subway_distance_short
+        if $ARGS[2] = 'industrial':     RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'cityCenter') + subway_distance_short
+        if $ARGS[2] = 'western':        RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + subway_distance_short
+        if $ARGS[2] = 'residential':    RESULT = subway_distance_med
+        if $ARGS[2] = 'zoo':            RESULT = subway_distance_med
+    elseif $ARGS[1] = 'western':
+        if $ARGS[2] = 'cityCenter':     RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + FUNC('location_template_subway','travel_distance',$ARGS[2],'zoo')
+        if $ARGS[2] = 'industrial':     RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + FUNC('location_template_subway','travel_distance',$ARGS[2],'zoo')
+        if $ARGS[2] = 'north':          RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + FUNC('location_template_subway','travel_distance',$ARGS[2],'zoo')
+        if $ARGS[2] = 'residential':    RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + FUNC('location_template_subway','travel_distance',$ARGS[2],'zoo')
+        if $ARGS[2] = 'zoo':            RESULT = subway_distance_short
+    elseif $ARGS[1] = 'residential':
+        if $ARGS[2] = 'cityCenter':     RESULT = subway_distance_short
+        if $ARGS[2] = 'industrial':     RESULT = subway_distance_med
+        if $ARGS[2] = 'north':          RESULT = subway_distance_med
+        if $ARGS[2] = 'western':        RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'zoo') + FUNC('location_template_subway','travel_distance',$ARGS[2],'zoo')
+        if $ARGS[2] = 'zoo':            RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'cityCenter') + FUNC('location_template_subway','travel_distance',$ARGS[2],'cityCenter')
+    elseif $ARGS[1] = 'zoo':
+        if $ARGS[2] = 'cityCenter':     RESULT = subway_distance_short
+        if $ARGS[2] = 'industrial':     RESULT = subway_distance_med
+        if $ARGS[2] = 'north':          RESULT = subway_distance_med
+        if $ARGS[2] = 'western':        RESULT = subway_distance_short
+        if $ARGS[2] = 'residential':    RESULT = FUNC('location_template_subway','travel_distance',$ARGS[1],'cityCenter') + FUNC('location_template_subway','travel_distance',$ARGS[2],'cityCenter')
+    end
+
+    if RESULT = 0 and ARGS[3] = 0: RESULT = FUNC('location_template_subway','travel_distance',$ARGS[2],$ARGS[1],1)
+end
+
+-

+ 10 - 0
source/location/university/kiosk.qsps

@@ -0,0 +1,10 @@
+# location_university_kiosk
+
+if $ARGS[0] = 'info':
+    gs 'location_template_kiosk','info'
+elseif $ARGS[0] = 'show':
+    gs 'location_template_kiosk','show'
+    gs 'util_location','render_goto','university',60
+end
+
+-

+ 56 - 0
source/location/university/university.qsps

@@ -0,0 +1,56 @@
+# location_university
+
+if $ARGS[0] = 'info':
+    $location_label = 'University'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','University'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/university/exteriorNight('+rand(0,1)+').webp'
+    else
+        gs 'util_image','render_image','locations/university/exterior('+rand(0,1)+').jpg'
+    end
+    
+    if university_enrollment_possible = 1:
+        if FUNC('util_time','isTimeOfDay',-1,80000,160000) = 1:
+            gs 'util_action','render_action','Enroll','gt ''util_event'',''start'',''university_enroll'' '
+        else
+            *PL 'You can enroll yourself between 08:00 and 16:00.'
+        end
+    end
+
+    if university_enrollment_active = 1:
+        *PL '<b>Your course times:</b>'
+        *PL '<i style="color:grey;font-size:80%;">(you can arrive up to 15 minutes before or after the official starting time)</i>'
+        temp_is_course_time  = 0
+        i = 0
+        : LoopEnrollTimes
+        if i <ARRSIZE('university_course_times'):
+            *PL FUNC('util_time','dayOfWeekReadable',university_course_days[i]) +', '+FUNC('util_time','timeOfDay2readable',university_course_times[i])
+
+            if FUNC('util_time','dayOfWeek',time_current) = university_course_days[i] and FUNC('util_time','isTimeOfDay',-1,university_course_times[i]-1500,university_course_times[i]+1500):
+                temp_is_course_time = 1
+                
+            end
+
+            i += 1
+            jump 'LoopEnrollTimes'
+        end
+
+        if temp_is_course_time = 1:
+            gs 'util_action','render_action','Visit Course','gt ''util_event'',''start'',''university_course'' '
+        end
+
+        if debug > 0:
+            gs 'util_action','render_action','<b>DEBUG</b>: Visit Course','gt ''util_event'',''start'',''university_course'' '
+        end
+    end
+    
+    gs 'util_location','render_goto','university_kiosk',60
+    gs 'util_location','render_goto_seperator'
+    gs 'util_location','render_goto','citycenter',1800
+    gs 'util_location','render_goto','western',5400
+end
+
+-

+ 25 - 0
source/location/western/university_gender_guide_home/university_gender_guide_home.qsps

@@ -0,0 +1,25 @@
+# location_university_gender_guide_home
+
+if $ARGS[0] = 'info':
+    $location_label = 'Home of '+FUNC('util_npc','get','university_gender_guide','$name_used')
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Home of '+FUNC('util_npc','get','university_gender_guide','$name_used')
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/western/westernNight.jpg'
+    else
+        gs 'util_image','render_image','locations/western/western.jpg'
+    end
+
+    if university_gender_guide_home_available > 0:
+        gs 'util_action','render_action','Ring Bell','gt ''util_event'',''start'',''university_gender_experiment'' '
+    end
+
+    gs 'util_location','render_goto','western',300
+
+
+
+end
+
+-

+ 28 - 0
source/location/western/western.qsps

@@ -0,0 +1,28 @@
+# location_western
+
+if $ARGS[0] = 'info':
+    $location_label = 'Western Residential Area'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Western Residential Area'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','locations/western/westernNight.jpg'
+    else
+        gs 'util_image','render_image','locations/western/western.jpg'
+    end
+
+    gs 'util_location','render_goto','westernSubway',120
+
+    if university_gender_guide_home_known = 1:
+        
+        gs 'util_location','render_goto','university_gender_guide_home',300
+
+    end
+
+    gs 'util_location','render_goto_seperator'
+    
+    gs 'util_location','render_goto','university',5400
+end
+
+-

+ 16 - 0
source/location/western/westernSubway.qsps

@@ -0,0 +1,16 @@
+# location_westernSubway
+
+if $ARGS[0] = 'info':
+    gs 'location_template_subway','info'
+elseif $ARGS[0] = 'show':
+    subway_known['western'] = max(1,subway_known['western'])
+    
+    gs 'location_template_subway','show'
+    
+    gs 'location_template_subway','render_travel_options','western'
+    
+    
+    gs 'util_location','render_goto','western',120
+end
+
+-

+ 26 - 0
source/location/woods.qsps/shackInterior.qsps

@@ -0,0 +1,26 @@
+# location_woods_shackInterior
+
+if $ARGS[0] = 'info':
+    $location_label = 'Shack Interior'
+    $location_mode = 'indoors'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','City Center'
+    
+    gs 'util_image','render_image','locations/woods/shackInterior.jpg'
+
+    : SlaveLoop
+    if i < ARRSIZE('$slave_id'):
+        $temp_slave_id = $slave_id[i]
+        if $slave_storage_mode[$temp_slave_id] = 'cage':
+            'Your slave <<$npc_name_used[$temp_slave_id]>> rests in a cage in the edge of the room, just where you have left her.'
+        end
+
+        gs 'util_action','render_action','Inspect <<$npc_name_used[$temp_slave_id]>>','gt ''util_event'',''start'', ''slaveOwned'', ''<<$temp_slave_id>>'' '
+
+        i += 1
+        jump 'SlaveLoop'
+    end
+
+end
+
+-

+ 13 - 0
source/location/zoo/zooSubway.qsps

@@ -0,0 +1,13 @@
+# location_zooSubway
+
+if $ARGS[0] = 'info':
+    gs 'location_template_subway','info'
+elseif $ARGS[0] = 'show':
+    gs 'location_template_subway','show'
+    
+    gs 'location_template_subway','render_travel_options','zoo'
+
+    gs 'util_location','render_goto','zoo',120
+end
+
+-

+ 12 - 0
source/module/dahlem/location/dahlem.qsps

@@ -0,0 +1,12 @@
+# location_dahlem
+
+if $ARGS[0] = 'info':
+    $location_label = 'Dahlem'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Dahlem'
+    gs 'util_image','render_image','module/dahlem/location/dahlem.jpg'   
+
+    gs 'util_location','render_goto','school',300,'School'
+end 
+
+-

+ 10 - 0
source/module/school/effect/genderswap.qsps

@@ -0,0 +1,10 @@
+# effect_school_genderswap
+
+if $ARGS[0] = 'load':
+    $effectData['label'] = 'Transformed into a Girl'
+    effectData['maxDuration'] = 7*24*3600
+    effectData['moodLevel'] = -3
+    $effectData['type'] = 'violation'
+end
+
+-

+ 10 - 0
source/module/school/effect/genderswap_positive.qsps

@@ -0,0 +1,10 @@
+# effect_school_genderswap_positive
+
+if $ARGS[0] = 'load':
+    $effectData['label'] = 'Transformed into a Girl'
+    effectData['maxDuration'] = 7*24*3600
+    effectData['mood'] = 100
+    $effectData['type'] = 'violationPositive'
+end
+
+-

+ 31 - 0
source/module/school/event/blackmail.qsps

@@ -0,0 +1,31 @@
+# event_school_blackmail
+
+$event_id = 'school_blackmail'
+
+if $ARGS[0] = 'start':
+    gs 'util_npc','renderPortrait','school_christine'
+    'Just as you are about to leave the bathroom a girl steps into your way.'
+    gs 'util_npc','render_dialogue','school_christine','Wait a moment, <<$name_first>>. I have something you might want to take a look at.'
+    'She takes out her smartphone.'
+    act 'Take a look':
+        gs 'util_time','pass_rand',10
+        gt 'util_event','stage',$event_id,'look'
+    end
+elseif $ARGS[0] = 'look':
+    gs 'util_image','render_image','module/school/events/blackmail/shower.jpg'
+    'You see a video of you showering. She must have installed a camera in the shower. And your chastity cage is on full display.'
+    gs 'util_npc','render_dialogue','school_christine','I knew that you were a sissy. Just like... well, never mind. If you don''t want me to tell everybody about that you will do something for me.'
+    gs 'util_npc','render_dialogue','school_christine','Go to Pierre and tell him that you will pay my debt to him. Then we are even. His room is room 302, you should be able to find him there.'
+    gs 'util_npc','render_dialogue','school_christine','Don''t wait for too long. If you haven''t done this by tomorrow I will publish this video, understood?'
+    
+    'She leaves without another word.'
+    act 'Leave':
+        dorm_room_unlocked['302'] = 1 
+        school_christine_dept = 1 
+        gs 'util_interrupt','del','school_dorm_2bath','ALL','school_blackmail'
+        gs 'util_time','pass_rand',40
+        gt 'util_event','end'
+    end
+end
+
+-

+ 105 - 0
source/module/school/event/intro/court.qsps

@@ -0,0 +1,105 @@
+# event_intro_school_court
+
+$event_id = 'intro_school_court'
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','events/intro/criminal/courthouse.jpg'
+    'You have been summoned to the courthouse today. Two policemen have escorted you here from your home, where you have been under house arrest for the past two weeks.'
+    'Allegedly you have raped your former girlfriend Jasmin. Today is the first hearing.'
+    act 'I am guilty':
+        cla
+        quest['intro_school_guilty'] = 1
+        'You are quite anxious since you are actually guilty. There is a solid chance that you left evidence behind that gets you into jail.'
+        act 'Go inside the courthouse':
+            gt 'util_event','stage',$event_id,'enterCourthouse'
+        end
+    end
+    act 'I am innocent':
+        cla
+        quest['intro_school_guilty'] = 0
+        'Despite being innocent you are a little anxious. Why didn''t they stop the investigation already? There is no way they could have evidence against you.'
+        act 'Go inside the courthouse':
+            gt 'util_event','stage',$event_id,'enterCourthouse'
+        end
+    end
+elseif $ARGS[0] = 'enterCourthouse':
+    gs 'util_npc','renderPortrait','intro_school_attorney'
+    'You enter the building. Your attorney is already waiting for you. After greeting you she leads you to a small empty room, where the two of you can talk in private.'
+    gs 'util_npc','render_dialogue','intro_school_attorney','I have good news and bad news.'
+    gs 'util_npc','render_dialogue','intro_school_attorney','Bad news first: I have a friend at the prosecuting attorneys office. And it appears as if they have some evidence that proves you guilty.'
+
+    if quest['intro_school_guilty'] = 0:
+        act 'That''s impossible. I am innocent!':
+            cla
+            '<hr/>'
+            gs 'util_npc','render_dialogue','pc','That''s impossible. I am innocent!'
+            gs 'util_npc','render_dialogue','intro_school_attorney','Maybe the evidence is forged? It doesn''t matter, it appears to be convincing enough.'
+            gs 'event_intro_school_court','attorneyDialogGoodNews'
+        end
+    else
+        gs 'event_intro_school_court','attorneyDialogGoodNews'
+    end
+
+elseif $ARGS[0] = 'attorneyDialogGoodNews':    
+    gs 'util_npc','render_dialogue','intro_school_attorney','But now the good news: I talked to the prosecuting attorney and he would be willing to make a deal.'
+    gs 'util_npc','render_dialogue','intro_school_attorney','You would have to admit your guilty. In return you would visit a rehabilitation facility instead of prison.'
+    gs 'util_npc','render_dialogue','intro_school_attorney','It appears to be a boarding school for delinquent juveniles.'
+    gs 'util_npc','render_dialogue','intro_school_attorney','If you want to take the deal just state so at the beginning of the hearing.'
+    gs 'util_npc','render_dialogue','intro_school_attorney','Speaking of which, we should go to the courtroom now.'
+    act 'Follow her to the courtroom':
+        gt 'util_event','stage',$event_id,'courtroom'
+    end
+elseif $ARGS[0] = 'courtroom':
+    gs 'util_image','render_image','events/intro/criminal/courtroom.jpg'
+    'You enter the courtroom and sit down at the place designated for the accused party. There are some spectators present and the prosecuting attorney is also here already.'
+    'You don''t have to wait long for the judge to be announced. Everybody rises and sits down again have he took his place.'
+    '<i>Before we start I heard that the attorneys of both partys have agreed to settle the accusation. So I ask the accused: to you agree to take the negotiated deal?</i>'
+    act 'I do':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','I do, your honor. I admit that I commited the crime I am accused of and I''d like to be sent to the rehabilitation facility.'
+        'The judges just nods and the prosecuting attorney walks over to you and hands you some papers to sign. There are more than 100 pages.'
+        gs 'util_npc','render_dialogue','intro_school_attorney','It''s okay, you can sign it.'
+        'Your attorney hands you a pen.'
+        act 'Sign':
+            cla & '<hr/>'
+            'You sign the paper and return it to the prosecuting attorney.'
+            act 'Continue':
+                gt 'util_event','stage',$event_id,'verdictCorrection'
+            end
+        end
+    end
+    act 'I don''t':
+        gt 'util_event','stage',$event_id,'verdictGuilty'
+    end
+elseif $ARGS[0] = 'verdictGuilty':
+    gs 'util_image','render_image','events/intro/criminal/judgement.jpg'
+    'You tell the judge that you won''t take the deal.'
+    'The prosecution continues for two months before the court finally reaches a verdict: <b style="color:red;">GUITLY</b>.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'jail'
+    end
+elseif $ARGS[0] = 'jail':
+    gs 'util_image','render_image','events/intro/criminal/jail.jpg'
+    'You are sent to jail for 30 years.'
+    '<center><h1 style="color:red;">GAME OVER</h1></center>'
+elseif $ARGS[0] = 'verdictCorrection':
+    gs 'util_image','render_image','events/intro/criminal/judgement.jpg'
+    'Everybody rises up again as the judge declares that you are guilty, that the prosecution is over and that you are to be sent to the rehabilitation facility.'
+    'A policemen comes over and explains to you that he will bring you where you need to be.'
+    act 'Follow him':
+        gt 'util_event','stage',$event_id,'doctor'
+    end
+elseif $ARGS[0] = 'doctor':
+    gs 'util_image','render_image','events/doctor/syringe.jpg'
+    'To your surprise he doesn''t lead you outside the courthouse but instead to its medical doctor.'
+    'The doctor checks your papers, then he commands you to hold still while he takes out a syringe.'
+    act 'Let him sting you':
+        cla & '<hr/>'
+        'Everything goes dark immediately.'
+        act '...':
+            gt 'util_event','start','intro_school_doctor'
+        end
+    end
+end
+
+-

+ 188 - 0
source/module/school/event/intro/doctor.qsps

@@ -0,0 +1,188 @@
+# event_intro_school_doctor
+
+$event_id = 'intro_school_doctor'
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','events/doctor/nurse_bj_1.jpg'
+    'A very nice feeling wakes you up. Still being dazed it takes you a while to realize that it your penis. It is getting licked and sucked.'
+    'Finally you manage to force your eyes open. You see a sexy nurse giving you a blowjob.'
+    act 'Try to make a sound':
+        gt 'util_event','stage',$event_id,'bj2'
+    end
+elseif $ARGS[0] = 'bj2':
+    gs 'util_image','render_image','events/doctor/nurse_bj_2.jpg'
+    'You try to make a sound, but all you get out is an unintelligible grunt.'
+    'Realizing that you are awake the nurse looks up and makey eye contact as she continues blowing your dick.'
+    gs 'util_npc','render_dialogue','','You like that, don''t you?','girl'
+    act 'Yes':
+        gt 'util_event','stage',$event_id,'chast'
+    end
+    act 'No. Stop it!':
+        cla & '<hr/>'
+        'You manage to get a quite No out and shake your head.'
+        'The nurse looks dissapointed.'
+        gs 'util_npc','render_dialogue','','Too bad. We could have had so much fun together.','girl'
+        'She stands up and flashes are butt to you before stinging you with a syringe. Everything goes dark again.'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'operation'
+        end
+    end
+elseif $ARGS[0] = 'chast':
+    gs 'util_image','render_image','events/doctor/nurse_chast1.jpg'
+    'She grins and stands up. She raises her white skirt and pulls down her panties.'
+    'At first you can''t beleive your eyes. She is wearing some kind of plastic tube. And inside the tube is her penis.'
+    'This attractive young girl is a man!'
+    'It looks as if her dick is locked inside the tube. A padlock prevents her from getting it free.'
+    gs 'util_npc','render_dialogue','','I hope my unusual clit is not a problem for you.','girl'
+    act 'Fuck her':
+        gt 'util_event','stage',$event_id,'fuck1'   
+    end
+    act 'Get away!':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','Get away!'
+        'The nurse looks dissapointed.'
+        gs 'util_npc','render_dialogue','','Too bad. We could have had so much fun together.','girl'
+        'She stands up and flashes are butt to you before stinging you with a syringe. Everything goes dark again.'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'operation'
+        end
+    end
+elseif $ARGS[0] = 'fuck1':   
+    gs 'util_image','render_image','events/doctor/nurse_fuck_1.jpg'
+    'She places herself above you. Your penis slides into her butthole as she starts to fuck you cowgirl style. She must have lubed it in advance.'
+    'The feeling is great. She seems to be very experienced. After a little way you feel strong enough to take control of the situation.'
+    act 'Turn her around':
+        gt 'util_event','stage',$event_id,'fuck2'   
+    end
+elseif $ARGS[0] = 'fuck2':   
+    gs 'util_image','render_image','events/doctor/nurse_fuck_2.jpg'
+    'You lift her up and push her to her knees. From behind there is no way you could mistake her for anything but a girl.'
+    act 'Fuck her':
+        gt 'util_event','stage',$event_id,'fuck3'   
+    end
+elseif $ARGS[0] = 'fuck3':   
+    gs 'util_image','render_image','events/doctor/nurse_fuck_3.jpg'
+    'She moans in pleasure as you push yourself into her back. Again and again.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'fuck4'
+    end
+elseif $ARGS[0] = 'fuck4':   
+    gs 'util_image','render_image','events/doctor/nurse_fuck_4.jpg'
+    'The pleasure builds up. Finally you cum inside in her in a great orgasm.'
+    'She smiles as you fall down into the sheets of your bed, more exhausted than usual from the sex.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'fuck5'
+    end
+elseif $ARGS[0] = 'fuck5': 
+    gs 'util_image','render_image','events/doctor/nurse_fuck_5.jpg'
+    'She climbs on top of you again.'
+    gs 'util_npc','render_dialogue','','This was great. And I am so sorry for that.','girl'
+    'She take out a syringe and right after she sting everything goes black again.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'operation'
+    end
+elseif $ARGS[0] = 'operation': 
+    gs 'util_image','render_image','events/doctor/operation.jpg'
+    'You lose every sense of time. How much time passed? Hours? Weeks? Decades? You can''t tell.'
+    'From time to time strange pictures run though your mind. All of center around you lying on an operation table. Are you awake? Are you sleeping? Who knows?'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'afterOperation'
+    end
+elseif $ARGS[0] = 'afterOperation': 
+    gs 'util_image','render_image','events/doctor/lights.jpg'
+    'Finally you wake up for real. As you open your eyes you see medical lights above your head. You are in some kind of medical facility, that''s for sure.'    
+    'As you slowly regain conciousness you feel an unfamiliar weight on your chest.'
+    act 'Look down':
+        gt 'util_event','stage',$event_id,'boobs'
+    end
+elseif $ARGS[0] = 'boobs': 
+    gs 'util_image','render_image','events/doctor/breast_pov.jpg'
+    'You look down. And you are shocked. You have breasts now! Female breasts. And your body hair also seems to be gone completely! What is going on here?!'
+    'You want to call out, but than you realize that there is something in your mouth. It smells like plastic. You try to push it out with your tongue, but it stays in place.'
+    'To make matters worse you are also unable to move. Leather straps secure you to the bed you are on right now.'
+    act 'Wait':
+        gt 'util_event','stage',$event_id,'doctorIntro'
+    end
+elseif $ARGS[0] = 'doctorIntro': 
+    gs 'util_image','render_image','events/doctor/bound.jpg'
+    gs 'util_npc','render_dialogue','','Aha, she woke up.','man'
+    'There is a man with you in this room! As he moves into your sight you realize that it is the doctor from the courthouse.'
+    gs 'util_npc','render_dialogue','','I am here to make sure that you fullfill your deal. Oh, don''t look so surprised. You signed the papers after all.','man'
+    'He grabs you by your hair. Which makes you realize that it is way longer than it used to be.'
+    gs 'util_npc','render_dialogue','','Personally I think that rapist scum like you should rot in prison. But I must agree that having live the criminal live in his victims shoes also has some appeal.','man'
+    'He squeezes your boobs.'
+    gs 'util_npc','render_dialogue','','Well, everything seems to be in order here. So my final duty is to remind you that all the changes made here can and will be reverted if you behave yourself.','man'
+    'He leaves without another word.'
+    act 'Wait':
+        gt 'util_event','stage',$event_id,'chastity'
+    end
+elseif $ARGS[0] = 'chastity': 
+    gs 'util_image','render_image','events/doctor/chastity.jpg'
+    'It doesn''t take long for another doctor to arrive and release you. The first thing you realize as you push yourself up is an unfamiliar feeling around your penis.'
+    'You look down and see that you are wearing a chastity device!'
+    gs 'util_npc','render_dialogue','pc','What the hell is this?'
+    'You are shocked! Your voice is soft and feminine!'
+    gs 'util_npc','render_dialogue','','A chastity cage. Since you are a known sex offender you must not be able to use your penis on your own. Your parole officer control the key to this chastity cage.','man'
+    
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'face'
+    end
+elseif $ARGS[0] = 'face': 
+    gs 'util_image','render_image','events/doctor/inspecation_face.jpg'
+    'The doctor starts to inspect your face by pushing on it. Then he asks you to open your mouth so he can inspect the inside.'
+    'He writes down some notes.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'breastInsepct'
+    end
+elseif $ARGS[0] = 'breastInsepct': 
+    gs 'util_image','render_image','events/doctor/inspection_breast.jpg'
+    'Your breasts are next. The doctor squeezes and pushes them.'
+    
+    gs 'util_npc','render_dialogue','','Everything seems to be in order, young girl.','man'
+    
+    act 'I am not a girl!':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','I am not a girl!'
+        gs 'util_npc','render_dialogue','','Legally speaking you actually are a woman now. You signed the paperwork, remember? You are also under the guardianship of your parole officer.','man'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'mirror'
+        end
+    end
+
+    
+
+elseif $ARGS[0] = 'mirror': 
+    gs 'util_image','render_image','events/doctor/face.png'
+    gs 'util_npc','render_dialogue','','I assume you want to see what we have done with you.','man'
+    'He leads you to a mirror.'
+    'Looking back at you is a young attractive woman. It takes you a few moments to realize that the girl looking back at you is you!'
+    'They have changed everything about your appearance: you have a female face, breasts, a female waist and butt and all your body hair is gone. The only thing that is not female is your locked up penis.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'dress'
+    end
+
+elseif $ARGS[0] = 'dress': 
+    gs 'util_image','render_image','events/doctor/dress.jpg'
+    gs 'util_npc','render_dialogue','','It is time for you to start your new life. Here are your clothes.','man'
+    'He points to some clothes on a bed in the corner of the room.'
+    'Too your delight they are not too feminine. You pick up a casual looking shirt.'
+    gs 'util_npc','render_dialogue','','No. The bra comes first.','man'
+    'You pick up the bra. This is so weird. You put it on and the fabric touches your new breasts. It''s an alien feeling.'
+    'After trying for some time you realize that you can''t close the bra behind your back. You turn it around, to close it in front of you, then you turn it around again.'
+    'The panties are next. They barely provide enough room for your locked up genitals.'
+    'At least the shirt and the jeans feel somewhat familiar. The shoes are flats. They fit your now smaller feet perfectly.'
+    'Finally completely dressed a policeman enters the room and escort you outside and to a police car.'
+
+    act 'Continue':
+        gs 'util_item','add_item','school_eventitems','bra'
+        gs 'util_wardrobe','wear_item','school_eventitems','bra'
+        gs 'util_item','add_item','school_eventitems','flats'
+        gs 'util_wardrobe','wear_item','school_eventitems','flats'
+        gs 'util_item','add_item','school_eventitems','jeans'
+        gs 'util_wardrobe','wear_item','school_eventitems','jeans'
+        gs 'util_item','add_item','school_eventitems','panties'
+        gs 'util_wardrobe','wear_item','school_eventitems','panties'
+        gt 'util_event','start','intro_school_psychologist'
+    end
+end
+-

+ 114 - 0
source/module/school/event/intro/guide.qsps

@@ -0,0 +1,114 @@
+# event_intro_school_guide
+
+$event_id = 'intro_school_guide'
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','module/school/location/schoolExterior.jpg'
+    FUNC('util_npc','get','school_guide','$name_first')+' leads you out of the school building.'
+    gs 'util_npc','render_dialogue','school_guide','So you are my mothers new experiment? Nice to meet you.'
+    act 'Introduce you with your old male name':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','Nice to meet you too. I am TODO.'
+        'She laughes out.'
+        gs 'util_npc','render_dialogue','school_guide','No, you are not. I know what happened to you. You need to leave your old self behind, or you will be in a lot of trouble here.'
+        gs 'event_intro_school_guide','dialogS2'
+    end
+    act 'Introduce you with your new female name':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','Nice to meet you too. I am <<$name_first>>.'
+        gs 'util_npc','render_dialogue','school_guide','I know. But it is nice to see that you are adapting so quickly. I know what happened to you. You need to leave your old self behind, or you will be in a lot of trouble here.'
+        gs 'event_intro_school_guide','dialogS2'
+    end
+elseif $ARGS[0] = 'dialogS2':
+    act 'That sounds as if you know what you are talking about':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','That sounds as if you know what you are talking about.'
+        gs 'util_npc','render_dialogue','school_guide','Well... lets just say that you are not the first girl here that''s in your position.'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'inside'
+        end
+    end
+elseif $ARGS[0] = 'inside':
+    gs 'util_image','render_image','module/school/location/dorm.jpg'
+    'The way to the dorm is longer than you expected. On the one side of the road, that leads to it, are several sports fields. On the other side is a forest.'
+    'You reach the dorm after about 5 minutes.'
+    gs 'util_npc','render_dialogue','school_guide','If you are hungry you can prepare yourself a meal in the kitchen. It is right next to the entry. There is also a common room next to it.'
+    gs 'util_npc','render_dialogue','school_guide','The girls rooms are on the second and fourth floor. Every floor has its own common bathroom.'
+    gs 'util_npc','render_dialogue','school_guide','Since it is the last Saturday of summer vacations there will be nobody but us in the dorm.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'room'
+    end
+elseif $ARGS[0] = 'room':
+    gs 'util_image','render_image','module/school/location/dorm211.jpg'   
+    'She leads you up a stairwell to the second floor and down the hallway to door 211. She hands you a key, so you can unlock the door.'
+    gs 'util_npc','render_dialogue','school_guide','This is our room. And this is your bed.'
+    'She points to one of the two beds in the room. There are some clothes lying on top of it.'
+    act 'Inspect the clothes':
+        gt 'util_event','stage',$event_id,'uniform'
+    end
+elseif $ARGS[0] = 'uniform':
+    gs 'util_item','render_item','school_eventitems','uniform_girl0','','big'
+    'You unfold the clothes. And you realize that it is a school uniform. There is a white top and a dark blue jacket and also a skirt.'
+    'You hold it up to your hips. It would cover about half of your upper leg.'
+    act 'Nice uniform':
+        gs 'util_item','add_item','school_eventitems','uniform_girl0'
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','Nice uniform.'
+        gs 'util_npc','render_dialogue','school_guide','I am glad you like it, because there is no way you won''t be wearing a school uniform to school.'
+        gs 'util_npc','render_dialogue','pc','Could I wear a boys uniform instead?'
+        gs 'util_npc','render_dialogue','school_guide','No way! We are old school here. Boys wear pants, girls wear skirts. You are a girl, so you will wear a skirt.'   
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'shopQuestion'
+        end
+    end
+    act 'There is no way I will wear that':
+        gs 'util_item','add_item','school_eventitems','uniform_girl0'
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','pc','There is no way I will wear that.'
+        gs 'util_npc','render_dialogue','school_guide','Sorry, but there is no way you will be wearing anything but a school uniform to school. If you don''t like the style you could by another uniform. But until you do you will wear this one.'
+        gs 'util_npc','render_dialogue','pc','Could I wear a boys uniform instead?'
+        gs 'util_npc','render_dialogue','school_guide','No way! We are old school here. Boys wear pants, girls wear skirts. You are a girl, so you will wear a skirt.'
+        act 'Continue':
+            gt 'util_event','stage',$event_id,'shopQuestion'
+        end
+    end
+elseif $ARGS[0] = 'shopQuestion':
+    gs 'util_npc','renderPortrait','school_guide'
+    gs 'util_npc','render_dialogue','school_guide','Speaking about clothes: your current outfit is just horrible.'    
+    gs 'util_npc','render_dialogue','school_guide','Mother told me to help you with your appearance. I will help you with your make-up in the morning and I will help you with picking the right outfits.'    
+    gs 'util_npc','render_dialogue','school_guide','If you want we could go shopping in a nearby mall and get you a decent outfit. Just tell me when you are ready.'
+    act 'Okay':
+        gt 'util_event','stage',$event_id,'partyAnounce'
+    end
+elseif $ARGS[0] = 'partyAnounce':
+    gs 'util_npc','renderPortrait','school_guide'
+    gs 'util_npc','render_dialogue','school_guide','Oh, and before I forget it: the other students will arrive in the afternoon around 18:00.'    
+    gs 'util_npc','render_dialogue','school_guide','We will also have a party tonight in the living room. You can join us, if you like. It would be a good opportunity to introduce yourself to the others. The party starts around 21:00.'    
+    act 'Got it':
+        gt 'util_event','stage',$event_id,'end'
+    end
+elseif $ARGS[0] = 'end':
+    gs 'util_gender','set_body_female'
+    !gs 'util_body','chest_size_set',event_barwitch_breasts
+    !gs 'util_body','hair_head_set',event_barwitch_hairlength
+    !$body_hair_head_color = $event_barwitch_haircolor
+
+    !    $alterEgo_name_first['original'] = $name_first
+    !    $alterEgo_name_last['original'] = $name_last
+    
+
+    gs 'util_stat','stats_init'
+    time_start = FUNC('util_time','date2time',2015,8,26)+8*3600
+    gs 'util_time','set',time_start
+
+    gs 'util_effect','inc','school_genderswap',-1
+
+
+    gs 'util_interrupt','add','school_dorm_2bath','ALL','school_blackmail',0,100,time_start + 3600*24
+    
+
+    gt 'util_event','end','school_dorm_211'
+
+
+end
+-

+ 90 - 0
source/module/school/event/intro/psychologist.qsps

@@ -0,0 +1,90 @@
+# event_intro_school_psychologist
+
+$event_id = 'intro_school_psychologist'
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','module/school/location/schoolExterior.jpg'
+    'It is still early in the morning.'
+    'The policeman drives you for about half an hour without saying a word. Finally you arrive at what appears to be a school building.'
+    'He opens the door of the car for you. Apperently you could not have opened it from your side.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'psyOffice'
+    end
+elseif $ARGS[0] = 'psyOffice':
+    gs 'util_image','render_image','module/school/location/schoolPsychologistOffice.jpg'
+    'He escorts you into the building and inside a room that looks like the office of a psychologist. Before he leaves he tells you to stay and wait.'
+    act 'Wait':
+        gt 'util_event','stage',$event_id,'psychologist'
+    end
+elseif $ARGS[0] = 'psychologist':
+    gs 'util_npc','renderPortrait','school_psychologist'
+    'You don''t have to wait long before the psychologist arrives. She is a young woman, maybe in her early thirties.'
+    gs 'util_npc','render_dialogue','school_psychologist','You must be my newest student. I am '+FUNC('util_npc','get','school_psychologist','$name_used')+'.'
+    'You greet her, unsure what to expect from her.'
+    gs 'util_npc','render_dialogue','school_psychologist','As you might have assumed I am your parole officer. I will make sure you will become a valuable member of society once more.'
+    gs 'util_npc','render_dialogue','school_psychologist','And let me be crystal clear: if you don''t do exactly what I tell you to do you will regret it. If I call the police and tell them you misbehaved you will be sent to prison. Male prison. And your surgeries will be reverted afterwards. But only if you can afford that yourself.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'psychologist2'
+    end
+elseif $ARGS[0] = 'psychologist2':
+    if $eventvars['name_first'] = '':
+        $eventvars['name_first'] = 'Annabelle'
+    end
+
+    if $eventvars['name_last'] = '':
+        $eventvars['name_last'] = 'Bauer'
+    end
+
+    gs 'util_npc','renderPortrait','school_psychologist'
+    gs 'util_npc','render_dialogue','school_psychologist','Do you understand? Good.'
+    gs 'util_npc','render_dialogue','school_psychologist','As you already know you are legally a girl now. I have prepared everything for you.'
+    'She hands you an ID card. The name next to a portrait of your female self reads <b>'+$eventvars['name_first']+' '+$eventvars['name_last']+'</b>. But the fact, that there is <i>female</i> written next to <i>gender</i> is even more disconcerning for you.'
+
+    act '<font color=blue>Change First Name</font>':
+        $eventvars['name_first'] = INPUT('First Name')
+        gt 'util_debug','refresh'
+    end
+
+    act '<font color=blue>Change Last Name</font>':
+        $eventvars['name_last'] = INPUT('Last Name')
+        gt 'util_debug','refresh'
+    end
+
+    act 'Continue':
+        $name_first = $eventvars['name_first']
+        $name_last  = $eventvars['name_last']
+        gt 'util_event','stage',$event_id,'questions'
+    end 
+elseif $ARGS[0] = 'questions':   
+    gs 'util_npc','renderPortrait','school_psychologist'
+    gs 'util_npc','render_dialogue','school_psychologist','Do you have any questions?'
+    act 'No more questions':
+        gt 'util_event','stage',$event_id,'guide'
+    end
+    act 'How long do I have to be a girl?':
+        '<hr/>'
+        gs 'util_npc','render_dialogue','pc','How long do I have to be a girl?'
+        gs 'util_npc','render_dialogue','school_psychologist','Until I declare you healed from your anti-social tendencies. And I won''t do so before the end of the school year.'
+    end
+    act 'Where will I live?':
+        '<hr/>'
+        gs 'util_npc','render_dialogue','pc','Where will I live?'
+        gs 'util_npc','render_dialogue','school_psychologist','The schools dorm. And don''t worry, everything is already paid for.'
+    end
+    act 'What about this chastity device?':
+        '<hr/>'
+        gs 'util_npc','render_dialogue','pc','What about this chastity device?'
+        gs 'util_npc','render_dialogue','school_psychologist','I hold therapy sessions here in my office. Participation is voluntary, but it is the only time I will unlock you down there.'
+    end
+elseif $ARGS[0] = 'guide':   
+    gs 'util_npc','renderPortrait','school_guide'
+    gs 'util_npc','render_dialogue','school_psychologist','Okay then. We are done here for now. My assistant will show you to your room and introduce you to the school life.'
+    'She hits a button on her desk and you here a buzzing sound outside. The door opens and a teenage woman, mabye 18 or 19 years old, enters.'
+    gs 'util_npc','render_dialogue','school_psychologist','This is '+FUNC('util_npc','get','school_guide','$name_first')+'. You will be nice to her. She is not only your guide. She is my daughter as well.'
+    'As you leave the office with this girl you wonder how she could possibly the daughter of '+FUNC('util_npc','get','school_psychologist','$name_used')+'. Either she must have gotten pregnant when she was still a kid or she has incredible beauty treatments.'
+
+    act 'Follow her':
+        gt 'util_event','start','intro_school_guide'
+    end
+end
+-

+ 7 - 0
source/module/school/event/intro/start.qsps

@@ -0,0 +1,7 @@
+# event_intro_school_start
+
+if $ARGS[0] = 'start':
+    gt 'util_event','start','intro_school_court'
+end
+
+-

+ 148 - 0
source/module/school/event/npc/guide.qsps

@@ -0,0 +1,148 @@
+# event_npc_school_guide
+
+$event_id = 'npc_school_guide'
+
+if $ARGS[0] = 'start':
+    gs 'util_npc','renderPortrait','school_guide'
+
+    gs 'util_npc','render_dialogue','school_guide','Hey <<$name_first>>.'
+
+    if FUNC('util_effect','isActive','school_genderswap') > 0:
+        gs 'util_npc','render_dialogue','school_guide','You don''t seem to be happy with your new body. Maybe you should talk to my mother about this. She can help you accept the changes.'
+        '<i><b>Note</b>: Talk to '+FUNC('util_npc','get','school_psychologist','$name_used')+' to lose your bad mood effect.</i>'
+    end
+
+    act 'Talk':
+        gt 'util_event','stage',$event_id,'talk'
+    end
+
+    if $makeup = '':
+        act 'Ask for help with make-up':
+            gt 'util_event','stage',$event_id,'makeup'
+        end
+    end
+
+    if school_guide_shopping = 0:
+        if mood_level < 0:
+            act 'Go shopping together (<font color="red">You are not in the mood to do this</font>)':
+
+            end
+        else
+            act 'Go shopping together':
+                gt 'util_event','stage',$event_id,'shopping'
+            end
+        end
+    end
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+
+elseif $ARGS[0] = 'makeup':
+    gs 'util_image','render_image','module/school/events/guide/makeup.webp'
+    FUNC('util_npc','get','school_guide','$name_first') + ' leads you over to the mirror and tells you to sit down on a chair.'
+    gs 'util_npc','render_dialogue','school_guide','How would you like your make-up?'
+    act 'Decent (15 minutes)':
+        cla & '<hr/>'
+        act 'Leave':
+            $makeup = 'decent'
+            gs 'util_time','pass',15*60
+            gt 'util_event','end'
+        end
+    end
+    act 'Heavy (30 minutes)':
+        cla & '<hr/>'
+        act 'Leave':
+            $makeup = 'heavy'
+            gs 'util_time','pass',30*60
+            gt 'util_event','end'
+        end
+    end
+    act 'Sluttish (30 minutes)':
+        cla & '<hr/>'
+        act 'Leave':
+            $makeup = 'sluttish'
+            gs 'util_time','pass',30*60
+            gt 'util_event','end'
+        end
+    end
+elseif $ARGS[0] = 'shopping':
+    school_guide_shopping = 1
+    gs 'util_image','render_image','module/school/events/guide/car.jpg'
+    FUNC('util_npc','get','school_guide','$name_first') +' has her own car. The two of you get inside it and drive to the nearby mall. During the drive you chat about trivialities.'
+    act 'Enter the mall':
+        gt 'util_event','stage',$event_id,'shopping_chose'
+    end
+elseif $ARGS[0] = 'shopping_chose':
+    *P '<center>'
+    *P '<img style="max-height:400px" src="media/items/clothes/f_jeans/jeans(4).jpg" >'
+    *P '<img style="max-height:400px" src="media/items/clothes/f_pants/pantsA(10).jpg" >'
+    *P '<img style="max-height:400px" src="media/items/clothes/f_dress/dress(21).jpg" >'
+    *P '</center>'
+    'You go into a clothing shop. '+FUNC('util_npc','get','school_guide','$name_first')+' looks through the clothes and shortly after presents three outfits to you.'
+    gs 'util_npc','render_dialogue','school_guide','I think they would suit you. Don''t worry about the money. My mother gave me money to buy you one outfit.'
+    act 'Jeans outfit':
+        cla & '<hr/>'
+        FUNC('util_npc','get','school_guide','$name_first')+ ' smiles.'
+        gs 'util_npc','render_dialogue','school_guide','Good choice.'
+        'She takes the clothes and pays them with her mothers credit card.'
+        act 'Drive back':
+            gs 'util_item','add_item','jeans1','4'
+            gs 'util_time','pass_rand',5400
+            gs 'util_event','end'
+        end
+    end
+    act 'Pants outfit':
+        '<hr>TODO'
+    end
+    act 'Dress':
+        '<hr>TODO'
+    end
+    act 'None':
+        cla & '<hr/>'
+        gs 'util_npc','render_dialogue','school_guide','Really? You don''t like any of them? Not even for free? Well, it''s your choice.'
+        act 'Drive back':
+            gs 'util_item','add_item','jeans1','4'
+            gs 'util_time','pass_rand',5400
+            gs 'util_event','end'
+        end
+    end
+elseif $ARGS[0] = 'talk':
+    gs 'util_npc','renderPortrait','school_guide'
+
+    act 'About the other students':
+        gt 'util_event','stage',$event_id,'talk_students'
+    end 
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'talk_students':
+    gs 'util_npc','renderPortrait','school_guide'
+    gs 'util_npc','render_dialogue','pc','About the other students...'
+
+    act 'Why are they sent here?':
+        '<hr/>'    
+        gs 'util_npc','render_dialogue','pc','Why are they sent here?'
+        gs 'util_npc','render_dialogue','school_guide','Most of them have done something wrong in their past. It''s mostly about violence and sexual violence.'
+        gs 'util_npc','render_dialogue','school_guide','In some cases the parents just wanted to send their kids away. And this school doesn''t cost anything.'
+        gs 'util_npc','render_dialogue','school_guide','And there are also some kids of staff members, such as myself.'
+    end
+
+    act 'Are there other feminized students?':
+        '<hr/>'    
+        gs 'util_npc','render_dialogue','pc','Are there other feminized students?'
+        gs 'util_npc','render_dialogue','school_guide','Yes, you are not the only one. But you are the only one who got this treatment as a punishment.'
+        gs 'util_npc','render_dialogue','school_guide','And no, I can''t tell you who the others are.'
+    end
+    
+    act 'Change Topic':
+        gt 'util_event','stage',$event_id,'talk'
+    end
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+end
+
+-

+ 83 - 0
source/module/school/event/npc/janitor.qsps

@@ -0,0 +1,83 @@
+# event_npc_school_janitor
+
+$event_id = 'npc_school_janitor'
+
+if $ARGS[0] = 'start':
+    if time_current / 86400 = janitor_last / 86400:
+        gs 'util_npc','renderPortrait','school_janitor'
+        gs 'util_npc','render_dialogue','school_janitor','Back already, doll? Did you miss your daddy? I would like to put you to good use again, but I have to work now. Come back tomorrow.'    
+        act 'Leave':
+            gt 'util_event','end'
+        end
+    else
+        if school_janitor_counter = 0:
+            gt 'util_event','stage',$event_id,'first'
+        else
+            gt 'util_event','stage',$event_id,'startGeneric'
+        end
+    end
+
+    
+elseif $ARGS[0] = 'startGeneric':
+    gs 'util_image','render_image','module/school/events/janitor/bj('+rand(0,8)+').jpg'
+    gs 'util_npc','render_dialogue','school_janitor','Good for you to come back, doll. Now do the only thing you are good for!'
+    'You get to your knees and suck im off once more. It is as revolting as the first time you had to do this.'
+    'He cums into your mouth again and you lick him clean once more, before he tells you to get away.'
+    act 'Leave':
+        school_janitor_counter += 1
+        janitor_last = time_current
+        gs 'util_time','pass_rand',900
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'first':
+    gs 'util_npc','renderPortrait','school_janitor'
+
+    gs 'util_npc','render_dialogue','school_janitor','Aha, there she is. Just in time. Get over here!'
+    'You walk a little closer to the man. He seems to be in his 60s and he spots a rather big belly. You can also smell his sweat. He doesn''t seem to shower too often.'
+    gs 'util_npc','render_dialogue','school_janitor','I will call you doll. And you will call me daddy. Understood? Now get naked! I want to see my prize!'
+
+    act 'Undress':
+        gt 'util_event','stage',$event_id,'undress'
+    end
+elseif $ARGS[0] = 'undress':
+    gs 'util_image','render_image','module/school/events/janitor/testChastity.webp'
+    'You slowly take all your clothes off. In the end you stand in front of the old man, wearing nothing but your chastity device. He has gotten naked himself in the meantime.'
+    gs 'util_npc','render_dialogue','school_janitor','So you are one of these sissies.'
+    'He comes over to you and grabs your chastity cage. Then he pulls at it. Not enough to cause any damage, but it is still painfull. The cage doesn''t move a tiny bit.'
+    gs 'util_npc','render_dialogue','school_janitor','Doesn''t come off. Good. And I assume you don''t have the key neither. I bet you little sissy-clit gets hard by somebody else having locked it up.'
+    'He directs your right hand to his one erect penis.'
+    gs 'util_npc','render_dialogue','school_janitor','That''s a real penis, little sissy slut. I know you would love to feel it inside you. And I don''t have a problem with that. As far as I am concerned the one being fucked is the fag, not the one doing the fucking.'
+    gs 'util_npc','render_dialogue','school_janitor','No get on your knees!'
+
+    act 'Kneel down':
+        gt 'util_event','stage',$event_id,'kneel'
+    end
+elseif $ARGS[0] = 'kneel':
+    gs 'util_image','render_image','module/school/events/janitor/lick_0.jpg'
+    'You kneel down and the janitor places his penis right in front your face. It stinks and is rather hairy.'
+    gs 'util_npc','render_dialogue','school_janitor','Suck!'
+    act 'Suck':
+        gt 'util_event','stage',$event_id,'bj'
+    end
+elseif $ARGS[0] = 'bj':
+    gs 'util_image','render_image','module/school/events/janitor/lick_1.jpg'
+    'You start sucking him off. It smells revolting and you must fight your instinct in order not to vormit.'
+    'You are glad that his penis didn''t get completely hard, or you might not have been able to get it into your mouth completely.'
+    'After a few minutes you hear the Janitor moan. He grabs your head, so you can''t back away as he comes inside your mouth.'
+    gs 'util_npc','render_dialogue','school_janitor','You have a lot of learning to do, doll. This was mediocre at best. Now clean up your mess!'
+    act 'Lick him clean':
+        gt 'util_event','stage',$event_id,'clean'
+    end
+elseif $ARGS[0] = 'clean':
+    gs 'util_image','render_image','module/school/events/janitor/clean.jpg'
+    'You lick the cum from the top of his dick. He also demands that you lick his balls. They taste awfully salty.'
+    gs 'util_npc','render_dialogue','school_janitor','That''s all for now. I expect you to report to me at least once a week. Understood? Then shut up and get out!'
+    act 'Leave':
+        school_janitor_counter += 1
+        janitor_last = time_current
+        gs 'util_time','pass_rand',900
+        gt 'util_event','end'
+    end
+end 
+
+-

+ 39 - 0
source/module/school/event/npc/pierre.qsps

@@ -0,0 +1,39 @@
+# event_npc_school_pierre
+
+$event_id = 'npc_school_pierre'
+
+if $ARGS[0] = 'start':
+    gs 'util_npc','renderPortrait','school_pierre'
+    gs 'util_npc','render_dialogue','school_pierre','What do you want, <<$name_first>>?'
+
+    if school_christine_dept = 1:
+        act 'Pay Christines debt':
+            gt 'util_event','stage',$event_id,'debt'
+        end
+    end
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'debt':
+    gs 'util_npc','renderPortrait','school_pierre'
+    'He laughes out.'
+    gs 'util_npc','render_dialogue','school_pierre','Really? The little skank found an even stupider cunt to do her dirty work?'
+    'He inspects you for a moment.'
+    gs 'util_npc','render_dialogue','school_pierre','I guess you look good enough for this. So that''s fine by me.'
+    gs 'util_npc','render_dialogue','school_pierre','You see, I have a deal with the janitor. But don''t call him that, he thinks he is a facility manager. In reality is scum with just enough power to make my life difficult.'
+    'He takes out his smartphone and without giving you the time to object he makes a photo of you.'
+    gs 'util_npc','render_dialogue','school_pierre','Me and my friends need to use the basement from time to time. But that can only happen if he plays along.'
+    'You hear the send-sound. Did he just send the picture of you to somebody else?'
+    gs 'util_npc','render_dialogue','school_pierre','The problem is, that he won''t take money as payment. That''s where Christine come into play. He likes young pussy and Christine was the one I wanted to offer him. And now that you are the new Christine that will be your job.'
+    'You hear the message-received-sound of the smartphone.'
+    gs 'util_npc','render_dialogue','school_pierre','And he just told me that he is okay with this. You will pay him a visit in the basement. And I can''t stress enough how much you don''t want to dissapoint me.'
+    'He waves his hand, signaling you to leave.'
+
+    act 'Leave':
+        school_christine_dept = 2
+        dorm_room_unlocked['basement'] = 1 
+        gt 'util_event','end'
+    end
+end
+-

+ 53 - 0
source/module/school/event/npc/psychologist.qsps

@@ -0,0 +1,53 @@
+# event_npc_school_psychologist
+
+$event_id = 'npc_school_psychologist'
+
+if $ARGS[0] = 'start':
+    gs 'util_npc','renderPortrait','school_psychologist'
+    gs 'util_npc','render_dialogue','school_psychologist','Hello, <<$name_first>>. Are you here for a session?'
+    temp_daysSinceLastSession = (time_current/86400) - (school_session_last/86400)
+    if temp_daysSinceLastSession > 4:
+        
+
+        if FUNC('util_effect','isActive','school_genderswap') > 0:
+            gs 'util_npc','render_dialogue','school_psychologist','It might help you feel for comfortable with your new situation.'
+        end
+
+        act 'Start Session':
+            gt 'util_event','stage',$event_id,'session'
+        end
+    else
+        if temp_daysSinceLastSession = 4:
+            gs 'util_npc','render_dialogue','school_psychologist','I am sorry, but the last session was to recent. Come back tomorrow and you can have another one.'
+        else
+            gs 'util_npc','render_dialogue','school_psychologist','I am sorry, but the last session was to recent. Come back in <<5-temp_daysSinceLastSession>> days and you can have another one.'
+        end
+    end
+
+    
+
+    act 'Leave':
+        gt 'util_event','end'
+    end
+elseif $ARGS[0] = 'session':
+    gs 'util_image','render_image','module/school/events/psychologist/hypnosis.jpg'
+    temp = FUNC('util_effect','remaining','school_genderswap')
+    if temp > 0:
+        gs 'util_effect','end','school_genderswap'
+        gs 'util_effect','inc','school_genderswap_positive',temp
+    end
+    killvar 'temp'
+    FUNC('util_npc','get','school_psychologist','$name_used')+' asks you to sit down on her couch. Then she takes out a pocket watch and tells you to watch it while she starts swinging it in front of your eyes.'
+    'She obviously wants to hypnotize you. You here her soothing voice, telling you to relax.'
+    
+    gs 'util_npc','render_dialogue','school_psychologist','Now wake up.'
+    'You are irritated. Did something happen? It takes you a few moments to realize, that some time has passed. You already were hypnotized.'
+    gs 'util_npc','render_dialogue','school_psychologist','That''s all for today. You may leave now.'
+
+    act 'Leave':
+        school_session_last = time_current
+        gt 'util_event','end'
+    end
+end
+
+-

+ 294 - 0
source/module/school/event/party.qsps

@@ -0,0 +1,294 @@
+# event_school_party
+
+$event_id = 'school_party'
+
+if $ARGS[0] = 'start':
+    gs 'util_image','render_image','module/school/events/party/greeting.jpg'
+    'Long before you enter the living room you hear loud voices and music. Some people are having fun in there.'
+    'You enter and see at least 20 other students chatting, dancing and drinking. Some of the girls are not wearing any pants.'
+    FUNC('util_npc','get','school_guide','$name_first') +' anounces your presence to some bystanders and they introduce themselves to you.'
+    act 'Continue':
+        gt 'util_event','stage',$event_id,'1_teachersKids'
+    end
+elseif $ARGS[0] = '1_teachersKids':
+    gs 'util_image','render_image','module/school/events/party/greeting.jpg'
+    'These students seem to be the kids of staff members. It''s the social group of '+FUNC('util_npc','get','school_guide','$name_first')+'.'
+    act 'Stay and socialize':
+        cla & '<hr/>'
+        'You stay with them and talk for some time, drinking a drink every now and then.'
+        'It is getting late and one after another the students say their goodbyes and leave for the night.'
+        act 'Go to bed':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'bed'
+        end
+        act 'Look what the other students are doing':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'2_pizza'
+        end
+    end
+    act 'Look for another social group':
+        gt 'util_event','stage',$event_id,'1_sluts'
+    end
+elseif $ARGS[0] = '1_sluts':
+    gs 'util_image','render_image','module/school/events/party/1_sluts.jpg'
+    'On a sofa you find three girls in rather skimpy outfits. They drink a lot of alcohol and talk about men and sex all the time.'
+    act 'Stay and socialize':
+        cla & '<hr/>'
+        'You stay with them and talk for some time, drinking a drink every now and then.'
+        'It is getting late and you see some of the other groups going to bed. But the girls you are with are all staying up.'
+        act 'Go to bed':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'bed'
+        end
+        act 'Continue partying':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'2_boobs'
+        end
+    end
+    act 'Look for another social group':
+        gt 'util_event','stage',$event_id,'1_nerds'
+    end
+    act 'Back to the teachers kids':
+        gt 'util_event','stage',$event_id,'1_teachersKids'
+    end
+elseif $ARGS[0] = '1_nerds':
+    gs 'util_image','render_image','module/school/events/party/1_nerds.jpg'
+    'A few students are sitting on another sofa. They don''t drink much and discuss roleplay games and fantasy movies.'
+    act 'Stay and socialize':
+        cla & '<hr/>'
+        'You stay with them and talk for some time, drinking a drink every now and then.'
+        'It is getting late and one after another the students say their goodbyes and leave for the night.'
+        act 'Go to bed':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'bed'
+        end
+        act 'Look what the other students are doing':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'2_pizza'
+        end
+    end
+    act 'Look for another social group':
+        gt 'util_event','stage',$event_id,'1_rich'
+    end
+    act 'Back to the teachers kids':
+        gt 'util_event','stage',$event_id,'1_teachersKids'
+    end
+    act 'Back to the sluts':
+        gt 'util_event','stage',$event_id,'1_sluts'
+    end
+elseif $ARGS[0] = '1_rich':
+    gs 'util_image','render_image','module/school/events/party/1_rich.jpg'
+    'A group of students sits around the kitchen table. They are drinking expensive wine and are discussing politics and shareholder concerns.'
+    act 'Stay and socialize':
+        cla & '<hr/>'
+        'You stay with them and talk for some time, drinking a drink every now and then.'
+        'It is getting late and one after another the students say their goodbyes and leave for the night.'
+        act 'Go to bed':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'bed'
+        end
+        act 'Look what the other students are doing':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'2_pizza'
+        end
+    end
+    act 'Look for another social group':
+        gt 'util_event','stage',$event_id,'1_cheerleader'
+    end
+    act 'Back to the teachers kids':
+        gt 'util_event','stage',$event_id,'1_teachersKids'
+    end
+    act 'Back to the sluts':
+        gt 'util_event','stage',$event_id,'1_sluts'
+    end
+    act 'Back to the nerds':
+        gt 'util_event','stage',$event_id,'1_nerds'
+    end
+elseif $ARGS[0] = '1_cheerleader':
+    gs 'util_image','render_image','module/school/events/party/1_cheerleaders.jpg'
+    'You find a group of girls. They are wearing only their underwear. Apperently they are cheerleaders and the male sports team tricked them out of their clothes.'
+    act 'Stay and socialize':
+        cla & '<hr/>'
+        'You stay with them and talk for some time, drinking a drink every now and then.'
+        'It is getting late and you see some of the other groups going to bed. But the cheerleaders are all staying up.'
+        act 'Go to bed':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'bed'
+        end
+        act 'Continue partying':
+            gs 'util_time','pass_rand',3600*4
+            gt 'util_event','stage',$event_id,'2_cheerleader'
+        end
+    end
+
+    act 'Back to the teachers kids':
+        gt 'util_event','stage',$event_id,'1_teachersKids'
+    end
+    act 'Back to the sluts':
+        gt 'util_event','stage',$event_id,'1_sluts'
+    end
+    act 'Back to the nerds':
+        gt 'util_event','stage',$event_id,'1_nerds'
+    end
+    act 'Back to the snobs':
+        gt 'util_event','stage',$event_id,'1_rich'
+    end
+elseif $ARGS[0] = '2_boobs':
+    gs 'util_image','render_image','module/school/events/party/2_boobs.jpg'
+    'One of the girls goes to the kitchen to get more drinks. When she returns she is only wearing her underwear. A boy is right behind her, holding her by her arms as he pulls down her bra and pretends as if he is fucking her.'
+    'She covers her breats with her hands and yells for him to release her, but she is obviously having fun. That seems to be a kind of game they have played before. It doesn''t take long before both of them leave the party together.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'2_pizza'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '2_cheerleader':
+    gs 'util_image','render_image','module/school/events/party/2_cheerleader.jpg'
+    'Apparently one girl of the group is missing and the other cheerleaders are concerned about this.'
+    'After some time you hear loud noises from the hallway. It''s the sports team. And they have the missing cheerleader with them.'
+    'She is completely drunk. And except for cream that is covering her breasts and her privates she is completely naked.'
+    '<i><b>Hey, wanna see how we undress this slut completely?</b></i>'
+    'They are bringing her to one of the boys rooms. One of them notices your look. <i>Sorry, darling, but men only. Unless you want to become a cream slut as well.</i>'
+    'You turn to the other girls. They don''t seem to be concerned anymore. This behavior seems to be rather normal.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'2_pizza'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end 
+elseif $ARGS[0] = '2_pizza':
+    gs 'util_image','render_image','module/school/events/party/2_pizza.jpg'
+    'You see a lonely girl sitting on a couch eating the last pieces of a pizza.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'2_drinkgame'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '2_drinkgame':
+    gs 'util_image','render_image','module/school/events/party/2_drinkgame.jpg'
+    'Two of the girls are playing a weird drinking game.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'2_kiss'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '2_kiss':
+    gs 'util_image','render_image','module/school/events/party/2_kiss.jpg'
+    'You find two of the girls kissing each other.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'2_toilet'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '2_toilet':
+    gs 'util_image','render_image','module/school/events/party/2_toilet.jpg'
+    'As you go for a bathroom break you see two girls sneaking out of it. They are wearing nothing but their panties.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'3_wasted'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '3_wasted':
+    gs 'util_image','render_image','module/school/events/party/3_wasted.jpg'
+    'It as getting very late. As you take a look around you see a completely wasted girl. Except for her having lost her consciousness she seems to fine, so you leave her be.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'3_wasted2'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '3_wasted2':
+    gs 'util_image','render_image','module/school/events/party/3_wasted2.jpg'
+    'Another wasted girl. Drinking too much seems to be a common problem here.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'3_wastedDouble'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '3_wastedDouble':
+    gs 'util_image','render_image','module/school/events/party/3_wasted2.jpg'
+    'Another two wasted girl. But these two are completely naked and the one is lying on top of the other.'
+    'Just as youn wonder if you should do something a guy shows up and pulls the girl on top by her hair. She somehow manages to get to her feet. He then takes her with her. Since she doesn''t protest you decide that you should keep quite as well.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'3_bed'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '3_bed':
+    gs 'util_image','render_image','module/school/events/party/3_bed.jpg'
+    'The party downstairs seems to be over. So you go the the dorm rooms upstairs. In one of them you find a completely naked drunk-sleeping in her bed.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'3_angry'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '3_angry':
+    gs 'util_image','render_image','module/school/events/party/3_angry.jpg'
+    'In the next room you find a girl who is trying to get three drunk guys out of her bed. She looks rather annoyed.'
+    act 'Take a look around':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'3_drugs'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '3_drugs':
+    gs 'util_image','render_image','module/school/events/party/3_drugs.jpg'
+    'A few doors further down the hallway you find some guys watching two girls. One of them is lying on a table while the other is licking something that looks like salt from her naked torso.'
+    '<i>Hold still, bitch! I don''t want to waste any of it!</i>'
+    'To your surprise the girl on the table responses by barking like a dog.'
+    act 'Continue':
+        gs 'util_time','pass_rand',300
+        gt 'util_event','stage',$event_id,'4_dog'
+    end
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = '4_dog':
+    gs 'util_image','render_image','module/school/events/party/4_dog.jpg'
+    'When the girl on top is done she gets up and starts kissing one of the guys.'
+    'The other girl climbs down from the table as well, but she stays on all fours. One of the other guys gets up and pets her head.'
+    '<i>Well done, bitch.</i>'
+    'He turns his head and know he realizes that you have been watching.'
+    '<i>Sorry, invitation only.</i>'
+    'He clothes the door in front of your face. The party seems to be over.'
+    act 'Go to bed':
+        gs 'util_time','pass_rand',900
+        gt 'util_event','stage',$event_id,'bed'
+    end
+elseif $ARGS[0] = 'bed':
+    $location_current = 'school_dorm_211'
+    gt 'util_event','start','sleep'
+end
+
+-

+ 46 - 0
source/module/school/item/eventitems.qsps

@@ -0,0 +1,46 @@
+# item_school_eventitems
+if $ARGS[0] = 'bra':
+    $item_name = 'Cheap Bra'
+    $item_image = 'module/school/item/eventitems/bra.webp'
+    $item_price = 'low'
+    $item_color = 'brown'
+    $item_gender = 'f'
+    $item_type = 'bra'
+elseif $ARGS[0] = 'flats':
+    $item_name = 'Cheap Flats'
+    $item_image = 'module/school/item/eventitems/flats.jpeg'
+    $item_price = 'low'
+    $item_color = 'white'
+    $item_gender = 'f'
+    $item_type = 'shoes'
+    item_height = 0
+elseif $ARGS[0] = 'jeans':
+    $item_name = 'Cheap Jeans Outfit'
+    $item_image = 'module/school/item/eventitems/jeans.webp'
+    $item_price = 'low'
+    $item_color = 'white'
+    $item_gender = 'f'
+    $item_type = 'Clothes'
+    $item_subtype = 'jeans'
+    $item_sluttiness = 'decent'
+    item_height = 0
+    $item_style = 'Casual'
+elseif $ARGS[0] = 'panties':
+    $item_name = 'Cheap Panties'
+    $item_image = 'module/school/item/eventitems/panties.webp'
+    $item_price = 'low'
+    $item_color = 'grey'
+    $item_gender = 'f'
+    $item_type = 'panties'
+elseif $ARGS[0] = 'uniform_girl0':
+    $item_name = 'School Uniform'
+    $item_image = 'module/school/item/eventitems/girl(0).webp'
+    $item_price = 'mid'
+    $item_sluttiness = 'decent'
+    $item_color = 'blue'
+    $item_style = 'School'
+    $item_gender = 'f'
+    $item_type = 'clothes'
+    $item_subtype = 'skirt'
+end
+-

+ 21 - 0
source/module/school/location/dorm/0hallway.qsps

@@ -0,0 +1,21 @@
+# location_school_dorm_0hallway
+
+if $ARGS[0] = 'info':
+    $location_label = 'Hallway'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Hallway'
+    gs 'util_image','render_image','module/school/location/dormEntry.jpg'   
+
+    gs 'util_location','render_goto','school_dorm_exterior',30,'Leave'
+    gs 'util_location','render_goto','school_dorm_kitchen',15
+    gs 'util_location','render_goto','school_dorm_living',15
+    
+    gs 'util_location','render_goto','school_dorm_2hallway',30,'2nd Floor'
+    gs 'util_location','render_goto','school_dorm_3hallway',45,'3rd Floor'
+
+    if dorm_room_unlocked['basement'] > 0:
+        gs 'util_location','render_goto','school_dorm_basement',60
+    end
+end 
+
+-

+ 29 - 0
source/module/school/location/dorm/211.qsps

@@ -0,0 +1,29 @@
+# location_school_dorm_211
+
+if $ARGS[0] = 'info':
+    $location_label = 'Your room'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Your room'
+    gs 'util_image','render_image','module/school/location/dorm211.jpg'   
+
+    gs 'util_npc','render_button_if_present','school_guide'
+
+
+    gs 'util_action','render_action','Lay down in bed','gt ''util_event'',''start'',''bed'' '
+
+    if alarmclock_activated = 0:
+        gs 'util_action','render_action','Activate Alarmclock','alarmclock_activated = 1 & gt ''util_location'',''back'' '
+    else
+        gs 'util_action','render_action','Deactivate Alarmclock','alarmclock_activated = 0 & gt ''util_location'',''back'' '
+        gs 'util_action','render_action','Set Alarmclock Time|It is set to '+FUNC('util_time','timeOfDay2readable',alarmclock_time),'gs ''util_time'',''alarm_time_showDialog'' & gt ''util_location'',''back'' '
+    end
+
+    gs 'util_action','render_action','Wardrobe','gt ''util_wardrobe'',''render_wardrobe'' '
+
+
+
+    gs 'util_location','render_goto','school_dorm_2hallway',15
+end
+
+-

+ 16 - 0
source/module/school/location/dorm/2bath.qsps

@@ -0,0 +1,16 @@
+# location_school_dorm_2bath
+
+if $ARGS[0] = 'info':
+    $location_label = 'Bathroom'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Bathroom'
+    gs 'util_image','render_image','module/school/location/dormBath2.jpg'   
+
+    gs 'util_action','render_action','Mirror','gt ''util_event'',''start'',''mirror'' '
+    gs 'util_action','render_action','Shower','gt ''util_event'',''start'',''shower'' '
+
+    gs 'util_location','render_goto','school_dorm_2hallway',15
+
+end 
+
+-

+ 17 - 0
source/module/school/location/dorm/2hallway.qsps

@@ -0,0 +1,17 @@
+# location_school_dorm_2hallway
+
+if $ARGS[0] = 'info':
+    $location_label = 'Hallway'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Hallway'
+    gs 'util_image','render_image','module/school/location/dormHallway.jpg'   
+
+    gs 'util_location','render_goto','school_dorm_211',15
+
+    gs 'util_location','render_goto','school_dorm_2bath',15
+
+    gs 'util_location','render_goto','school_dorm_0hallway',30,'Ground Floor'
+    gs 'util_location','render_goto','school_dorm_3hallway',15,'3rd Floor'
+end 
+
+-

+ 15 - 0
source/module/school/location/dorm/302.qsps

@@ -0,0 +1,15 @@
+# location_school_dorm_302
+
+if $ARGS[0] = 'info':
+    $location_label = 'Pierres room'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Pierres room'
+    gs 'util_image','render_image','module/school/location/dorm302.jpg'   
+
+    gs 'util_npc','render_button_if_present','school_pierre'
+
+    gs 'util_location','render_goto','school_dorm_3hallway',15
+end
+
+-

+ 17 - 0
source/module/school/location/dorm/3hallway.qsps

@@ -0,0 +1,17 @@
+# location_school_dorm_3hallway
+
+if $ARGS[0] = 'info':
+    $location_label = 'Hallway'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Hallway'
+    gs 'util_image','render_image','module/school/location/dormHallway.jpg'   
+
+    if dorm_room_unlocked['302'] > 0: gs 'util_location','render_goto','school_dorm_302',15, 'Room 302 (Pierre)'
+
+    !gs 'util_location','render_goto','school_dorm_2bath',15
+
+    gs 'util_location','render_goto','school_dorm_0hallway',45,'Ground Floor'
+    gs 'util_location','render_goto','school_dorm_2hallway',15,'2nd Floor'
+end 
+
+-

+ 15 - 0
source/module/school/location/dorm/basement.qsps

@@ -0,0 +1,15 @@
+# location_school_dorm_basement
+
+if $ARGS[0] = 'info':
+    $location_label = 'Basement'
+
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Basement'
+    gs 'util_image','render_image','module/school/location/dormBasement.jpg'   
+
+    gs 'util_npc','render_button_if_present','school_janitor'
+
+    gs 'util_location','render_goto','school_dorm_0hallway',60,'Upstairs'
+end
+
+-

+ 20 - 0
source/module/school/location/dorm/exterior.qsps

@@ -0,0 +1,20 @@
+# location_school_dorm_exterior
+   
+if $ARGS[0] = 'info':
+    $location_label = 'Dormitory'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Dormitory'
+
+    if FUNC('util_time','sunPosition',-1) = 'night':
+        gs 'util_image','render_image','module/school/location/dormNight.jpg' 
+    else
+        gs 'util_image','render_image','module/school/location/dorm.jpg' 
+    end
+      
+
+    gs 'util_location','render_goto','school_dorm_0hallway',30,'Enter Dorm'
+    gs 'util_location','render_goto','school',300,'School'
+    gs 'util_location','render_goto','school_sportsfield',180
+end 
+
+-

+ 83 - 0
source/module/school/location/dorm/kitchen.qsps

@@ -0,0 +1,83 @@
+# location_school_dorm_kitchen
+
+if $ARGS[0] = 'info':
+    $location_label = 'Kitchen'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Kitchen'
+    gs 'util_image','render_image','module/school/location/dormKitchen.jpg'   
+
+    
+    
+    gs 'util_action','render_action','Cook a low quality meal','gt ''location_residential_aparment_kitchen'',''cook'',''low'''
+    
+
+    if food_med > 0:
+        gs 'util_action','render_action','Cook a medium quality meal|You can cook this <<food_med>> times','gt ''location_residential_aparment_kitchen'',''cook'',''med'''
+    end
+
+    if food_high > 0:
+        gs 'util_action','render_action','Cook a high quality meal|You can cook this <<food_high>> times','gt ''location_residential_aparment_kitchen'',''cook'',''high'''
+    end
+
+    gs 'util_action','render_action','Drink water','gt ''location_residential_aparment_kitchen'',''drink'',''water'''
+    
+
+    gs 'util_location','render_goto','school_dorm_0hallway',15
+    gs 'util_location','render_goto','school_dorm_living',15
+
+elseif $ARGS[0] = 'cook':
+    
+
+    if $ARGS[1] = 'low':
+        temp_rand = rand(1,2)
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',1200
+        food_low-=1
+        if temp_rand = 1:
+            gs 'util_image','render_image','events/consume/pizza.jpg'
+            *PL 'You place a frozen pizza in the oven. After a few minutes it is finished. You sit down to eat it. It doesn''t taste too good, but at least it fills your stomach.'
+        else
+            gs 'util_image','render_image','events/consume/soup.jpg'
+            *PL 'You start to prepare a portion of canned soup. After a few minutes it is finished. You sit down to eat it. It doesn''t taste too good, but at least it fills your stomach.'
+        end
+    elseif $ARGS[1] = 'med':
+        temp_rand = rand(1,3)
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',1200
+        food_med-=1
+        if temp_rand = 1:
+            gs 'util_image','render_image','events/consume/noodles('+rand(0,2)+').jpg'
+            *PL 'You prepare a nice tasting noodle meal.'
+        elseif temp_rand = 2:
+            gs 'util_image','render_image','events/consume/rice('+rand(0,1)+').jpg'
+            *PL 'You prepare a nice tasting rice meal.'
+        else
+            gs 'util_image','render_image','events/consume/wok('+rand(0,1)+').jpg'
+            *PL 'You prepare a nice tasting vegetable meal.'
+        end
+    elseif $ARGS[1] = 'high':
+        gs 'util_stat','consume',500000,0,626
+        gs 'util_time','pass',360
+        food_high-=1
+        *PL 'You sit down and eat your high quality meal.'
+    end
+
+    gs 'util_stat','render_widget'
+
+    act 'Back':
+        gt 'util_location','back'
+    end
+elseif $ARGS[0] = 'drink':
+    gs 'util_stat','consume',0,500000,0
+    gs 'util_time','pass',60
+    gs 'util_image','render_image','events/consume/water.jpg'
+    *PL 'You fill a glas of water and drink it. Refreshing.'    
+
+    gs 'util_stat','render_widget'
+
+    act 'Back':
+        gt 'util_location','back'
+    end
+end
+
+-

+ 17 - 0
source/module/school/location/dorm/living.qsps

@@ -0,0 +1,17 @@
+# location_school_dorm_living
+
+if $ARGS[0] = 'info':
+    $location_label = 'Living Room'
+elseif $ARGS[0] = 'show':
+
+    !TODO: correct time
+    gt 'util_event','start','school_party'
+
+    gs 'util_location','render_title','Kitchen'
+    gs 'util_image','render_image','module/school/location/dormKitchen.jpg'   
+
+
+    gs 'util_location','render_goto','school_dorm_0hallway',15
+    gs 'util_location','render_goto','school_dorm_kitchen',15
+end
+-

+ 13 - 0
source/module/school/location/school/classroom.qsps

@@ -0,0 +1,13 @@
+# location_school_classroom
+   
+if $ARGS[0] = 'info':
+    $location_label = 'Classroom'
+elseif $ARGS[0] = 'show':
+    gs 'util_location','render_title','Classroom'
+    gs 'util_image','render_image','module/school/location/classroom.jpg'   
+
+    gs 'util_location','render_goto','school_hallway',60,'Leave'
+    
+end 
+
+-

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است