From eeff339d83195875c86a43de90c9bdeea941a8d3 Mon Sep 17 00:00:00 2001
From: DAPdev6 <23212-DAPdev6@users.noreply.gitgud.io>
Date: Sun, 6 Feb 2022 19:09:16 +0000
Subject: [PATCH] Strap-ons and Adult Shop

---
 DolSettingsExport.json                        |    2 +
 game/02-CSS/base.css                          |   42 +-
 game/03-JavaScript/03-Templates/t-actions.js  |    3 +
 .../03-JavaScript/03-Templates/t-bodyparts.js |    2 +-
 game/03-JavaScript/debugMenu.js               |   22 +
 game/03-JavaScript/ingame.js                  |  130 +-
 game/03-JavaScript/save.js                    |    2 +
 game/04-Variables/presets.twee                |    8 +-
 game/04-Variables/variables-start.twee        |    3 +
 game/04-Variables/variables-start2.twee       |   11 +
 game/04-Variables/variables-static.twee       |   11 +-
 .../04-Variables/variables-versionUpdate.twee |   34 +
 game/base-clothing/clothing-face.twee         |   75 +-
 game/base-clothing/clothing-feet.twee         |   10 +-
 game/base-clothing/clothing-genitals.twee     |  124 +
 game/base-clothing/clothing-hands.twee        |    6 +-
 game/base-clothing/clothing-head.twee         |   28 +-
 game/base-clothing/clothing-legs.twee         |   20 +-
 game/base-clothing/clothing-lower.twee        |   38 +-
 game/base-clothing/clothing-neck.twee         |   84 +-
 game/base-clothing/clothing-under-upper.twee  |   82 +-
 game/base-clothing/clothing-under.twee        |  247 +-
 game/base-clothing/clothing-upper.twee        |   34 +-
 game/base-clothing/images.twee                |    8 +
 game/base-clothing/init.twee                  |    2 +
 game/base-clothing/update.twee                |   12 +
 game/base-clothing/wardrobes.twee             |   15 +-
 game/base-clothing/widgets.twee               |   20 +
 game/base-combat/actions-anus.twee            |    6 +-
 game/base-combat/actions-feet.twee            |    3 +-
 game/base-combat/actions-hands.twee           |  116 +-
 game/base-combat/actions-mouth.twee           |    5 +-
 game/base-combat/actions-penis.twee           |   22 +-
 game/base-combat/actions-speech.twee          |    9 +
 game/base-combat/actions-text.twee            |   14 +-
 game/base-combat/actions-vagina.twee          |    5 +-
 game/base-combat/actionsGeneration.twee       |   16 +-
 game/base-combat/audience.twee                |   54 +-
 game/base-combat/beast.twee                   |   14 +-
 game/base-combat/effects.twee                 |   50 +-
 game/base-combat/ejaculation-eden.twee        |    2 +
 game/base-combat/ejaculation-kylar.twee       |    2 +
 game/base-combat/ejaculation-leighton.twee    |    2 +
 game/base-combat/ejaculation-plant.twee       |    2 +-
 game/base-combat/ejaculation-robin.twee       |    2 +
 game/base-combat/ejaculation.twee             |   30 +-
 game/base-combat/end.twee                     |   16 +-
 game/base-combat/images.twee                  |   95 +-
 game/base-combat/init.twee                    |    7 +
 game/base-combat/man-combat.twee              |  918 +++++++-
 game/base-combat/missionary-images.twee       |   21 +-
 game/base-combat/npc-generation.twee          |  119 +-
 game/base-combat/speech.twee                  |  273 ++-
 game/base-combat/struggle.twee                |    2 +-
 game/base-combat/tentacles/tentacle-adv.twee  |    2 +-
 .../tentacles/tentacleActionsGeneration.twee  |    9 +
 game/base-combat/widgets.twee                 |   62 +-
 game/base-debug/test encounters.twee          |  169 ++
 game/base-system/bdsm.twee                    |    8 +
 game/base-system/images.twee                  |   18 +
 game/base-system/journal.twee                 |    2 +
 game/base-system/named-npcs.twee              |   45 +
 game/base-system/orgasm.twee                  |   12 +
 game/base-system/pregnancy/pregnancy.twee     |    1 +
 game/base-system/settings.twee                |   16 +
 game/base-system/skill-difficulties.twee      |   39 +-
 game/base-system/text.twee                    |   73 +-
 game/base-system/time.twee                    |   33 +
 game/base-system/widgets.twee                 |   51 +
 game/overworld-forest/loc-cabin/main.twee     |    8 +
 game/overworld-plains/loc-farm/cottage.twee   |    4 +
 game/overworld-plains/loc-riding/main.twee    |    2 +-
 .../loc-adultshop/adultshop.twee              |  232 ++
 .../loc-adultshop/beast-phallus-project.twee  |   26 +
 game/overworld-town/loc-adultshop/events.twee | 2094 +++++++++++++++++
 .../loc-adultshop/gift-strap-ons.twee         |  364 +++
 game/overworld-town/loc-adultshop/intro.twee  |   21 +
 .../overworld-town/loc-adultshop/sextoys.twee |   99 +
 game/overworld-town/loc-adultshop/shop.twee   |  545 +++++
 .../overworld-town/loc-adultshop/widgets.twee |  608 +++++
 game/overworld-town/loc-home/main.twee        |   58 +-
 game/overworld-town/loc-shop/clothing.twee    |    3 +
 .../loc-shop/clothingCategories-v2.twee       |   30 +
 .../loc-shop/stolenClothes.twee               |    2 +-
 game/overworld-town/loc-shop/widgets.twee     |    2 +
 game/overworld-town/loc-street/elk.twee       |   18 +-
 .../overworld-town/loc-strip club/events.twee |    2 +-
 game/overworld-town/loc-temple/main.twee      |   42 +
 game/overworld-town/special-avery/main.twee   |    4 +-
 game/overworld-town/special-kylar/main.twee   |    4 +
 game/overworld-town/special-robin/main.twee   |    2 +-
 game/overworld-town/special-robin/walk.twee   |    4 +-
 .../overworld-town/special-robin/widgets.twee |    4 +
 .../special-sydney/widgets.twee               |   13 +
 game/overworld-town/special-whitney/main.twee |    5 +
 game/special-masturbation/actions.twee        |  161 ++
 game/special-masturbation/effects.twee        |  449 +++-
 game/special-masturbation/widgets.twee        |    2 +
 img/clothes/face/gagfetish/full.png           |  Bin 0 -> 422 bytes
 img/clothes/face/gagfetish/full_gray.png      |  Bin 0 -> 674 bytes
 img/clothes/face/muzzlefetish/full.png        |  Bin 0 -> 666 bytes
 img/clothes/face/muzzlefetish/full_gray.png   |  Bin 0 -> 666 bytes
 .../genitals/chastitybeltfetish/frayed.png    |  Bin 0 -> 462 bytes
 .../chastitybeltfetish/frayed_gray.png        |  Bin 0 -> 462 bytes
 .../genitals/chastitybeltfetish/full.png      |  Bin 0 -> 714 bytes
 .../genitals/chastitybeltfetish/full_gray.png |  Bin 0 -> 714 bytes
 .../genitals/chastitybeltfetish/tattered.png  |  Bin 0 -> 468 bytes
 .../chastitybeltfetish/tattered_gray.png      |  Bin 0 -> 468 bytes
 .../genitals/chastitybeltfetish/torn.png      |  Bin 0 -> 462 bytes
 .../genitals/chastitybeltfetish/torn_gray.png |  Bin 0 -> 462 bytes
 .../genitals/chastitycagefetish/frayed.png    |  Bin 0 -> 382 bytes
 .../chastitycagefetish/frayed_slime.png       |  Bin 0 -> 2117 bytes
 .../chastitycagefetish/frayed_urchin.png      |  Bin 0 -> 2047 bytes
 .../genitals/chastitycagefetish/full.png      |  Bin 0 -> 383 bytes
 .../chastitycagefetish/full_slime.png         |  Bin 0 -> 2089 bytes
 .../chastitycagefetish/full_urchin.png        |  Bin 0 -> 2154 bytes
 .../genitals/chastitycagefetish/tattered.png  |  Bin 0 -> 379 bytes
 .../chastitycagefetish/tattered_slime.png     |  Bin 0 -> 2052 bytes
 .../chastitycagefetish/tattered_urchin.png    |  Bin 0 -> 2168 bytes
 .../genitals/chastitycagefetish/torn.png      |  Bin 0 -> 381 bytes
 .../chastitycagefetish/torn_slime.png         |  Bin 0 -> 2046 bytes
 .../chastitycagefetish/torn_urchin.png        |  Bin 0 -> 2111 bytes
 .../genitals/goldchastitybelt/full2.png       |  Bin 0 -> 239 bytes
 img/clothes/genitals/strapon/frayed.png       |  Bin 0 -> 3333 bytes
 img/clothes/genitals/strapon/full.png         |  Bin 0 -> 3333 bytes
 img/clothes/genitals/strapon/tattered.png     |  Bin 0 -> 3333 bytes
 img/clothes/genitals/strapon/torn.png         |  Bin 0 -> 3333 bytes
 img/clothes/neck/collarfetish/full.png        |  Bin 0 -> 3255 bytes
 img/clothes/neck/collarfetish/full_gray.png   |  Bin 0 -> 3234 bytes
 img/clothes/neck/collarleashfetish/acc.png    |  Bin 0 -> 3825 bytes
 .../neck/collarleashfetish/acc_gray.png       |  Bin 0 -> 3825 bytes
 img/clothes/neck/collarleashfetish/full.png   |  Bin 0 -> 3255 bytes
 .../neck/collarleashfetish/full_gray.png      |  Bin 0 -> 3234 bytes
 .../leotard/{full.png => frayed_gray.png}     |  Bin
 img/clothes/under_lower/leotard/full_gray.png |  Bin 0 -> 314 bytes
 img/clothes/under_lower/leotard/full_orig.png |  Bin 0 -> 533 bytes
 .../under_lower/leotard/penis_gray.png        |  Bin 0 -> 514 bytes
 .../under_lower/leotard/tattered_gray.png     |  Bin 0 -> 533 bytes
 img/clothes/under_lower/leotard/torn_gray.png |  Bin 0 -> 533 bytes
 .../under_lower/leotardskimpy/frayed.png      |  Bin 489 -> 735 bytes
 .../under_lower/leotardskimpy/frayed_gray.png |  Bin 0 -> 489 bytes
 .../under_lower/leotardskimpy/full.png        |  Bin 489 -> 735 bytes
 .../under_lower/leotardskimpy/full_gray.png   |  Bin 0 -> 489 bytes
 .../under_lower/leotardskimpy/penis.png       |  Bin 514 -> 637 bytes
 .../under_lower/leotardskimpy/penis_gray.png  |  Bin 0 -> 514 bytes
 .../under_lower/leotardskimpy/tattered.png    |  Bin 489 -> 735 bytes
 .../leotardskimpy/tattered_gray.png           |  Bin 0 -> 489 bytes
 .../under_lower/leotardskimpy/torn.png        |  Bin 489 -> 735 bytes
 .../under_lower/leotardskimpy/torn_gray.png   |  Bin 0 -> 489 bytes
 img/clothes/under_lower/straponhorse/acc.png  |  Bin 0 -> 3531 bytes
 .../under_lower/straponhorse/acc_gray.png     |  Bin 0 -> 3531 bytes
 .../under_lower/straponhorse/frayed.png       |  Bin 0 -> 861 bytes
 .../under_lower/straponhorse/frayed_gray.png  |  Bin 0 -> 669 bytes
 img/clothes/under_lower/straponhorse/full.png |  Bin 0 -> 861 bytes
 .../under_lower/straponhorse/full_gray.png    |  Bin 0 -> 669 bytes
 .../under_lower/straponhorse/tattered.png     |  Bin 0 -> 861 bytes
 .../straponhorse/tattered_gray.png            |  Bin 0 -> 669 bytes
 img/clothes/under_lower/straponhorse/torn.png |  Bin 0 -> 861 bytes
 .../under_lower/straponhorse/torn_gray.png    |  Bin 0 -> 669 bytes
 .../under_lower/straponknotted/full.png       |  Bin 0 -> 3246 bytes
 .../under_lower/straponknotted/full_gray.png  |  Bin 0 -> 900 bytes
 .../under_lower/straponknotted/full_gray3.png |  Bin 0 -> 1843 bytes
 .../under_lower/straponlower/frayed.png       |  Bin 0 -> 845 bytes
 .../under_lower/straponlower/frayed_gray.png  |  Bin 0 -> 816 bytes
 img/clothes/under_lower/straponlower/full.png |  Bin 0 -> 845 bytes
 .../under_lower/straponlower/full_gray.png    |  Bin 0 -> 816 bytes
 .../under_lower/straponlower/tattered.png     |  Bin 0 -> 845 bytes
 .../straponlower/tattered_gray.png            |  Bin 0 -> 816 bytes
 img/clothes/under_lower/straponlower/torn.png |  Bin 0 -> 845 bytes
 .../under_lower/straponlower/torn_gray.png    |  Bin 0 -> 816 bytes
 .../under_lower/straponstudded/frayed.png     |  Bin 0 -> 845 bytes
 .../straponstudded/frayed_gray.png            |  Bin 0 -> 816 bytes
 .../under_lower/straponstudded/full.png       |  Bin 0 -> 845 bytes
 .../under_lower/straponstudded/full_gray.png  |  Bin 0 -> 816 bytes
 .../under_lower/straponstudded/tattered.png   |  Bin 0 -> 845 bytes
 .../straponstudded/tattered_gray.png          |  Bin 0 -> 816 bytes
 .../under_lower/straponstudded/torn.png       |  Bin 0 -> 845 bytes
 .../under_lower/straponstudded/torn_gray.png  |  Bin 0 -> 816 bytes
 img/clothes/under_upper/leotard/0_gray.png    |  Bin 0 -> 693 bytes
 img/clothes/under_upper/leotard/1_gray.png    |  Bin 0 -> 693 bytes
 img/clothes/under_upper/leotard/2_gray.png    |  Bin 0 -> 493 bytes
 img/clothes/under_upper/leotard/3_gray.png    |  Bin 0 -> 521 bytes
 img/clothes/under_upper/leotard/4_gray.png    |  Bin 0 -> 568 bytes
 img/clothes/under_upper/leotard/5_gray.png    |  Bin 0 -> 579 bytes
 .../under_upper/leotard/frayed_gray.png       |  Bin 0 -> 596 bytes
 img/clothes/under_upper/leotard/full_gray.png |  Bin 0 -> 596 bytes
 .../under_upper/leotard/left_cover_gray.png   |  Bin 0 -> 387 bytes
 img/clothes/under_upper/leotard/left_gray.png |  Bin 0 -> 488 bytes
 .../under_upper/leotard/right_cover_gray.png  |  Bin 0 -> 496 bytes
 .../under_upper/leotard/right_gray.png        |  Bin 0 -> 495 bytes
 .../under_upper/leotard/tattered_gray.png     |  Bin 0 -> 596 bytes
 img/clothes/under_upper/leotard/torn_gray.png |  Bin 0 -> 596 bytes
 img/clothes/under_upper/shibari/full.png      |  Bin 0 -> 915 bytes
 img/clothes/under_upper/shibari/full_gray.png |  Bin 0 -> 914 bytes
 img/misc/icon/adultshop.gif                   |  Bin 0 -> 2444 bytes
 img/misc/icon/clothes/ballgagicon.png         |  Bin 0 -> 622 bytes
 img/misc/icon/clothes/categories/genitals.png |  Bin 0 -> 147 bytes
 img/misc/icon/clothes/categories/strapon.png  |  Bin 0 -> 225 bytes
 img/misc/icon/clothes/chastitybelt.png        |  Bin 0 -> 216 bytes
 img/misc/icon/clothes/chastitycage.png        |  Bin 0 -> 504 bytes
 img/misc/icon/clothes/horsestraponicon.png    |  Bin 0 -> 327 bytes
 img/misc/icon/clothes/muzzleicon.png          |  Bin 0 -> 473 bytes
 img/misc/icon/clothes/shibari.png             |  Bin 0 -> 646 bytes
 img/misc/icon/clothes/strap-on.png            |  Bin 0 -> 300 bytes
 img/misc/icon/clothes/traits/strap-on.png     |  Bin 0 -> 294 bytes
 img/misc/icon/lockpick.png                    |  Bin 0 -> 165 bytes
 img/misc/icon/playground2.png                 |  Bin 0 -> 277 bytes
 img/misc/icon/sex toys/analbeads.png          |  Bin 0 -> 359 bytes
 img/misc/icon/sex toys/bulletvibe.png         |  Bin 0 -> 388 bytes
 img/misc/icon/sex toys/buttplug.png           |  Bin 0 -> 207 bytes
 img/misc/icon/sex toys/dildo.png              |  Bin 0 -> 201 bytes
 img/misc/icon/sex toys/dildo_small.png        |  Bin 0 -> 180 bytes
 img/misc/normal/sex_shop_dawn.png             |  Bin 0 -> 2189 bytes
 img/misc/normal/sex_shop_day.png              |  Bin 0 -> 2166 bytes
 img/misc/normal/sex_shop_day_open.gif         |  Bin 0 -> 9194 bytes
 img/misc/normal/sex_shop_dusk.gif             |  Bin 0 -> 9161 bytes
 img/misc/normal/sex_shop_night.gif            |  Bin 0 -> 9057 bytes
 img/sex/close/doggy/straponclose.png          |  Bin 0 -> 1175 bytes
 img/sex/close/doggy/straponclosedoggy.png     |  Bin 0 -> 1188 bytes
 img/sex/close/doggy/straponcloseknot.png      |  Bin 0 -> 1188 bytes
 img/sex/close/missionary/straponclose.png     |  Bin 0 -> 2328 bytes
 img/sex/close/missionary/straponcloseknot.png |  Bin 0 -> 2289 bytes
 .../doggyactive_strapon_anklefootjob.png      |  Bin 0 -> 519 bytes
 .../strapon/doggyactive_strapon_ankles.png    |  Bin 0 -> 547 bytes
 .../strapon/doggyactive_strapon_knees.png     |  Bin 0 -> 622 bytes
 .../strapon/doggyactive_strapon_thighs.png    |  Bin 0 -> 791 bytes
 .../strapon/doggyactive_strapon_totheside.png |  Bin 0 -> 652 bytes
 .../strapon/doggyactive_strapon_waist.png     |  Bin 0 -> 6444 bytes
 .../doggyidle_strapon_anklefootjob.png        |  Bin 0 -> 519 bytes
 img/sex/missionary/active/strapon/ankle.png   |  Bin 0 -> 734 bytes
 .../missionary/active/strapon/ankledown.png   |  Bin 0 -> 584 bytes
 img/sex/missionary/active/strapon/waist.png   |  Bin 0 -> 498 bytes
 .../missionary/active/strapon/waistdown.png   |  Bin 0 -> 720 bytes
 img/sex/strapon/xray_anal_interior.png        |  Bin 0 -> 16434 bytes
 img/sex/strapon/xray_anal_straponRed.png      |  Bin 0 -> 10854 bytes
 img/sex/strapon/xray_vaginal_interior.png     |  Bin 0 -> 10329 bytes
 img/sex/strapon/xray_vaginal_straponRed.png   |  Bin 0 -> 4434 bytes
 237 files changed, 7807 insertions(+), 421 deletions(-)
 create mode 100644 game/overworld-town/loc-adultshop/adultshop.twee
 create mode 100644 game/overworld-town/loc-adultshop/beast-phallus-project.twee
 create mode 100644 game/overworld-town/loc-adultshop/events.twee
 create mode 100644 game/overworld-town/loc-adultshop/gift-strap-ons.twee
 create mode 100644 game/overworld-town/loc-adultshop/intro.twee
 create mode 100644 game/overworld-town/loc-adultshop/sextoys.twee
 create mode 100644 game/overworld-town/loc-adultshop/shop.twee
 create mode 100644 game/overworld-town/loc-adultshop/widgets.twee
 create mode 100644 img/clothes/face/gagfetish/full.png
 create mode 100644 img/clothes/face/gagfetish/full_gray.png
 create mode 100644 img/clothes/face/muzzlefetish/full.png
 create mode 100644 img/clothes/face/muzzlefetish/full_gray.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/frayed.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/frayed_gray.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/full.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/full_gray.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/tattered.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/tattered_gray.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/torn.png
 create mode 100644 img/clothes/genitals/chastitybeltfetish/torn_gray.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/frayed.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/frayed_slime.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/frayed_urchin.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/full.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/full_slime.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/full_urchin.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/tattered.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/tattered_slime.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/tattered_urchin.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/torn.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/torn_slime.png
 create mode 100644 img/clothes/genitals/chastitycagefetish/torn_urchin.png
 create mode 100644 img/clothes/genitals/goldchastitybelt/full2.png
 create mode 100644 img/clothes/genitals/strapon/frayed.png
 create mode 100644 img/clothes/genitals/strapon/full.png
 create mode 100644 img/clothes/genitals/strapon/tattered.png
 create mode 100644 img/clothes/genitals/strapon/torn.png
 create mode 100644 img/clothes/neck/collarfetish/full.png
 create mode 100644 img/clothes/neck/collarfetish/full_gray.png
 create mode 100644 img/clothes/neck/collarleashfetish/acc.png
 create mode 100644 img/clothes/neck/collarleashfetish/acc_gray.png
 create mode 100644 img/clothes/neck/collarleashfetish/full.png
 create mode 100644 img/clothes/neck/collarleashfetish/full_gray.png
 rename img/clothes/under_lower/leotard/{full.png => frayed_gray.png} (100%)
 create mode 100644 img/clothes/under_lower/leotard/full_gray.png
 create mode 100644 img/clothes/under_lower/leotard/full_orig.png
 create mode 100644 img/clothes/under_lower/leotard/penis_gray.png
 create mode 100644 img/clothes/under_lower/leotard/tattered_gray.png
 create mode 100644 img/clothes/under_lower/leotard/torn_gray.png
 create mode 100644 img/clothes/under_lower/leotardskimpy/frayed_gray.png
 create mode 100644 img/clothes/under_lower/leotardskimpy/full_gray.png
 create mode 100644 img/clothes/under_lower/leotardskimpy/penis_gray.png
 create mode 100644 img/clothes/under_lower/leotardskimpy/tattered_gray.png
 create mode 100644 img/clothes/under_lower/leotardskimpy/torn_gray.png
 create mode 100644 img/clothes/under_lower/straponhorse/acc.png
 create mode 100644 img/clothes/under_lower/straponhorse/acc_gray.png
 create mode 100644 img/clothes/under_lower/straponhorse/frayed.png
 create mode 100644 img/clothes/under_lower/straponhorse/frayed_gray.png
 create mode 100644 img/clothes/under_lower/straponhorse/full.png
 create mode 100644 img/clothes/under_lower/straponhorse/full_gray.png
 create mode 100644 img/clothes/under_lower/straponhorse/tattered.png
 create mode 100644 img/clothes/under_lower/straponhorse/tattered_gray.png
 create mode 100644 img/clothes/under_lower/straponhorse/torn.png
 create mode 100644 img/clothes/under_lower/straponhorse/torn_gray.png
 create mode 100644 img/clothes/under_lower/straponknotted/full.png
 create mode 100644 img/clothes/under_lower/straponknotted/full_gray.png
 create mode 100644 img/clothes/under_lower/straponknotted/full_gray3.png
 create mode 100644 img/clothes/under_lower/straponlower/frayed.png
 create mode 100644 img/clothes/under_lower/straponlower/frayed_gray.png
 create mode 100644 img/clothes/under_lower/straponlower/full.png
 create mode 100644 img/clothes/under_lower/straponlower/full_gray.png
 create mode 100644 img/clothes/under_lower/straponlower/tattered.png
 create mode 100644 img/clothes/under_lower/straponlower/tattered_gray.png
 create mode 100644 img/clothes/under_lower/straponlower/torn.png
 create mode 100644 img/clothes/under_lower/straponlower/torn_gray.png
 create mode 100644 img/clothes/under_lower/straponstudded/frayed.png
 create mode 100644 img/clothes/under_lower/straponstudded/frayed_gray.png
 create mode 100644 img/clothes/under_lower/straponstudded/full.png
 create mode 100644 img/clothes/under_lower/straponstudded/full_gray.png
 create mode 100644 img/clothes/under_lower/straponstudded/tattered.png
 create mode 100644 img/clothes/under_lower/straponstudded/tattered_gray.png
 create mode 100644 img/clothes/under_lower/straponstudded/torn.png
 create mode 100644 img/clothes/under_lower/straponstudded/torn_gray.png
 create mode 100644 img/clothes/under_upper/leotard/0_gray.png
 create mode 100644 img/clothes/under_upper/leotard/1_gray.png
 create mode 100644 img/clothes/under_upper/leotard/2_gray.png
 create mode 100644 img/clothes/under_upper/leotard/3_gray.png
 create mode 100644 img/clothes/under_upper/leotard/4_gray.png
 create mode 100644 img/clothes/under_upper/leotard/5_gray.png
 create mode 100644 img/clothes/under_upper/leotard/frayed_gray.png
 create mode 100644 img/clothes/under_upper/leotard/full_gray.png
 create mode 100644 img/clothes/under_upper/leotard/left_cover_gray.png
 create mode 100644 img/clothes/under_upper/leotard/left_gray.png
 create mode 100644 img/clothes/under_upper/leotard/right_cover_gray.png
 create mode 100644 img/clothes/under_upper/leotard/right_gray.png
 create mode 100644 img/clothes/under_upper/leotard/tattered_gray.png
 create mode 100644 img/clothes/under_upper/leotard/torn_gray.png
 create mode 100644 img/clothes/under_upper/shibari/full.png
 create mode 100644 img/clothes/under_upper/shibari/full_gray.png
 create mode 100644 img/misc/icon/adultshop.gif
 create mode 100644 img/misc/icon/clothes/ballgagicon.png
 create mode 100644 img/misc/icon/clothes/categories/genitals.png
 create mode 100644 img/misc/icon/clothes/categories/strapon.png
 create mode 100644 img/misc/icon/clothes/chastitybelt.png
 create mode 100644 img/misc/icon/clothes/chastitycage.png
 create mode 100644 img/misc/icon/clothes/horsestraponicon.png
 create mode 100644 img/misc/icon/clothes/muzzleicon.png
 create mode 100644 img/misc/icon/clothes/shibari.png
 create mode 100644 img/misc/icon/clothes/strap-on.png
 create mode 100644 img/misc/icon/clothes/traits/strap-on.png
 create mode 100644 img/misc/icon/lockpick.png
 create mode 100644 img/misc/icon/playground2.png
 create mode 100644 img/misc/icon/sex toys/analbeads.png
 create mode 100644 img/misc/icon/sex toys/bulletvibe.png
 create mode 100644 img/misc/icon/sex toys/buttplug.png
 create mode 100644 img/misc/icon/sex toys/dildo.png
 create mode 100644 img/misc/icon/sex toys/dildo_small.png
 create mode 100644 img/misc/normal/sex_shop_dawn.png
 create mode 100644 img/misc/normal/sex_shop_day.png
 create mode 100644 img/misc/normal/sex_shop_day_open.gif
 create mode 100644 img/misc/normal/sex_shop_dusk.gif
 create mode 100644 img/misc/normal/sex_shop_night.gif
 create mode 100644 img/sex/close/doggy/straponclose.png
 create mode 100644 img/sex/close/doggy/straponclosedoggy.png
 create mode 100644 img/sex/close/doggy/straponcloseknot.png
 create mode 100644 img/sex/close/missionary/straponclose.png
 create mode 100644 img/sex/close/missionary/straponcloseknot.png
 create mode 100644 img/sex/doggy/active/strapon/doggyactive_strapon_anklefootjob.png
 create mode 100644 img/sex/doggy/active/strapon/doggyactive_strapon_ankles.png
 create mode 100644 img/sex/doggy/active/strapon/doggyactive_strapon_knees.png
 create mode 100644 img/sex/doggy/active/strapon/doggyactive_strapon_thighs.png
 create mode 100644 img/sex/doggy/active/strapon/doggyactive_strapon_totheside.png
 create mode 100644 img/sex/doggy/active/strapon/doggyactive_strapon_waist.png
 create mode 100644 img/sex/doggy/active/strapon/doggyidle_strapon_anklefootjob.png
 create mode 100644 img/sex/missionary/active/strapon/ankle.png
 create mode 100644 img/sex/missionary/active/strapon/ankledown.png
 create mode 100644 img/sex/missionary/active/strapon/waist.png
 create mode 100644 img/sex/missionary/active/strapon/waistdown.png
 create mode 100644 img/sex/strapon/xray_anal_interior.png
 create mode 100644 img/sex/strapon/xray_anal_straponRed.png
 create mode 100644 img/sex/strapon/xray_vaginal_interior.png
 create mode 100644 img/sex/strapon/xray_vaginal_straponRed.png

diff --git a/DolSettingsExport.json b/DolSettingsExport.json
index 98d3ff5e0b..6d81cbf7f9 100644
--- a/DolSettingsExport.json
+++ b/DolSettingsExport.json
@@ -65,6 +65,8 @@ DolSettingsExport = {
 		"watersportsdisable":false,
 		"spiderdisable":false,
 		"bodywritingdisable":false,
+		"toydildodisable":false,
+		"toywhipdisable":false,
 		"breastsizemin":0,
 		"breastsizemax":12,
 		"bottomsizemax":8,
diff --git a/game/02-CSS/base.css b/game/02-CSS/base.css
index 097503780e..9d0c16e475 100644
--- a/game/02-CSS/base.css
+++ b/game/02-CSS/base.css
@@ -4926,6 +4926,46 @@ img, canvas {
 	font-size: 200%;
 }
 
+.strapon-purple {
+	-webkit-filter: hue-rotate(270deg) saturate(70%) brightness(100%) contrast(100%);
+	filter: hue-rotate(270deg) saturate(70%) brightness(100%) contrast(100%);
+}
+
+.strapon-red {
+	-webkit-filter: hue-rotate(0deg) saturate(120%) brightness(50%) contrast(100%);
+	filter: hue-rotate(0deg) saturate(120%) brightness(50%) contrast(140%);
+}
+
+.strapon-blue {
+	-webkit-filter: hue-rotate(210deg) saturate(100%) brightness(100%) contrast(100%);
+	filter: hue-rotate(210deg) saturate(100%) brightness(100%) contrast(100%);
+}
+
+.strapon-black {
+	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(40%) contrast(120%);
+	filter: hue-rotate(0deg) saturate(0%) brightness(40%) contrast(120%);
+}
+
+.strapon-pink {
+	-webkit-filter: hue-rotate(350deg) saturate(110%) brightness(120%) contrast(100%);
+	filter: hue-rotate(350deg) saturate(110%) brightness(120%) contrast(100%);
+}
+
+.strapon-fleshy {
+	-webkit-filter: hue-rotate(0deg) saturate(70%) brightness(140%) contrast(100%);
+	filter: hue-rotate(0deg) saturate(70%) brightness(140%) contrast(100%);
+}
+
+.strapon-green { 
+	-webkit-filter: hue-rotate(120deg) saturate(70%) brightness(140%) contrast(100%);
+	filter: hue-rotate(120deg) saturate(70%) brightness(140%) contrast(100%);
+}
+
+.strapon-brown {
+	-webkit-filter: hue-rotate(20deg) saturate(100%) brightness(30%) contrast(100%);
+	filter: hue-rotate(20deg) saturate(100%) brightness(30%) contrast(100%);
+}
+
 /* Jimmy: Error display CSS.
 	Includes custom error handlers for <<error>> macros. */
 .error-view {
@@ -4951,4 +4991,4 @@ img, canvas {
     line-height: 1;
     speak: none;
 }
-/* End of error CSS */
\ No newline at end of file
+/* End of error CSS */
diff --git a/game/03-JavaScript/03-Templates/t-actions.js b/game/03-JavaScript/03-Templates/t-actions.js
index f0bf6f6b2c..53f497aef6 100644
--- a/game/03-JavaScript/03-Templates/t-actions.js
+++ b/game/03-JavaScript/03-Templates/t-actions.js
@@ -9,3 +9,6 @@ Template.add('stroke', function() {
 		: either("stroke", "touch");
 	return `${adjective} ${verb}`;
 });
+
+Template.add('alongside',
+	either("alongside","alongside","in time with","heedless of","in rhythm with","pounding away against","thrusting against"));
\ No newline at end of file
diff --git a/game/03-JavaScript/03-Templates/t-bodyparts.js b/game/03-JavaScript/03-Templates/t-bodyparts.js
index 39953d21de..d2ed1689b0 100644
--- a/game/03-JavaScript/03-Templates/t-bodyparts.js
+++ b/game/03-JavaScript/03-Templates/t-bodyparts.js
@@ -4,4 +4,4 @@ Template.add('vulva',
 	either("vulva", "quim", "flange", "pussy"));
 
 Template.add('Vulva',
-	either("Vulva", "Quim", "Flange", "Pussy"));
+	either("Vulva", "Quim", "Flange", "Pussy"));
\ No newline at end of file
diff --git a/game/03-JavaScript/debugMenu.js b/game/03-JavaScript/debugMenu.js
index 28398ea427..ade5643c4b 100644
--- a/game/03-JavaScript/debugMenu.js
+++ b/game/03-JavaScript/debugMenu.js
@@ -805,6 +805,14 @@ setup.debugMenu.event_list = {
 				`<<endcombat>>`
 			]
 		},
+		{
+			link: [
+				`NNPC Strapon test`, `NNPC Strapon Generator`
+			],
+			widgets: [
+				`<<endcombat>>`
+			]
+		},
 		{
 			link: [
 				`Plantperson test`, `Plantperson Test`
@@ -2655,6 +2663,20 @@ setup.debugMenu.event_list = {
 				`<<run unlockAllSeeds()>>`
 			]
 		},
+        {
+            link: [
+                `Super Debug Character`, function(){return V.passage}
+            ],
+            widgets: [
+                `<<set $school += 4000>>`,`<<set $science += 1000>>`,`<<set $maths += 1000>>`,`<<set $english += 1000>>`,`<<set $history += 1000>>`,`<<set $sciencetrait to 4>>`,
+                `<<set $mathstrait to 4>>`,`<<set $englishtrait to 4>>`,`<<set $historytrait to 4>>`,`<<set $skulduggery += 1000>>`,`<<set $danceskill += 1000>>`,
+                `<<set $swimmingskill += 1000>>`,`<<set $bottomskill += 1000>>`,`<<set $seductionskill += 1000>>`,`<<set $handskill += 1000>>`,`<<set $feetskill += 1000>>`,
+                `<<set $chestskill += 1000>>`,`<<set $thighskill += 1000>>`,`<<set $oralskill += 1000>>`,`<<set $analskill += 1000>>`,`<<set $vaginalskill += 1000>>`,
+                `<<set $penileskill += 1000>>`,`<<set $promiscuity += 100>>`,`<<set $exhibitionism += 100>>`,`<<set $deviancy += 100>>`,`<<set $awareness to 1000>>`,
+                `<<set $willpower to 1000>>`,`<<set $physique to 12000>>`,`<<set $orgasmtrait to 1>>`,`<<set $ejactrait to 1>>`,`<<set $molesttrait to 1>>`,
+                `<<set $rapetrait to 1>>`,`<<set $bestialitytrait to 1>>`,`<<set $tentacletrait to 1>>`,`<<set $choketrait to 1>>`
+            ]
+        },
 		{
 			link: [
 				`Unlock all pills`, function(){return V.passage}
diff --git a/game/03-JavaScript/ingame.js b/game/03-JavaScript/ingame.js
index c8c393a910..93b9b01809 100644
--- a/game/03-JavaScript/ingame.js
+++ b/game/03-JavaScript/ingame.js
@@ -158,7 +158,7 @@ window.combatListColor = function (name, value, type) {
 			case "anustopenisdouble": case "anuspenisdoublefuck": case "penisdoubletease": case "penisDoubleEdging": case "doublecooperate": case "penisanusdouble":
 				color = "sub";
 				break;
-			
+
 			/*leftaction or rightaction*/
 			case "leftacceptW": case "rightacceptW": case "leftstruggleW": case "rightstruggleW":
 			/*feetaction*/
@@ -263,7 +263,7 @@ window.combatListColor = function (name, value, type) {
 			case "leftprotect": case "rightprotect": case "leftgrip": case "rightgrip": case "leftcurl": case "rightcurl":
 				color = "meek";
 				break;
-	
+
 			case "swim":
 				color = "teal";
 				break;
@@ -283,7 +283,7 @@ window.combatListColor = function (name, value, type) {
 			case "leftfold": case "rightfold": case "leftstruggleweak": case "rightstruggleweak":
 				color = "brat";
 				break;
-			
+
 			/*leftaction or rightaction*/
 			case "leftprotect": case "rightprotect": case "leftgrip": case "rightgrip": case "leftcurl": case "rightcurl":
 			case "rest":
@@ -318,7 +318,7 @@ window.combatListColor = function (name, value, type) {
 			case "leftfold": case "rightfold": case "leftstruggleweak": case "rightstruggleweak": case "vaginal_push": case "anal_push":
 				color = "brat";
 				break;
-			
+
 			case "chain_struggle": case "whack": case "vaginal_whack": case "anal_whack":
 				color = "def";
 				break;
@@ -565,7 +565,7 @@ window.getRobinLocation = function(){
 		} else {
 			return T.robin_location = "beach";
 		}
-		
+
 	} else if (V.halloween === 1 && between(V.hour, 16, 18) && V.monthday === 31){
 		return T.robin_location = "halloween";
 
@@ -960,10 +960,10 @@ Config.navigation.override = function (dest) {
 
 		case 'Forest Plant Sex No Tentacles':
 			return 'Forest Plant Sex';
-		
+
 		case 'Forest Plant Sex No Tentacles Finish':
 			return 'Forest Plant Sex Finish';
-		
+
 		case 'Forest Plant Passout No Tentacles':
 			return 'Forest';
 
@@ -1071,7 +1071,7 @@ window.currentSkillValue = function(skill){
 			}
 			if(V.worn.feet.type.includes("shackle")){
 				result = 0;
-			}			
+			}
 		break;
 		case 'willpower':
 			if(V.parasite.left_ear.name == "slime" && V.parasite.right_ear.name == "slime"){
@@ -1087,6 +1087,17 @@ window.currentSkillValue = function(skill){
 	return result;
 }
 
+window.playerHasStrapon = function(){
+	return (V.worn.under_lower.type.includes("strap-on") && V.worn.under_lower.state == "waist")
+}
+
+window.npcHasStrapon = function(index){
+	// index is 0 to 5
+	return (V.NPCList[index].penisdesc != undefined && V.NPCList[index].penisdesc.contains("strap-on"))
+	// For refactoring in the future
+	//return (V.NPCList[index].penisdesc != undefined && V.NPCList[index].strapon != undefined && V.NPCList[index].strapon.state == "worn")
+}
+
 window.getTimeString = function(minutes = 0){
 	if (minutes < 0){
 		// come on don't try negative numbers, that's silly
@@ -1172,7 +1183,7 @@ window.npcClothes = function (npc, type){
 		return clothesSet.name;
 	} else {
 		console.log(`npcClothes - unable to find a clothing set with the options for '${npc.fullDescription}' with type '${type}'`)
-	}	
+	}
 }
 
 window.getWeekDay = function(day){
@@ -1187,3 +1198,104 @@ window.getWeekDay = function(day){
 window.waterproofCheck = function(clothing){
 	return clothing.type.includes("swim") || clothing.type.includes("stealthy");
 }
+
+window.getSexToysofType = function (toyType){
+	var sexToys = ["dildo","whip","onahole","vibrator","all"];
+	sexToys["dildo"] = ["dildo","length of anal beads"];
+	sexToys["whip"] = ["riding crop","flog"];
+	sexToys["onahole"] = ["onahole"];
+	sexToys["vibrator"] = ["vibrator","bullet vibe"];
+	sexToys["all"] = sexToys["dildo"].concat(sexToys["whip"],sexToys["onahole"],sexToys["vibrator"]);
+
+	if (toyType != undefined){
+		if (toyType == "dildo"){
+			var dildos = sexToys["dildo"].concat(sexToys["vibrator"]);
+			return dildos;
+		}
+		else if (toyType == "onahole"){
+			return sexToys["onahole"];
+		}
+		else if (toyType == "whip"){
+			return sexToys["whip"];
+		}
+		else if (toyType == "vibrator"){
+			return sexToys["vibrator"];
+		}
+		else if (toyType == "dildos and onaholes"){
+			var dildos = sexToys["dildo"].concat(sexToys["vibrator"],sexToys["onahole"]);
+			return dildos;
+		}
+		else if (toyType == "dildos and whips"){
+			var dildos = sexToys["dildo"].concat(sexToys["vibrator"],sexToys["whip"]);
+			return dildos;
+		}
+		else {
+			return sexToys["all"];
+		}
+	}
+	else {
+		//console.log("All sex toys. Length = "+sexToys["all"].length+ " and I contain: " +sexToys["all"]);
+		return sexToys["all"];
+	}
+}
+
+window.npcHasSexToyOfType = function(npcIndex,toyType){
+	var npc = V.NPCList[npcIndex];
+	if (npc.righttool != undefined || npc.lefttool != undefined){
+		var sexToys = ["dildo","whip","onahole","all"];
+		sexToys["dildo"] = getSexToysofType("dildo");
+		sexToys["whip"] = getSexToysofType("whip");
+		sexToys["onahole"] = getSexToysofType("onahole");
+		sexToys["vibrator"] = getSexToysofType("vibrator");
+		sexToys["all"] = getSexToysofType("all");
+		console.log("sex toys: "+sexToys.all);
+
+		return sexToys[toyType].contains(V.NPCList[npcIndex].righttool) || sexToys[toyType].contains(V.NPCList[npcIndex].lefttool)
+	}
+	else {
+		return false;
+	}
+}
+
+window.randomSexToy = function(toyType){
+
+	if (toyType != undefined){
+		if (toyType == "dildo"){
+			var dildos = getSexToysofType("dildo");
+			return dildos[random(0,dildos.length-1)];
+		}
+		else if (toyType == "onahole"){
+			var onaholes = getSexToysofType("onahole");
+			return onaholes[random(0,onaholes.length-1)];
+		}
+		else if (toyType == "whip"){
+			var whips = getSexToysofType("whip");
+			return whips[random(0,whips.length-1)];
+		}
+		else if (toyType == "vibrator"){
+			var vibrators = getSexToysofType("vibrator");
+			return vibrators[random(0,vibrators.length-1)];
+		}
+		else if (toyType == "dildos and onaholes"){
+			var dildos = getSexToysofType("dildos and onaholes");
+			return dildos[random(0,dildos.length-1)];
+		}
+		else if (toyType == "dildos and whips"){
+			var dildos = getSexToysofType("dildos and whips");
+			return dildos[random(0,dildos.length-1)];
+		}
+		else {
+			var sexToys = getSexToysofType("all")
+			return sexToys[random(0,sexToys.length-1)];
+		}
+	}
+	else {
+		//console.log("All sex toys. Length = "+sexToys["all"].length+ " and I contain: " +sexToys["all"]);
+		var sexToys = getSexToysofType("all")
+		return sexToys[random(0,sexToys.length-1)];
+	}
+}
+
+window.playerHasButtPlug = function(){
+	return (V.worn.butt_plug != undefined && V.worn.butt_plug.state == "worn")
+}
\ No newline at end of file
diff --git a/game/03-JavaScript/save.js b/game/03-JavaScript/save.js
index 21d42e9e4a..68f13c81b1 100644
--- a/game/03-JavaScript/save.js
+++ b/game/03-JavaScript/save.js
@@ -559,6 +559,8 @@ window.settingsObjects = function (type) {
 				horsedisable: {boolLetter: true, bool: true},
 				plantdisable: {boolLetter: true, bool: true},
 				footdisable: {boolLetter: true, bool: true},
+				toydildodisable: {boolLetter: true, bool: true},
+				toywhipdisable: {boolLetter: true, bool: true},
 				asphyxiaLvl: { min: 0, max: 4, decimals: 0 },
 				NudeGenderDC: { min: 0, max: 2, decimals: 0 },
 				breastsizemin: { min: 0, max: 4, decimals: 0 },
diff --git a/game/04-Variables/presets.twee b/game/04-Variables/presets.twee
index e550e443c0..b988daab95 100644
--- a/game/04-Variables/presets.twee
+++ b/game/04-Variables/presets.twee
@@ -51,13 +51,13 @@
 		<<case "monstersAll">>
 			<<set _preset to '{"general":{"monsterchance":100,"monsterhallucinations":"f","blackwolfmonster":2,"greathawkmonster":2,"bestialitydisable":"f"}}'>>
 		<<case "kinkDefault">>
-			<<set _preset to '{"general":{"bestialitydisable":"f","swarmdisable":"f","swarmdisable":"f","slimedisable":"f","voredisable":"f","tentacledisable":"f","plantdisable":"f","analdisable":"f","analdoubledisable":"f","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"f","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"f","analpregdisable":"f","watersportsdisable":"f","spiderdisable":"f","bodywritingdisable":"f","parasitedisable":"f","slugdisable":"f","waspdisable":"f","lurkerdisable":"f","beedisable":"f","horsedisable":"f"}}'>>
+			<<set _preset to '{"general":{"bestialitydisable":"f","swarmdisable":"f","swarmdisable":"f","slimedisable":"f","voredisable":"f","tentacledisable":"f","plantdisable":"f","analdisable":"f","analdoubledisable":"f","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"f","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"f","analpregdisable":"f","watersportsdisable":"f","spiderdisable":"f","bodywritingdisable":"f","parasitedisable":"f","slugdisable":"f","waspdisable":"f","lurkerdisable":"f","beedisable":"f","horsedisable":"f","toydildodisable":"f","toywhipdisable":"f"}}'>>
 		<<case "kinkVanilla">>
-			<<set _preset to '{"general":{"bestialitydisable":"t","swarmdisable":"t","swarmdisable":"t","slimedisable":"t","voredisable":"t","tentacledisable":"t","plantdisable":"t","analdisable":"f","analdoubledisable":"t","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"t","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"t","analpregdisable":"t","watersportsdisable":"t","spiderdisable":"t","bodywritingdisable":"f","parasitedisable":"t", "slugdisable":"t","waspdisable":"t","lurkerdisable":"t","beedisable":"t","horsedisable":"t"}}'>>
+			<<set _preset to '{"general":{"bestialitydisable":"t","swarmdisable":"t","swarmdisable":"t","slimedisable":"t","voredisable":"t","tentacledisable":"t","plantdisable":"t","analdisable":"f","analdoubledisable":"t","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"t","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"t","analpregdisable":"t","watersportsdisable":"t","spiderdisable":"t","bodywritingdisable":"f","parasitedisable":"t", "slugdisable":"t","waspdisable":"t","lurkerdisable":"t","beedisable":"t","horsedisable":"t","toydildodisable":"f","toywhipdisable":"f"}}'>>
 		<<case "kinkNoBeasts">>
-			<<set _preset to '{"general":{"bestialitydisable":"t","swarmdisable":"t","swarmdisable":"t","slimedisable":"f","voredisable":"t","tentacledisable":"f","plantdisable":"f","analdisable":"f","analdoubledisable":"f","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"f","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"f","analpregdisable":"t","watersportsdisable":"f","spiderdisable":"t","bodywritingdisable":"f","parasitedisable":"t","slugdisable":"t","waspdisable":"t","lurkerdisable":"t","beedisable":"t","horsedisable":"t"}}'>>
+			<<set _preset to '{"general":{"bestialitydisable":"t","swarmdisable":"t","swarmdisable":"t","slimedisable":"f","voredisable":"t","tentacledisable":"f","plantdisable":"f","analdisable":"f","analdoubledisable":"f","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"f","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"f","analpregdisable":"t","watersportsdisable":"f","spiderdisable":"t","bodywritingdisable":"f","parasitedisable":"t","slugdisable":"t","waspdisable":"t","lurkerdisable":"t","beedisable":"t","horsedisable":"t","toydildodisable":"f","toywhipdisable":"f"}}'>>
 		<<case "kinkEverything">>
-			<<set _preset to '{"general":{"bestialitydisable":"f","swarmdisable":"f","swarmdisable":"f","slimedisable":"f","voredisable":"f","tentacledisable":"f","plantdisable":"f","analdisable":"f","analdoubledisable":"f","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"f","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"f","analpregdisable":"f","watersportsdisable":"f","spiderdisable":"f","bodywritingdisable":"f","parasitedisable":"f","slugdisable":"f","waspdisable":"f","lurkerdisable":"f","beedisable":"f","horsedisable":"f"}}'>>
+			<<set _preset to '{"general":{"bestialitydisable":"f","swarmdisable":"f","swarmdisable":"f","slimedisable":"f","voredisable":"f","tentacledisable":"f","plantdisable":"f","analdisable":"f","analdoubledisable":"f","footdisable":"f","analingusdisablegiving":"f","analingusdisablereceiving":"f","vaginaldoubledisable":"f","transformdisable":"f","transformdisabledivine":"f","breastfeedingdisable":"f","analpregdisable":"f","watersportsdisable":"f","spiderdisable":"f","bodywritingdisable":"f","parasitedisable":"f","slugdisable":"f","waspdisable":"f","lurkerdisable":"f","beedisable":"f","horsedisable":"f","toydildodisable":"f","toywhipdisable":"f"}}'>>
 		<<case "gameNormal">>
 			<<set _preset to '{"general":{"alluremod":1,"cheatdisabletoggle":"t","checkstyle":"words","clothesPrice":1,"multipleWardrobes":"isolated"},"starting":{"gamemode":"normal"}}'>>
 		<<case "gameSoft">>
diff --git a/game/04-Variables/variables-start.twee b/game/04-Variables/variables-start.twee
index 870658cc16..bd8ed01bc3 100644
--- a/game/04-Variables/variables-start.twee
+++ b/game/04-Variables/variables-start.twee
@@ -853,6 +853,9 @@
 
 <<set $templePromised to "">>
 
+<<if $player.gender is "f">>
+	<<set $player.virginity.penile to false>>
+<</if>>
 <<if $sleepStat is undefined>>
 	<<set $sleepStat to 0>>
 <</if>>
diff --git a/game/04-Variables/variables-start2.twee b/game/04-Variables/variables-start2.twee
index 26b09f1d3e..9c8ff57c6f 100644
--- a/game/04-Variables/variables-start2.twee
+++ b/game/04-Variables/variables-start2.twee
@@ -254,6 +254,16 @@
 	rng: random(0,1000)
 }>>
 
+<<set $adultShop to {
+	ban: 0,
+	banExtension: false,
+	spotted: false,
+	stolenClothes: 0,
+	totalStolenClothes: 0,
+	banCount: 0,
+	rng: random(0,1000)
+}>>
+
 <<set $customColors to {
 	presets:{},
 	action: "set",
@@ -307,4 +317,5 @@
 <<pbhairinit>>
 <<resetLastOptions>>
 
+<<set $adultshopprogress to 0>>
 <</widget>>
diff --git a/game/04-Variables/variables-static.twee b/game/04-Variables/variables-static.twee
index e141d093d0..6dab1fffe7 100644
--- a/game/04-Variables/variables-static.twee
+++ b/game/04-Variables/variables-static.twee
@@ -220,7 +220,8 @@ and are required for processing for loops, default objects, etc.*/
 			"activedolphinrighthand":"img/sex/doggyRed/frontbeast/dolphin/activedolphinrighthand.png",
 			"activedolphinrighthandpenis":"img/sex/doggyRed/frontbeast/dolphin/activedolphinrighthandpenis.png",
 			"doggyactiveshadow":"img/sex/doggyRed/active/body/doggyactiveshadow.png",
-			"doggyactivechastitycagepenis":"img/sex/doggyRed/active/body/doggyactivechastitycagepenis.png"
+			"doggyactivechastitycagepenis":"img/sex/doggyRed/active/body/doggyactivechastitycagepenis.png",
+			"doggyactivestrapon":"img/sex/doggyRed/active/body/doggyactivepenisvirgin.png"
 		},
 		"f":{
 			"doggyactivebase":"img/sex/doggy/active/body/doggyactivebase.png",
@@ -308,7 +309,9 @@ and are required for processing for loops, default objects, etc.*/
 			"activeshadow":"img/sex/missionaryRed/active/body/activeshadow.png",
 			"activechastitycagepenis":"img/sex/missionaryRed/active/body/activechastitycagepenis.png",
 			"activechastitycagedownpenis":"img/sex/missionaryRed/active/body/activechastitycagedownpenis.png",
-			"activeclosedmouth":"img/sex/missionaryRed/active/body/activeclosedmouth.png"
+			"activeclosedmouth":"img/sex/missionaryRed/active/body/activeclosedmouth.png",
+			"activestrapon":"img/sex/missionaryRed/active/body/activestrapon.png",
+			"activestrapondown":"img/sex/missionaryRed/active/body/activestrapondown.png"
 		},
 		"f":{
 			"activearmsbound":"img/sex/missionary/active/body/activearmsbound.png",
@@ -347,7 +350,9 @@ and are required for processing for loops, default objects, etc.*/
 			"activeshadow":"img/sex/missionary/active/body/activeshadow.png",
 			"activechastitycagepenis":"img/sex/missionary/active/body/activechastitycagepenis.png",
 			"activechastitycagedownpenis":"img/sex/missionary/active/body/activechastitycagedownpenis.png",
-			"activeclosedmouth":"img/sex/missionary/active/body/activeclosedmouth.png"
+			"activeclosedmouth":"img/sex/missionary/active/body/activeclosedmouth.png",
+			"activestrapon":"img/sex/missionary/active/body/activestrapon.png",
+			"activestrapondown":"img/sex/missionary/active/body/activestrapondown.png"
 		}
 	},
 	"close":{
diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee
index 509e89b34b..35bbab35e6 100644
--- a/game/04-Variables/variables-versionUpdate.twee
+++ b/game/04-Variables/variables-versionUpdate.twee
@@ -698,6 +698,7 @@
 	<<set $wear_neck to "none">>
 	<<set $wear_legs to "none">>
 	<<set $wear_feet to "none">>
+	<<set $wear_genitals to "none">>
 	<<set $wear_outfit to "none">>
 <</if>>
 
@@ -1616,6 +1617,18 @@
 	}>>
 <</if>>
 
+<<if $adultShop is undefined>>
+	<<set $adultShop to {
+		ban: 0,
+		banExtension: false,
+		spotted: false,
+		stolenClothes: 0,
+		totalStolenClothes: 0,
+		banCount: 0,
+		rng: random(0,1000)
+	}>>
+<</if>>
+
 <<if $penisWetness is undefined>>
 	<<set $penisWetness to 0>>
 <</if>>
@@ -2941,6 +2954,19 @@
 	<<if ndef $makeup.owned.custom_eyelenses>>
 		<<set $makeup.owned.custom_eyelenses to []>> /* pharmacy custom eye lenses */
 	<</if>>
+	
+	<<if $adultShop is undefined>>
+		<<set $adultShop to {
+			ban: 0,
+			banExtension: false,
+			spotted: false,
+			stolenClothes: 0,
+			totalStolenClothes: 0,
+			banCount: 0,
+			rng: random(0,1000)
+		}>>
+	<</if>>
+
 
 	<!-- v0.3.6.2: refactor transformation stuff -->
 	<<setupTransformationPiecesObject>>
@@ -2979,6 +3005,14 @@
 		<<unset $lefthand6, $righthand6, $anus6, $gender6, $penis6, $vagina6>>
 	<</if>>
 
+	<!-- v0.3.6.2: NPC sex toys -->
+	<<if $toydildodisable is undefined>>
+		<<set $toydildodisable to "f">>
+	<</if>>
+	<<if $toywhipdisable is undefined>>
+		<<set $toywhipdisable to "f">>
+	<</if>>
+
 	<!-- v0.3.6.2: cow update -->
 	<<set $BeastList to ["dog","cat","pig","wolf","dolphin","lizard","bear","boar","creature","horse","fox","hawk","cow"]>>
 
diff --git a/game/base-clothing/clothing-face.twee b/game/base-clothing/clothing-face.twee
index e5c193dabe..cebb248412 100644
--- a/game/base-clothing/clothing-face.twee
+++ b/game/base-clothing/clothing-face.twee
@@ -105,7 +105,7 @@
 	warmth: 10,
 	cost: 2000,
 	description: "Hides your identity.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -133,7 +133,7 @@
 	warmth: 0,
 	cost: 2000,
 	description: "Keeps your mouth shut.",
-	shop: [],
+	shop: [""],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -161,7 +161,7 @@
 	warmth: 0,
 	cost: 2000,
 	description: "Keeps you in the dark.",
-	shop: [],
+	shop: [""],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -189,7 +189,7 @@
 	warmth: 0,
 	cost: 3000,
 	description: "Keeps your mouth shut and eyes covered.",
-	shop: [],
+	shop: [""],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -217,7 +217,7 @@
 	warmth: 0,
 	cost: 23000,
 	description: "For those up to no good.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -413,7 +413,7 @@
 	warmth: 0,
 	cost: 7000,
 	description: "Makes status rise faster at school.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -441,7 +441,7 @@
 	warmth: 0,
 	cost: 7000,
 	description: "Makes status rise faster at school.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -469,7 +469,7 @@
 	warmth: 0,
 	cost: 3500,
 	description: "Makes status rise faster at school.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -497,7 +497,7 @@
 	warmth: 0,
 	cost: 0,
 	description: "Keeps your dangerous mouth shut.",
-	shop: [],
+	shop: [""],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -571,11 +571,6 @@
 	integrity_max: 20,
 	fabric_strength: 20,
 	reveal: 1,
-	word: "a",
-	plural: 0,
-	colour: 0,
-	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
-	colour_sidebar: 1,
 	type: ["dance"],
 	gender: "n",
 	warmth: 10,
@@ -583,11 +578,61 @@
 	description: "Exotic and enticing.",
 	shop: ["forest"],
 	accessory: 1,
+	iconFile: "",
+	accIcon: 0
+},
+
+	{index: 21,
+	name: "muzzle",
+	name_cap: "Muzzle",
+	variable: "muzzlefetish",
+	integrity: 30,
+	integrity_max: 30,
+	fabric_strength: 20,
+	reveal: 200,
+	word: "a",
+	plural: 0,
+	colour: 0,
+	colour_options: ["grey","black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "yellow", "custom"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	type: ["gag","fetish"],
+	gender: "n",
+	warmth: 0,
+	cost: 12000,
+	description: "Keeps your dangerous mouth shut.",
+	shop: ["adult"],
+	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
 	cursed: 0,
 	location: 0,
-	iconFile: "",
+	iconFile: "muzzleicon.png",
+	accIcon: 0
+},
+
+	{index: 22,
+	name: "gag",
+	name_cap: "Gag",
+	variable: "gagfetish",
+	integrity: 20,
+	integrity_max: 20,
+	fabric_strength: 20,
+	reveal: 500,
+	word: "a",
+	plural: 0,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	type: ["fetish", "gag"],
+	gender: "n",
+	warmth: 0,
+	cost: 8000,
+	description: "Keeps your mouth shut.",
+	shop: ["adult"],
+	accessory: 0,
+	iconFile: "ballgagicon.png",
 	accIcon: 0
 }
 
diff --git a/game/base-clothing/clothing-feet.twee b/game/base-clothing/clothing-feet.twee
index 5cc7a59cb0..81c880e055 100644
--- a/game/base-clothing/clothing-feet.twee
+++ b/game/base-clothing/clothing-feet.twee
@@ -367,7 +367,7 @@
 	warmth: 10,
 	cost: 12500,
 	description: "Quite tall and very grown-up.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -396,7 +396,7 @@
 	warmth: 20,
 	cost: 16000,
 	description: "A powerful choice.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -425,7 +425,7 @@
 	warmth: 10,
 	cost: 25000,
 	description: "Crazy tall and very slutty.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -513,7 +513,7 @@
 	warmth: 40,
 	cost: 2000,
 	description: "Keeps your toes warm.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -716,7 +716,7 @@
 	warmth: 40,
 	cost: 4500,
 	description: "Covers your knees.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
diff --git a/game/base-clothing/clothing-genitals.twee b/game/base-clothing/clothing-genitals.twee
index ab1d0fbd46..d3e7e50b50 100644
--- a/game/base-clothing/clothing-genitals.twee
+++ b/game/base-clothing/clothing-genitals.twee
@@ -158,6 +158,130 @@
 	hideUnderLower: ["leotard bottom", "full body leotard bottom"],
 	iconFile: 0,
 	accIcon: 0
+},
+	{index: 4,
+	name: "chastity belt",
+	name_cap: "Chastity belt",
+	variable: "chastitybeltfetish",
+	integrity: 1500,
+	integrity_max: 1500,
+	fabric_strength: 12,
+	reveal: 1000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "white", "yellow", "tangerine","cyan"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	exposed: 0,
+	exposed_base: 0,
+	vagina_exposed: 0,
+	vagina_exposed_base: 0,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["chastity", "hidden"],
+	anal_shield: 0,
+	set: "genitals",
+	gender: "f",
+	femininity: 300,
+	cost: 10000,
+	description: "Restrictive.",
+	shop: ["adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	hideUnderLower: ["leotard bottom","full body leotard bottom"],
+	iconFile: "chastitybelt.png",
+	accIcon: 0
+},
+	{index: 5,
+	name: "chastity cage",
+	name_cap: "Chastity cage",
+	variable: "chastitycagefetish",
+	integrity: 1500,
+	integrity_max: 1500,
+	fabric_strength: 12,
+	reveal: 10000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "grey", "blue", "brown", "green", "pink", "purple", "red", "yellow", "tangerine","cyan"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	exposed: 1,
+	exposed_base: 1,
+	vagina_exposed: 0,
+	vagina_exposed_base: 0,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["chastity", "cage"],
+	anal_shield: null,
+	set: "genitals",
+	gender: "m",
+	cost: 10000,
+	description: "Restrictive.",
+	shop: ["adult"],
+	accessory: 1,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	hideUnderLower: ["plain panties", "bikini bottoms", "lace panties", "briefs", "school swimsuit bottom", "school swim shorts", "leotard bottom", "full body leotard bottom", "skimpy leotard bottom", "foreign school swimsuit bottom", "swimsuit bottom", "bunny leotard bottom", "boyshorts", "catgirl panties", "G-string", "microkini bottom", "speedo", "striped panties", "thong", "classic plain panties", "classic bikini bottoms", "classic lace panties", "classic briefs", "classic school swimsuit bottom"],
+	iconFile: 0,
+	accIcon: "chastitycage.png"
+},
+	{index: 6,
+	name: "cock sleeve",
+	name_cap: "Cock sleeve",
+	variable: "cocksleeve",
+	integrity: 2000,
+	integrity_max: 2000,
+	fabric_strength: 15,
+	reveal: 1000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "white", "yellow", "fleshy"],
+	colour_combat: 0,
+	exposed: 0,
+	exposed_base: 0,
+	vagina_exposed: 0,
+	vagina_exposed_base: 0,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["strap-on"],
+	anal_shield: 0,
+	set: "genitals",
+	gender: "f",
+	cost: 8000,
+	description: "Restrictive.",
+	shop: [],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 1,
+	location: 0,
+	hideUnderLower: ["leotard bottom","full body leotard bottom"],
+	iconFile: "strap-on.png",
+	accIcon: 0,
+	size: 3,
 }
 
 ]>>
diff --git a/game/base-clothing/clothing-hands.twee b/game/base-clothing/clothing-hands.twee
index 55d3c2c391..3ddf027120 100644
--- a/game/base-clothing/clothing-hands.twee
+++ b/game/base-clothing/clothing-hands.twee
@@ -178,7 +178,7 @@
 	warmth: 10,
 	cost: 8000,
 	description: "Fashionable and ready to slip into pockets.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -211,7 +211,7 @@
 	warmth: 15,
 	cost: 1500,
 	description: "For cheering your team to victory.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -243,7 +243,7 @@
 	warmth: 0,
 	cost: 25000,
 	description: "Eye-catching and exotic.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
diff --git a/game/base-clothing/clothing-head.twee b/game/base-clothing/clothing-head.twee
index 0264742706..287b97e14c 100644
--- a/game/base-clothing/clothing-head.twee
+++ b/game/base-clothing/clothing-head.twee
@@ -109,7 +109,7 @@
 	warmth: 0,
 	cost: 3000,
 	description: "Cute ears on a headband. Part of a bunny outfit.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -139,7 +139,7 @@
 	warmth: 15,
 	cost: 2500,
 	description: "Protects your hair from unwanted attentions.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -170,7 +170,7 @@
 	warmth: 0,
 	cost: 900,
 	description: "Cute.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -313,7 +313,7 @@
 	warmth: 10,
 	cost: 8000,
 	description: "Protects you from the sun.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -343,7 +343,7 @@
 	warmth: 10,
 	cost: 5000,
 	description: "Suave.",
-	shop: ["forest"],
+	shop: ["forest", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -486,7 +486,7 @@
 	warmth: 0,
 	cost: 1100,
 	description: "Holds your hair back.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -578,7 +578,7 @@
 	warmth: 0,
 	cost: 1200,
 	description: "For looking cute while cleaning.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -608,7 +608,7 @@
 	warmth: 0,
 	cost: 5000,
 	description: "Exotic.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -668,7 +668,7 @@
 	warmth: 10,
 	cost: 2200,
 	description: "For when you have something to be proud of.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -729,7 +729,7 @@
 	warmth: 10,
 	cost: 2000,
 	description: "Shields you from the sun.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -760,7 +760,7 @@
 	warmth: 30,
 	cost: 2000,
 	description: "Protective headwear. Used in a foreign sport.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -791,7 +791,7 @@
 	warmth: 0,
 	cost: 1400,
 	description: "Very cute.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -851,7 +851,7 @@
 	warmth: 10,
 	cost: 6000,
 	description: "Old fashioned sophistication.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -1104,7 +1104,7 @@
 	warmth: 25,
 	cost: 1500,
 	description: "Cute.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
diff --git a/game/base-clothing/clothing-legs.twee b/game/base-clothing/clothing-legs.twee
index 13e769b9db..0851ee0c4c 100644
--- a/game/base-clothing/clothing-legs.twee
+++ b/game/base-clothing/clothing-legs.twee
@@ -54,7 +54,7 @@
 	warmth: 5,
 	cost: 1000,
 	description: "They don't conceal much.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -85,7 +85,7 @@
 	warmth: 15,
 	cost: 500,
 	description: "Cushioned and breathable.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -116,7 +116,7 @@
 	warmth: 15,
 	cost: 500,
 	description: "Cushioned and breathable.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -147,7 +147,7 @@
 	warmth: 15,
 	cost: 1500,
 	description: "Attractive and alluring.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -178,7 +178,7 @@
 	warmth: 3,
 	cost: 1500,
 	description: "Attractive and alluring.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -209,7 +209,7 @@
 	warmth: 3,
 	cost: 1700,
 	description: "Attractive and alluring.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -240,7 +240,7 @@
 	warmth: 20,
 	cost: 4000,
 	description: "Sexy.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -330,7 +330,7 @@
 	warmth: 0,
 	cost: 25000,
 	description: "Exotic and eye-catching.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -390,7 +390,7 @@
 	warmth: 20,
 	cost: 3000,
 	description: "Brimming with personality.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -453,7 +453,7 @@
 	warmth: 20,
 	cost: 2500,
 	description: "Simple and cute.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
diff --git a/game/base-clothing/clothing-lower.twee b/game/base-clothing/clothing-lower.twee
index 2ba001d19f..290e14099d 100644
--- a/game/base-clothing/clothing-lower.twee
+++ b/game/base-clothing/clothing-lower.twee
@@ -212,7 +212,7 @@
 	warmth: 10,
 	cost: 800,
 	description: "Covers little.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -301,7 +301,7 @@
 	warmth: 20,
 	cost: 2500,
 	description: "Proper school uniform.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -346,7 +346,7 @@
 	warmth: 20,
 	cost: 2500,
 	description: "Proper school uniform.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -572,7 +572,7 @@
 	warmth: 15,
 	cost: 0,
 	description: "Exotic. Shows off your legs.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -619,7 +619,7 @@
 	warmth: 30,
 	cost: 0,
 	description: "For looking cute while cleaning.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -665,7 +665,7 @@
 	warmth: 60,
 	cost: 0,
 	description: "Holy outfit for those sworn to purity.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1158,7 +1158,7 @@
 	warmth: 10,
 	cost: 3000,
 	description: "A breeze away from a malfunction.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1248,7 +1248,7 @@
 	warmth: 20,
 	cost: 1500,
 	description: "Too short to meet regulation skirt length. You don't think anyone will complain.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1606,7 +1606,7 @@
 	warmth: 60,
 	cost: 0,
 	description: "Holy outfit for those sworn to purity.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1653,7 +1653,7 @@
 	warmth: 35,
 	cost: 6000,
 	description: "Ready for a hard day's work.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1972,7 +1972,7 @@
 	femininity: 200,
 	cost: 0,
 	description: "Exotic and revealing.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2201,7 +2201,7 @@
 	warmth: 40,
 	cost: 1500,
 	description: "For when your clientele expect a certain class.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2382,7 +2382,7 @@
 	warmth: 20,
 	cost: 2800,
 	description: "For hot days away from shore.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2472,7 +2472,7 @@
 	warmth: 15,
 	cost: 2200,
 	description: "Old fashioned PE bloomers from a foreign land.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2563,7 +2563,7 @@
 	warmth: 20,
 	cost: 5000,
 	description: "Part of a uniform used in a foreign sport.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -3106,7 +3106,7 @@
 	warmth: 25,
 	cost: 0,
 	description: "Sleek latex.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -3150,7 +3150,7 @@
 	warmth: 20,
 	cost: 2800,
 	description: "Breezy.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -3419,7 +3419,7 @@
 	warmth: 15,
 	cost: 0,
 	description: "Don't bend over.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -3465,7 +3465,7 @@
 	warmth: 10,
 	cost: 4000,
 	description: "Tight and revealing.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
diff --git a/game/base-clothing/clothing-neck.twee b/game/base-clothing/clothing-neck.twee
index 08e91c6718..8a4c00a8f6 100644
--- a/game/base-clothing/clothing-neck.twee
+++ b/game/base-clothing/clothing-neck.twee
@@ -79,7 +79,7 @@
 	warmth: 0,
 	cost: 3000,
 	description: "A collar and tie. Part of the bunny outfit.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -195,7 +195,7 @@
 	warmth: 0,
 	cost: 25000,
 	description: "Exotic and eye-catching.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -224,7 +224,7 @@
 	warmth: 0,
 	cost: 1500,
 	description: "Jingles.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -283,7 +283,7 @@
 	warmth: 0,
 	cost: 1800,
 	description: "Glamorous.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -313,7 +313,7 @@
 	warmth: 0,
 	cost: 1500,
 	description: "Menaces with spikes of steel.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -343,7 +343,7 @@
 	warmth: 0,
 	cost: 2100,
 	description: "Cute.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -373,7 +373,7 @@
 	warmth: 0,
 	cost: 2500,
 	description: "Ready for leashing.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -403,7 +403,7 @@
 	warmth: 0,
 	cost: 3000,
 	description: "Classic accessory for office workers.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 1,
 	accessory_colour: 0,
@@ -434,7 +434,7 @@
 	warmth: 1,
 	cost: 2000,
 	description: "They hold your pants.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 1,
 	accessory_colour: 0,
@@ -465,7 +465,7 @@
 	warmth: 0,
 	cost: 1500,
 	description: "Brimming with personality.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -525,7 +525,7 @@
 	warmth: 0,
 	cost: 11000,
 	description: "Luxurious men's jewellery.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -555,7 +555,7 @@
 	warmth: 0,
 	cost: 300,
 	description: "Men's jewellery.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	collared: 0,
 	accessory: 0,
 	accessory_colour: 0,
@@ -709,6 +709,66 @@
 	location: 0,
 	iconFile: "",
 	accIcon: 0
+},
+
+	{index: 24,
+	name: "leather collar with leash",
+	name_cap: "Leather collar with leash",
+	variable: "collarleashfetish",
+	integrity: 400,
+	integrity_max: 400,
+	fabric_strength: 20,
+	reveal: 1000,
+	word: "n",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	type: ["fetish", "leash"],
+	gender: "n",
+	warmth: 0,
+	cost: 20000,
+	description: "Requires a special tool to unlock, but you own the key.",
+	shop: ["adult"],
+	collared: 1,
+	accessory: 1,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	cursed: 0,
+	location: 0,
+	iconFile: "Collar.png",
+	accIcon: 0
+},
+
+	{index: 25,
+	name: "leather collar",
+	name_cap: "Leather Collar",
+	variable: "collarfetish",
+	integrity: 400,
+	integrity_max: 400,
+	fabric_strength: 20,
+	reveal: 1000,
+	word: "n",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	type: ["fetish"],
+	gender: "n",
+	warmth: 0,
+	cost: 20000,
+	description: "Requires a special tool to unlock, but you own the key.",
+	shop: ["adult"],
+	collared: 1,
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	cursed: 0,
+	location: 0,
+	iconFile: "Collar.png",
+	accIcon: 0
 }
 
 ]>>
diff --git a/game/base-clothing/clothing-under-upper.twee b/game/base-clothing/clothing-under-upper.twee
index 4b64ca52fc..148992756a 100644
--- a/game/base-clothing/clothing-under-upper.twee
+++ b/game/base-clothing/clothing-under-upper.twee
@@ -147,11 +147,11 @@
 	state_top_base: "chest",
 	plural: 0,
 	colour: 0,
-	colour_options: [],
-	colour_combat:"black",
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
 	exposed: 0,
 	exposed_base: 0,
-	type: ["dance", "athletic"],
+	type: ["dance", "athletic", "adult"],
 	set: "leotard",
 	gender: "n",
 	warmth: 20,
@@ -189,8 +189,8 @@
 	state_top_base: "chest",
 	plural: 0,
 	colour: 0,
-	colour_options: [],
-	colour_combat:"black",
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
 	exposed: 0,
 	exposed_base: 0,
 	type: ["dance", "athletic"],
@@ -199,7 +199,7 @@
 	warmth: 25,
 	cost: 3500,
 	description: "Form fitting. Covers your legs.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -231,8 +231,8 @@
 	state_top_base: "chest",
 	plural: 0,
 	colour: 0,
-	colour_options: [],
-	colour_combat:"black",
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
 	exposed: 0,
 	exposed_base: 0,
 	type: ["dance", "athletic"],
@@ -241,7 +241,7 @@
 	warmth: 15,
 	cost: 2500,
 	description: "Form fitting. Shows off your thighs.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -371,7 +371,7 @@
 	warmth: 25,
 	cost: 5000,
 	description: "Waitress attire. Tougher than it looks. Part of a bunny outfit, and has a fluffy white tail on the back to prove it.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -414,7 +414,7 @@
 	warmth: 5,
 	cost: 3000,
 	description: "For when a regular bra just isn't cute enough.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -457,7 +457,7 @@
 	warmth: 5,
 	cost: 1000,
 	description: "Hints at what lies beneath.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -499,7 +499,7 @@
 	warmth: 2,
 	cost: 2400,
 	description: "Skirts the borders of decency.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -624,7 +624,7 @@
 	warmth: 0,
 	cost: 3500,
 	description: "Doesn't conceal a thing.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -665,7 +665,7 @@
 	warmth: 20,
 	cost: 2500,
 	description: "Constricts your tummy and emphasises your chest.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -707,7 +707,7 @@
 	warmth: 5,
 	cost: 600,
 	description: "Brimming with personality.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -751,7 +751,7 @@
 	warmth: 35,
 	cost: 600,
 	description: "Flattens and protects.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1005,7 +1005,7 @@
 	warmth: 10,
 	cost: 1000,
 	description: "Frees your shoulders.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1089,7 +1089,7 @@
 	warmth: 0,
 	cost: 2000,
 	description: "Barely there.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1172,7 +1172,7 @@
 	warmth: 35,
 	cost: 6000,
 	description: "Flattens and protects.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1226,6 +1226,48 @@
 	location: 0,
 	iconFile: "Swim shirt.png",
  	accIcon: 0
+},
+
+	{index: 29,
+	name: "shibari ropes",
+	name_cap: "Shibari ropes",
+	variable: "shibari",
+	integrity: 80,
+	integrity_max: 80,
+	fabric_strength: 30,
+	reveal: 600,
+	bustresize: 0,
+	word: "a",
+	one_piece: 1,
+	strap: 0,
+	open: 0,
+	state: "waist",
+	state_base: "waist",
+	state_top: "chest",
+	state_top_base: "chest",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
+	exposed: 1,
+	exposed_base: 1,
+	type: ["fetish","naked"],
+	set: "shibari",
+	gender: "n",
+	warmth: 15,
+	cost: 10000,
+	description: "Form fitting. Shows off your thighs.",
+	shop: ["clothing", "adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	sleeve_img: 0,
+	breast_img: 1,
+	cursed: 0,
+	location: 0,
+	iconFile: "shibari.png",
+	accIcon: 0,
+	outfitPrimary:{under_lower:"shibari ropes bottom"}
 }
 
 ]>>
diff --git a/game/base-clothing/clothing-under.twee b/game/base-clothing/clothing-under.twee
index fe1257a124..4f0f1b905d 100644
--- a/game/base-clothing/clothing-under.twee
+++ b/game/base-clothing/clothing-under.twee
@@ -76,7 +76,7 @@
 	warmth: 5,
 	cost: 500,
 	description: "No-nonsense.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -162,7 +162,7 @@
 	warmth: 5,
 	cost: 1500,
 	description: "Fashionable and sexy.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -365,7 +365,8 @@
 	state_base: "waist",
 	plural: 0,
 	colour: 0,
-	colour_options: [],
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
 	colour_combat:"black",
 	exposed: 0,
 	exposed_base: 0,
@@ -381,7 +382,7 @@
 	warmth: 20,
 	cost: 0,
 	description: "Form fitting.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -409,7 +410,8 @@
 	state_base: "waist",
 	plural: 0,
 	colour: 0,
-	colour_options: [],
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
 	colour_combat:"black",
 	exposed: 0,
 	exposed_base: 0,
@@ -425,7 +427,7 @@
 	warmth: 40,
 	cost: 0,
 	description: "Form fitting. Covers your legs.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -453,7 +455,8 @@
 	state_base: "waist",
 	plural: 0,
 	colour: 0,
-	colour_options: [],
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
 	colour_combat:"black",
 	exposed: 0,
 	exposed_base: 0,
@@ -468,7 +471,7 @@
 	warmth: 10,
 	cost: 0,
 	description: "Form fitting. Shows off your thighs.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -600,7 +603,7 @@
 	warmth: 5,
 	cost: 0,
 	description: "Waitress attire. Tougher than it looks. Part of a bunny outfit, and has a tufty white tail on the back to prove it.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -688,7 +691,7 @@
 	warmth: 5,
 	cost: 3000,
 	description: "For when mundane panties aren't cute enough.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -730,7 +733,7 @@
 	warmth: 2,
 	cost: 1500,
 	description: "Protects the essentials. Just.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -773,7 +776,7 @@
 	warmth: 3,
 	cost: 1200,
 	description: "Open access.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -816,7 +819,7 @@
 	warmth: 2,
 	cost: 2400,
 	description: "Skirts the borders of decency.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -989,7 +992,7 @@
 	warmth: 3,
 	cost: 1500,
 	description: "Protects the essentials. Just.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1431,6 +1434,222 @@
 	location: 0,
 	iconFile: "Cow panties.png",
 	accIcon: 0
+},
+
+	{index: 33,
+	name: "strap-on",
+	name_cap: "Strap-on",
+	variable: "straponlower",
+	integrity: 2000,
+	integrity_max: 2000,
+	fabric_strength: 30,
+	reveal: 1000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "white", "yellow", "tan"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	exposed: 1,
+	exposed_base: 1,
+	vagina_exposed: 1,
+	vagina_exposed_base: 1,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["strap-on","fetish"],
+	anal_shield: 0,
+	set: "under_lower",
+	gender: "f",
+	cost: 8000,
+	description: "Restrictive.",
+	shop: ["clothing", "adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	hideUnderLower: ["leotard bottom","full body leotard bottom"],
+	iconFile: "strap-on.png",
+	accIcon: 0,
+	size: 2,
+},
+
+	{index: 34,
+	name: "strap-on horse cock",
+	name_cap: "Strap-on horse cock",
+	variable: "straponhorse",
+	integrity: 2000,
+	integrity_max: 2000,
+	fabric_strength: 30,
+	reveal: 1000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "white", "yellow", "tan"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	exposed: 1,
+	exposed_base: 1,
+	vagina_exposed: 1,
+	vagina_exposed_base: 1,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["strap-on","fetish"],
+	anal_shield: 0,
+	set: "under_lower",
+	gender: "f",
+	cost: 8000,
+	description: "Restrictive.",
+	shop: ["clothing", "adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	hideUnderLower: ["leotard bottom","full body leotard bottom"],
+	iconFile: "horsestraponicon.png",
+	accIcon: 0,
+	size: 4,
+},
+
+	{index: 35,
+	name: "strap-on knotted cock",
+	name_cap: "Strap-on knotted cock",
+	variable: "straponknotted",
+	integrity: 2000,
+	integrity_max: 2000,
+	fabric_strength: 30,
+	reveal: 1000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "white", "yellow", "tan"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	exposed: 1,
+	exposed_base: 1,
+	vagina_exposed: 1,
+	vagina_exposed_base: 1,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["strap-on","fetish"],
+	anal_shield: 0,
+	set: "under_lower",
+	gender: "f",
+	cost: 8000,
+	description: "Restrictive.",
+	shop: ["clothing", "adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	hideUnderLower: ["leotard bottom","full body leotard bottom"],
+	iconFile: "strap-on.png",
+	accIcon: 0,
+	size: 3,
+},
+
+	{index: 36,
+	name: "strap-on studded cock",
+	name_cap: "Strap-on studded cock",
+	variable: "straponstudded",
+	integrity: 2000,
+	integrity_max: 2000,
+	fabric_strength: 30,
+	reveal: 1000,
+	word: "a",
+	one_piece: 0,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "white", "yellow", "tan"],
+	colour_sidebar: 1,
+	colour_combat: 0,
+	exposed: 1,
+	exposed_base: 1,
+	vagina_exposed: 1,
+	vagina_exposed_base: 1,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["strap-on","fetish"],
+	anal_shield: 0,
+	set: "under_lower",
+	gender: "f",
+	cost: 8000,
+	description: "Restrictive.",
+	shop: ["clothing", "adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 0,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	hideUnderLower: ["leotard bottom","full body leotard bottom"],
+	iconFile: "strap-on.png",
+	accIcon: 0,
+	size: 3,
+},
+
+	{index: 37,
+	name: "shibari ropes bottom",
+	name_cap: "Shibari ropes bottom",
+	variable: "shibari",
+	integrity: 80,
+	integrity_max: 80,
+	fabric_strength: 20,
+	reveal: 600,
+	rearresize: 0,
+	word: "a",
+	one_piece: 1,
+	state: "waist",
+	state_base: "waist",
+	plural: 1,
+	colour: 0,
+	colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
+	colour_sidebar: 1,
+	colour_combat:"black",
+	exposed: 1,
+	exposed_base: 1,
+	vagina_exposed: 1,
+	vagina_exposed_base: 1,
+	anus_exposed: 1,
+	anus_exposed_base: 1,
+	type: ["fetish", "naked"],
+	anal_shield: 0,
+	set: "shibari",
+	gender: "n",
+	warmth: 10,
+	cost: 0,
+	description: "Form fitting. Shows off your thighs.",
+	shop: ["clothing", "adult"],
+	accessory: 0,
+	accessory_colour: 0,
+	accessory_colour_options: [],
+	penis_img: 1,
+	high_img: 0,
+	cursed: 0,
+	location: 0,
+	iconFile: "shibari.png",
+	accIcon: 0,
+	outfitSecondary: ["under_upper","shibari ropes"]
 }
 
 ]>>
diff --git a/game/base-clothing/clothing-upper.twee b/game/base-clothing/clothing-upper.twee
index 9f647ed3cb..4e6f21a796 100644
--- a/game/base-clothing/clothing-upper.twee
+++ b/game/base-clothing/clothing-upper.twee
@@ -245,7 +245,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 40,
 	cost: 2000,
 	description: "The proper shirt for school.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -331,7 +331,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 40,
 	cost: 12000,
 	description: "For formal nights out.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -503,7 +503,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 35,
 	cost: 12000,
 	description: "Exotic. Shows off your legs.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -547,7 +547,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 40,
 	cost: 2500,
 	description: "For looking cute while cleaning.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -591,7 +591,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 50,
 	cost: 6000,
 	description: "Holy outfit for those sworn to purity.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -764,7 +764,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 10,
 	cost: 1500,
 	description: "Loose and comfortable.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -807,7 +807,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 10,
 	cost: 1500,
 	description: "Loose, comfortable, and transparent.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -850,7 +850,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 20,
 	cost: 1500,
 	description: "Show off your tummy.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -937,7 +937,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 20,
 	cost: 2000,
 	description: "Not too tight.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -1409,7 +1409,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 50,
 	cost: 6000,
 	description: "Holy outfit for those sworn to purity.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2054,7 +2054,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 35,
 	cost: 12000,
 	description: "Exotic and revealing.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2099,7 +2099,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 5,
 	cost: 10000,
 	description: "Makes you feel rather girly.",
-	shop: [],
+	shop: ["adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2319,7 +2319,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 40,
 	cost: 1500,
 	description: "For when your clientele expect a certain class.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -2493,7 +2493,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 20,
 	cost: 2800,
 	description: "For hot days away from shore.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "custom"],
@@ -2625,7 +2625,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 20,
 	cost: 5000,
 	description: "Part of a uniform used in a foreign sport.",
-	shop: ["clothing", "school"],
+	shop: ["clothing", "school", "adult"],
 	accessory: 1,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -3323,7 +3323,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 12,
 	cost: 2500,
 	description: "Not fully opaque.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
@@ -3411,7 +3411,7 @@ plural - widget will output "are" if 1, and "is" if 0. eg - Your hat <<upperplur
 	warmth: 40,
 	cost: 2000,
 	description: "Soft terry cloth, perfect for after shower lounging.",
-	shop: ["clothing"],
+	shop: ["clothing", "adult"],
 	accessory: 0,
 	accessory_colour: 0,
 	accessory_colour_options: [],
diff --git a/game/base-clothing/images.twee b/game/base-clothing/images.twee
index 81181df20b..bbaffe984f 100644
--- a/game/base-clothing/images.twee
+++ b/game/base-clothing/images.twee
@@ -815,6 +815,8 @@
 
 <<if $worn.under_lower.name is "bikini bottoms">>
 	<img @class="'layer-sexunder colour-under_lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/bikinibottom/doggyactive_bikinibottom_' + $worn.under_lower.state + '.png'" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
+<<elseif $worn.under_lower.type.includes("strap-on")>>
+	<img @class="'layer-sexunder colour-under_lower anim-doggy-4f-'+_animspeed" @src="'img/sex/doggy/active/strapon/doggyactive_strapon_' + $worn.under_lower.state + '.png'" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
 <<elseif !$worn.under_lower.type.includes("naked")>>
 	<<if $worn.under_lower.state is "waist" or $worn.under_lower.state is "totheside">>
 		<img @class="'layer-sexunder colour-under_lower anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/plainpanties/doggyactive_plainpanties_hips.png" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
@@ -1040,6 +1042,9 @@
 <<elseif $worn.face.name is "surgical mask" or $worn.face.type.includes("covered")>>
 	<img @class="'layer-sextears colour-face anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/surgicalmask/full.png" @style="$worn.face.colourCustom">
 <</if>>
+<<if $worn.face.name is "surgical mask">>
+	<img @class="'layer-sexunder anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/surgicalmask/full.png" @style="$worn.face.colourCustom">
+<</if>>
 <<if $worn.face.type.includes("blindfold")>>
 <img @class="'layer-sexunder anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/blindfold/full.png" @style="$worn.face.colourCustom">
 <</if>>
@@ -1307,6 +1312,9 @@
 <<if $worn.under_lower.name is "bikini bottoms">>
 	<img class="layer-sexunder colour-under_lower anim-idle-2f"
 	@src="'img/sex/doggy/active/bikinibottom/doggyactive_bikinibottom_' + $worn.under_lower.state + '.png'" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
+<<elseif !$worn.under_lower.type.includes("strap-on")>>
+	<img class="layer-sexunder colour-under_lower anim-idle-2f"
+	@src="'img/sex/doggy/active/strapon/doggyactive_strapon_' + $worn.under_lower.state + '.png'" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
 <<elseif !$worn.under_lower.type.includes("naked")>>
 	<<if $worn.under_lower.state is "waist" or $worn.under_lower.state is "totheside">>
 		<img class="layer-sexunder colour-under_lower anim-idle-2f" src="img/sex/doggy/active/plainpanties/doggyactive_plainpanties_hips.png" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
diff --git a/game/base-clothing/init.twee b/game/base-clothing/init.twee
index 1caedb6d4f..4b362b8e76 100644
--- a/game/base-clothing/init.twee
+++ b/game/base-clothing/init.twee
@@ -34,6 +34,7 @@
 <<set setup.clothingTraits = [...new Set(Object.keys(setup.clothes).flatMap(x => setup.clothes[x]).flatMap(x => x.type))]>>
 
 <<init_npc_clothes>>
+<<init_sex_toys>>
 
 <</widget>>
 
@@ -156,6 +157,7 @@
 	<<set $wear_hands to "none">>
 	<<set $wear_legs to "none">>
 	<<set $wear_feet to "none">>
+	<<set $wear_genitals to "none">>
 	<<set $wear_outfit to "none">>
 <</widget>>
 
diff --git a/game/base-clothing/update.twee b/game/base-clothing/update.twee
index f39529536a..faf4c4fbda 100644
--- a/game/base-clothing/update.twee
+++ b/game/base-clothing/update.twee
@@ -163,6 +163,7 @@
 	over_head:[],
 	over_lower:[],
 	over_upper:[],
+	genitals:[],
 	under_lower:[],
 	under_upper:[],
 	upper:[],
@@ -184,6 +185,7 @@
 	over_head:[],
 	over_lower:[],
 	over_upper:[],
+	genitals:[],
 	under_lower:[],
 	under_upper:[],
 	upper:[],
@@ -310,4 +312,14 @@
 	<<run clothesDataTrimmerLoop()>>
 <</if>>
 
+<<if $objectVersion.wardrobes lt 4>>
+    <<if $wardrobe.genitals is undefined>>
+        <<set $wardrobe.genitals to []>>
+    <</if>>
+    <<for $_label, $_value range $wardrobes>>
+        <<if $_label isnot "wardrobe" and $wardrobes[$_label].unlocked isnot undefined and $wardrobes[$_label].genitals is undefined>>
+            <<set $wardrobes[$_label].genitals to []>>
+        <</if>>
+    <</for>>
+<</if>>
 <</widget>>
diff --git a/game/base-clothing/wardrobes.twee b/game/base-clothing/wardrobes.twee
index 0ec89cb356..b8628fc4a3 100644
--- a/game/base-clothing/wardrobes.twee
+++ b/game/base-clothing/wardrobes.twee
@@ -26,6 +26,11 @@
 	<span class="gold">You place the clothes you recently stole from the shop in your wardrobe.</span>
 	<br>
 <</if>>
+<<if $adultShop isnot undefined and $adultShop.stolenClothes gt 0>>
+	<<set $adultShop.stolenClothes to 0>>
+	<span class="gold">You place the clothes you recently stole from the shop in your wardrobe.</span>
+	<br>
+<</if>>
 <<if $wear is "strip">>
 	You remove your clothing.
 	<br><br>
@@ -35,10 +40,10 @@
 <<if $randomWear>>
 	<<randomWear>>
 <</if>>
-<<set _equip to ["over_upper", "over_lower", "upper", "lower", "under_upper", "under_lower", "over_head", "head", "face", "neck", "hands", "legs", "feet"]>>
+<<set _equip to ["over_upper", "over_lower", "upper", "lower", "under_upper", "under_lower", "over_head", "head", "face", "neck", "hands", "legs", "feet","genitals"]>>
 <<set _slimePrevent to ["upper", "lower", "under_upper", "under_lower"]>>
 <<set _towelCheck to ["upper", "lower"]>>
-<<set _equipSkip to {"over_upper":false, "over_lower":false, "upper":false, "lower":false, "under_upper":false, "under_lower":false, "over_head":false, "head":false, "face":false, "neck":false, "hands":false, "legs":false, "feet":false}>>
+<<set _equipSkip to {"over_upper":false, "over_lower":false, "upper":false, "lower":false, "under_upper":false, "under_lower":false, "over_head":false, "head":false, "face":false, "neck":false, "hands":false, "legs":false, "feet":false, "genitals":false}>>
 <<for _ie to 0; _ie lt _equip.length;_ie++>>
 	<<unset _outfitPieceIds>>
 	<<if _equipSkip[_equip[_ie]] is true>>
@@ -72,6 +77,8 @@
 		<<set _wearId to $wear_legs>>
 	<<case "feet">>
 		<<set _wearId to $wear_feet>>
+	<<case "genitals">>
+		<<set _wearId to $wear_genitals>>
 	<</switch>>
 	<<if _wearId is undefined>>
 		<<continue>>
@@ -301,6 +308,7 @@
 <<set $wear_hands to "none">>
 <<set $wear_legs to "none">>
 <<set $wear_feet to "none">>
+<<set $wear_genitals to "none">>
 <<set $wear_outfit to "none">>
 <<exposure>>
 <</widget>>
@@ -556,6 +564,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label>
 				hands: clone($worn.hands.name),
 				legs: clone($worn.legs.name),
 				feet: clone($worn.feet.name),
+				genitals: clone($worn.genitals.name),
 				type: ["normal"],
 				colors: false
 			},
@@ -621,6 +630,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label>
 	<<case "hands">><<set _wear to "wear_hands">>
 	<<case "legs">><<set _wear to "wear_legs">>
 	<<case "feet">><<set _wear to "wear_feet">>
+	<<case "genitals">><<set _wear to "wear_genitals">>
 	<<default>><<set _errorPrevent to true>>
 <</switch>>
 <<set _outfitTypes to ["upper","lower","under_upper","under_lower"]>>
@@ -933,6 +943,7 @@ Type: <label>Everyday <<radiobutton "$outfit_type" 0 checked>></label> | <label>
 	<<case "hands">><<set _wear to "wear_hands">>
 	<<case "legs">><<set _wear to "wear_legs">>
 	<<case "feet">><<set _wear to "wear_feet">>
+	<<case "feet">><<set _wear to "wear_genitals">>
 <</switch>>
 
 <div class="clothingBox">
diff --git a/game/base-clothing/widgets.twee b/game/base-clothing/widgets.twee
index 5509ff0ea4..a55abf6f3c 100644
--- a/game/base-clothing/widgets.twee
+++ b/game/base-clothing/widgets.twee
@@ -273,7 +273,11 @@
 <<upperstrip>>
 <<lowerstrip>>
 <<underupperstrip>>
+<<if playerHasStrapon() and $args[0] isnot undefined>>
+<!-- keep wearing the strap-on -->
+<<else>>
 <<underlowerstrip>>
+<</if>>
 <<headstrip>>
 <<facestrip>>
 <<neckstrip>>
@@ -491,6 +495,12 @@
 			<<case "lower">><<set $lowerwet to 0>><<set $lowerwetstage to 0>>
 			<<case "under_upper">><<set $underupperwet to 0>><<set $underupperwetstage to 0>>
 			<<case "under_lower">><<set $underlowerwet to 0>><<set $underlowerwetstage to 0>>
+				<<if $worn.under_lower.type.includes("strap-on")>>
+					<<set $penisstate to "none">><<set $penisuse to "none">>
+					<<if $penistarget isnot undefined>>
+						<<set $NPCList[$penistarget].penis to 0>>
+					<</if>>
+				<</if>>
 		<</switch>>
 
 		/*Re-buy*/
@@ -696,6 +706,7 @@
 <<handson>>
 <<legson>>
 <<feeton>>
+<<buttplugon>>
 <<if $worn.upper.name is "naked" and $worn.lower.name is "naked" and $worn.under_lower.name is "naked" and $worn.under_upper.name is "naked">>
 <<else>>
 	You fix your clothing.
@@ -865,6 +876,12 @@
 <<generalOn "feet">>
 <</widget>>
 
+<<widget "buttplugon">>
+	<<if $worn.butt_plug isnot undefined and $worn.butt_plug.state is "removed">>
+		<<set $worn.butt_plug.state to "worn">>
+	<</if>>
+<</widget>>
+
 <<widget "clothesontowel">>
 <<upperon>>
 <<loweron>>
@@ -876,6 +893,7 @@
 <<handson>>
 <<legson>>
 <<feeton>>
+<<buttplugon>>
 <<if $worn.upper.name is "naked" and $worn.lower.name is "naked" and $worn.under_lower.name is "naked">>
 <<else>>
 	You fix your clothing.
@@ -902,6 +920,7 @@
 <<handson>>
 <<legson>>
 <<feeton>>
+<<buttplugon>>
 <<if $worn.upper.name is "naked" and $worn.lower.name is "naked" and $worn.under_lower.name is "naked">>
 <<else>>
 	You fix your clothing.
@@ -1648,6 +1667,7 @@
 	hands:false,
 	legs:false,
 	feet:false,
+	genitals:false,
 }>>
 <<for $_label, $_value range _otherOutfits>>
 	<<if $worn[$_label].outfitSecondary is undefined>>
diff --git a/game/base-combat/actions-anus.twee b/game/base-combat/actions-anus.twee
index 761b28d740..a20be5debd 100644
--- a/game/base-combat/actions-anus.twee
+++ b/game/base-combat/actions-anus.twee
@@ -32,10 +32,11 @@
 	<<if $consensual is 1 and ($promiscuity lte 74 and $enemytype is "man" or $deviancy lte 74 and $enemytype isnot "man") and !$promiscuityIgnore>>
 		<!-- Do Nothing -->
 	<<elseif $NPCList[$anustarget].stance isnot "topface" and ($enemytype isnot "man" or ($NPCList[$anustarget].location.genitals is 0 and $NPCList[$anustarget].location.head isnot "genitals"))>>
+		<<set _penis to (npcHasStrapon($anustarget) ? "strap-on" : "penis")>>
 		<<if $NPCList[$anustarget].chastity.penis.includes("chastity")>>
 			<<set _anusaction["Straddle " + $NPCList[$anustarget].pronouns.his + " " + $NPCList[$anustarget].chastity.penis] to "anustopenis">>
 		<<else>>
-			<<set _anusaction["Straddle " + $NPCList[$anustarget].pronouns.his + " penis"] to "anustopenis">>
+			<<set _anusaction["Straddle " + $NPCList[$anustarget].pronouns.his + " " + _penis] to "anustopenis">>
 		<</if>>
 	<</if>>
 <</if>>
@@ -78,7 +79,8 @@
 		<<if $consensual is 1 and (($promiscuity lte 74 and $enemytype is "man" or $deviancy lte 74 and $enemytype isnot "man") and !$promiscuityIgnore) or $NPCList[$anustarget].chastity.penis.includes("chastity")>>
 			<!-- Do Nothing -->
 		<<else>>
-			<<set _anusaction["Envelop " + $NPCList[$anustarget].pronouns.his + " penis"] to "anuspenisfuck">>
+			<<set _penis to (npcHasStrapon($anustarget) ? "strap-on" : "penis")>>
+			<<set _anusaction["Envelop " + $NPCList[$anustarget].pronouns.his + " " + _penis] to "anuspenisfuck">>
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/game/base-combat/actions-feet.twee b/game/base-combat/actions-feet.twee
index 8de56c27b0..7886171b2a 100644
--- a/game/base-combat/actions-feet.twee
+++ b/game/base-combat/actions-feet.twee
@@ -45,6 +45,7 @@
 <<if $feettarget isnot "self">>
 	<<set _stanceCheck to $NPCList[$feettarget].stance>>
 
+	<<set $_penis to (npcHasStrapon($feettarget) ? "strap-on" : "penis")>>
 	<<if $consensual is 1 and ($promiscuity lte 34 and $enemytype is "man" or $deviancy lte 34 and $enemytype isnot "man") and !$promiscuityIgnore>>
 		<!-- Do Nothing -->
 	<<elseif _stanceCheck isnot "topface">>
@@ -52,7 +53,7 @@
 			<<if $NPCList[$feettarget].chastity.penis.includes("chastity")>>
 				<<set _feetaction["Press your foot on " + $NPCList[$feettarget].pronouns.his + " " + $NPCList[$feettarget].chastity.penis] to "grab">>
 			<<elseif !($leftleg isnot 0 or $rightleg isnot 0)>>
-				<<set _feetaction["Grab "+ $NPCList[$feettarget].pronouns.his + " penis"] to "grab">>
+				<<set _feetaction["Grab "+ $NPCList[$feettarget].pronouns.his + " " + $_penis] to "grab">>
 			<</if>>
 		<</if>>
 
diff --git a/game/base-combat/actions-hands.twee b/game/base-combat/actions-hands.twee
index 4f7ef33056..bf874a429c 100644
--- a/game/base-combat/actions-hands.twee
+++ b/game/base-combat/actions-hands.twee
@@ -52,19 +52,20 @@
 <<if $lefttarget isnot "self">>
 	<<set $_target to $NPCList[$lefttarget]>>
 	<<if $_target.penis is 0>>
+		<<set $_penis to (npcHasStrapon($lefttarget) ? "strap-on" : "penis")>>
 		<<if $consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 34 and !$promiscuityIgnore>>
 		<!-- Do Nothing -->
 		<<else>>
 			<<if $_target.chastity.penis.includes("chastity")>>
-				<<set _leftaction["Tease " + $_target.pronouns.his + " penis through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "leftgrab">>
+				<<set _leftaction["Tease " + $_target.pronouns.his + " " + $_penis + " through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "leftgrab">>
 			<<else>>
-				<<set _leftaction["Grab " + $_target.pronouns.his + " penis"] to "leftgrab">>
+				<<set _leftaction["Grab " + $_target.pronouns.his + " " + $_penis] to "leftgrab">>
 			<</if>>
 		<</if>>
 		<<if $_target.chastity.penis.includes("chastity")>>
-			<<set _leftaction["Stroke " + $_target.pronouns.his + " penis through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "leftstroke">>
+			<<set _leftaction["Stroke " + $_target.pronouns.his + " " + $_penis + " through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "leftstroke">>
 		<<else>>
-			<<set _leftaction["Stroke "+ $_target.pronouns.his + " penis"] to "leftstroke">>
+			<<set _leftaction["Stroke "+ $_target.pronouns.his + " " + $_penis] to "leftstroke">>
 		<</if>>
 	<</if>>
 <</if>>
@@ -276,6 +277,18 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <</if>>
 <</widget>>
 
+<<widget "leftdildowhack">>
+<<if $lefttarget isnot "self">>
+	<<if $NPCList[$lefttarget].lefthand is "dildo" or $NPCList[$lefttarget].righthand is "dildo">>
+		<<if ["dildo","riding crop","length of anal beads","flog"].contains($NPCList[$lefttarget].lefttool)>>
+			<<set _leftaction["Whack the "+ $NPCList[$lefttarget].lefttool +" away"] to "dildowhack">>
+		<<elseif ["dildo","riding crop","length of anal beads","flog"].contains($NPCList[$lefttarget].righttool)>>
+			<<set _leftaction["Whack the "+ $NPCList[$lefttarget].righttool +" away"] to "dildowhack">>
+		<</if>>
+	<</if>>
+<</if>>
+<</widget>>
+
 <<widget "leftFixAndCoverActions">>
 <<if $worn.lower.vagina_exposed is 1 and $worn.under_lower.vagina_exposed is 1>>
 	<<if $NPCList[0].state is "stalk" and $NPCList[0].legs isnot "run">>
@@ -473,19 +486,20 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <<if $righttarget isnot "self">>
 	<<set $_target to $NPCList[$righttarget]>>
 	<<if $_target.penis is 0>>
+		<<set $_penis to (npcHasStrapon($righttarget) ? "strap-on" : "penis")>>
 		<<if $consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 34 and !$promiscuityIgnore>>
 		<!-- Do Nothing -->
 		<<else>>
 			<<if $_target.chastity.penis.includes("chastity")>>
-				<<set _rightaction["Tease " + $_target.pronouns.his + " penis through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "rightgrab">>
+				<<set _rightaction["Tease " + $_target.pronouns.his + " " + $_penis + " through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "rightgrab">>
 			<<else>>
-				<<set _rightaction["Grab " + $_target.pronouns.his + " penis"] to "rightgrab">>
+				<<set _rightaction["Grab " + $_target.pronouns.his + " " + $_penis] to "rightgrab">>
 			<</if>>
 		<</if>>
 		<<if $_target.chastity.penis.includes("chastity")>>
-			<<set _rightaction["Stroke " + $_target.pronouns.his + " penis through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "rightstroke">>
+			<<set _rightaction["Stroke " + $_target.pronouns.his + " " + $_penis + " through " + $_target.pronouns.his + " " + $_target.chastity.penis] to "rightstroke">>
 		<<else>>
-			<<set _rightaction["Stroke " + $_target.pronouns.his + " penis"] to "rightstroke">>
+			<<set _rightaction["Stroke " + $_target.pronouns.his + " " + $_penis] to "rightstroke">>
 		<</if>>
 	<</if>>
 <</if>>
@@ -701,6 +715,18 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <</if>>
 <</widget>>
 
+<<widget "rightdildowhack">>
+<<if $righttarget isnot "self">>
+	<<if $NPCList[$righttarget].lefthand is "dildo" or $NPCList[$righttarget].righthand is "dildo">>
+		<<if ["dildo","riding crop","length of anal beads","flog"].contains($NPCList[$righttarget].lefttool)>>
+			<<set _rightaction["Whack the "+ $NPCList[$righttarget].lefttool +" away"] to "dildowhack">>
+		<<elseif ["dildo","riding crop","length of anal beads","flog"].contains($NPCList[$righttarget].righttool)>>
+			<<set _rightaction["Whack the "+ $NPCList[$righttarget].righttool +" away"] to "dildowhack">>
+		<</if>>
+	<</if>>
+<</if>>
+<</widget>>
+
 <<widget "rightFixAndCoverActions">>
 
 <<if $worn.lower.vagina_exposed is 1 and $worn.under_lower.vagina_exposed is 1>>
@@ -1476,6 +1502,72 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <</if>>
 <</widget>>
 
+<<widget "effectsdildowhack">>
+<!--todo: maybe add some botched tattoos if pen is too close -->
+<<if $leftaction is "dildowhack">>
+	<<set $leftaction to 0>>
+	<<set $_target to $NPCList[$lefttarget]>>
+	<<if typeof($_target.lefthand) is "string" and $_target.lefthand.includes("dildo")>>
+		You whack the <<print $_target.lefttool>> from the <<personselect $lefttarget>><<persons>> hand.
+		<<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Robin" and $NPCName[$NPCNameList.indexOf("Robin")].rage lte 35) or $_target.type is "plant">>
+			<<He>> pouts at you.
+			<<brat 2 $lefttarget>>
+		<<elseif $consensual is 1>>
+			Disappointment flashes across <<his>> face.
+			<<brat 2 $lefttarget>>
+		<<else>>
+			Anger flashes across <<his>> face.
+			<<brat 5 $lefttarget>>
+		<</if>>
+		<<brat 5 $lefttarget>><<set $_target.lefthand to 0>><<set $_target.lefttool to 0>>
+	<<elseif typeof($_target.righthand) is "string" and $_target.righthand.includes("dildo")>>
+		You whack the <<print $_target.righttool>> from the <<personselect $lefttarget>><<persons>> hand.
+		<<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Robin" and $NPCName[$NPCNameList.indexOf("Robin")].rage lte 35) or $_target.type is "plant">>
+			<<He>> pouts at you.
+			<<brat 2 $lefttarget>>
+		<<elseif $consensual is 1>>
+			Disappointment flashes across <<his>> face.
+		<<else>>
+			Anger flashes across <<his>> face.
+			<<brat 5 $lefttarget>>
+		<</if>>
+		<<brat 5 $lefttarget>><<set $_target.righthand to 0>><<set $_target.righttool to 0>>
+	<</if>>
+<</if>>
+
+<<if $rightaction is "dildowhack">>
+	<<set $rightaction to 0>>
+	<<set $_target to $NPCList[$righttarget]>>
+	<<if typeof($_target.lefthand) is "string" and $_target.lefthand.includes("dildo")>>
+		You whack the <<print $_target.lefttool>> from the <<personselect $righttarget>><<persons>> hand.
+		<<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Robin" and $NPCName[$NPCNameList.indexOf("Robin")].rage lte 35) or $_target.type is "plant">>
+			<<He>> pouts at you.
+			<<brat 2 $righttarget>>
+		<<elseif $consensual is 1>>
+			Disappointment flashes across <<his>> face.
+			<<brat 2 $righttarget>>
+		<<else>>
+			Anger flashes across <<his>> face.
+			<<brat 5 $righttarget>>
+		<</if>>
+		<<brat 5 $righttarget>><<set $_target.lefthand to 0>><<set $_target.lefttool to 0>>
+	<<elseif typeof($_target.righthand) is "string" and $_target.righthand.includes("dildo")>>
+		You whack the <<print $_target.righttool>> from the <<personselect $righttarget>><<persons>> hand.
+		<<if $_target.fullDescription is "Sydney" or ($_target.fullDescription is "Robin" and $NPCName[$NPCNameList.indexOf("Robin")].rage lte 35) or $_target.type is "plant">>
+			<<He>> pouts at you.
+			<<brat 2 $righttarget>>
+		<<elseif $consensual is 1>>
+			Disappointment flashes across <<his>> face.
+			<<brat 2 $righttarget>>
+		<<else>>
+			Anger flashes across <<his>> face.
+			<<brat 5 $righttarget>>
+		<</if>>
+		<<brat 5 $righttarget>><<set $_target.righthand to 0>><<set $_target.righttool to 0>>
+	<</if>>
+<</if>>
+<</widget>>
+
 <<widget "effectshandsfreeface">>
 	<<if $leftaction is "freeface" or $rightaction is "freeface">>
 		<<if $leftaction is "freeface" and $rightaction is "freeface">>
@@ -1742,6 +1834,14 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 		<<case "socks">> <<combat-hand-on-socks $_hand>>
 		<<case "shackle_imminent">> <<combat-hand-on-shackle $_hand>>
 		<<case "shackle_entrance">> <<combat-hand-on-shackle-imminent $_hand>>
+		<<case "dildo_reveal">> <<combat-reveal-sextoy $_hand>>
+		<<case "dildo">> <<combat-hand-on-sextoy $_hand>>
+		<<case "onahole">> <<combat-onahole-on-penisentrance $_hand>>
+		<<case "vaginadildo">> <<combat-dildo-on-vagina $_hand>>
+		<<case "anusdildo">> <<combat-dildo-on-anus $_hand>>
+		<<case "penisdildo">> <<combat-dildo-on-penis $_hand>>
+		<<case "penisonahole">> <<combat-onahole-on-penis $_hand>>
+		<<case "buttplug">> <<combat-hand-on-buttplug $_hand>>
 		<<case 0>> <<combat-set-hand-start $_hand>>
 		<<default>> <<run console.error("NPC hand action unaccounted for! Hand: " + $hand + " Value: " + $_npcHand)>> <<run throw new Error("NPC hand action unaccounted for! Hand: " + $hand + " Value: " + $_npcHand)>>
 	<</switch>>
diff --git a/game/base-combat/actions-mouth.twee b/game/base-combat/actions-mouth.twee
index 0a34da0333..44beef4cfb 100644
--- a/game/base-combat/actions-mouth.twee
+++ b/game/base-combat/actions-mouth.twee
@@ -124,6 +124,8 @@
 	<<if $NPCList[$mouthtarget].penis is 0 and ($enemytype isnot "man" or ($NPCList[$mouthtarget].location.genitals is 0 and $NPCList[$mouthtarget].location.head isnot "head")) and !$worn.face.type.includes("covered") and !$worn.face.type.includes("gag")>>
 		<<if $NPCList[$mouthtarget].chastity.penis.includes("chastity")>>
 			<<set _mouthaction["Move your head to " + $NPCList[$mouthtarget].pronouns.his + " " + $NPCList[$mouthtarget].chastity.penis] to "mouth">>
+		<<elseif npcHasStrapon($mouthtarget)>>
+			<<set _mouthaction["Move your lips to " + $NPCList[$mouthtarget].pronouns.his + " strap-on"] to "mouth">>
 		<<else>>
 			<<set _mouthaction["Move your lips to " + $NPCList[$mouthtarget].pronouns.his + " penis"] to "mouth">>
 		<</if>>
@@ -165,9 +167,10 @@
 <<widget "oralswallownew">>
 <<if $consensual is 1 and ($promiscuity lte 74 and $enemytype is "man" or $deviancy lte 74 and $enemytype isnot "man") and !$promiscuityIgnore>>
 <<else>>
+	<<set $_pp to (npcHasStrapon($mouthtarget) ? "strap-on" : "penis")>>
 	<<set $_npc to $NPCList[$mouthtarget]>> <<set $_facetype to $worn.face.type>>
 	<<if !$_npc.chastity.penis.includes("chastity") and ($_npc.penis is "mouthentrance" or $_npc.penis is "mouthimminent") and !$_facetype.includes("covered") and !$_facetype.includes("gag")>>
-		<<set _mouthaction["Take " + $NPCList[$mouthtarget].pronouns.his + " penis into your mouth"] to "swallow">>
+		<<set _mouthaction["Take " + $NPCList[$mouthtarget].pronouns.his + " " + $_pp + " into your mouth"] to "swallow">>
 	<</if>>
 <</if>>
 <</widget>>
diff --git a/game/base-combat/actions-penis.twee b/game/base-combat/actions-penis.twee
index d4a8eb8698..2e85a8af85 100644
--- a/game/base-combat/actions-penis.twee
+++ b/game/base-combat/actions-penis.twee
@@ -28,7 +28,7 @@
 <</widget>>
 
 <<widget "actionspenistovaginanew">>
-<<if !$worn.genitals.type.includes("chastity")>>
+<<if !$worn.genitals.type.includes("chastity") or playerHasStrapon()>>
 	<<set $_target to $NPCList[$penistarget]>>
 	<<if $_target.vagina is 0>>
 		<<if $consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 74 and !$promiscuityIgnore>>
@@ -53,12 +53,14 @@
 		<<set _pp to "">>
 		<<if $_target.chastity.penis.includes("chastity")>>
 			<<set _pp to "caged penis">>
-		<<elseif $_target.penisdesc.includes("strap-on")>>
+		<<elseif npcHasStrapon($penistarget)>>
 			<<set _pp to "strap-on cock">>
 		<<else>>
 			<<set _pp to "penis">>
 		<</if>>
-		<<if $worn.genitals.type.includes("chastity")>>
+		<<if playerHasStrapon()>>
+			<<set _penisaction["Push your strap-on against " + $_target.pronouns.his + " " + _pp] to "penistopenisfuck">>
+		<<elseif $worn.genitals.type.includes("chastity")>>
 			<<set _penisaction["Push your chastity against " + $_target.pronouns.his + " " + _pp] to "penistopenisfuck">>
 		<<else>>
 			<<set _penisaction["Push your penis against " + $_target.pronouns.his + " " + _pp] to "penistopenisfuck">>
@@ -75,6 +77,8 @@
 	<<elseif $_target.stance isnot "topface" and ($enemytype isnot "man" or ($_target.location.genitals is 0 and $_target.location.head isnot "genitals"))>>
 		<<if $_target.chastity.penis.includes("chastity")>>
 			<<set _penisaction["Frot " + $_target.pronouns.his + " " + $_target.chastity.penis] to "penistopenis">>
+		<<elseif npcHasStrapon($penistarget)>>
+			<<set _penisaction["Frot " + $_target.pronouns.his + " strap-on"] to "penistopenis">>
 		<<else>>
 			<<set _penisaction["Frot " + $_target.pronouns.his + " penis"] to "penistopenis">>
 		<</if>>
@@ -155,7 +159,7 @@
 
 <<widget "actionspenistoanusnew">>
 <<set $_target to $NPCList[$penistarget]>>
-<<if !$worn.genitals.type.includes("chastity")>>
+<<if !$worn.genitals.type.includes("chastity") or playerHasStrapon()>>
 	<<if $_target.stance isnot "topface">>
 		<<if $_target.vagina is 0 or $_target.penis is 0>>
 			<<if $consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 74 and !$promiscuityIgnore>>
@@ -201,7 +205,7 @@
 <</widget>>
 
 <<widget "actionspenisvaginafucknew">>
-<<if !$worn.genitals.type.includes("chastity") and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1>>
+<<if (!$worn.genitals.type.includes("chastity") or playerHasStrapon()) and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1>>
 	<<set $_target to $NPCList[$penistarget]>>
 	<<if $_target.vagina is "penisentrance" or $_target.vagina is "penisimminent">>
 		<<if $consensual is 1 and (($enemytype is "man" ? $promiscuity : $deviancy) lte 74 and !$promiscuityIgnore) or $_target.chastity.vagina.includes("chastity")>>
@@ -243,7 +247,7 @@
 <</widget>>
 
 <<widget "actionspenisanusfucknew">>
-<<if !$worn.genitals.type.includes("chastity") and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1>>
+<<if (!$worn.genitals.type.includes("chastity") or playerHasStrapon()) and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1>>
 	<<set $_target to $NPCList[$penistarget]>>
 	<<if $_target.vagina is "otheranusentrance" or $_target.vagina is "otheranusimminent" or $_target.penis is "otheranusentrance" or $_target.penis is "otheranusimminent">>
 		<<if $_target.chastity.anus.includes("shield") or ($consensual is 1 and !$promiscuityIgnore and ($enemytype is "man" ? $promiscuity : $deviancy) lte 74)>>
@@ -457,7 +461,7 @@
 	<<if random(0,1) is 1 or ($penisWetness + ($penileskill / 10)) gte ($penissize * 15) + random(1, 40)>>
 		<<set $_target to $NPCList[$penistarget]>>
 		<<set $_target.vagina to "penis">><<set $penisactiondefault to "cooperate">>
-		<<if $player.virginity.penile isnot true>>
+		<<if $player.virginity.penile isnot true or playerHasStrapon()>>
 			<<penis_lube_text>> <span class="pink">you <<peniletext>> thrust deep into <<combatpersons>> pussy.</span>
 			<<sex 30 $penistarget>>
 		<<elseif $player.virginity.penile is true>>
@@ -492,7 +496,7 @@
 			<<set $_target.penis to "otheranus">>
 		<</if>>
 		<<set $penisactiondefault to "otheranuscooperate">>
-		<<if $player.virginity.penile isnot true>>
+		<<if $player.virginity.penile isnot true or playerHasStrapon()>>
 			<<penis_lube_text>> <span class="pink">you <<peniletext>> thrust deep into <<combatpersons>> ass.</span>
 			<<sex 30 $penistarget>>
 		<<elseif $player.virginity.penile is true>>
@@ -529,7 +533,7 @@
 			<<if $rightarm is "coverpenis">>
 				<<set $rightarm to 0>>
 			<</if>>
-			<span class="lblue">You caress <<combatpersons>> <<npcPenisSimple $penistarget>> with your penis<<if $worn.genitals.type.includes("chastity")>>, through your $worn.genitals.name<</if>>.</span>
+			<span class="lblue">You caress <<combatpersons>> <<npcPenisSimple $penistarget>> with your <<cock>><<if $worn.genitals.type.includes("chastity")>>, through your $worn.genitals.name<</if>>.</span>
 			<<if $enemytype is "beast">>
 				<<set $_target.stance to "top">>
 			<</if>>
diff --git a/game/base-combat/actions-speech.twee b/game/base-combat/actions-speech.twee
index eb8e26b355..9a16162ceb 100644
--- a/game/base-combat/actions-speech.twee
+++ b/game/base-combat/actions-speech.twee
@@ -35,6 +35,15 @@
 				<<set _askActions["to not choke you" + _diffText] to "nochoke">>
 			<</if>>
 		<</if>>
+		
+        <<set $_npcname to $npc[$npcrow.indexOf($mouthtarget)]>>
+        <<if ["Robin","Kylar","Alex","Avery","Whitney","Eden","Sydney"].includes($_npcname) and !npcHasStrapon($mouthtarget)
+            and [0, "clothed"].includes($NPCList[$mouthtarget].vagina)>>
+            <<if ["Avery","Whitney"].includes($_npcname) or $npc[$npcrow.indexOf($mouthtarget)] is $_npcname and $giftStrapon[$_npcname] is "given">>
+                <<set _askActions["to wear a strap-on"] to "wearStrapon">>
+            <</if>>
+        <</if>>
+
 	<<else>>
 		<<set _mouthaction["Scream"] to "scream">>
 		<<set _mouthaction["Plead"] to "plead">>
diff --git a/game/base-combat/actions-text.twee b/game/base-combat/actions-text.twee
index 027a78d15b..1a542979a1 100644
--- a/game/base-combat/actions-text.twee
+++ b/game/base-combat/actions-text.twee
@@ -4575,15 +4575,15 @@ _otheraction _youraction
 <</widget>>
 
 <<widget "actionsclitrub">>
-You <<peniletext>> frot your penis against <<their $args[0]>> clit.
+You <<peniletext>> frot your <<cock>> against <<their $args[0]>> clit.
 <</widget>>
 
 <<widget "actionspussyrub">>
-You <<peniletext>> rub your penis against <<their $args[0]>> pussy.
+You <<peniletext>> rub your <<cock>> against <<their $args[0]>> pussy.
 <</widget>>
 
 <<widget "actionspussytease">>
-You <<peniletext>> rub your penis against <<their $args[0]>> labia.
+You <<peniletext>> rub your <<cock>> against <<their $args[0]>> labia.
 <</widget>>
 
 <<widget "actionspussythrust">><<silently>>
@@ -5276,9 +5276,9 @@ You <<peniletext>> tease <<their $args[0]>> anus with your <<penis>>.
 
 <<widget "actionsvaginadoubleescape">>
 	<<set $_penises to "penises">>
-	<<if $NPCList[$vaginatarget].penisdesc.includes("strap-on") and $NPCList[$vaginadoubletarget].penisdesc.includes("strap-on")>>
+	<<if npcHasStrapon($vaginatarget) and npcHasStrapon($vaginadoubletarget)>>
 		<<set $_penises to "strap-ons">>
-	<<elseif $NPCList[$vaginatarget].penisdesc.includes("strap-on") and $NPCList[$vaginadoubletarget].penisdesc.includes("strap-on")>>
+	<<elseif npcHasStrapon($vaginatarget) and !npcHasStrapon($vaginadoubletarget) or !npcHasStrapon($vaginatarget) and npcHasStrapon($vaginadoubletarget)>>
 		<<set $_penises to "cocks">>
 	<</if>>
 	<<if $pain lte 20>>
@@ -5372,9 +5372,9 @@ You <<peniletext>> tease <<their $args[0]>> anus with your <<penis>>.
 
 <<widget "actionsanusdoubleescape">>
 	<<set $_penises to "penises">>
-	<<if $NPCList[$anustarget].penisdesc.includes("strap-on") and $NPCList[$anusdoubletarget].penisdesc.includes("strap-on")>>
+	<<if npcHasStrapon($anustarget) and npcHasStrapon($anusdoubletarget)>>
 		<<set $_penises to "strap-ons">>
-	<<elseif $NPCList[$anustarget].penisdesc.includes("strap-on") and $NPCList[$anusdoubletarget].penisdesc.includes("strap-on")>>
+	<<elseif npcHasStrapon($anustarget) and !npcHasStrapon($anusdoubletarget) or !npcHasStrapon($anustarget) and npcHasStrapon($anusdoubletarget)>>
 		<<set $_penises to "cocks">>
 	<</if>>
 	<<if $pain lte 20>>
diff --git a/game/base-combat/actions-vagina.twee b/game/base-combat/actions-vagina.twee
index 67e92d91d5..5b16d8b339 100644
--- a/game/base-combat/actions-vagina.twee
+++ b/game/base-combat/actions-vagina.twee
@@ -84,6 +84,8 @@
 	<<elseif $NPCList[$vaginatarget].stance isnot "topface" and ($enemytype isnot "man" or ($NPCList[$vaginatarget].location.genitals is 0 and $NPCList[$vaginatarget].location.head isnot "genitals"))>>
 		<<if $NPCList[$vaginatarget].chastity.penis.includes("chastity")>>
 			<<set _vaginaaction["Straddle " + $NPCList[$vaginatarget].pronouns.his + " " + $NPCList[$vaginatarget].chastity.penis] to "vaginatopenis">>
+		<<elseif npcHasStrapon($vaginatarget)>>
+			<<set _vaginaaction["Straddle " + $NPCList[$vaginatarget].pronouns.his + " strap-on"] to "vaginatopenis">>
 		<<else>>
 			<<set _vaginaaction["Straddle " + $NPCList[$vaginatarget].pronouns.his + " penis"] to "vaginatopenis">>
 		<</if>>
@@ -148,7 +150,8 @@
 		<<if $consensual is 1 and (($promiscuity lte 74 and $enemytype is "man" or $deviancy lte 74 and $enemytype isnot "man") and !$promiscuityIgnore) or $NPCList[$vaginatarget].chastity.penis.includes("chastity")>>
 			<!-- Do Nothing -->
 		<<else>>
-			<<set _vaginaaction["Envelop " + $NPCList[$vaginatarget].pronouns.his + " penis"] to "vaginapenisfuck">>
+			<<set _penis to (npcHasStrapon($vaginatarget) ? "strap-on" : "penis")>>
+			<<set _vaginaaction["Envelop " + $NPCList[$vaginatarget].pronouns.his + " " + _penis] to "vaginapenisfuck">>
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/game/base-combat/actionsGeneration.twee b/game/base-combat/actionsGeneration.twee
index 9d7f10cfee..96748b3d22 100644
--- a/game/base-combat/actionsGeneration.twee
+++ b/game/base-combat/actionsGeneration.twee
@@ -75,7 +75,7 @@
 			<<mouthActionInit>>
 		</div>
 
-		<<if $player.penisExist>>
+		<<if $player.penisExist or $worn.genitals.type.includes("strap-on") or playerHasStrapon()>>
 			<div id="penisaction" @class="$combatControls + 'Control'">
 				<<penisActionInit>>
 			</div>
@@ -192,7 +192,7 @@
 <<replace #rightaction>><<rightActionInit true>><</replace>>
 <<replace #feetaction>><<feetActionInit true>><</replace>>
 <<replace #mouthaction>><<mouthActionInit true>><</replace>>
-<<if $player.penisExist>>
+<<if $player.penisExist or $worn.genitals.type.includes("strap-on") or playerHasStrapon()>>
 	<<replace #penisaction>><<penisActionInit true>><</replace>>
 <</if>>
 <<if $player.vaginaExist>>
@@ -404,6 +404,7 @@
 			<<leftshacklewhack>>
 			<<handsstrugglefreebodypart "left">>
 			<<leftUndressOther>>
+			<<leftdildowhack>>
 		<<case "penis">>
 			<<if $NPCList[$lefttarget].chastity.penis.includes("chastity")>>
 				<<set _leftaction["Tease " + $NPCList[$lefttarget].pronouns.him] to "leftwork">>
@@ -633,6 +634,7 @@
 			<<rightshacklewhack>>
 			<<handsstrugglefreebodypart "right">>
 			<<rightUndressOther>>
+			<<rightdildowhack>>
 		<<case "penis">>
 			<<if $NPCList[$righttarget].chastity.penis.includes("chastity")>>
 				<<set _rightaction["Tease " + $NPCList[$righttarget].pronouns.him] to "rightwork">>
@@ -1651,7 +1653,7 @@
 			<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s <<npcPenis _j>> presses against your anus.</span>
 		<<case "penetrated">>
 			<<set _anusOptions to "penisPenetration">><<selectNpcWithPartInPosition "penis" "anus">><<set $anustarget to _j>>
-			<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s penis penetrates your anus.</span>
+			<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s <<npcPenisSimple _j>> penetrates your anus.</span>
 			<<if $analdoubledisable is "f">>
 				<<getDoubleTargetList>>
 			<</if>>
@@ -1672,7 +1674,7 @@
 				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks hover near your <<bottom>>.</span>
 			<<elseif ($NPCList[$anustarget].penis is "anusdouble" and $NPCList[$anusdoubletarget].penis is "anusdoubleentrance") or ($NPCList[$anustarget].penis is "anusdoubleentrance" and $NPCList[$anusdoubletarget].penis is "anusdouble")>>
 				<<selectNpcWithPartInPosition "penis" "anusdouble">>
-				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s penis penetrates your anus while the other penis hovers nearby.</span>
+				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s <<npcPenisSimple _j>> penetrates your anus while the other penis hovers nearby.</span>
 			<<else>>
 				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks hover near your <<bottom>>.</span>
 			<</if>>
@@ -1682,7 +1684,7 @@
 				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks press against your anus.</span>
 			<<elseif ($NPCList[$anustarget].penis is "anusdouble" and $NPCList[$anusdoubletarget].penis is "anusdoubleimminent") or ($NPCList[$anustarget].penis is "anusdoubleimminent" and $NPCList[$anusdoubletarget].penis is "anusdouble")>>
 				<<selectNpcWithPartInPosition "penis" "anusdouble">>
-				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s penis penetrates your anus while the other penis presses against the entrance.</span>
+				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')"><<combatPerson>>'s <<npcPenisSimple _j>> penetrates your anus while the other penis presses against the entrance.</span>
 			<<else>>
 				<span @class="($lastOptions.anus isnot _anusOptions or _anusGold ?'gold':'')">Their cocks press against your anus.</span>
 			<</if>>
@@ -1819,7 +1821,7 @@
 	<<switch $chestuse>>
 	<<case "penis">>
 		<<set _chestOptions to "penis">><<selectNpcWithPartInPosition "penis" "chest">><<set $chesttarget to _j>>
-		<span @class="($lastOptions.chest isnot _chestOptions ?'gold':'')"><<combatPerson>>'s penis rests <<print ($breastsize is 0 ?"against":"between")>> your <<breasts>>.</span>
+		<span @class="($lastOptions.chest isnot _chestOptions ?'gold':'')"><<combatPerson>>'s <<npcPenisSimple _j>> rests <<print ($breastsize is 0 ?"against":"between")>> your <<breasts>>.</span>
 	<<case "tentaclerub">>
 		<<set $_changetype to true>><<chestActionInitTentacle>>
 	<</switch>>
@@ -2684,7 +2686,7 @@
 				<</if>>
 			<</switch>>
 
-			<<if $player.penisExist>>
+			<<if $player.penisExist or $worn.genitals.type.includes("strap-on") or playerHasStrapon()>>
 				<<switch $penistarget>>
 				<<case "tentacles">>
 					<div id="penisaction" @class="$combatControls + 'Control'">
diff --git a/game/base-combat/audience.twee b/game/base-combat/audience.twee
index 53ad8ffb73..06ebc5b6f6 100644
--- a/game/base-combat/audience.twee
+++ b/game/base-combat/audience.twee
@@ -143,7 +143,21 @@
 			<</if>>
 		<</if>>
 	<<elseif $penisstate is "otheranus">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			<<if $orgasmdown gte 1>>
+				<<if $face is "covered">>
+					"Move your hands, I want to see what you look like while cumming."
+				<<else>>
+					"I think you're making <<phim>> cum. Fuck <<phim>> harder."
+				<</if>>
+			<<else>>
+				<<if $face is "covered">>
+					"You're shy about fucking someone's ass? That's adorable."
+				<<else>>
+					"Look how cute <<pshe>> looks with <<pher>> strap-on being pounded. Fuck harder."
+				<</if>>
+			<</if>>
+		<<elseif $orgasmdown gte 1>>
 			<<if $face is "covered">>
 				"Move your hands, I want to see what you look like while cumming in someone's ass."
 			<<else>>
@@ -1012,7 +1026,7 @@
 	<<elseif $vaginastate isnot 0 and $vaginastate.startsWith("double")>>
 		<<if $NPCList[$vaginatarget].penis is "vaginadouble" and $NPCList[$vaginadoubletarget].penis is "vaginadouble">>
 			<<if $orgasmdown gte 1>>
-				"This is the money shot! Look at <<phim>> shake with two cocks in <<pher>> ass!"
+				"This is the money shot! Look at <<phim>> shake with two cocks in <<pher>> pussy!"
 			<<else>>
 				<<set _myrng to random(1,2)>>
 				<<switch _myrng>>
@@ -1030,37 +1044,49 @@
 			<</if>>
 		<</if>>
 	<<elseif $penisstate is "penetrated">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"Wow, look at the pussy pounding that strap-on!"
+		<<elseif $orgasmdown gte 1>>
 			"I got a nice shot of <<phim>> shuddering in that pussy."
 		<<else>>
 			"Wow, <<pher>> penis is really getting a pounding."
 		<</if>>
 	<<elseif $penisstate is "imminent">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"I need to catch the moment <<pher>> strap-on penetrates!"
+		<<elseif $orgasmdown gte 1>>
 			"<<pHer>> penis is twitching and it's not even in yet. Such a slut."
 		<<else>>
 			"I hope I catch the moment <<pher>> penis is first violated."
 		<</if>>
 	<<elseif $penisstate is "entrance">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"Hope <<pshe>> knows how to use that thing!"
+		<<elseif $orgasmdown gte 1>>
 			"<<pShes>> cumming from such little stimulation, fucking <<phim>> might break <<phim>> fully."
 		<<else>>
 			"Your penis is about to get the treatment it deserves."
 		<</if>>
 	<<elseif $penisstate is "otheranus">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"I got a nice shot of <<pher>> strap-on pounding that ass!"
+		<<elseif $orgasmdown gte 1>>
 			"I got a nice shot of <<phim>> shuddering in that ass."
 		<<else>>
 			"Wow, <<pher>> penis is really getting a pounding."
 		<</if>>
 	<<elseif $penisstate is "otheranusimminent">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"Hope <<pshe>> knows how to use that thing!"
+		<<elseif $orgasmdown gte 1>>
 			"<<pHer>> penis is twitching and it's not even in yet. Such a slut."
 		<<else>>
 			"I hope I catch the moment <<pher>> penis is first violated."
 		<</if>>
 	<<elseif $penisstate is "otheranusentrance">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"I hope to see <<pher>> toy ruin that ass."
+		<<elseif $orgasmdown gte 1>>
 			"<<pShes>> cumming from such little stimulation, fucking <<phim>> might break <<phim>> fully."
 		<<else>>
 			"Your penis is about to get the treatment it deserves."
@@ -1084,19 +1110,25 @@
 			"Does <<pher>> pussy taste good?"
 		<</if>>
 	<<elseif $penisstate is "othermouth">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"Wow, you're really mouth-fucking <<pher>> strap-on!"
+		<<elseif $orgasmdown gte 1>>
 			"Does <<pher>> cum taste good?"
 		<<else>>
 			"I can tell <<pshes>> cumming into your mouth."
 		<</if>>
 	<<elseif $penisstate is "othermouthimminent">>
+		<<elseif playerHasStrapon()>>
+			"That's right, swallow that toy."
 		<<if $orgasmdown gte 1>>
 			"Take <<phim>> into your mouth already, I want to see <<phim>> squirm more."
 		<<else>>
 			"Does <<pher>> penis taste good?"
 		<</if>>
 	<<elseif $penisstate is "othermouthentrance">>
-		<<if $orgasmdown gte 1>>
+		<<if playerHasStrapon()>>
+			"I want to see you swallow <<pher>> toy."
+		<<elseif $orgasmdown gte 1>>
 			"Take <<phim>> into your mouth already, I want to see <<phim>> squirm more."
 		<<else>>
 			"Does <<pher>> penis taste good?"
@@ -1111,6 +1143,8 @@
 				<<else>>
 					"Are those spasms from cumming?"
 				<</if>>
+			<<elseif playerHasStrapon()>>
+				"Are those spasms from cumming?"
 			<<elseif $player.penisExist>>
 				<<if $devstate gte 1 and $orgasmcount lt 24>>
 					<<if $rng gte 67>>
diff --git a/game/base-combat/beast.twee b/game/base-combat/beast.twee
index c2782ad8eb..699c8d889d 100644
--- a/game/base-combat/beast.twee
+++ b/game/base-combat/beast.twee
@@ -551,7 +551,7 @@
 			<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
 				<<bHe>> <<beast_growls_text>> and fucks your <<penis>> with <<bhis>> ass, <<bhis>> movements violent and erratic.
 			<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-				<<bHe>> <<beast_growls_text>> as <<bhe>> pushes back against your penis.
+				<<bHe>> <<beast_growls_text>> as <<bhe>> pushes back against your <<cock>>.
 			<<else>>
 				<<bHe>> <<beast_growls_text>> and fucks your <<penis>> with rough movements.
 			<</if>>
@@ -587,7 +587,7 @@
 			<<if ($penissize is -1 and $arousal lte ($arousalmax / 10) * 9) or ($penissize is -2 and $arousal lte ($arousalmax / 20) * 19)>>
 				<<bHe>> presses <<bhis>> ass against your <<penis>>, trying to force an erection.
 				<<set $enemyanger += 5>><<arousal 300>><<set $speechotheranuswithhold to 1>>
-			<<elseif $player.virginity.penile isnot true>>
+			<<elseif $player.virginity.penile isnot true or playerHasStrapon()>>
 				<span class="pink"><<bHe>> eases your <<penis>> into <<bhis>> ass, swallowing you to the base.</span>
 				<<sex 30>><<set $NPCList[_n].penis to "otheranus">><<takeVirginity $NPCList[_n].fullDescription "penile">><<takeNPCVirginity _n "anal">><<penilestat>><<bruise penis>><<violence 1>><<raped>><<penisraped>><<set $penisstate to "otheranus">><<set $speechotheranuspenetrated to 1>>
 			<<elseif $player.virginity.penile is true>>
@@ -682,12 +682,12 @@
 	<<if $rng gte 1>>
 		<<if $enemyarousal gte $enemyarousalmax * 0.8>>
 			<<bHe>> slams <<bhis>> penis against yours with a bestial fervour as <<bhe>> approaches orgasm.
-			<<if $penisWetness gte 45>>
+			<<if $penisWetness gte 45 and !playerHasStrapon()>>
 				<span class="purple">Your precum mingles.</span><<purity -1>>
 			<</if>>
 		<<elseif $enemyarousal gte $enemyarousalmax * 0.6>>
 			<<bHe>> thrusts <<bhis>> penis against yours with increasing fervour.
-			<<if $penisWetness gte 45>>
+			<<if $penisWetness gte 45 and !playerHasStrapon()>>
 				<span class="purple">Your precum mingles.</span><<purity -1>>
 			<</if>>
 		<<elseif $enemyarousal gte $enemyarousalmax * 0.4>>
@@ -764,7 +764,7 @@
 	<<bHe>> presses <<bhis>> pussy against your <<penis>>, trying to force an erection.
 	<<set $enemyanger += 5>><<arousal 300>><<set $speechpeniswithhold to 1>>
 <<elseif $NPCList[_n].vagina is "penisimminent">>
-	<<if $player.virginity.penile isnot true>>
+	<<if $player.virginity.penile isnot true or playerHasStrapon()>>
 		<span class="pink"><<bHe>> takes your <<penis>> deep into <<bhis>> <<pussy>>.</span>
 		<<sex 30>><<set $NPCList[_n].vagina to "penis">><<penilestat>><<bruise penis>><<violence 2>><<raped>><<penisraped>><<set $penisstate to "penetrated">>
 	<<elseif $player.virginity.penile is true>>
@@ -978,7 +978,7 @@
 			<<if (($penissize is -1 and $arousal lte ($arousalmax / 10) * 9) or ($penissize is -2 and $arousal lte ($arousalmax / 20) * 19))>>
 				<<bHe>> presses <<bhis>> ass against your <<penis>>, trying to force an erection.
 				<<set $enemyanger += 5>><<arousal 300>><<set $speechotheranuswithhold to 1>>
-			<<elseif $player.virginity.penile isnot true>>
+			<<elseif $player.virginity.penile isnot true or playerHasStrapon()>>
 				<span class="pink"><<bHe>> eases your <<penis>> into <<bhis>> ass, swallowing you to the base.</span>
 				<<sex 30>><<set $NPCList[_n].vagina to "otheranus">><<takeVirginity $NPCList[_n].fullDescription "penile">><<takeNPCVirginity _n "anal">><<penilestat>><<bruise penis>><<violence 1>><<raped>><<penisraped>><<set $penisstate to "otheranus">><<set $speechotheranuspenetrated to 1>>
 			<<elseif $player.virginity.penile is true>>
@@ -1081,7 +1081,7 @@
 			<<bHe>> licks around your $worn.genitals.name. <<bHe>> salivates in anticipation.
 			<<sex 25>>
 		<<elseif $nopenile is 0>>
-			<<if $player.virginity.penile isnot true or $virginitytest isnot 1>>
+			<<if $player.virginity.penile isnot true or $virginitytest isnot 1 or playerHasStrapon()>>
 				<span class="pink"><<bHe>> pulls your <<penis>> into <<bhis>> mouth with <<bhis>> tongue.</span>
 				<<sex 30>><<set $NPCList[_n].mouth to "penis">><<takeNPCVirginity _n "oral">><<penilestat>><<bruise penis>><<violence 1>><<set $penisstate to "othermouth">>
 			<<elseif $player.virginity.penile is true>>
diff --git a/game/base-combat/effects.twee b/game/base-combat/effects.twee
index b3273fe50b..706d22c8c5 100644
--- a/game/base-combat/effects.twee
+++ b/game/base-combat/effects.twee
@@ -86,6 +86,7 @@
 <<effectspenwhack>>
 <<effectsshacklewhack>>
 <<effectshandsfreeface>>
+<<effectsdildowhack>>
 
 <<if $bodyaction is "doggy">>
 	<<set $bodyaction to 0>>
@@ -2130,12 +2131,17 @@
 
 <<if $mouthaction is "bite" and $NPCList[$mouthtarget].penis is "mouth">>
 	<<set $mouthaction to 0>><<set $mouthactiondefault to "bite">><<personselect $mouthtarget>>
-	You bite down on the penis, <<he>> <<if $enemytype is "man">>yelps<<elseif $enemytype is "beast">>growls<<else>>shrieks<</if>> and recoils in agony.
-	<<set $NPCList[$mouthtarget].penis to 0>><<set $NPCList[$mouthtarget].location.genitals to 0>>
-	<<defiance 20 $mouthtarget>><<attackstat>><<control 15>><<set $mouthuse to 0>><<set $penisbitten to 1>><<set $mouthstate to 0>>
-	<<if $transformationParts.traits.fangs isnot "disabled">>
-		<<defiance 20 $mouthtarget>><<defiance 20 $mouthtarget>>
-		You lick your fangs clean.
+	You bite down on <<his>> <<npcPenisSimple $mouthtarget>>,
+	<<if npcHasStrapon($mouthtarget)>>
+		but it has no effect.
+	<<else>>
+		<<he>> <<if $enemytype is "man">>yelps<<elseif $enemytype is "beast">>growls<<else>>shrieks<</if>> and recoils in agony.
+		<<set $NPCList[$mouthtarget].penis to 0>><<set $NPCList[$mouthtarget].location.genitals to 0>>
+		<<defiance 20 $mouthtarget>><<attackstat>><<control 15>><<set $mouthuse to 0>><<set $penisbitten to 1>><<set $mouthstate to 0>>
+		<<if $transformationParts.traits.fangs isnot "disabled">>
+			<<defiance 20 $mouthtarget>><<defiance 20 $mouthtarget>>
+			You lick your fangs clean.
+		<</if>>
 	<</if>>
 <</if>>
 
@@ -2799,6 +2805,32 @@
 	<</if>>
 <</if>>
 
+<<if $mouthaction is "ask" and $askAction is "wearStrapon">>
+	<<set $mouthaction to 0>><<unset $askAction>><<set _sound to 1>>
+	<<if $neckuse is "hand" and $oxygen lt $oxygenmax and $asphyxiaLvl gte 2>>
+		<<wheeze "ask <<him>> to wear <<his>> strap-on">><<meek 1>>
+	<<else>>
+		<<brat 5>>
+		<<set $mouthactiondefault to "rest">>
+		You ask <<him>> to wear <<his>> strap-on.
+		<<if ($npc[$npcrow.indexOf(_n)] is "Eden"    and $NPCName[$NPCNameList.indexOf("Eden")].love lte 100)
+		  or ($npc[$npcrow.indexOf(_n)] is "Whitney" and $NPCName[$NPCNameList.indexOf("Whitney")].love lte 10)>>
+			<<print either("I'll do what I want, bitch.","Shut up slut, I'm in control here.")>>
+			<<violence 5>><<brat 2>>
+		<<else>>
+			<<npcDonStrapon $mouthtarget>>
+		<</if>>
+	<</if>>
+<</if>>
+
+<<widget "npcDonStrapon">>
+	<<set $_target to $args[0]>>
+	<<personselect $_target>>
+	<<He>> nods and moves to don <<his>> strap-on.
+	<<npcstrapon $_target>>
+	<<set $NPCList[$_target].penis to "strap-on">>
+<</widget>>
+
 /*Stalked actions */
 <<if !$stalk_end>>
 	<<if $mouthaction is "up">>
@@ -2932,7 +2964,7 @@
 		<<set $vaginaaction to 0>><<meek 5 $vaginatarget>><<analskilluse>><<set $vaginaactiondefault to "penisanus">>
 		<<if (1000 - ($rng * 10) - ($enemytrust * 10) - $analskill + $enemyanger) lte (($enemyarousalmax / ($enemyarousal + 1)) * 100)>>
 			<<personselect $vaginatarget>>
-			<span class="blue">You give your <<bottom>> a little wiggle, <<combatperson>> responds to the provocation and moves <<his>> penis in front of your butt.</span>
+			<span class="blue">You give your <<bottom>> a little wiggle, <<combatperson>> responds to the provocation and moves <<his>> <<npcPenisSimple $vaginatarget>> in front of your butt.</span>
 			<<if $NPCList[$vaginatarget].type is "plant" and $NPCList[$vaginatarget].penissize gte 4>>
 				<span class="red">Something about it scares you.</span>
 			<</if>>
@@ -3915,11 +3947,11 @@
 		<<personselect $penistarget>>
 		<<if $NPCList[$penistarget].vagina is "otheranusfrot">>
 			<<set $NPCList[$penistarget].vagina to "otheranusentrance">>
-			<span class="blue">You rub your penis between <<hisselect $penistarget>> cheeks, but <<he>> would prefer the main course and presses <<his>> anus against your tip.</span>
+			<span class="blue">You rub your <<cock>> between <<hisselect $penistarget>> cheeks, but <<he>> would prefer the main course and presses <<his>> anus against your tip.</span>
 		<</if>>
 		<<if $NPCList[$penistarget].penis is "otheranusfrot">>
 			<<set $NPCList[$penistarget].penis to "otheranusentrance">>
-			<span class="blue">You rub your penis between <<hisselect $penistarget>> cheeks, but <<he>> would prefer the main course and presses <<his>> anus against your tip.</span>
+			<span class="blue">You rub your <<cock>> between <<hisselect $penistarget>> cheeks, but <<he>> would prefer the main course and presses <<his>> anus against your tip.</span>
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/game/base-combat/ejaculation-eden.twee b/game/base-combat/ejaculation-eden.twee
index 4ff0e934cc..9ab81808f3 100644
--- a/game/base-combat/ejaculation-eden.twee
+++ b/game/base-combat/ejaculation-eden.twee
@@ -258,6 +258,8 @@
 <<if $consensual is 1>>
 	<<if _condomResult is "contained">>
 		<<genericCondomEjaculation>>
+	<<elseif npcHasStrapon(_nn)>>
+		<<He>> moans and shivers in orgasmic bliss, grinding the strap-on against <<his>> genitals.
 	<<elseif $NPCList[_nn].penis is "idle">>
 		<<He>> moans as a wet patch forms on <<his>> trousers. You stifle a giggle at the sight.
 		
diff --git a/game/base-combat/ejaculation-kylar.twee b/game/base-combat/ejaculation-kylar.twee
index 7fdad42759..f898a70759 100644
--- a/game/base-combat/ejaculation-kylar.twee
+++ b/game/base-combat/ejaculation-kylar.twee
@@ -274,6 +274,8 @@
 <<if $consensual is 1>>
 	<<if _condomResult is "contained">>
 		<<genericCondomEjaculation>>
+	<<elseif npcHasStrapon(_nn)>>
+		<<He>> moans and shivers in orgasmic bliss, grinding the strap-on against <<his>> genitals.
 	<<elseif $NPCList[_nn].penis is "idle">>
 		<<He>> groans as a wet patch forms on <<his>> trousers. You barely stifle a giggle at the sight.
 		
diff --git a/game/base-combat/ejaculation-leighton.twee b/game/base-combat/ejaculation-leighton.twee
index 5f94f8878d..d003d46f0c 100644
--- a/game/base-combat/ejaculation-leighton.twee
+++ b/game/base-combat/ejaculation-leighton.twee
@@ -289,6 +289,8 @@
 <<if $consensual is 1>>
 	<<if _condomResult is "contained">>
 		<<genericCondomEjaculation>>
+	<<elseif npcHasStrapon(_nn)>>
+		<<He>> moans and shivers in orgasmic bliss, grinding the strap-on against <<his>> genitals.
 	<<elseif $NPCList[_nn].penis is "idle">>
 		<<He>> groans as a wet patch forms on <<his>> trousers. You barely stifle a giggle at the sight.
 		
diff --git a/game/base-combat/ejaculation-plant.twee b/game/base-combat/ejaculation-plant.twee
index 00ca642be7..b670943452 100644
--- a/game/base-combat/ejaculation-plant.twee
+++ b/game/base-combat/ejaculation-plant.twee
@@ -169,7 +169,7 @@
 		<<if $NPCList[_nn].mouth is "kissimminent" or $NPCList[_nn].mouth is "kiss">>
 			<<He>> moans into your mouth as <<he>> cums, but you can feel <<him>> frowning. "I wanted to fuck you," <<he>> murmers in disappointment.
 		<<else>>
-			<<He>> groans as <<he>> cums against the tip of your penis. "I wanted to fuck you," <<he>> gasps, looking down at it in disappointment.
+			<<He>> groans as <<he>> cums against the tip of your <<cock>>. "I wanted to fuck you," <<he>> gasps, looking down at it in disappointment.
 		<</if>>
 	<<elseif $NPCList[_nn].vagina is "frot">>
 		<<if $NPCList[_nn].mouth is "kissimminent" or $NPCList[_nn].mouth is "kiss">>
diff --git a/game/base-combat/ejaculation-robin.twee b/game/base-combat/ejaculation-robin.twee
index 243de39db7..a6df880345 100644
--- a/game/base-combat/ejaculation-robin.twee
+++ b/game/base-combat/ejaculation-robin.twee
@@ -194,6 +194,8 @@
 <<if $consensual is 1>>
 	<<if _condomResult is "contained">>
 		<<genericCondomEjaculation>>
+	<<elseif npcHasStrapon(_nn)>>
+		<<He>> moans and shivers in orgasmic bliss, grinding the strap-on against <<his>> genitals.
 	<<elseif $NPCList[_nn].penis is "idle">>
 		<<He>> groans as a wet patch forms on <<his>> trousers. You giggle at the sight.
 		
diff --git a/game/base-combat/ejaculation.twee b/game/base-combat/ejaculation.twee
index bbc3a6cf1f..ebea3c23ea 100644
--- a/game/base-combat/ejaculation.twee
+++ b/game/base-combat/ejaculation.twee
@@ -121,6 +121,10 @@
 				<<He>> groans as a wet patch forms on <<his>> trousers.
 			<</if>>
 
+			<<if npcHasStrapon(_nn)>>
+				<<He>> moans and shivers in orgasmic bliss, grinding the strap-on against <<his>> genitals.
+			<</if>>
+
 			<<if $NPCList[_nn].penis is "thighs">>
 				<<He>> ejaculates onto your thighs.
 				<<thighejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.thigh.semen += 1>>
@@ -1098,9 +1102,10 @@
 						<</switch>>
 						<<vaginalentranceejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vaginaoutside.semen += 1>>
 					<<elseif $NPCList[_nn].penis is "vaginadouble">>
+						/* consensual */
 						<<switch $NPCList[_nn].penissize>>
 						<<case 4>>
-							<<He>> convulses and grinds into your crotch as <<he>> cums, <<his>> $NPCList[_nn].penisdesc sending thick waves of semen into your <<pussy>>. It drips down your thighs.
+							<<He>> convulses and <<print either("glides into","grinds into","thrusts deep into","rams into")>> your crotch as <<he>> cums, <<his>> $NPCList[_nn].penisdesc sending thick waves of semen into your <<pussy>>. It drips down your thighs. "<<print either("Look at the mess we made of your pussy!","Did you like double stuffing, slut?","Nothing like a good double slut!")>>"
 							<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
 							<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
 							<<vaginalentranceejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vaginaoutside.semen += 1>>
@@ -1110,7 +1115,7 @@
 						<<default>>
 							<<switch random(1, 7)>>
 							<<case 1 2 3>>
-								<<He>> moans and thrusts deep into your <<pussy>> as <<he>> cums, holding <<his>> $NPCList[_nn].penisdesc against your womb. You feel warm as semen fills you.
+								<<He>> moans and <<print either("glides into","grinds into","thrusts deep into","rams into")>> your <<pussy>> as <<he>> cums, holding <<his>> $NPCList[_nn].penisdesc against your womb. You feel warm as semen fills you.
 								<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
 								<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
 							<<case 4 5 6>>
@@ -1196,7 +1201,6 @@
 							<<set _otherNPCindex to $anustarget>>
 							<<set _dap to ($NPCList[$anustarget].penis isnot "anusdouble" ? 1 : 2)>>
 						<</if>>
-
 						<<if _dap is 1>>
 							<<switch random(1, 7)>>
 								<<case 1 2 3>>
@@ -1418,7 +1422,7 @@
 						<</if>>
 					<<elseif $NPCList[_nn].penis is "othermouth">>
 						<<He>> shakes with arousal as <<he>> cums. "That was awesome."
-						<br><br>
+
 					<<else>>
 						<<He>> collapses in orgasmic bliss.
 					<</if>>
@@ -1470,7 +1474,7 @@
 						<<case 4 5 6>>
 							<<He>> ejaculates onto your <<pussy>> before penetrating you, sending white streams of semen onto your labia. "Fuck. I wanted that to go inside."
 						<<case 7>>
-							<<He>> moans and spasms as <<he>> cums, trying to penetrate your <<pussy>> with desparate thrusts. <<He>> lacks the coordination mid-climax, instead sending thick ropes of semen over your labia and <<bottom>> "I'm fucking you properly next time, slut."
+							<<He>> moans and spasms as <<he>> cums, trying to penetrate your <<pussy>> with desperate thrusts. <<He>> lacks the coordination mid-climax, instead sending thick ropes of semen over your labia and <<bottom>> "I'm fucking you properly next time, slut."
 							<<bottomejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.bottom.semen += 1>>
 						<</switch>>
 						<<vaginalentranceejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vaginaoutside.semen += 1>>
@@ -1553,11 +1557,11 @@
 						<br>
 						<<vaginalentranceejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vaginaoutside.semen += 1>>
 					<<elseif $NPCList[_nn].penis is "vaginadouble">>
+					/* Noncon */
 						<<set _otherNPCIndex to (_nn is $vaginatarget ? $vaginadoubletarget : $vaginatarget)>>
 						<<switch $NPCList[_nn].penissize>>
 						<<case 4 5>>
-							<<He>> convulses and pounds your crotch as <<he>> cums, <<his>> $NPCList[_nn].penisdesc sending thick waves of cum into your <<pussy>>. Semen drips from your vagina and down your legs. "Doesn't look like you can handle my load."
-
+							<<He>> convulses and <<print either("pounds","brutalises","thrusts deep into","rams")>> your crotch as <<he>> cums, <<his>> $NPCList[_nn].penisdesc sending thick waves of cum into your <<pussy>>. Semen drips from your vagina and down your legs. "<<print either("Doesn't look like you can handle my load.","Learn how to take double stuffing, worthless whore.","Look at the mess I made of your pussy!","We ruined your pussy. Dirty whore.")>>"
 							<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
 							<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
 							<<vaginalentranceejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vaginaoutside.semen += 1>>
@@ -1568,7 +1572,7 @@
 						<<default>>
 							<<switch random(1, 7)>>
 							<<case 1 2 3>>
-								<<He>> grabs your hair and thrusts <<his>> $NPCList[_nn].penisdesc deep into your <<pussy>> as <<he>> cums. You feel unwelcome semen splash inside.
+								<<He>> grabs your hair and <<print either("pounds","brutalises","thrusts","rams")>> <<his>> $NPCList[_nn].penisdesc deep into your <<pussy>> as <<he>> cums. You feel unwelcome semen splash inside.
 		
 								<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
 								<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
@@ -1579,14 +1583,14 @@
 								<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
 								<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
 							<<case 6>>
-								<<He>> convulses and pounds your <<pussy>> as <<he>> cums, giving no head to <<personselect _otherNPCIndex>><<combatpersons>> <<npcPenis _otherNPCIndex>>. Semen drips from your vagina and down your legs. "Filthy cum slut, take it!"
+								<<He>> convulses and <<print either("pounds","brutalises","thrusts deep into","rams")>> your <<pussy>> as <<he>> cums, giving no head to <<personselect _otherNPCIndex>><<combatpersons>> <<npcPenis _otherNPCIndex>>. Semen drips from your vagina and down your legs. "Filthy cum slut, take it!"
 								
 								<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
 								<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
 								<<vaginalentranceejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vaginaoutside.semen += 1>>
 								<<thighejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.thigh.semen += 1>>
 							<<case 7>>
-								<<He>> convulses and pounds your <<pussy>> as <<he>> cums. Rubbing against your <<clit>> and sending thick waves of cum into your body. Semen drips from your vagina and down your legs. "Didn't think you could handle my load."
+								<<He>> convulses and <<print either("pounds","brutalises","thrusts deep into","rams")>> your <<pussy>> as <<he>> cums. Rubbing against your <<clit>> and sending thick waves of cum into your body. Semen drips from your vagina and down your legs. "Didn't think you could handle my load."
 								
 								<<recordVaginalSperm "pc" $NPCList[_nn].fullDescription `($enemytype is "man" ? "human" : $NPCList[_nn].type)`>>
 								<<vaginalejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.vagina.semen += 1>>
@@ -2334,10 +2338,10 @@
 
 <<if $NPCList[_jj].penis is "penis" or $NPCList[_jj].penis is "penisentrance" or $NPCList[_jj].penis is "penisimminent">>
 	<<if $position is "missionary">>
-		<<bHe>> ejaculates onto your penis and stomach.
-		<<neckejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.tummy.semen += 1>>
+		<<bHe>> ejaculates onto your chest and neck.
+		<<chestejacstat>><<neckejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.tummy.semen += 1>>
 	<<else>>
-		<<bHe>> ejaculates onto your stomach and chest.
+		<<bHe>> ejaculates onto your stomach and <<cock>>.
 		<<tummyejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.tummy.semen += 1>>
 	<</if>>
 	<<chestejacstat>><<ejacstat>><<set $hygiene += 500>><<set $player.bodyliquid.chest.semen += 1>>
diff --git a/game/base-combat/end.twee b/game/base-combat/end.twee
index 729cc02066..6cce396ab6 100644
--- a/game/base-combat/end.twee
+++ b/game/base-combat/end.twee
@@ -127,6 +127,13 @@
 	<<set $vaginause to 0>>
 	<<set $penisuse to 0>>
 <</switch>>
+<<if $worn.genitals.type.includes("strap-on") or $worn.under_lower.type.includes("strap-on")>>
+	<<set $penisstate to 0>>
+	<<set $penisuse to 0>>
+	<<if $playerPenisSizeBackup isnot undefined>>
+		<<set $penissize to $playerPenisSizeBackup>>
+	<</if>>
+<</if>>
 
 <<set $anusstate to 0>>
 <<set $mouthstate to 0>>
@@ -434,7 +441,8 @@
 <</if>>
 <<set $enemyArousalLossReduction to 1>>
 
-
+<<unset $phalluscolorA>>
+<<unset $phalluscolorB>>
 
 <<manend>>
 <<turnend>>
@@ -448,6 +456,9 @@
 
 <<for _i = 0; _i < $NPCList.length; _i++>>
 	<<set $NPCList[_i] to clone(setup.baseNPC)>>
+	<<if $NPCList[_i].strapon isnot undefined>>
+		<<unset $NPCList[_i].strapon>>
+	<</if>>
 <</for>>
 
 <<set $pronoun to 0>>
@@ -493,6 +504,9 @@
 		<<run EventSystem.Clear()>>
 	<</if>>
 <</if>>
+<<if $NPCList[_i].strapon isnot undefined>>
+	<<unset $NPCList[_i].strapon>>
+<</if>>
 <</widget>>
 
 :: Widgets End Event [widget]
diff --git a/game/base-combat/images.twee b/game/base-combat/images.twee
index 50f346d2ec..4042019483 100644
--- a/game/base-combat/images.twee
+++ b/game/base-combat/images.twee
@@ -465,11 +465,11 @@ Eyelids disabled during idle frames.
 <img class="layer-sexmouth colour-eye anim-idle-2f" @src="_img.doggyactiveeyelids" @style="'filter: '+_filters.body">
 -->
 
-<<if $player.penisExist>>
-	<<if $worn.genitals.name is "chastity belt" or $worn.genitals.name is "gold chastity belt">>
+<<if $player.penisExist or playerHasStrapon()>>
+	<<if ($worn.genitals.name is "chastity belt" or $worn.genitals.name is "gold chastity belt") or playerHasStrapon()>>
 		<img class="layer-sexmouth" src="img/sex/doggy/active/body/doggyactivepenischastity.png">
 	<<elseif $worn.lower.exposed gte 2 and $worn.under_lower.exposed gte 1>>
-		<<if $worn.genitals.name is "chastity cage">>
+		<<if $worn.genitals.name is "chastity cage" and !playerHasStrapon>>
 			<img class="layer-sexmouth" @src="_img.doggyactivechastitycagepenis" @style="'filter: '+_filters.body">
 			<img class="layer-sexmouth" src="img/sex/doggy/active/body/doggyactivechastitycage.png">
 		<<elseif $player.virginity.penile is true>>
@@ -960,16 +960,18 @@ Lashes held in place during idle frames, and 4-frame hair overlay that didn't an
 <</if>>
 
 <<if $penisstate is "penetrated" or $penisstate is "otheranus">>
-	<<if $orgasmdown gte 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true>>
+	<<if $orgasmdown gte 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true and !playerHasStrapon>>
 		<img @class="'layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/body/doggyactivepenilecum.png">
 	<<else>>
 		<img @class="'layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/body/doggyactivepenile.png">
 	<</if>>
 <</if>>
 
-<<if $player.penisExist>>
+<<if $player.penisExist or playerHasStrapon()>>
 	<<if $worn.lower.exposed gte 2 and $worn.under_lower.exposed gte 1>>
-		<<if $worn.genitals.type.includes("chastity")>>
+		<<if playerHasStrapon()>>
+			<img @class="'layer-sexmouth anim-doggy-4f-'+_animspeed" @src="_img.doggyactivepenis" @style="'filter: '+_filters.body">
+		<<elseif $worn.genitals.type.includes("chastity") and !playerHasStrapon()>>
 			<<if $worn.genitals.name is "chastity belt" or $worn.genitals.name is "gold chastity belt">>
 				<img @class="'layer-sexmouth anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/body/doggyactivepenischastity.png">
 			<<elseif $worn.genitals.name is "chastity cage">>
@@ -981,7 +983,7 @@ Lashes held in place during idle frames, and 4-frame hair overlay that didn't an
 		<<else>>
 			<img @class="'layer-sexmouth anim-doggy-4f-'+_animspeed" @src="_img.doggyactivepenis" @style="'filter: '+_filters.body">
 		<</if>>
-		<<if $orgasmdown gte 1 and $penisstate isnot "penetrated" and $orgasmcount lte 24 and $femaleclimax isnot 1 and !$worn.genitals.type.includes("chastity")>>
+		<<if $orgasmdown gte 1 and $penisstate isnot "penetrated" and $orgasmcount lte 24 and $femaleclimax isnot 1 and !$worn.genitals.type.includes("chastity") and !playerHasStrapon()>>
 			<img @class="'layer-sexmouth anim-doggy-4f-'+_animspeed" src="img/sex/doggy/active/body/doggyactivecum.png">
 		<</if>>
 	<</if>>
@@ -1197,6 +1199,13 @@ and _stanceCheck isnot "top">>
 			<<else>>
 				<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xraybeastvaginal.png">
 			<</if>>
+		/* STRAP-ON COLOUR TEST */
+		<<elseif $vaginatarget isnot undefined and npcHasStrapon($vaginatarget)>>
+			<<getstraponcolor $vaginatarget>>
+			<<set _ppcolor to $phalluscolorA>>
+			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_vaginal_interior.png">
+			<img @class="'layer-sextears '+_ppcolor+' anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_vaginal_straponRed.png">
+		<<elseif $NPCList[0].skincolour is "black">>
 		<<elseif $vaginatarget isnot undefined and $NPCList[$vaginatarget].skincolour is "black">>
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginal.png">
 		<<else>>
@@ -1248,6 +1257,14 @@ and _stanceCheck isnot "top">>
 				<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xraybeastanal.png">
 			<</if>>
 		</div>
+	<<elseif $anustarget isnot undefined and npcHasStrapon($anustarget)>>
+		<div @class="_anusClass" @id="_anusID">
+			<<getstraponcolor $anustarget>>
+			/*<<set _ppcolor to "strapon-"+$NPCList[$anustarget].strapon.color>>*/
+			<<set _ppcolor to $phalluscolorA>>
+			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_anal_interior.png">
+			<img @class="'layer-sextears '+_ppcolor+' anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_anal_straponRed.png">
+		</div>
 	<<elseif $anustarget isnot undefined and $NPCList[$anustarget].skincolour is "black">>
 		<div @class="_anusClass" @id="_anusID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayanal.png">
@@ -1260,8 +1277,9 @@ and _stanceCheck isnot "top">>
 <<elseif $anusstate is "doublepenetrated">>
 	<<if $NPCList[$anustarget].penis is "anusdouble" and $NPCList[$anusdoubletarget].penis is "anusdouble">>
 		<<if $NPCList[$anustarget].skincolour is "black">>
+			<<set _ppcolor to "tentacles-vines">>
 			<div @class="_anusClass" @id="_anusID">
-				<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xraydoubleanalblack.png">
+				<img @class="'layer-sextears '+_ppcolor+' anim-xray-8f-'+_animspeed" src="img/sex/black/xraydoubleanalblack.png">
 			</div>
 		<<else>>
 			<div @class="_anusClass" @id="_anusID">
@@ -1286,17 +1304,23 @@ and _stanceCheck isnot "top">>
 <<set _penisClass to "i256" + (!_wide ? "" : (_futaSplit ? " height128":" height64"))>>
 <<set _penisID to _wide ? "xraypenile" : "xrayandroidpenile">>
 <<if $penisstate is "penetrated">>
-	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24>>
+	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and !playerHasStrapon()>>
 		<div @class="_penisClass" @id="_penisID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginalcum.png">
 		</div>
+	<<elseif playerHasStrapon()>>
+		<div @class="_penisClass" @id="_penisID">
+			<<set _ppcolor to "strapon-"+$worn.under_lower.colour>>
+			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_vaginal_interior.png">
+			<img @class="'layer-sextears '+_ppcolor+' anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_vaginal_straponRed.png">
+		</div>
 	<<else>>
 		<div @class="_penisClass" @id="_penisID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginal.png">
 		</div>
 	<</if>>
 <<elseif $penisstate is "tentacle">>
-	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true>>
+	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true and !playerHasStrapon()>>
 		<div @class="_penisClass" @id="_penisID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xraypeniletentaclecum.png">
 		</div>
@@ -1306,7 +1330,7 @@ and _stanceCheck isnot "top">>
 		</div>
 	<</if>>
 <<elseif $penisstate is "tentacledeep">>
-	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true>>
+	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true and !playerHasStrapon()>>
 		<div @class="_penisClass" @id="_penisID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xraypeniletentaclecum.png">
 		</div>
@@ -1316,10 +1340,17 @@ and _stanceCheck isnot "top">>
 		</div>
 	<</if>>
 <<elseif $penisstate is "otheranus">>
-	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true>>
+	<<if $orgasmdown gte 1 and $devstate is 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true and !playerHasStrapon()>>
 		<div @class="_penisClass" @id="_penisID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayanalcum.png">
 		</div>
+	/* Strap-on anal */
+	<<elseif playerHasStrapon()>>
+		<div @class="_penisClass" @id="_penisID">
+			<<set _ppcolor to "strapon-"+$worn.under_lower.colour>>
+			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_anal_interior.png">
+			<img @class="'layer-sextears '+_ppcolor+' anim-xray-8f-'+_animspeed" src="img/sex/strapon/xray_anal_straponRed.png">
+		</div>
 	<<else>>
 		<div @class="_penisClass" @id="_penisID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayanal.png">
@@ -1353,7 +1384,7 @@ and _stanceCheck isnot "top">>
 		</div>
 	<</if>>
 <<elseif $NPCList[0].skincolour is "black">>
-	<<if $condomVaginalImg and $vaginastate is "penetrated">>
+	<<if ($condomVaginalImg or ($vaginatarget isnot undefined and npcHasStrapon($vaginatarget))) and $vaginastate is "penetrated">>
 		<div class="i256" @id="_vagID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginal.png">
 		</div>
@@ -1362,7 +1393,7 @@ and _stanceCheck isnot "top">>
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginalcum.png">
 		</div>
 	<</if>>
-	<<if $condomVaginalImg and $vaginastate is "doublepenetrated">>
+	<<if ($condomAnalImg or ($vaginatarget isnot undefined and npcHasStrapon($vaginatarget))) and $vaginastate is "penetrated">>
 		<div class="i256" @id="_vagID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginaldoubleblack.png">
 		</div>
@@ -1371,7 +1402,7 @@ and _stanceCheck isnot "top">>
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayvaginaldoublecumblack.png">
 		</div>
 	<</if>>
-	<<if $condomAnalImg and $anusstate is "penetrated">>
+	<<if $anusstate is "penetrated" and ($condomAnalImg or ($anustarget isnot undefined and npcHasStrapon($anustarget)))>>
 		<div class="i256" @id="_anusID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/black/xrayanal.png">
 		</div>
@@ -1395,7 +1426,7 @@ and _stanceCheck isnot "top">>
 		<</if>>
 	<</if>>
 <<else>>
-	<<if $condomVaginalImg and $vaginastate is "penetrated">>
+	<<if $vaginastate is "penetrated" and ($condomVaginalImg or ($vaginatarget isnot undefined and npcHasStrapon($vaginatarget)))>>
 		<div class="i256" @id="_vagID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginal.png">
 		</div>
@@ -1413,7 +1444,7 @@ and _stanceCheck isnot "top">>
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayvaginaldoublecum.png">
 		</div>
 	<</if>>
-	<<if $condomAnalImg and $anusstate is "penetrated">>
+	<<if  $anusstate is "penetrated" and ($condomAnalImg or ($anustarget isnot undefined and npcHasStrapon($anustarget)))>>
 		<div class="i256" @id="_anusID">
 			<img @class="'anim-xray-8f-'+_animspeed" src="img/sex/xrayanal.png">
 		</div>
@@ -1497,7 +1528,7 @@ and _stanceCheck isnot "top">>
 	<<set _penetrator_frames = _frames>>
 	<<set _idle = false>>
 
-	<<if $worn.genitals.type.includes("hidden")>>
+	<<if $worn.genitals.type.includes("hidden") and !playerHasStrapon()>>
 		<<switch $vaginastate>>
 			<<case "tentacle" "tentacleentrance" "tentacleimminent" "entrance" "imminent" "othermouthentrance" "othermouthimminent">>
 				<<set _aniFrame to 'anim-close-6f-'+_animspeed>>
@@ -1649,8 +1680,8 @@ and _stanceCheck isnot "top">>
 			<img @class="'pbhair-' + _pbColour + ' ' + _frames" @src="'img/sex/close/' + _position + '/vaginahirsute.png'">
 		<</if>>
 		<!-- Hermaphrodite penis -->
-		<<if $player.penisExist>>
-			<<if $player.ballsExist is false>>
+		<<if $player.penisExist or playerHasStrapon()>>
+			<<if $player.ballsExist is false or playerHasStrapon()>>
 				<img @class="_penis_frames" @src="_img.futavaginanoballs" @style="'filter: ' + _filters.body">
 			<<else>>
 				<img @class="_penis_frames" @src="_img.futavagina" @style="'filter: ' + _filters.body">
@@ -1793,7 +1824,7 @@ and _stanceCheck isnot "top">>
 <</if>>
 </div>
 
-<<if $player.penisExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1>>
+<<if ($player.penisExist or playerHasStrapon()) and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1>>
 	<div class="i64" id="closepenis">
 
 	<<if $player.vaginaExist>>
@@ -1804,7 +1835,7 @@ and _stanceCheck isnot "top">>
 	<<if $worn.under_lower.state is "totheside">>
 		<img @class="'colour-under_lower anim-close-6f-'+_animspeed" @src="'img/sex/close/' + _position + '/penistotheside.png'" @style="($worn.under_lower.colour is 'custom'? $worn.under_lower.colourCustom + _underLowerOpacity : '')">
 	<</if>>
-	<<if $worn.genitals.type.includes("hidden")>>
+	<<if $worn.genitals.type.includes("hidden") and !playerHasStrapon()>>
 		<img @class="'anim-close-6f-'+_animspeed" @src="'img/sex/close/' + _position + '/chastityBelt/penis'+_beltName+'.png'">
 		<<switch $penisstate>>
 			<<case "tentacleentrance" "tentacleimminent">>
@@ -1816,9 +1847,27 @@ and _stanceCheck isnot "top">>
 					<img @class="'anim-close-6f-'+_animspeed" src="img/sex/close/beast/penisentrance.png">
 				<</if>>
 		<</switch>>
-	<<elseif $worn.genitals.name is "chastity cage">>
+	<<elseif $worn.genitals.name is "chastity cage" and !playerHasStrapon()>>
 		<img @class="'anim-close-6f-'+_animspeed" @src="_img.chastitypenis" @style="'filter: '+_filters.body">
 		<img @class="'anim-close-6f-'+_animspeed" @src="'img/sex/close/'+_position+'/chastity.png'">
+	/* Need to add strap-on close sprite here */ 
+	<<elseif playerHasStrapon()>>
+		<<if $worn.genitals.type.includes("hidden")>>
+		<img @class="'anim-close-6f-'+_animspeed" @src="'img/sex/close/' + _position + '/chastityBelt/penis'+_beltName+'.png'">
+		<</if>>
+		<<set _ppcolor to "strapon-"+$worn.under_lower.colour>>
+		/* Add different shape phalluses here */
+		<<if $worn.under_lower.variable is "straponknotted">>
+			<img @class="'layer-sexmouth '+_ppcolor+' anim-close-6f-'+_animspeed" @src="'img/sex/close/'+_position+'/straponcloseknot.png'">
+		<<elseif $worn.under_lower.variable is "straponhorse">>
+			<img @class="'layer-sexmouth '+_ppcolor+' anim-close-6f-'+_animspeed" @src="'img/sex/close/'+_position+'/straponcloseknot.png'">
+		<<else>>
+			<img @class="'layer-sexmouth '+_ppcolor+' anim-close-6f-'+_animspeed" @src="'img/sex/close/'+_position+'/straponclose.png'">
+		<</if>>
+		/* This is the NPC getting penetrated */
+		<<if $penisstate is "penetrated" or $penisstate is "otheranus">>
+		<img @class="'layer-sextears '+'anim-close-6f-'+_animspeed" @src="'img/sex/close/'+_position+'/penispenetrated.png'">
+		<</if>>
 	<<elseif $penisstate is "tentacle">>
 		<<if $player.ballsExist is false>>
 			<img @class="'anim-close-6f-'+_animspeed" @src="_img.futapenisnoballs" @style="'filter: '+_filters.body">
diff --git a/game/base-combat/init.twee b/game/base-combat/init.twee
index 5f6e0e2c25..3430c3721f 100644
--- a/game/base-combat/init.twee
+++ b/game/base-combat/init.twee
@@ -938,6 +938,13 @@ otherwise there's no easy way of stopping NPC from shoving their stuff in PC's f
 	<<set $rightleg to "bound">>
 	<<set $feetuse to "bound">>
 <</if>>
+<<if playerHasStrapon()>>
+	<<set $penisuse to 0>><<set $penisstate to 0>>
+	<<if $worn.under_lower.size isnot undefined>>
+	<<set $playerPenisSizeBackup to $penissize>>
+	<<set $penissize to $worn.under_lower.size>>
+	<</if>>
+<</if>>
 <<resetLastOptions>>
 <<getCombatDefaultsType>>
 <<wetnessCalculate>>
diff --git a/game/base-combat/man-combat.twee b/game/base-combat/man-combat.twee
index 935291ba02..c73f161a8a 100644
--- a/game/base-combat/man-combat.twee
+++ b/game/base-combat/man-combat.twee
@@ -50,6 +50,29 @@
 			<<bodypart_admire_chance right_bottom>>
 		<</if>>
 		<<violence 10 _n>>
+	<<elseif ["dildo","riding crop","length of anal beads","flog"].contains($spankobject)>>
+		<<He>> <<print either("spanks","whacks","slaps","smacks","thwacks")>> your <<bottom>> with the $spankobject,
+		<<if $worn.lower.anus_exposed is 1 and $worn.over_lower.anus_exposed is 1>>
+			<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.anus_exposed is 0>>
+				through your $worn.under_lower.name.
+			<<else>>
+				reddening your exposed skin.
+			<</if>>
+		<<elseif $worn.over_lower.name isnot "naked" and $worn.over_lower.state is "waist">>
+			through your $worn.over_lower.name.
+		<<elseif $worn.lower.name isnot "naked" and $worn.lower.state is "waist">>
+			through your $worn.lower.name.
+		<<elseif $worn.under_lower.name isnot "naked" and $worn.under_lower.state is "waist">>
+			through your $worn.under_lower.name.
+		<<else>>
+			reddening your exposed skin.
+		<</if>>
+		<<if random(1, 2) is 2>>
+			<<bodypart_admire_chance left_bottom>>
+		<<else>>
+			<<bodypart_admire_chance right_bottom>>
+		<</if>>
+		<<violence 5 _n>>
 	<<else>>
 		<<He>> spanks your <<bottom>>
 		<<if $worn.lower.anus_exposed is 1 and $worn.over_lower.anus_exposed is 1>>
@@ -76,6 +99,110 @@
 	<</if>>
 <</widget>>
 
+<<widget "combat-dildospank">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($_hand is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<bruise bottom>><<hitstat>><<set $speechspank to 1>>
+	<<if npcHasSexToyOfType(_n,"dildo")>>
+
+		<<if $NPCList[_n].location.genitals is "head" or $mouthuse is "facesit" or $mouthuse is "penis">>
+			<<He>> <<print either("spanks","whacks","slaps","smacks","thwacks")>> your <<breasts>> with the $_toy in <<his>> $_hand hand,
+			<<if $worn.over_upper.name isnot "naked" and $worn.over_lower.state is "waist">>
+				through your $worn.over_upper.name.
+			<<elseif $worn.upper.name isnot "naked" and $worn.lower.state is "waist">>
+				through your $worn.upper.name.
+			<<elseif $worn.under_upper.name isnot "naked" and $worn.under_lower.state is "waist">>
+				through your $worn.under_upper.name.
+			<<else>>
+				reddening your exposed skin.
+			<</if>>
+		<<else>>
+			<<He>> <<print either("spanks","whacks","slaps","smacks","thwacks")>> your <<bottom>> with the $_toy in <<his>> $_hand hand,
+			<<if $worn.lower.anus_exposed is 1 and $worn.over_lower.anus_exposed is 1>>
+				<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.anus_exposed is 0>>
+					through your $worn.under_lower.name.
+				<<else>>
+					reddening your exposed skin.
+				<</if>>
+			<<elseif $worn.over_lower.name isnot "naked" and $worn.over_lower.state is "waist">>
+				through your $worn.over_lower.name.
+			<<elseif $worn.lower.name isnot "naked" and $worn.lower.state is "waist">>
+				through your $worn.lower.name.
+			<<elseif $worn.under_lower.name isnot "naked" and $worn.under_lower.state is "waist">>
+				through your $worn.under_lower.name.
+			<<else>>
+				reddening your exposed skin.
+			<</if>>
+			<<if random(1, 2) is 2>>
+				<<bodypart_admire_chance left_bottom>>
+			<<else>>
+				<<bodypart_admire_chance right_bottom>>
+			<</if>>
+		<</if>>
+		<<violence 5 _n>>
+	<<elseif npcHasSexToyOfType(_n,"whip")>>
+		<<if $NPCList[_n].location.genitals is "head" or $mouthuse is "facesit" or $mouthuse is "penis">>
+			<<He>> <<print either("brutally","viciously","deftly","sadistically","maliciously")>>
+			<<print either("spanks","whacks","slaps","smacks","thwacks")>> your <<breasts>> with the $_toy in <<his>> $_hand hand,
+			<<if $worn.over_upper.name isnot "naked" and $worn.over_lower.state is "waist">>
+				through your $worn.over_upper.name.
+			<<elseif $worn.upper.name isnot "naked" and $worn.lower.state is "waist">>
+				through your $worn.upper.name.
+			<<elseif $worn.under_upper.name isnot "naked" and $worn.under_lower.state is "waist">>
+				through your $worn.under_upper.name.
+			<<else>>
+				reddening your exposed skin.
+			<</if>>
+		<<else>>
+			<<He>> <<print either("brutally","viciously","deftly","sadistically","maliciously")>> <<print either("spanks","whacks","slaps","smacks","thwacks")>> your <<bottom>> with the $_toy in <<his>> $_hand hand,
+			<<if $worn.lower.anus_exposed is 1 and $worn.over_lower.anus_exposed is 1>>
+				<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.anus_exposed is 0>>
+					through your $worn.under_lower.name.
+				<<else>>
+					reddening your exposed skin.
+				<</if>>
+			<<elseif $worn.over_lower.name isnot "naked" and $worn.over_lower.state is "waist">>
+				through your $worn.over_lower.name.
+			<<elseif $worn.lower.name isnot "naked" and $worn.lower.state is "waist">>
+				through your $worn.lower.name.
+			<<elseif $worn.under_lower.name isnot "naked" and $worn.under_lower.state is "waist">>
+				through your $worn.under_lower.name.
+			<<else>>
+				reddening your exposed skin.
+			<</if>>
+		<</if>>
+		<<if random(1, 2) is 2>>
+			<<bodypart_admire_chance left_bottom>>
+		<<else>>
+			<<bodypart_admire_chance right_bottom>>
+		<</if>>
+		<<violence 20 _n>>
+	<<else>>
+		<<He>> spanks your <<bottom>>
+		<<if $worn.lower.anus_exposed is 1 and $worn.over_lower.anus_exposed is 1>>
+			<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.anus_exposed is 0>>
+				through your $worn.under_lower.name.
+			<<else>>
+				reddening your exposed skin.
+			<</if>>
+		<<elseif $worn.over_lower.name isnot "naked" and $worn.over_lower.state is "waist">>
+			through your $worn.over_lower.name.
+		<<elseif $worn.lower.name isnot "naked" and $worn.lower.state is "waist">>
+			through your $worn.lower.name.
+		<<elseif $worn.under_lower.name isnot "naked" and $worn.under_lower.state is "waist">>
+			through your $worn.under_lower.name.
+		<<else>>
+			reddening your exposed skin.
+		<</if>>
+		<<if random(1, 2) is 2>>
+			<<bodypart_admire_chance left_bottom>>
+		<<else>>
+			<<bodypart_admire_chance right_bottom>>
+		<</if>>
+		<<violence 2 _n>>
+	<</if>>
+<</widget>>
+
 <!-- pass "left" or "right" for which NPC hand this is called for -->
 <<widget "combat-hand-on-arms">>
 	<<if $enemytrust gte 20 and $enemyanger lte 20>>
@@ -129,7 +256,7 @@
 		<<set $speechclit to 1>><<neutral 10 _n>>
 		<<bodypart_admire_chance pubic>>
 	<<elseif $rng gte 21 or $novaginal is 0>>
-		<<He>> rubs the base of your penis while toying with your pussy.
+		<<He>> rubs the base of your <<cock>> while toying with your pussy.
 		<<neutral 10 _n>><<set $speechfutapenis to 1>>
 		<<bodypart_admire_chance pubic>>
 	<<elseif $rng lte 20 and $novaginal is 0>>
@@ -274,6 +401,388 @@
 	<</if>>
 <</widget>>
 
+
+
+
+<<widget "combat-dildo-on-vaginaentrance">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+
+	<<if $worn.under_lower.state isnot "naked" and $worn.under_lower.state is "waist" and $worn.under_lower.vagina_exposed is 0>>
+		<<set $_clothing to $worn.under_lower.name>>
+	<</if>>
+	<<if $worn.lower.state isnot "naked" and $worn.lower.state is "waist" and $worn.lower.vagina_exposed is 0>>
+			<<set $_clothing to $worn.lower.name>>
+	<</if>>
+	<<if $worn.over_lower.state isnot "naked" and $worn.over_lower.state is "waist" and $worn.over_lower.vagina_exposed is 0>>
+		<<set $_clothing to $worn.over_lower.name>>
+	<</if>>
+
+	<<set $_rng to random(1, 100)>>
+	<<if $_rng gte 101>>
+		<span class="blue"><<He>> moves the $_toy in <<his>> $args[0] hand away from your <<pussy>>.</span>
+		<<combat-reset-hand $args[0]>><<set $vaginause to 0>><<set $NPCList[_n][$_hand + "tool"] to 0>>
+	<<elseif $rng gte 61>>
+		<<He>> <<strokes>> your labia with the $_toy in <<his>> $args[0] hand<<if $_clothing isnot undefined>>, through your <<print $_clothing>><</if>>.
+		<<neutral 10 _n>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif ($_rng gte 21 or $novaginal is 0) and (!$player.penisExist or random(1,100) gte 51)>>
+		<<He>> slaps your clit with the $_toy in <<his>> $args[0] hand<<if $_clothing isnot undefined>>, through your <<print $_clothing>><</if>>.
+		<<set $speechclit to 1>><<neutral 10 _n>>
+		<<violence 1>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif $_rng gte 21 or $novaginal is 0>>
+		<<He>> rubs the base of your <<cock>> with <<his>> $_toy while toying with your pussy<<if $_clothing isnot undefined>>, through your <<print $_clothing>><</if>>.
+		<<neutral 10 _n>><<set $speechfutapenis to 1>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif $_rng lte 20 and $novaginal is 0
+	and $worn.under_lower.state isnot "naked" and ($worn.under_lower.state isnot "waist" or $worn.under_lower.vagina_exposed gte 1)
+	and $worn.lower.state isnot "naked" and ($worn.lower.state isnot "waist" or $worn.lower.vagina_exposed gte 1)
+	and $worn.over_lower.state isnot "naked" and ($worn.over_lower.state isnot "waist" or $worn.over_lower.vagina_exposed gte 1
+	and !$worn.genitals.type.includes("chastity"))>>
+		/* penetration */
+		<span class="pink"><<He>> plunges <<his>> $args[0]-hand $_toy into your warm <<pussy>>.</span>
+		<<neutral 15 _n>><<set $speechvagina to 1>><<combat-set-hand-target $args[0] "vaginadildo">>
+		<<bodypart_admire_chance pubic>>
+	<<else>>
+		<<He>> <<strokes>> your labia with the $_toy in <<his>> $args[0] hand.
+		<<neutral 10 _n>>
+		<<bodypart_admire_chance pubic>>
+	<</if>>
+<</widget>>
+
+<<widget "combat-dildo-on-vagina">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<set $rng to random(1, 100)>>
+	<<if $rng gte 101>>
+		<span class="purple"><<He>> slides the $_toy in <<his>> $args[0] hand out of your <<pussy>>.</span>
+		<<combat-set-hand-target $args[0] "dildo">><<set $NPCList[_n][$_hand + "tool"] to 0>>
+		<<neutral 15 _n>>
+	<<elseif $rng lte 100>>
+		<<He>> <<strokes>> the $_toy in <<his>> $args[0] hand inside of your <<pussy>>,
+		<<if $vaginastate isnot 0 and $vaginastate.includes("double")>>
+			?alongside the two cocks,
+		<<elseif $vaginastate isnot 0 and $vaginastate is "penetrated">>
+			<<print either("in rhythm with","heedless of","alongside")>>
+			<<if $vaginastate is _n>><<his>> <<npcPenisSimple _n>>,<<else>><<set $_n to _n>><<personselect $vaginastate>><<combatperson>>'s cock,<<set _n to $_n>><</if>>
+		<</if>>
+		<<neutral 20 _n>><<set $speechvagina to 1>>
+		<<if $arousal gte ($arousalmax / 5) * 4>>
+			causing involuntary shudders.
+		<<elseif $arousal gte $arousalmax / 5>>
+			coaxing out lewd fluid.
+		<<else>>
+			invading your body in a most sordid manner.
+		<</if>>
+		<<bodypart_admire_chance pubic>>
+	<</if>>
+<</widget>>
+
+<!-- pass "left" or "right" for which NPC hand this is called for -->
+<<widget "combat-dildo-on-penisentrance">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+
+	<<if $worn.under_lower.state isnot "naked" and $worn.under_lower.state is "waist" and $worn.under_lower.vagina_exposed is 0>>
+		<<set $_clothing to $worn.under_lower.name>>
+	<</if>>
+	<<if $worn.lower.state isnot "naked" and $worn.lower.state is "waist" and $worn.lower.vagina_exposed is 0>>
+			<<set $_clothing to $worn.lower.name>>
+	<</if>>
+	<<if $worn.over_lower.state isnot "naked" and $worn.over_lower.state is "waist" and $worn.over_lower.vagina_exposed is 0>>>
+		<<set $_clothing to $worn.over_lower.name>>
+	<</if>>
+
+	<<set $rng to random(1, 100)>>
+	<<if $rng gte 101>>
+		<span class="blue"><<He>> moves the $_toy in <<his>> $args[0] hand away from your <<penis>>.</span>
+		<<combat-reset-hand $args[0]>><<set $NPCList[_n][$_hand + "tool"] to 0>>
+		<<set $penisuse to 0>>
+	<<elseif $rng gte 51>>
+		<<switch $penisstate>>
+			<<case "otheranus">><<set $_teased to "anus">>
+			<<case "penetrated">><<set $_teased to "vagina">>
+			<<case "penispenetrated">><<set $_teased to "cock">>
+		<</switch>>
+		<<He>> <<strokes>> your shaft using the $_toy in <<his>> $args[0] hand<<if $_clothing isnot undefined>>, through your <<print $_clothing>>.<<elseif $penisstate is "otheranus" or $penisstate is "penetrated">><<set $_n to _n>>, teasing <<personselect $penistarget>><<combatperson>>'s $_teased.<<personselect $_n>><<else>>.<</if>>
+		<<neutral 10 _n>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif $rng gte 21>>
+		<<He>> <<print either("slaps","smacks","teases")>> your glans with the $_toy in <<his>> $args[0] hand<<if $_clothing isnot undefined>>, through your <<print $_clothing>><</if>>.
+		<<neutral 10 _n>><<set $speechglans to 1>>
+		<<violence 1>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif $rng lte 20
+	and $worn.under_lower.state isnot "naked" and ($worn.under_lower.state isnot "waist" or $worn.under_lower.vagina_exposed gte 1)
+	and $worn.lower.state isnot "naked" and ($worn.lower.state isnot "waist" or $worn.lower.vagina_exposed gte 1)
+	and $worn.over_lower.state isnot "naked" and ($worn.over_lower.state isnot "waist" or $worn.over_lower.vagina_exposed gte 1)
+	and !$worn.genitals.type.includes("chastity")>>
+		/* escalation */
+		<span class="pink"><<He>> <<print either("rubs","frots","fences")>> the $_toy in <<his>> $args[0] hand against your <<cock>>.</span>
+		<<neutral 15 _n>>
+		<<set $speechpenis to 1>>
+		<<combat-set-hand-target $args[0] "penisdildo">><<set $NPCList[_n][$_hand + "tool"] to 0>>
+		<<bodypart_admire_chance pubic>>
+	<<else>>
+		<<He>> <<strokes>> your <<penis>> with the $_toy in <<his>> $args[0] hand.
+		<<neutral 10 _n>>
+		<<bodypart_admire_chance pubic>>
+	<</if>>
+<</widget>>
+
+<<widget "combat-dildo-on-penis">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<set $rng to random(1, 100)>>
+	<<if $penisstate isnot 0>>
+		<<set $rng += 10>>
+	<</if>>
+	<<if $rng gte 101>>
+		<span class="purple"><<He>> removes the $_toy from your <<penis>>.</span>
+		<<combat-set-hand-target $args[0] "dildo">><<set $NPCList[_n][$_hand + "tool"] to 0>>
+		<<neutral 15 _n>>
+	<<elseif $rng lte 100>>
+		<<switch $penisstate>>
+			<<case "otheranus">><<set $_teased to "anus">><<set $_fucking to "penetrating">>
+			<<case "penetrated">><<set $_teased to "vagina">><<set $_fucking to "penetrating">>
+			<<case "penispenetrated">><<set $_teased to "cock">><<set $_fucking to "rubbing">>
+		<</switch>>
+		<<He>> <<print either("massages","rubs","fences","frots")>> the length of your <<penis>> with the $_toy in <<his>> $args[0] hand,<<if $penisstate is "otheranus" or $penisstate is "penetrated">><<set $_n to _n>> $_fucking <<personselect $penistarget>><<combatperson>>'s $_teased,<<personselect $_n>><</if>>
+		/*<<He>> <<print either("massages","rubs","fences","frots")>> the length of your <<penis>> with the $_toy in <<his>> $args[0] hand,*/
+		<<neutral 20 _n>><<set $speechpenis to 1>>
+		<<if !playerHasStrapon()>>
+			<<if $arousal gte ($arousalmax / 5) * 4>>
+				causing you involuntary shudders.
+			<<elseif $arousal gte $arousalmax / 5>>
+				coaxing out lewd fluid.
+			<<else>>
+				exploiting your body's natural reactions in a most sordid manner.
+			<</if>>
+		<<else>>
+			<<if $arousal gte ($arousalmax / 5) * 4>>
+				causing you involuntary shudders.
+			<<else>>
+				strangely arousing you.
+			<</if>>
+		<</if>>
+		<<bodypart_admire_chance pubic>>
+	<</if>>
+<</widget>>
+
+<<widget "combat-onahole-on-penisentrance">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<set $_clothing to "none">>
+
+	<<if $worn.under_lower.state isnot "naked" and $worn.under_lower.state is "waist" and $worn.under_lower.vagina_exposed is 0>>
+		<<set $_clothing to $worn.under_lower.name>>
+	<</if>>
+	<<if $worn.lower.state isnot "naked" and $worn.lower.state is "waist" and $worn.lower.vagina_exposed is 0>>
+			<<set $_clothing to $worn.lower.name>>
+	<</if>>
+	<<if $worn.over_lower.state isnot "naked" and $worn.over_lower.state is "waist" and $worn.over_lower.vagina_exposed is 0>>>
+		<<set $_clothing to $worn.over_lower.name>>
+	<</if>>
+
+	<<set $rng to random(1, 100)>>
+	<<if $rng gte 101>>
+		<span class="blue"><<He>> moves the $_toy in <<his>> $args[0] hand away from your <<penis>>.</span>
+		<<combat-reset-hand $args[0]>><<set $NPCList[_n][$_hand + "tool"] to 0>>
+		<<set $penisuse to 0>>
+	<<elseif $rng gte 51>>
+		<<He>> <<strokes>> your shaft using the $_toy in <<his>> $args[0] hand.
+		<<neutral 10 _n>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif $rng gte 21>>
+		<<He>> <<print either("slaps","smacks","teases")>> your glans with the $_toy in <<his>> $args[0] hand<<if $_clothing isnot "none">>, through your $_clothing<</if>>.
+		<<neutral 10 _n>><<set $speechglans to 1>>
+		<<bodypart_admire_chance pubic>>
+	<<elseif $rng lte 20
+	and $worn.under_lower.state isnot "naked" and ($worn.under_lower.state isnot "waist" or $worn.under_lower.vagina_exposed gte 1)
+	and $worn.lower.state isnot "naked" and ($worn.lower.state isnot "waist" or $worn.lower.vagina_exposed gte 1)
+	and $worn.over_lower.state isnot "naked" and ($worn.over_lower.state isnot "waist" or $worn.over_lower.vagina_exposed gte 1)>>
+		<span class="pink"><<He>> plunges the $_toy in <<his>> $args[0] hand onto your penis.</span>
+		<<set $penisuse to "onahole">><<set $penisstate to "onahole">>
+		<<neutral 15 _n>>
+		<<set $speechpenis to 1>>
+		<<combat-set-hand-target $args[0] "penisonahole">>
+		<<bodypart_admire_chance pubic>>
+	<</if>>
+<</widget>>
+
+<<widget "combat-onahole-on-penis">>
+	<<set $_hand to $args[0]>>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<set $rng to random(1, 100)>>
+	<<if $rng gte 101>>
+		<span class="blue"><<He>> moves the $_toy in <<his>> $args[0] hand away from your <<penis>>.</span>
+		<<combat-reset-hand $args[0]>><<set $NPCList[_n][$_hand + "tool"] to 0>>
+		<<set $penisuse to 0>>
+	<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
+		With increasing power, <<he>> fucks your <<penis>> with the $_toy in <<his>> $args[0] hand.
+	<<else>>
+		<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+		<<He>> <<print either("fucks","fucks","rhythmically works")>> your penis with the $_toy in <<his>> $args[0] hand.
+	<</if>>
+<</widget >>
+
+<<widget "combat-dildo-on-anusentrance">>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<set _hand to $args[0]>>
+
+	<<if $worn.under_lower.state isnot "naked" and $worn.under_lower.state is "waist" and $worn.under_lower.vagina_exposed is 0>>
+		<<set $_clothing to $worn.under_lower.name>>
+	<</if>>
+	<<if $worn.lower.state isnot "naked" and $worn.lower.state is "waist" and $worn.lower.vagina_exposed is 0>>
+			<<set $_clothing to $worn.lower.name>>
+	<</if>>
+	<<if $worn.over_lower.state isnot "naked" and $worn.over_lower.state is "waist" and $worn.over_lower.vagina_exposed is 0>>
+		<<set $_clothing to $worn.over_lower.name>>
+	<</if>>
+
+	<<set $rng to random(1, 100)>>
+	<<if $rng gte 101>>
+		<span class="blue"><<He>> moves <<his>> _hand-hand $_toy away from your ass.</span>
+		<<combat-reset-hand $args[0]>>
+		<<set $vaginause to 0>>
+	<<elseif $rng gte 21 or $noanal is 1>>
+		<<if playerHasButtPlug()>><<run console.log("butt plug: "+$worn.butt_plug.name)>><</if>>
+		<<He>> slaps and teases your <<print either("anus","ass")>> with the $_toy in <<his>> _hand hand<<if $_clothing isnot undefined>>, through your <<print $_clothing>><<elseif playerHasButtPlug()>>, <<print either("rubbing against","through")>> your $worn.butt_plug.name<</if>>.
+		<<neutral 10 _n>>
+		<<violence 1>>
+		<<if random(1, 2) is 2>>
+			<<bodypart_admire_chance left_bottom>>
+		<<else>>
+			<<bodypart_admire_chance right_bottom>>
+		<</if>>
+	<<elseif $rng lte 20 and $noanal is 0 and $analdisable is "f"
+	and $worn.under_lower.state isnot "naked" and ($worn.under_lower.state isnot "waist" or $worn.under_lower.anus_exposed gte 1)
+	and $worn.lower.state isnot "naked" and ($worn.lower.state isnot "waist" or $worn.lower.anus_exposed gte 1)
+	and $worn.over_lower.state isnot "naked" and ($worn.over_lower.state isnot "waist" or $worn.over_lower.anus_exposed gte 1)
+	and $worn.genitals.anal_shield isnot 1 and (!playerHasButtPlug() or random(0,1) isnot 0)>>
+		/* penetration */
+		<span class="pink"><<He>> plunges the $_toy in <<his>> _hand hand into your ass<<if playerHasButtPlug()>>, heedless of your $worn.butt_plug.name<</if>>.</span>
+		<<combat-set-hand-target _hand "anusdildo">>
+		<<neutral 15 _n>>
+		<<set $speechanus to 1>>
+		<<if random(1, 2) is 2>>
+			<<bodypart_admire_chance left_bottom>>
+		<<else>>
+			<<bodypart_admire_chance right_bottom>>
+		<</if>>
+	<<else>>
+		<<He>> <<strokes>> your <<bottom>> with the $_toy in <<his>> $_hand hand<<if playerHasButtPlug()>>, rubbing against your $worn.butt_plug.name<</if>>.
+		<<neutral 10 _n>>
+		<<bodypart_admire_chance pubic>>
+	<</if>>
+<</widget>>
+
+<<widget "combat-dildo-on-anus">>
+	<<set $_toy to ($args[0] is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+	<<set $rng to random(1, 100)>>
+	<<if $rng gte 101>>
+		<span class="purple"><<He>> slides <<his>> $args[0]-hand $_toy out of your ass.</span>
+		<<combat-set-hand-target $args[0] "dildo">>
+		<<neutral 15 _n>>
+	<<elseif $rng lte 100>>
+		<<set $_rhythmically to either("rhythmically","rhythmically","ruthlessly","gently","teasingly","skillfully")>>
+		<<if $anusstate isnot 0 and $anusstate.includes("double")>>
+			<<He>> $_rhythmically slides the $_toy in <<his>> $args[0] hand in and out of your ass, ?alongside the two cocks,
+		<<elseif $anusstate isnot 0 and $anusstate is "penetrated">>
+			<<He>> $_rhythmically slides the $_toy in <<his>> $args[0] hand in and out of your ass, <<print either("in rhythm with","heedless of","alongside")>>
+			<<if $anustarget is _n>><<his>> <<npcPenisSimple _n>>,<<else>><<personselect $anustarget>><<combatperson>>'s cock,<</if>>
+		<<else>>
+			<<He>> $_rhythmically slides the $_toy in <<his>> $args[0] hand in and out of your ass,
+		<</if>>
+		<<neutral 20 _n>><<set $speechanus to 1>>
+		<<if $player.gender is "f">>
+			teasing your anus.
+		<<else>>
+			teasing your prostate.
+		<</if>>
+		<<if random(1, 2) is 2>>
+			<<bodypart_admire_chance left_bottom>>
+		<<else>>
+			<<bodypart_admire_chance right_bottom>>
+		<</if>>
+	<</if>>
+<</widget>>
+
+<<widget "combat-hand-on-sextoy">>
+			/* used for both dildo types and whip types */
+			<<set $_hand to $args[0]>>
+			<<set $_dildotypes to ["dildo","length of anal beads"]>>
+			<<set $_whiptypes to ["riding crop","flog"]>>
+			<<set $_toy to $_hand + "tool">>
+
+			<<set $_rand to random(0,9)>>
+			<<if $_rand lte 7 and npcHasSexToyOfType(_n,"dildo") or $_rand lte 3 and npcHasSexToyOfType(_n,"whip")>>
+				/* find orifice to penetrate */
+				<<if random(0,1) is 0 or $analdisable is "t">>
+					<<if $player.penisExist and $player.vaginaExist>>
+						<<if (random(0,1) is 0 or (playerHasStrapon() and random(0,9) is 0))>>
+							<<combat-dildo-on-penisentrance $_hand>>
+						<<else>>
+							<<combat-dildo-on-vaginaentrance $_hand>>
+						<</if>>
+					<<elseif $player.penisExist or (playerHasStrapon() and random(0,9) is 0)>>
+						<<combat-dildo-on-penisentrance $_hand>>
+					<<elseif $player.vaginaExist>>
+						<<combat-dildo-on-vaginaentrance $_hand>>
+					<</if>>
+				<<else>>
+					<<combat-dildo-on-anusentrance $_hand>>
+				<</if>>
+			<<elseif npcHasSexToyOfType(_n,"dildo") or npcHasSexToyOfType(_n,"whip")>>
+				<<combat-dildospank $_hand>>
+			<</if>>
+
+<</widget>>
+
+<<widget "combat-reveal-sextoy">>
+			/* Used in conjuction with a widget that starts an NPC with a sex toy in hand */
+			<<set $_hand to $args[0]>>
+			<<set $_dildo to ($_hand is "left" ? $NPCList[_n].lefttool : $NPCList[_n].righttool )>>
+			<<set $_otherhand to ($_hand is "left" ? "right" : "left" )>>
+			<<set $_freehand to false>>
+			<<if $NPCList[_n][$_otherhand+"hand"] is 0>>
+				<<set $_freehand to true>>
+			<</if>>
+
+			<<set $_consentcolour to "blue">><<set $_eagerly to "eagerly">>
+			<<if $consensual is 1>>
+			<<set $_consentcolour to "blue">><<set $_eagerly to "eagerly">>
+			<<else>><<set $_consentcolour to "red">><<set $_eagerly to "menacingly">>
+			<</if>>
+
+			<<if $args[1] isnot undefined and $args[1] is "pocket">>
+				<span class="purple"><<He>> pulls a <span class="blue">$_dildo</span> from <<his>> pocket, slapping it against <<his>>
+			 	<<if $_freehand is true>><<print either("palm","palm","palm","thigh","thigh","shoulder","face")>><<else>><<print either("thigh","thigh","shoulder","shoulder","face")>><</if>> <<if $consensual is 1>> eagerly<<else>>menacingly<</if>>.</span>
+			<<else>>
+				<<switch random(0,3)>>
+					<<case 0>>
+						<span class="purple"><<He>> <<print either("flourishes","parades","brandishes","waves")>> <<his>> <span @class='$_consentcolour'>$_dildo</span>, $_eagerly.</span>
+					<<case 1 2>>
+						<span class="purple"><<He>> <<print either("slaps","smacks")>> <<his>> <span @class='$_consentcolour'>$_dildo</span> against <<his>> <<if $_freehand is true>><<print either("palm","palm","palm","thigh","shoulder","face")>><<else>><<print either("thigh","thigh","shoulder","shoulder","face")>><</if>>.</span>
+					<<case 3>>
+						<<if $position is "wall" and $walltype isnot "front">>
+							<span class="purple"><<He>> <<if $consensual is 1>> <<print either("brushes","caresses")>> your <<bottom>><<else>>slaps your <<bottom>><<violence 5>><</if>> with <<his>> <span @class='$_consentcolour'>$_dildo</span>.</span>
+						<<else>>
+							<span class="purple"><<He>> <<if $consensual is 1>> <<print either("brushes","caresses")>> your face<<else>>slaps your face<<violence 5>><</if>> with the <span @class='$_consentcolour'>$_dildo</span> in <<his>> $_hand hand.</span>
+						<</if>>
+				<</switch>>
+			<</if>>
+			<<if $args[0] is "left">>
+				<<set $NPCList[_n].lefttool to $_dildo>>
+				<<set $NPCList[_n].lefthand to "dildo">>
+			<<elseif $args[0] is "right">>
+				<<set $NPCList[_n].righttool to $_dildo>>
+				<<set $NPCList[_n].righthand to "dildo">>
+			<</if>>
+
+<</widget>>
+
 <<widget "combat-hand-on-mouth">>
 	<<set $rng to random(1, 100)>>
 	<<if $enemyanger lte 20 and $enemytrust gte 20>>
@@ -463,7 +972,7 @@
 
 
 	<<combat-pull-clothing-state $_slot "down" $_hand>>
-	
+
 	<<switch $_origin>>
 		<<case "chest">>
 			<<He>> pulls your $_clothing.name down with <<his>> $_hand hand,
@@ -534,10 +1043,15 @@
 	<<set $_clothing to $worn[$args[0]]>>
 	<<set $_hand to $args[1]>>
 
-	<<He>> pulls your $_clothing.name to the side, <span class="lewd">revealing your <<genitals>>.</span>
-	<<set $_clothing.state to "totheside">>
-	<<combat-reset-hand $_hand>><<neutral 5 _n>>
-	<<set $_clothing.vagina_exposed to 1>><<set $_clothing.anus_exposed to 1>><<set $_clothing.exposed to 1>><<set $speechgenitals to 1>>
+	<<if playerHasStrapon() and $penisstate isnot 0>>
+		<<He>> moves <<his>> $_hand hand away from your $worn.under_lower.colour $worn.under_lower.name.
+		<<combat-reset-hand $_hand>><<neutral 5 _n>>
+	<<else>>
+		<<He>> pulls your $_clothing.name to the side, <span class="lewd">revealing your <<genitals>>.</span>
+		<<set $_clothing.state to "totheside">>
+		<<combat-reset-hand $_hand>><<neutral 5 _n>>
+		<<set $_clothing.vagina_exposed to 1>><<set $_clothing.anus_exposed to 1>><<set $_clothing.exposed to 1>><<set $speechgenitals to 1>>
+	<</if>>
 <</widget>>
 
 <<widget "combat-pull-clothing-state">>
@@ -555,7 +1069,7 @@
 		<<set _origin to $_clothing.state>>
 		<<set _dest to setup.clothingStateNextUp[$_clothing.state]>>
 		<<set $_clothing.state to _dest>>
-		
+
 		<<if $_clothing.state_top and setup.clothingStateIndex[$_clothing.state] gt setup.clothingStateIndex[$_clothing.state_top]>>
 			<<set $_clothing.state_top to _dest>>
 		<</if>>
@@ -567,7 +1081,7 @@
 		<<switch _origin>>
 			<<case "midriff">>
 				<<set $_clothing.exposed to 2>><<set $speechbreasts to 1>> <!-- breasts/chest now exposed below clothing bottom -->
-			<<case "waist">>  
+			<<case "waist">>
 				<<set $_clothing.exposed to 2>><<set $speechgenitals to 1>><!-- genitals now exposed below clothing bottom -->
 				<<set $_clothing.vagina_exposed to 1>><<set $_clothing.anus_exposed to 1>>
 		<</switch>>
@@ -579,7 +1093,7 @@
 			<<set _origin to $_clothing.state_top>>
 			<<set _dest to setup.clothingStateNextDown[$_clothing.state_top]>>
 			<<set $_clothing.state_top to _dest>>
-		
+
 			<<if setup.clothingStateIndex[$_clothing.state_top] lt setup.clothingStateIndex[$_clothing.state]>>
 				<!-- if the top of the clothing is as low as or lower than the bottom -->
 				<<set $_clothing.state to _dest>>
@@ -593,7 +1107,7 @@
 			<<set _origin to $_clothing.state>>
 			<<set _dest to setup.clothingStateNextDown[$_clothing.state]>>
 			<<set $_clothing.state to _dest>>
-		
+
 			<!-- adjust exposure -->
 			<<if _origin is "waist">>
 				<<set $_clothing.exposed to 2>><<set $speechgenitals to 1>> <!-- breasts/chest now exposed above clothing top -->
@@ -631,6 +1145,15 @@
 
 <</widget>>
 
+<<widget "combat-remove-buttplug">>
+	<<set $_hand to $args[1]>>
+
+	<<He>> removes your $worn.butt_plug.name, <span class="lewd">revealing your anus.</span>
+	<<set $worn.butt_plug.state to "removed">>
+	<<combat-reset-hand $_hand>><<neutral 5 _n>>
+	<<set $speechanusentrance to 1>>
+<</widget>>
+
 <<widget "combat-tug-clothing">>
 	<<set $_slot to $args[0]>>
 	<<set $_hand to $args[1]>>
@@ -667,9 +1190,11 @@
 	<<set $_hand to $args[0]>>
 	<<set $_overlower_open to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 or $worn.over_lower.type.includes("naked")>>
 	<<set $_lower_open to setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1 or $worn.lower.type.includes("naked")>>
-	
+
 	<<if _underOutfit>>
 		<<combat-pull-outfit-down "under" "lower" $_hand>>
+	<<elseif playerHasStrapon() and $penisstate isnot 0>>
+		<<He>> moves <<his>> hand away from your $worn.under_lower.colour $worn.under_lower.name.
 	<<elseif ($_overlower_open and $_lower_open) or $worn.lower.state isnot "waist">>
 		<<if $worn.under_lower.state is "waist" and !($rng gt 20 or $combatgoal is "strip" or $worn.under_lower.no_aside)>>
 			<<combat-pull-clothing-to-side "under_lower" $_hand>>
@@ -681,12 +1206,23 @@
 	<</if>>
 <</widget>>
 
+<<widget "combat-hand-on-buttplug">>
+	<<set $_clothing to $worn["butt_plug"]>>
+	<<set $_hand to $args[1]>>
+
+	<<if random(0,3) is 0>>
+		With <<his>> $_hand hand, he teases your anus with your $_clothing.name.
+	<<else>>
+		<<combat-remove-buttplug $_hand>>
+	<</if>>
+<</widget>>
+
 <<widget "combat-hand-on-lowerclothes">>
 	<<set $_hand to $args[0]>>
 	<<set $_overlower_open to setup.clothes.over_lower[clothesIndex('over_lower', $worn.over_lower)].skirt is 1 or $worn.over_lower.type.includes("naked")>>
 	<<set $_lower_open to setup.clothes.lower[clothesIndex('lower', $worn.lower)].skirt is 1>>
-	
-	
+
+
 	<<if $_overlower_open and $_lower_open>>
 		<<if $worn.lower.skirt_down is 1>>
 			<<combat-lift-skirt "lower" $_hand>>
@@ -708,7 +1244,7 @@
 
 <<widget "combat-hand-on-overupperclothes">>
 	<<set $_hand to $args[0]>>
-	
+
 	<<if _overOutfit is false>>
 		<<if $worn.over_upper.open is 1>>
 			<<combat-pull-clothing-down "over_upper" $_hand>>
@@ -780,6 +1316,8 @@
 	<<if $worn[$_slot].name is "naked">>
 		<<cast_aside_clothes>>
 		<<combat-reset-hand $_hand>>
+	<<elseif $worn[$_slot].type.includes("strap-on") and $worn[$_slot].state is "waist" and $penisstate is 0>>
+		<<combat-reset-hand $_hand>>
 	<<elseif V[$_strugglevar] is 1>>
 		<<set V[$_strugglevar] to 0>>
 		You manage to keep <<him>> from stripping you of your $worn[$_slot].name.
@@ -1018,6 +1556,9 @@
 			<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 			<<neutral 1 _n>>
 			<<set $handtarget to "underlowerclothes">>
+		<<elseif $analdisable is "f" and playerHasButtPlug() and random(0,1 is 0)>>
+			<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+			<<neutral 1 _n>><<set $handtarget to "buttplug">>
 		<<elseif $worn.genitals.name isnot "naked" and $walltype isnot "front">>
 			<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 			<<neutral 1 _n>>
@@ -1053,6 +1594,68 @@
 			<<set $NPCList[_n].righthand to "pen">>
 		<</if>>
 		<<neutral 1 _n>>
+
+	<<elseif $enemyanger + $rng lte 12 and $toydildodisable is "f" and !getSexToysofType("dildos and onaholes").contains($NPCList[_n].lefttool) and !getSexToysofType("dildos and onaholes").contains($NPCList[_n].righttool) and ($NPCList[_n].teen isnot 1 or random(0,3) isnot 0)>>
+		/* Sex toys, dildo types and onaholes specifically */
+		<<NPCStatusCheck "Sydney">>
+		<<if $position is "wall" and $walltype is "front">>
+			<span class="purple"><<He>> <<print either("pats","strokes","fondles")>> your hair with <<his>> $args[0] hand.</span>
+			<<set $speechhair to 1>>
+			<<bodypart_admire_chance forehead>>
+		<<elseif ["Robin", "Kylar","Great Hawk","Black Wolf"].includes($npc[$npcrow.indexOf(_n)]) or ($npc[$npcrow.indexOf(_n)] is "Sydney" and !_sydneyStatus.includes("corrupt"))>>
+			/* Skip toys for certain NPCs */
+			<<set $handtarget to 0>>
+			<<if $worn.over_lower.name isnot "naked">>
+				<span class="purple"><<He>> grasps your $worn.over_lower.name with <<his>> $args[0] hand.</span>
+				<<set $handtarget to "overlowerclothes">><<neutral 1 _n>>
+			<<elseif $worn.lower.name isnot "naked">>
+				<span class="purple"><<He>> grasps your $worn.lower.name with <<his>> $args[0] hand.</span>
+				<<set $handtarget to "lowerclothes">><<neutral 1 _n>>
+			<<elseif $worn.genitals.type.includes("chastity")>>
+				<<He>> <<strokes>> your inner thigh and brushes <<his>> fingers against your $worn.genitals.name.
+				<<neutral 10 _n>><<set $speechchastity to 1>>
+			<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+				<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+				<<neutral 1 _n>><<set $handtarget to "buttplug">>
+			<<elseif $player.penisExist and $player.vaginaExist>>
+				<<if $player.ballsExist and random(0,1) is 1>>
+					<<He>> <<strokes>> your <<testicles>> and teases your glans.
+					<<neutral 10 _n>><<set $speechglans to 1>>
+				<<else>>
+					<<He>> strokes the base of your <<penis>> where it meets your <<pussy>>.
+					<<neutral 10 _n>><<set $speechfutapenis to 1>>
+				<</if>>
+			<<elseif $player.penisExist and $player.ballsExist>>
+				<<He>> <<strokes>> your <<testicles>> and teases your glans.
+				<<neutral 10 _n>><<set $speechglans to 1>>
+			<<elseif $player.vaginaExist>>
+				<<He>> <<strokes>> your pubic mound and teases your clit.
+				<<neutral 10 _n>><<set $speechclit to 1>>
+			<<else>>
+				<<He>> <<strokes>> your thigh.
+			<</if>>
+			<<combat-set-hand-target $args[0] $handtarget>>
+		<<else>>
+			<<set $_dildo to randomSexToy("dildo")>>
+			<<if $NPCList[_n].penis isnot 0 and $NPCList[_n].penis isnot "none" and !$NPCList[_n].penisdesc.includes("strap-on") and $player.penisExist>>
+				<<set $_dildo to randomSexToy("dildos and onaholes")>>
+			<</if>>
+			<<set $_hand to $args[0]>>
+			<<set $_otherhand to ($_hand is "left" ? "right" : "left" )>>
+			<<set $_freehand to ($NPCList[_n][$_otherhand+"hand"] is 0 ? true : false)>>
+
+			<span class="purple"><<He>> pulls a <span class="blue">$_dildo</span> from <<his>> pocket, slapping it against <<his>>
+			 <<if $_freehand is true>><<print either("palm","palm","palm","thigh","thigh","shoulder","face")>><<else>><<print either("thigh","thigh","shoulder","shoulder","face")>><</if>> <<if $consensual is 1>> eagerly<<else>>menacingly<</if>>.</span>
+			
+			<<if ["pocket pussy","onahole"].includes($_dildo)>>
+				<<set $NPCList[_n][$_hand+"tool"] to $_dildo>>
+				<<set $NPCList[_n][$_hand+"hand"] to "onahole">>
+			<<else>>
+				<<set $NPCList[_n][$_hand+"tool"] to $_dildo>>
+				<<set $NPCList[_n][$_hand+"hand"] to "dildo">>
+			<</if>>
+		<</if>>
+
 	<<elseif $enemyanger + $rng lte 20>>
 		<<if $walltype is "front">>
 			<<He>> strokes your cheek.
@@ -1071,7 +1674,7 @@
 			<<elseif $player.penisExist and $player.vaginaExist>>
 				<<if $player.ballsExist and random(0,1) is 1>>
 					<<He>> <<strokes>> your <<testicles>> and teases your glans.
-					<<neutral 10 _n>><<set $speechglans to 1>>	
+					<<neutral 10 _n>><<set $speechglans to 1>>
 				<<else>>
 					<<He>> strokes the base of your <<penis>> where it meets your <<pussy>>.
 					<<neutral 10 _n>><<set $speechfutapenis to 1>>
@@ -1140,6 +1743,9 @@
 				<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 					<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "underlowerclothes">><<neutral 1 _n>>
+				<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+					<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+					<<neutral 1 _n>><<set $handtarget to "buttplug">>
 				<<elseif $worn.genitals.name isnot "naked">>
 					<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "genitals">><<neutral 1 _n>>
@@ -1155,6 +1761,9 @@
 				<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 					<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "underlowerclothes">><<neutral 1 _n>>
+				<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+					<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+					<<neutral 1 _n>><<set $handtarget to "buttplug">>
 				<<elseif $worn.genitals.name isnot "naked">>
 					<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "genitals">><<neutral 1 _n>>
@@ -1180,6 +1789,9 @@
 				<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 					<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "underlowerclothes">><<neutral 1 _n>>
+				<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+					<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+					<<neutral 1 _n>><<set $handtarget to "buttplug">>
 				<<elseif $worn.genitals.name isnot "naked">>
 					<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "genitals">><<neutral 1 _n>>
@@ -1201,6 +1813,9 @@
 				<<elseif $worn.genitals.name isnot "naked">>
 					<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 					<<set $handtarget to "genitals">><<neutral 1 _n>>
+				<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+					<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+					<<neutral 1 _n>><<set $handtarget to "buttplug">>
 				<<elseif $worn.under_lower.vagina_exposed is 1 and $worn.genitals.vagina_exposed is 1>>
 					<<if $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1>>
 						<<if $player.vaginaExist and $vaginause is 0 and (!$player.penisExist or $penisuse isnot 0 or random(0,100) gte 50)>>
@@ -1493,6 +2108,9 @@
 			<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 				<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "underlowerclothes">><<neutral 1 _n>>
+			<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+				<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+				<<neutral 1 _n>><<set $handtarget to "buttplug">>
 			<<elseif $worn.genitals.name isnot "naked">>
 				<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "genitals">><<neutral 1 _n>>
@@ -1510,6 +2128,9 @@
 			<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 				<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "underlowerclothes">><<neutral 1 _n>>
+			<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+				<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+				<<neutral 1 _n>><<set $handtarget to "buttplug">>
 			<<elseif $worn.genitals.name isnot "naked">>
 				<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "genitals">><<neutral 1 _n>>
@@ -1532,6 +2153,9 @@
 			<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 				<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "underlowerclothes">><<neutral 1 _n>>
+			<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+				<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+				<<neutral 1 _n>><<set $handtarget to "buttplug">>
 			<<elseif $worn.genitals.name isnot "naked">>
 				<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "genitals">><<neutral 1 _n>>
@@ -1551,6 +2175,9 @@
 			<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.state isnot "totheside">>
 				<span class="purple"><<He>> grasps your $worn.under_lower.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "underlowerclothes">><<neutral 1 _n>>
+			<<elseif $analdisable is "f" and random(0,1) is 0 and playerHasButtPlug()>>
+				<span class="purple"><<He>> places <<his>> hand on your $worn.butt_plug.name.</span>
+				<<neutral 1 _n>><<set $handtarget to "buttplug">>
 			<<elseif $worn.genitals.name isnot "naked">>
 				<span class="purple"><<He>> grasps your $worn.genitals.name with <<his>> $args[0] hand.</span>
 				<<combat-set-hand-target $args[0] "genitals">><<neutral 1 _n>>
@@ -1567,6 +2194,58 @@
 			<</if>>
 		<</if>>
 		<<bodypart_admire_chance pubic>>
+	<<elseif $enemyanger + $rng lte 134 and $toywhipdisable is "f" and !["riding crop","flog"].contains($NPCList[_n].lefttool) and !["riding crop","flog"].contains($NPCList[_n].righttool)>>
+		<<NPCStatusCheck "Sydney">>
+		/* Leather crop start */
+		<<if $position is "wall" and $walltype is "front">>
+			<span class="purple"><<He>> seizes your hair with <<his>> $args[0] hand.</span>
+			<<combat-set-hand-target $args[0] "hair">><<violence 2>><<set $speechhair to 1>>
+			<<bodypart_admire_chance forehead>>
+		<<elseif ($npc[$npcrow.indexOf(_n)] is "Sydney" and !_sydneyStatus.includes("corrupt")) or ["Robin", "Kylar","Great Hawk","Black Wolf"].includes($npc[$npcrow.indexOf(_n)])>>
+			/* Named NPCs excluded */
+			<<set $_smacks to either("smacks","slaps","pinches")>>
+			<<switch random(0,3)>>
+				<<case 0>><span class="red"><<He>> <<print $_smacks>> your <<bottom>>.</span>
+					<<violence 1>><<bruise bottom>><<hitstat>>
+				<<case 1>>
+					<<if $player.penisExist and $player.vaginaExist>>
+						<span class="red"><<He>> <<print $_smacks>> your shaft and labia.
+					<<elseif $player.penisExist>>
+						<span class="red"><<He>> <<print $_smacks>> your <<penis>>.
+					<<elseif $player.vaginaExist>>
+						<span class="red"><<He>> <<print $_smacks>> your <<pussy>>.
+					<</if>>
+				<<case 2>>
+						<span class="red"><<He>> <<print either("squeezes","grasps","throttles","chokes","strangles")>> your neck in a vice grip, but relents.
+				<<case 3>>
+					<span class="purple"><<He>> seizes your hair with <<his>> $args[0] hand.</span>
+					<<combat-set-hand-target $args[0] "hair">><<violence 2>><<set $speechhair to 1>>
+					<<bodypart_admire_chance forehead>>
+			<</switch>>
+		<<else>>
+			/* Use crops, flogs, whips, whatever */
+			<<set $_whip to either("riding crop","riding crop","flog")>>
+			<<set $_smacking to either("smacking","smacking","slapping","whacking")>>
+
+			<<set $_hand to $args[0]>>
+			<<set $_otherhand to ($_hand is "left" ? "right" : "left" )>>
+			<<set $_freehand to ($NPCList[_n][$_otherhand+"hand"] is 0 ? true : false)>>
+
+			<span class="purple"><<He>> pulls a <span class="red">leather $_whip</span> from <<his>> pocket,
+			<<if $_freehand is true>>
+			$_smacking it against <<his>> palm.
+			<<else>>
+			$_smacking it against <<his>> <<print either("shoulder","thigh")>>.
+			<</if>>
+			</span>
+			<<if $args[0] is "left">>
+				<<set $NPCList[_n].lefttool to $_whip>>
+				<<set $NPCList[_n].lefthand to "dildo">>
+			<<elseif $args[0] is "right">>
+				<<set $NPCList[_n].righttool to $_whip>>
+				<<set $NPCList[_n].righthand to "dildo">>
+			<</if>>
+		<</if>>
 	<<elseif $enemyanger + $rng lte 140>>
 		<<if $position is "wall" and $walltype isnot "front">>
 			<<He>> slaps your <<bottom>>.
@@ -1837,7 +2516,11 @@
 		<</if>>
 		<<if $NPCList[_n].fullDescription is "Sydney">>
 			<<sydneyExpose>>
-		<</if>>	
+		<</if>>
+	<</if>>
+	<<if $NPCList[_n].penis is "strap-on">>
+		<<He>> buckles <span class="blue"><<his>> $NPCList[_n].strapon.description around <<his>> hips.</span>
+		<<set $NPCList[_n].penis to 0>>
 	<</if>>
 	<<set $rng to random(1, 100)>>
 	<<if $NPCList[_n].penis is "thighs">>
@@ -1950,7 +2633,11 @@
 				<</if>>
 			<<elseif $enemyanger gte 20>>
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
+					<<if npcHasStrapon(_n)>>
+					<<He>> ruthlessly pounds your <<pussy>> with <<his>> $NPCList[_n].penisdesc.
+					<<else>>
 					You feel <<his>> $NPCList[_n].penisdesc throb as <<he>> pounds away at your <<pussy>>.
+					<</if>>
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
 					<<He>> continues to violate your <<pussy>>.
 				<<else>>
@@ -2052,7 +2739,7 @@
 							<<else>>
 								<<if $npcSub>>You push<<else>><<He>> pushes<</if>> <<his>> $NPCList[_n].penisdesc against your <<pussy>>, <span class="blue">but fail<<if !$npcSub>>s<</if>> to penetrate,</span> instead angling away and rubbing it against your <<clit>>.
 								<<sex 5 _n>><<set $speechvaginaimminent to 1>>
-								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3>>
+								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3 and !npcHasStrapon(_n)>>
 									Precum leaks from the tip, <span class="blue">lubricating your pussy.</span>
 									<<set $player.bodyliquid.vaginaoutside.semen += 1>>
 								<</if>>
@@ -2110,7 +2797,11 @@
 					<</if>>
 				<<elseif $enemyanger gte 20>>
 					<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-						You feel <<his>> $NPCList[_n].penisdesc throb as <<he>> pounds away at your <<pussy>>, $_alongsidetext the other cock.
+						<<if npcHasStrapon(_n)>>
+							<<He>> ruthlessly pounds your <<pussy>> with <<his>> $NPCList[_n].penisdesc, $_alongsidetext the other cock.
+						<<else>>
+							You feel <<his>> $NPCList[_n].penisdesc throb as <<he>> pounds away at your <<pussy>>, $_alongsidetext the other cock.
+						<</if>>
 					<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
 						<<He>> continues to violate your <<pussy>>, $_alongsidetext the other cock.
 					<<else>>
@@ -2126,7 +2817,7 @@
 					<</if>>
 				<</if>>
 				<<sex 30>><<bruise vagina>><<violence 1>><<set $speechvaginapenetrated to 1>><<pain _pain>>
-			<<else>>
+			<<else>> /* single penetration */
 				<<set _pain to Math.floor($vaginalPain * (1.5 / (5 - ($NPCList[_n].penissize or 1))))>>
 				<<if $enemyanger gte 100>><<set _pain *= 1.5>>
 					<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
@@ -2138,7 +2829,11 @@
 					<</if>>
 				<<elseif $enemyanger gte 20>>
 					<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-						You feel <<his>> $NPCList[_n].penisdesc throb as <<he>> pounds away at your <<pussy>>.
+						<<if npcHasStrapon(_n)>>
+							<<He>> ruthlessly pounds your <<pussy>> with <<his>> $NPCList[_n].penisdesc.
+						<<else>>
+							You feel <<his>> $NPCList[_n].penisdesc throb as <<he>> pounds away at your <<pussy>>.
+						<</if>>
 					<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
 						<<He>> continues to violate your <<pussy>>.
 					<<else>>
@@ -2300,7 +2995,7 @@
 							<<else>>
 								<<if $npcSub>>You push<<else>><<He>> pushes<</if>> <<his>> $NPCList[_n].penisdesc against your <<pussy>>; <span class="blue">but fail<<if !$npcSub>>s<</if>> to penetrate,</span> instead angling away and rubbing it against your <<clit>> and the other cock.
 								<<sex 5>><<set $speechvaginaimminent to 1>>
-								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3>>
+								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3 and !npcHasStrapon(_n)>>
 									Precum leaks from the tip, <span class="blue">lubricating your pussy.</span>
 									<<set $player.bodyliquid.vaginaoutside.semen += 1>>
 								<</if>>
@@ -2334,30 +3029,36 @@
 			<span class="purple"><<He>> withdraws <<his>> penis from your anus.</span>
 			<<sex 30 _n>><<set $NPCList[_n].penis to "anusimminent">><<bruise anus>><<violence 1>><<set $anusstate to "imminent">>
 		<<elseif $rng gte 1>>
+			<<set $_alongside to either("alongside","heedless of","pushing aside")>>
+			<<set $_buttplug to (playerHasButtPlug() ? ", "+$_alongside+" your "+$_worn : "")>>
 			<<set _pain to Math.floor($analPain * (1.5 / (5 - ($NPCList[_n].penissize or 1))))>>
 			<<if $enemyanger gte 100>><<set _pain *= 1.5>>
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-					<<He>> ravages your <<bottom>> with a violent intensity.
+					<<He>> ravages your <<bottom>> with a violent intensity$_buttplug.
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-					You feel <<his>> $NPCList[_n].penisdesc ever deeper within you as <<he>> fucks your <<bottom>>.
+					You feel <<his>> $NPCList[_n].penisdesc ever deeper within you as <<he>> fucks your <<bottom>>$_buttplug.
 				<<else>>
-					<<He>> fucks your <<bottom>> with rough thrusts, intent on showing you who's boss.
+					<<He>> fucks your <<bottom>> with rough thrusts$_buttplug, intent on showing you who's boss.
 				<</if>>
 			<<elseif $enemyanger gte 20>>
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-					You feel <<his>> $NPCList[_n].penisdesc throb within you as <<he>> fucks your <<bottom>>.
+					<<if npcHasStrapon(_n)>>
+					You feel <<his>> pace quicken as <<he>> fucks your <<bottom>> with <<his>> $NPCList[_n].penisdesc$_buttplug.
+					<<else>>
+					You feel <<his>> $NPCList[_n].penisdesc throb within you as <<he>> fucks your <<bottom>>$_buttplug.
+					<</if>>
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-					<<He>> continues to violate your <<bottom>>, giving no regard to your comfort.
+					<<He>> continues to violate your <<bottom>>$_buttplug, giving no regard to your comfort.
 				<<else>>
-					<<He>> fucks your <<bottom>> with deep and dominating thrusts.
+					<<He>> fucks your <<bottom>> with deep and dominating thrusts$_buttplug.
 				<</if>>
 			<<else>>
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-					<<if $npcSub>>You feel <<him>> approaching <<his>> peak, and ride <<him>><<else>><<He>> fucks your <<bottom>><</if>> with increasing power.
+					<<if $npcSub>>You feel <<him>> approaching <<his>> peak, and ride <<him>><<else>><<He>> fucks your <<bottom>><</if>> with increasing power$_buttplug.
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-					<<if $npcSub>>You continue to ride <<his>> $NPCList[_n].penisdesc.<<else>><<He>> continues thrusting into your <<bottom>>.<</if>>
+					<<if $npcSub>>You continue to ride <<his>> $NPCList[_n].penisdesc.<<else>><<He>> continues thrusting into your <<bottom>>$_buttplug.<</if>>
 				<<else>>
-					<<if $npcSub>>You fuck <<his>> NPCList[_n].penisdesc<<else>><<He>> fucks your <<bottom>><</if>> with steady thrusts.
+					<<if $npcSub>>You fuck <<his>> NPCList[_n].penisdesc<<else>><<He>> fucks your <<bottom>><</if>> with steady thrusts$_buttplug.
 				<</if>>
 			<</if>>
 			<<sex 30 _n>><<bruise anus>><<violence 1>><<set $speechanuspenetrated to 1>><<pain _pain>>
@@ -2368,6 +3069,40 @@
 		<<if $rng gte 101>>
 			<span class="blue"><<He>> stops pressing <<his>> $NPCList[_n].penisdesc against your anus.</span>
 			<<set $NPCList[_n].penis to "anusentrance">><<set $anusstate to "entrance">>
+		<<elseif playerHasButtPlug()>>
+			<<if $noanal is 0>>
+				<<set $_buttplug to $worn.butt_plug.name>>
+				<<set $_alongside to either("alongside","heedless of","pushing aside")>>
+				<<set _pain to Math.floor($analPain * (1.5 / (5 - ($NPCList[_n].penissize or 1))))>>
+				<<if $player.virginity.anal isnot true>>
+					<span class="pink"><<He>> thrusts <<his>> $NPCList[_n].penisdesc deep into your <<bottom>>, $_alongside your $_buttplug.</span>
+					<<switch $NPCList[_n].penissize>>
+					<<case 3 4>>
+						<span class="red"> You whimper as your ass stretches to accommodate both <<his>> cock and your $_buttplug.</span>
+					<<case 1>>
+						<span class="green">You can barely feel it.</span>
+					<<default>>
+					<</switch>>
+					<<sex 30 _n>><<set $NPCList[_n].penis to "anus">><<bruise anus>><<analstat>><<violence 1>><<raped>><<anusraped>><<set $speechanuspenetrated to 1>>
+					<<if $enemyanger gte 100>><<set _pain *= 1.5>><</if>><<pain _pain>>
+				<<elseif $player.virginity.anal is true>>
+					<span class="pink"><<He>> thrusts <<his>> $NPCList[_n].penisdesc deep into your virgin anus, $_alongside your $_buttplug,</span> <span class="red">violating you in a way you hadn't conceived of.</span>
+					<<switch $NPCList[_n].penissize>>
+					<<case 3 4>>
+						<span class="red"> You scream as your ass struggles to accommodate both <<his>> cock and your $_buttplug.</span>
+					<<case 1>>
+						<span class="green"> While your ass is technically no longer virgin, you can barely feel it.</span>
+					<<default>>
+					<</switch>>
+					<<sex 100 _n>><<set $NPCList[_n].penis to "anus">><<bruise anus>><<analstat>><<violence 50>><<raped>><<anusraped>><<set $speechanusvirgin to 1>>
+					<<if $enemyanger gte 100>><<set _pain *= 1.5>><</if>><<pain _pain>>
+					<<takeVirginity $NPCList[_n].fullDescription "anal">>
+				<</if>>
+				<<takeNPCVirginity _n "penile">><<set $anusstate to "penetrated">>
+			<<else>>
+				Respecting your wishes, <<he>> presses <<his>> $NPCList[_n].penisdesc against your anus and $_buttplug but does not penetrate.
+				<<sex 15 _n>><<set $speechanuswithhold to 1>>
+			<</if>>
 		<<elseif $rng gte 1>>
 			<<if $noanal is 0>>
 				<<set _pain to Math.floor($analPain * (1.5 / (5 - ($NPCList[_n].penissize or 1))))>>
@@ -2425,6 +3160,19 @@
 						<<elseif $worn.genitals.type.includes("chastity") and $worn.genitals.anal_shield is 1>>
 							<<if $npcSub>>You rub<<else>><<He>> rubs<</if>> <<his>> $NPCList[_n].penisdesc against your anus through your $worn.genitals.name.
 							<<sex 25 _n>><<set $worn.genitals.integrity -= 10>><<set $speechchastity to 1>>
+						<<elseif playerHasButtPlug()>>
+							<<switch random(0,2)>>
+								<<case 0>>
+									<<if $npcSub>>You rub<<else>><<He>> rubs<</if>> <<his>> $NPCList[_n].penisdesc against your anus and your $worn.butt_plug.name.
+									<<sex 10 _n>><<set $speechanusentrance to 1>>
+								<<case 1>>
+									<<He>> removes your $worn.butt_plug.name.
+									<<set $worn.butt_plug.state to "removed">>
+									<<sex 10 _n>><<set $speechanusentrance to 1>>
+								<<case 2>>
+									<<if $npcSub>>You rub<<else>><<He>> rubs<</if>> <<his>> $NPCList[_n].penisdesc against your anus and your $worn.butt_plug.name, a thrust away from penetrating.
+									<<set $NPCList[_n].penis to "anusimminent">><<set $anusstate to "imminent">><<set $speechanusimminent to 1>>
+							<</switch>>
 						<<elseif !$npcSub>>
 							<<if $anusWetness gte ($NPCList[_n].penissize * 15) + random(1, 40) or random(1, 2) is 2>>
 								<<He>> presses <<his>> $NPCList[_n].penisdesc against your <<bottom>>. <<anus_lube_text>><span class="pink">the tip presses into you, a thrust away from penetrating.</span>
@@ -2432,14 +3180,18 @@
 							<<else>>
 								<<if $npcSub>>You push<<else>><<He>> pushes<</if>> <<his>> $NPCList[_n].penisdesc against your <<bottom>>, <span class="blue">but fail<<if !$npcSub>>s<</if>> to penetrate,</span> instead angling away and rubbing it between your cheeks.
 								<<sex 5 _n>><<set $speechanusimminent to 1>>
-								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3>>
+								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3 and !npcHasStrapon(_n)>>
 									Precum leaks from the tip, <span class="blue">lubricating your ass.</span>
 									<<set $player.bodyliquid.bottom.semen += 1>>
 								<</if>>
 							<</if>>
 						<</if>>
 					<<elseif $rng gte 1>>
+						<<if playerHasButtPlug()>>
+						<<His>> $NPCList[_n].penisdesc rubs against your <<bottom>> and $worn.butt_plug.name.
+						<<else>>
 						<<His>> $NPCList[_n].penisdesc rubs against your <<bottom>>.
+						<</if>>
 						<<sex 5 _n>><<set $speechanusentrance to 1>>
 					<</if>>
 				<</if>>
@@ -2475,7 +3227,7 @@
 					<</if>>
 				<<elseif $enemyanger gte 20>>
 					<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-						You feel <<his>> $NPCList[_n].penisdesc <<if $NPCList[_n].penisdesc.includes("strap-on")>>hit the right spots<<else>>throb within you<</if>> as <<he>> fucks your <<bottom>>, $_alongsidetext the other cock.
+						You feel <<his>> $NPCList[_n].penisdesc <<if npcHasStrapon(_n)>>hit the right spots<<else>>throb within you<</if>> as <<he>> fucks your <<bottom>>, $_alongsidetext the other cock.
 					<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
 						<<He>> continues to violate your <<bottom>>, giving no regard to your comfort nor the other cock.
 					<<else>>
@@ -2504,7 +3256,11 @@
 					<</if>>
 				<<elseif $enemyanger gte 20>>
 					<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
+						<<if npcHasStrapon(_n)>>
+						You feel <<his>> pace quicken as <<he>> fucks your <<bottom>> with <<his>> $NPCList[_n].penisdesc.
+						<<else>>
 						You feel <<his>> $NPCList[_n].penisdesc throb within you as <<he>> fucks your <<bottom>>.
+						<</if>>
 					<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
 						<<He>> continues to violate your <<bottom>>, giving no regard to your comfort.
 					<<else>>
@@ -2656,7 +3412,7 @@
 							<<else>>
 								<<if $npcSub>>You push<<else>><<He>> pushes<</if>> <<his>> $NPCList[_n].penisdesc against your <<bottom>>, <span class="blue">but fail<<if !$npcSub>>s<</if>> to penetrate,</span> instead angling away and rubbing it between your cheeks.
 								<<sex 5 _n>><<set $speechanusimminent to 1>>
-								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3>>
+								<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3 and !npcHasStrapon(_n)>>
 									Precum leaks from the tip, <span class="blue">lubricating your ass.</span>
 									<<set $player.bodyliquid.bottom.goo += 1>>
 								<</if>>
@@ -2858,7 +3614,7 @@
 		<<if $rng gte 101 or ($penisuse isnot "feet" and $vaginause isnot "feet")>>
 			<span class="blue"><<He>> stops pressing <<his>> foot against your <<genitals>>.</span>
 			<<set $NPCList[_n].penis to 0>>
-			<<if $player.penisExist and $penisuse is "feet">>
+			<<if ($player.penisExist or playerHasStrapon()) and $penisuse is "feet">>
 				<<set $penisuse to 0>>
 			<</if>>
 			<<if $player.vaginaExist and $vaginause is "feet">>
@@ -2894,15 +3650,23 @@
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
 					<<He>> continues to fuck your <<penis>> with <<his>> ass, <<his>> movements violent and erratic.
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-					<<He>> continues to ride you, your penis helpless as it's fucked.
+					<<He>> continues to ride you, <<if !$worn.under_lower.type.includes("strap-on")>>your penis helpless as it's fucked.<<else>>relishing the feel of your strap-on.<</if>>
 				<<else>>
 					<<He>> fucks your <<penis>> with rough movements, intent on showing you who's boss.
 				<</if>>
 			<<elseif $enemyanger gte 20>>
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-					You feel <<his>> ass twitch around your length as <<he>> fucks you.
+					<<if $worn.under_lower.type.includes("strap-on")>>
+						<<his>> ass twitches around your strap-on as <<he>> fucks you with wild abandon.
+					<<else>>
+						You feel <<his>> ass twitch around your length as <<he>> fucks you.
+					<</if>>
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-					<<He>> continues to violate your <<penis>>, using you as a sex toy.
+					<<if $worn.under_lower.type.includes("strap-on")>>
+						<<he>> continues to fuck your strap-on, relishing your sex toy inside <<him>>.
+					<<else>>
+						<<He>> continues to violate your <<penis>>, using you as a sex toy.
+					<</if>>
 				<<else>>
 					<<He>> fucks your <<penis>>, taking as much of you into <<his>> ass as <<he>> can.
 				<</if>>
@@ -2930,7 +3694,7 @@
 					<<He>> presses <<his>> ass against the tip of your <<penis>>, trying to take you in. <span class="blue">But you don't have an erection.</span>
 					<<set $speechpenissmall to 1>><<set $enemyanger += 5>>
 				<<elseif $penissize lte 2 or $penissize is 3 and random(1, 100) gte 70 or $penissize gte 4 and random(1, 100) gte 90>>
-					<<if $player.virginity.penile isnot true>>
+					<<if $player.virginity.penile isnot true or playerHasStrapon()>>
 						<span class="pink"><<He>> eases your <<penis>> into <<his>> ass, swallowing you to the base.</span>
 						<<sex 30 _n>><<set $NPCList[_n].penis to "otheranus">><<penilestat>><<bruise penis>><<violence 1>><<raped>><<penisraped>><<set $penisstate to "otheranus">><<set $speechotheranuspenetrated to 1>>
 					<<elseif $player.virginity.penile is true>>
@@ -2983,7 +3747,7 @@
 							<<He>> presses <<his>> ass against your <<penis>>. <<penis_lube_text>> <span class="pink">your tip is pushed into <<him>>, a thrust away from being enveloped.</span>
 							<<sex 20 _n>><<set $NPCList[_n].penis to "otheranusimminent">><<set $penisstate to "otheranusimminent">><<set $speechotheranusimminent to 1>>
 						<<elseif !$npcSub>>
-							<<He>> presses <<his>> ass against your <<penis>>, <span class="blue">but fails to envelop you.</span> Your penis angles away and rubs between <<his>> cheeks.
+							<<He>> presses <<his>> ass against your <<penis>>, <span class="blue">but fails to envelop you.</span> Your <<cock>> angles away and rubs between <<his>> cheeks.
 							<<sex 5 _n>><<set $speechotheranusimminent to 1>>
 						<</if>>
 					<<elseif $rng gte 1>>
@@ -3048,12 +3812,12 @@
 		<<if $rng gte 1>>
 			<<if $enemyarousal gte $enemyarousalmax * 0.8>>
 				<<He>> thrusts <<his>> hips, <<if $npcSub>>instinctively<</if>> pounding your <<penis>> against <<his>> cock with a violent intensity.
-				<<if $penisWetness gte 45>>
+				<<if $penisWetness gte 45 and !playerHasStrapon()>>
 					<span class="purple">Your precum mingles.</span><<purity -1>>
 				<</if>>
 			<<elseif $enemyarousal gte $enemyarousalmax * 0.6>>
 				<<He>> thrusts <<his>> hips, <<if $npcSub>>instinctively<</if>> smashing <<his>> <<npcPenisSimple _n>> against your <<penis>>.
-				<<if $penisWetness gte 45>>
+				<<if $penisWetness gte 45 and !playerHasStrapon()>>
 					<span class="purple">Your precum mingles.</span><<purity -1>>
 				<</if>>
 			<<elseif $enemyarousal gte $enemyarousalmax * 0.4>>
@@ -3087,7 +3851,7 @@
 		<</if>>
 		<<if $NPCList[_n].fullDescription is "Sydney">>
 			<<sydneyExpose>>
-		<</if>>	
+		<</if>>
 	<</if>>
 	<<set $rng to random(1, 100)>>
 	<<if $NPCList[_n].vagina is "frot">>
@@ -3109,13 +3873,21 @@
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
 					<<He>> continues to fuck your <<penis>>, <<his>> movements violent and erratic as <<his>> pussy slides along your length.
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
-					<<He>> continues to ride you, your penis helpless as it's fucked.
+					<<if !$worn.under_lower.type.includes("strap-on")>>
+						<<He>> continues to ride you, your penis helpless as it's fucked.
+					<<else>>
+						<<He>> continues to ride your <<penis>>
+					<</if>>
 				<<else>>
 					<<He>> fucks your <<penis>> with rough movements, intent on showing you who's boss.
 				<</if>>
 			<<elseif $enemyanger gte 20>>
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
-					You feel <<his>> vagina twitch and throb around your length as <<he>> fucks you.
+					<<if playerHasStrapon()>>
+						<<His>> vagina twiches and throbs around your strap-on as <<he>> fucks you.
+					<<else>>
+						You feel <<his>> vagina twitch and throb around your length as <<he>> fucks you.
+					<</if>>
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
 					<<He>> continues to violate your <<penis>>, using you as a sex toy.
 				<<else>>
@@ -3144,7 +3916,7 @@
 					<<He>> presses <<his>> pussy against the tip of your <<penis>>, trying to take you in. <span class="blue">But you don't have an erection.</span>
 					<<set $speechpenissmall to 1>><<set $enemyanger += 5>>
 				<<elseif $penissize lte 2 or $penissize is 3 and random(1, 100) gte 70 or $penissize gte 4 and random(1, 100) gte 90>>
-					<<if $player.virginity.penile isnot true>>
+					<<if $player.virginity.penile isnot true or playerHasStrapon()>>
 						<span class="pink"><<He>> eases your <<penis>> into <<his>> pussy, swallowing you to the base.</span>
 						<<sex 30 _n>><<set $NPCList[_n].vagina to "penis">><<penilestat>><<bruise penis>><<violence 1>><<raped>><<penisraped>><<set $penisstate to "penetrated">><<set $speechpenispenetrated to 1>>
 					<<elseif $player.virginity.penile is true>>
@@ -3197,7 +3969,7 @@
 							<<He>> presses <<his>> pussy against your <<penis>>. <<penis_lube_text>> <span class="pink">your tip is pushed into <<him>>, a thrust away from being enveloped.</span>
 							<<sex 20 _n>><<set $NPCList[_n].vagina to "penisimminent">><<set $penisstate to "imminent">><<set $speechpenisimminent to 1>>
 						<<elseif !$npcSub>>
-							<<He>> presses <<his>> pussy against your <<penis>>, <span class="blue">but fails to envelop you.</span> Your penis angles away and rubs against <<his>> clit.
+							<<He>> presses <<his>> pussy against your <<penis>>, <span class="blue">but fails to envelop you.</span> Your <<cock>> angles away and rubs against <<his>> clit.
 							<<sex 5 _n>><<set $speechpenisimminent to 1>>
 							<<if $enemyarousal gte ($enemyarousalmax / 2) and random(1, 3) is 3>>
 								Lewd fluid drips from <<his>> pussy, <span class="blue">lubricating your cock.</span>
@@ -3377,7 +4149,7 @@
 		<<if $rng gte 101 or ($penisuse isnot "feet" and $vaginause isnot "feet")>>
 			<span class="blue"><<He>> stops pressing <<his>> foot against your <<genitals>>.</span>
 			<<set $NPCList[_n].vagina to 0>>
-			<<if $player.penisExist and $penisuse is "feet">>
+			<<if ($player.penisExist or playerHasStrapon()) and $penisuse is "feet">>
 				<<set $penisuse to 0>>
 			<</if>>
 			<<if $player.vaginaExist and $vaginause is "feet">>
@@ -3418,7 +4190,11 @@
 				<<if $enemyarousal gte (($enemyarousalmax / 5) * 4)>>
 					<<He>> continues to fuck your <<penis>> with <<his>> ass, <<his>> movements violent and erratic. Fluid from <<his>> pussy drools onto your length.
 				<<elseif $enemyarousal gte (($enemyarousalmax / 5) * 2)>>
+					<<if !$worn.under_lower.type.includes("strap-on")>>
 					<<He>> continues to ride you, your penis helpless as it's fucked.
+					<<else>>
+						<<He>> continues to ride your <<penis>>
+					<</if>>
 				<<else>>
 					<<He>> fucks your <<penis>> with rough movements, intent on showing you who's boss.
 				<</if>>
@@ -3453,7 +4229,7 @@
 					<<He>> presses <<his>> ass against the tip of your <<penis>>, trying to take you in. <span class="blue">But you don't have an erection.</span>
 					<<set $speechpenissmall to 1>><<set $enemyanger += 5>>
 				<<elseif $penissize lte 2 or $penissize is 3 and random(1, 100) gte 70 or $penissize gte 4 and random(1, 100) gte 90>>
-					<<if $player.virginity.penile isnot true>>
+					<<if $player.virginity.penile isnot true or playerHasStrapon()>>
 						<span class="pink"><<He>> eases your <<penis>> into <<his>> ass, swallowing you to the base.</span>
 						<<sex 30 _n>><<set $NPCList[_n].vagina to "otheranus">><<penilestat>><<bruise penis>><<violence 1>><<raped>><<penisraped>><<set $penisstate to "otheranus">><<set $speechotheranuspenetrated to 1>>
 					<<elseif $player.virginity.penile is true>>
@@ -3506,7 +4282,7 @@
 							<<He>> presses <<his>> ass against your <<penis>>. <<penis_lube_text>> <span class="pink">your tip is pushed into <<him>>, a thrust away from being enveloped.</span>
 							<<sex 20 _n>><<set $NPCList[_n].vagina to "otheranusimminent">><<set $penisstate to "otheranusimminent">><<set $speechotheranusimminent to 1>>
 						<<elseif !$npcSub>>
-							<<He>> presses <<his>> ass against your <<penis>>, <span class="blue">but fails to envelop you.</span> Your penis angles away and rubs between <<his>> cheeks.
+							<<He>> presses <<his>> ass against your <<penis>>, <span class="blue">but fails to envelop you.</span> Your <<cock>> angles away and rubs between <<his>> cheeks.
 							<<sex 5 _n>><<set $speechotheranusimminent to 1>>
 						<</if>>
 					<<elseif $rng gte 1>>
@@ -3528,7 +4304,7 @@
 		<<if $consensual is 0 and $underwater isnot 1>>
 			<<if ($oxygen gt 150 and $enemyanger gte 30) or $enemyanger gte (($enemyangermax / 5) * 4)>>
 				<<oxygen -150>>
-				
+
 				<<if $worn.face.type.includes("covered") or $worn.face.type.includes("gag")>>
 					<<if $enemyanger lt $enemyangermax/2>>
 						<span class="lblue"><<He>> moves <<his>> pussy away from your mouth.</span>
@@ -3590,7 +4366,7 @@
 			<<He>> shifts <<his>> position on your face, pressing <<his>> ass onto your mouth.
 			<<set $mouthstate to "anal">><<set $NPCList[_n].vagina to "facesitanal">>
 			<<set $speechmouthotheranus to 1>>
-		
+
 		<<elseif $worn.face.type.includes("covered") or $worn.face.type.includes("gag")>>
 			<<if $enemyanger lt $enemyangermax/2>>
 				<span class="lblue"><<He>> moves <<his>> pussy away from your mouth.</span>
@@ -3686,7 +4462,7 @@
 
 	<<set $rng to random(1, 100)>>
 	<<if $NPCList[_n].chest is "clothed" and $npcSub isnot 1>>
-		<<if ($NPCList[_n].pronoun is "f" and ($NPCList[_n].lactation is 1 or $rng lte ($enemyarousal - 80))) or 
+		<<if ($NPCList[_n].pronoun is "f" and ($NPCList[_n].lactation is 1 or $rng lte ($enemyarousal - 80))) or
 		($rng lte 15 and $enemyarousal gte 105)>>
 			<span class="blue"><<He>> <<npcUndressText $NPCList[_n] "upper" "self">>, <<npcRevealText $NPCList[_n] "upper">>.</span>
 			<<set $NPCList[_n].chest to 0>>
@@ -3937,7 +4713,7 @@
 				<<He>> licks around your $worn.genitals.name, near your <<penis>>.
 				<<sex 30 _n>>
 			<<elseif $nopenile is 0>>
-				<<if $player.virginity.penile isnot true or $virginitytest isnot 1>>
+				<<if $player.virginity.penile isnot true or $virginitytest isnot 1 or playerHasStrapon()>>
 					<span class="pink"><<He>> pushes <<his>> lips against your <<penis>>, taking you into <<his>> mouth.</span>
 					<<sex 30 _n>><<set $NPCList[_n].mouth to "penis">><<penilestat>><<bruise penis>><<violence 1>><<set $penisstate to "othermouth">>
 				<<elseif $player.virginity.penile is true>>
@@ -4605,7 +5381,7 @@
 						<<bodypart_admire left_cheek>>
 					<<else>>
 						<<bodypart_admire right_cheek>>
-					<</if>>					
+					<</if>>
 				<<else>>
 					<<He>> bites your <<bottom>>.
 					<<violence 10>><<hitstat>><<bruise bottom>>
@@ -4799,7 +5575,8 @@
 			<<submission 2 _n>>
 		<</if>>
 	<<elseif $enemyanger + $rng lte 45 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
-		<<if $player.penisExist>>
+		<!-- anal -->
+		<<if $player.penisExist or playerHasStrapon()>>
 			<<if $penisuse is 0>>
 				<<if $analdisable is "f" and $consensual is 1>>
 					<<if $condomUse is false>>
@@ -4830,12 +5607,12 @@
 				<</if>>
 			<</if>>
 		<</if>>
-	<<elseif $enemyanger + $rng lte 70 and $penisuse is 0 and $player.penisExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
+	<<elseif $enemyanger + $rng lte 70 and $penisuse is 0 and ($player.penisExist or (playerHasStrapon() and !npcHasStrapon(_n))) and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
 		<<set $penisuse to "otherpenis">><<set $penisstate to "otherpenisentrance">><<set $NPCList[_n].penis to "penisentrance">><<sex 5 _n>><<set $penistarget to _n>>
 		<<if $NPCList[_n].chastity.penis.includes("chastity")>>
 			<span class="blue"><<He>> moves <<his>> caged $NPCList[_n].penisdesc close to your penis.</span>
 		<<else>>
-			<span class="blue"><<He>> moves <<his>> $NPCList[_n].penisdesc close to your penis.</span>
+			<span class="blue"><<He>> moves <<his>> $NPCList[_n].penisdesc close to your <<penis>>.</span>
 		<</if>>
 	<<elseif $enemyanger + $rng lte 100 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
 		<<if $player.vaginaExist and $vaginause is 0 and ($anususe isnot 0 or random(0,100) gte 50)>>
@@ -4847,7 +5624,7 @@
 			<span class="blue"><<He>> moves between your legs, positioning <<his>> $NPCList[_n].penisdesc in front of your <<pussy>>.</span>
 			<<neutral 5 _n>><<set $vaginause to "penis">><<set $NPCList[_n].penis to "vaginaentrance">><<set $vaginastate to "entrance">><<set $speechvaginaentrance to 1>><<set $vaginatarget to _n>>
 			<<set $NPCList[_n].location.genitals = "genitals">>
-		
+
 		<<elseif $player.vaginaExist and $vaginaldoubledisable is "f" and ($awareness lt 300 ? random(0,1) is 0 : random(0,3) isnot 0) and $anususe isnot "penisdouble" and $vaginause is "penis" and $NPCList[_n].penissize gte 2 and $NPCList[$vaginatarget].penissize gte 2>>
 			/* level 4 awareness( $awareness gt 300) should make this more common
 			This action requires both NPCs to have a minimum penis size to initiate */
@@ -4856,7 +5633,7 @@
 			Double comabt actions work similarly to their single counterparts, albeit with penetration states and enter/exit conditions.
 			NPCs and player actions happen more or less the same way as existing actions.
 			Initiation/escape actions will add or remove one NPC and switch the other one to single/double as appropriate.
-			There are two primary states; in sync and out of sync. While out of sync, they typically display text more or less the same as their singular versions. 
+			There are two primary states; in sync and out of sync. While out of sync, they typically display text more or less the same as their singular versions.
 				While in sync, they display the double version text and combat outcomes.
 			-->
 
@@ -4875,7 +5652,6 @@
 				<<elseif $vaginastate is "penetrated">><<set $NPCList[$vaginatarget].penis to "vagina">>
 				<</if>>
 			<<else>>
-			/* End error catch */
 
 			<<if $condomUse is false>>
 			<<elseif ($condomUse is true or (random(0,100) lt $condomautochance and $npcCondoms isnot undefined)) and $NPCList[_n].condom is false>>
@@ -4917,10 +5693,10 @@
 			Double comabt actions work similarly to their single counterparts, albeit with penetration states and enter/exit conditions.
 			NPCs and player actions happen more or less the same way as existing actions.
 			Initiation/escape actions will add or remove one NPC and switch the other one to single/double as appropriate.
-			There are two primary states; in sync and out of sync. While out of sync, they typically display text more or less the same as their singular versions. 
+			There are two primary states; in sync and out of sync. While out of sync, they typically display text more or less the same as their singular versions.
 				While in sync, they display the double version text and combat outcomes.
 			-->
-			
+
 			/* Error handling for escaped penises. Divert to regular penetration */
 			/* Essentially, NPC's penis has been set to 0 somehow, yet the player's states have not been reset. */
 			<<set $anusdoubletarget to _n>>
@@ -5117,7 +5893,7 @@
 		<<He>> rubs <<his>> pussy.
 		<<neutral 3 _n>><<set $speechvaginaflaunt to 1>>
 	 <<elseif $enemyanger + $rng lte 50 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals"
-			and $player.penisExist and $penisuse is 0 and $analdisable is "f" and $walltype isnot "front">>
+			and ($player.penisExist or playerHasStrapon()) and $penisuse is 0 and $analdisable is "f" and $walltype isnot "front">>
 		<<if $condomUse is false>>
 		<<elseif $condomUse is true and !$player.condom and $parasite.penis.name is undefined>>
 			<<equipCondom>>
@@ -5171,7 +5947,8 @@
 			<<He>> rubs <<his>> pussy against your thigh.
 			<<neutral 10 _n>>
 		<</if>>
-	<<elseif $enemyanger + $rng lte 100 and $penisuse is 0 and $player.penisExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
+	<<elseif $enemyanger + $rng lte 100 and $penisuse is 0 and ($player.penisExist or playerHasStrapon()) and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
+		<!-- mount and prepare for vaginal sex -->
 		<<set $penisuse to "othervagina">><<set $NPCList[_n].vagina to "penisentrance">><<set $penisstate to "entrance">><<set $penistarget to _n>>
 		<<if $condomUse is false>>
 		<<elseif $condomUse is true and !$player.condom and $parasite.penis.name is undefined>>
@@ -5181,10 +5958,13 @@
 		<span class="blue"><<He>> straddles you, <<his>> pussy hovering close to your <<penis>>.</span>
 		<<set $NPCList[_n].location.genitals = "genitals">>
 	<<elseif $enemyanger + $rng lte 100 and $vaginause is 0 and $player.vaginaExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
+		<!-- tribbing -->
 		<<set $vaginause to "othervagina">><<set $vaginastate to "othervaginaentrance">><<set $NPCList[_n].vagina to "vaginaentrance">><<sex 5 _n>><<set $vaginatarget to _n>>
 		<span class="blue"><<He>> moves <<his>> pussy close to yours.</span>
 		<<set $NPCList[_n].location.genitals = "genitals">><<set $speechtribentrance to 1>>
-	<<elseif $enemyanger + $rng lte 120 and $penisuse is 0 and $player.penisExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and !$worn.genitals.type.includes("chastity") and $walltype isnot "front">>
+	<<elseif $enemyanger + $rng lte 120 and $penisuse is 0 and ($player.penisExist or playerHasStrapon()) and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and !$worn.genitals.type.includes("chastity") and $walltype isnot "front">>
+		<!-- forceful vaginal sex -->
+		<<set $penisuse to "othervagina">><<set $NPCList[_n].vagina to "penisimminent">><<set $penisstate to "imminent">><<set $penistarget to _n>>
 		<<if $condomUse is false>>
 		<<elseif $condomUse is true and !$player.condom and $parasite.penis.name is undefined>>
 			<<equipCondom>>
@@ -5199,6 +5979,7 @@
 		<</if>>
 		<<set $NPCList[_n].location.genitals = "genitals">>
 	<<elseif $enemyanger + $rng lte 120 and $vaginause is 0 and $player.vaginaExist and $worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $walltype isnot "front">>
+		<!-- forceful tribbing -->
 		<<set $vaginause to "othervagina">><<set $vaginastate to "othervaginaimminent">><<set $NPCList[_n].vagina to "vaginaimminent">><<sex 20 _n>><<set $vaginatarget to _n>>
 		<span class="purple"><<He>> pushes <<his>> pussy close to yours.</span>
 		<<set $NPCList[_n].location.genitals = "genitals">>
@@ -5214,9 +5995,10 @@
 			<<violence 3>>
 		<</if>>
 	<<elseif $enemyanger + $rng lte 160 and ($penisise is 0 or $vaginause is 0) and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals" and $footdisable is "f" and $walltype isnot "front">>
+		<!-- foot job -->
 		<span class="purple"><<He>> presses <<his>> foot against your <<genitals>>.</span>
 		<<neutral 5 _n>><<violence 1>><<set $NPCList[_n].vagina to "footjob">>
-		<<if $player.penisExist and $penisuse is 0>>
+		<<if ($player.penisExist or playerHasStrapon()) and $penisuse is 0>>
 			<<set $penisuse to "feet">><<set $speechpenisfoot to 1>>
 		<</if>>
 		<<if $player.vaginaExist and $vaginause is 0>>
@@ -5323,7 +6105,7 @@
 						<<His>> $_NPCBreastDesc lay open beneath you.
 					<</if>>
 				<</if>>
-			<!-- Being above/behind the player -->		
+			<!-- Being above/behind the player -->
 			<<else>>
 				<<if $NPCList[_n].breastsize gte 8>>
 					You feel <<his>> $_NPCBreastDesc weighing down on your back.
@@ -5384,7 +6166,7 @@
 				<<His>> chest heaves erratically. <<He>> struggles to keep your mouth latched to <<his>> nipple.
 			<<else>>
 				<<His>> breaths are quick and heavy, jostling your head against <<his>> breast.
-			<</if>>	
+			<</if>>
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/game/base-combat/missionary-images.twee b/game/base-combat/missionary-images.twee
index fc09a47f2f..80123da89e 100644
--- a/game/base-combat/missionary-images.twee
+++ b/game/base-combat/missionary-images.twee
@@ -261,17 +261,23 @@ Previous "Always Open" mouth. activemouth can be used in all active frames still
 This image is the eyelids, commented out so the player's eyes stay open in idle frames.
 <img class="layer-sexmouth anim-idle-2f" @src="_img.activeeyelids" @style="'filter: '+_filters.body">
 -->
-<<if $player.penisExist>>
-	<<if $worn.genitals.name is "chastity belt">>
+<<if $player.penisExist or playerHasStrapon()>>
+	<<if $worn.genitals.name is "chastity belt" and !playerHasStrapon()>>
 		<img class="layer-sexmouth" src="img/sex/missionary/active/body/activepenischastity.png">
-	<<elseif $worn.lower.exposed gte 2 and $worn.under_lower.exposed gte 1>>
-		<<if $worn.genitals.name is "chastity cage">>
+	<<elseif $worn.lower.exposed gte 2 and ($worn.under_lower.exposed gte 1 or playerHasStrapon())>>
+		<<if $worn.genitals.name is "chastity cage" and !playerHasStrapon()>>
 			<img class="layer-sexlashes" src="img/sex/missionary/active/body/activechastitycagedown.png">
 			<<if $anususe is "penis">>
 				<img class="layer-sexmouth" @src="_img.activechastitycagedownpenis" @style="'filter: '+_filters.body">
 			<<else>>
 				<img class="layer-sexmouth" @src="_img.activechastitycagedownpenis" @style="'filter: '+_filters.body">
 			<</if>>
+		/*<<elseif playerHasStrapon()>>
+			<<if $anususe is "penis">>
+				<img class="layer-sexlashes" @src="_img.activestrapon" @style="'filter: '+_filters.body">
+			<<else>>
+				<img class="layer-sexbasefront" @src="_img.activestrapon" @style="'filter: '+_filters.body">
+			<</if>>*/
 		<<elseif $player.virginity.penile is true>>
 			<<if $anususe is "penis">>
 				<img class="layer-sexlashes" @src="_img.activepenisvirgin" @style="'filter: '+_filters.body">
@@ -765,18 +771,19 @@ Same as above, but with eyelashes.
 	<<if $silhouettedisable is "f" and $NPCList[_na].type isnot "horse" and $NPCList[_na].type isnot "centaur">>
 		<img @class="'layer-sextears anim-doggy-4f-'+_animspeed" src="img/sex/missionary/shadow/activepenile.png">
 	<</if>>
-	<<if $orgasmdown gte 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true>>
+	<<if $orgasmdown gte 1 and $orgasmcount lte 24 and $femaleclimax isnot 1 and $condomPlayerPenisImg isnot true and !playerHasStrapon()>>
 		<img @class="'layer-frontforeground anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/body/activepenilecum.png">
 	<<else>>
 		<img @class="'layer-frontforeground anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/body/activepenile.png">
 	<</if>>
 <</if>>
 
-<<if $player.penisExist>>
-	<<if $worn.genitals.type.includes("chastity")>>
+<<if $player.penisExist or playerHasStrapon()>>
+	<<if $worn.genitals.type.includes("chastity") and !playerHasStrapon()>> /* PLAYER STRAP-ON IMPORTANT IMAGE */
 		<img @class="'layer-sexhair anim-doggy-4f-'+_animspeed" src="img/sex/missionary/active/body/activepenischastity.png">
 	<<elseif $penisstate is "penetrated" or $penisstate is "otheranus">>
 		<<if $enemytype isnot "beast" or $monster is 1>>
+			/* I was doing something important here. COlours maybe? */
 			<<if $player.virginity.penile is true>>
 				<img @class="'layer-frontforeground anim-doggy-4f-'+_animspeed" @src="_img.activepenisvirgindown" @style="'filter: '+_filters.body">
 			<<else>>
diff --git a/game/base-combat/npc-generation.twee b/game/base-combat/npc-generation.twee
index 70470a22e2..aea8de5e48 100644
--- a/game/base-combat/npc-generation.twee
+++ b/game/base-combat/npc-generation.twee
@@ -919,7 +919,7 @@
 <<generateNPCvirginity $NPCList[_n]>>
 
 <!-- Sets females with strap-ons as adjustment-->
-<<if $NPCList[_n].gender is "f" and !_strapIgnore>>
+<<if $NPCList[_n].gender is "f" and !_strapIgnore and !npcHasStrapon(_n)>>
 	<<if random(0, 99) lt $straponchance>>
 		<<npcstrapon _n>>
 	<</if>>
@@ -966,29 +966,104 @@
 <</widget>>
 
 <<widget "npcstrapon">>
-<!-- NG Converts NPCs to strap-on -->
-<<switch $args[0]>>
-<<case 0 1 2 3 4 5>>
-	<<set _xx to $args[0]>>
-<<default>>
-	<span class="red">NPCSTRAPON Error: No NPC Identifier</span>
-	<br><br>
-<</switch>>
+	<!-- NG Converts NPCs to strap-on -->
+	<<switch $args[0]>>
+	<<case 0 1 2 3 4 5>>
+		<<set _xx to $args[0]>>
+	<<default>>
+		<span class="red">NPCSTRAPON Error: No NPC Identifier</span>
+		<br><br>
+	<</switch>>
+
+	<<if !$NPCList[_xx].strapon>>
+		<!-- set .penis to clothed if vagina was clothed, or nude if vagina was nude -->
+		<<if $NPCList[_xx].vagina isnot "none">>
+			<<set $NPCList[_xx].penis to $NPCList[_xx].vagina>>
+			<<set $NPCList[_xx].vagina to "none">>
+			<<set $NPCList[_xx].gender to "m">>
+		<</if>>
 
-<<set $NPCList[_xx].penis to "clothed">>
-<<set $NPCList[_xx].vagina to "none">>
-<<set $NPCList[_xx].chest to "clothed">>
-<<set $NPCList[_xx].gender to "m">>
-
-<<switch random(1, 4)>>
-<<case 1 2 3>>
-	<<set $NPCList[_xx].penisdesc to "large "+either("black","red","blue","pink","purple","fleshy")+" strap-on cock">>
-	<<set $NPCList[_xx].penissize to 3>>
-<<default>>
-	<<set $NPCList[_xx].penisdesc to "massive "+either("black","red","blue","pink","purple","fleshy")+" strap-on cock">>
-	<<set $NPCList[_xx].penissize to 4>>
-<</switch>>
+		<!-- NPC strap-on descriptors added: 0.3.6.2 -->
+		/* Other names: anal beads, barbed, ribbed, corkscrew, butt plug, unicorn horn, bovine */
+		<<set $_i to $NPCNameList.indexOf($NPCList[_xx].fullDescription)>>
+		<<if $args[1]>>
+			<<run console.log("assign strapon from args", $args[1])>>
+			<<set $_strapon to $args[1]>>
+			<<setNPCStrapon $NPCList[_xx] $_strapon>>
+			<<set $NPCList[_xx].strapon.temp to true>>
+		<<elseif $_i isnot -1 and $NPCName[$_i].strapons and $NPCName[$_i].strapons.length gte 1>>
+			<!-- If the NPC owns at least one strapon, they'll choose one they own and put it on. -->
+			<<run console.log("assign strapon from collection", $NPCName[$_i].strapons)>>
+			<<set $_strapon to clone($NPCName[$_i].strapons.random())>>
+			<<setNPCStrapon $NPCList[_xx] $_strapon>>
+		<<else>>
+			/* Generate random */
+			<<run console.log("generate random strapon")>>
+			<<set _dildoType to either("dildo","penis","beaded dildo","horse cock","knotted cock", "tentacle","dolphin cock","studded cock","fist dildo")>>
+			<<set _straponColor to either("black","red","pink","purple","fleshy","blue","green")>>
+			<<set _bonusdescriptor to either("","","floppy","transparent","sparkly")>>
+
+			<<switch random(1, 6)>>
+			<<case 1>>
+				<<set $NPCList[_xx].penisdesc to _bonusdescriptor +" "+_straponColor+" strap-on "+_dildoType>>
+				<<set $NPCList[_xx].penissize to 2>>
+			<<case 2 3>>
+				<<set $NPCList[_xx].penisdesc to "large "+_straponColor+" strap-on cock">>
+				<<set $NPCList[_xx].penissize to 3>>
+			<<case 4>>
+				<<set $NPCList[_xx].penisdesc to "large "+_straponColor+" strap-on "+_dildoType>>
+				<<set $NPCList[_xx].penissize to 3>>
+			<<case 5>>
+				<<set $NPCList[_xx].penisdesc to "massive "+_straponColor+" strap-on "+_dildoType>>
+				<<set $NPCList[_xx].penissize to 4>>
+			<<default>>
+				<<set $NPCList[_xx].penisdesc to "massive "+_straponColor+" strap-on cock">>
+				<<set $NPCList[_xx].penissize to 4>>
+			<</switch>>
+			<!-- Set up like this for futureproofing -->
+			<<set $NPCList[_xx].strapon to {state:"worn",color:_straponColor,description:$NPCList[_xx].penisdesc,size:$NPCList[_xx].penissize}>>
+		
+			<<if $_i isnot -1>>
+				<!-- Give this named npc this strapon temporarily so that they will use it in future appearances (note: they are removed in the <<day>> widget) -->
+				<<set $NPCList[_xx].strapon.temp to true>>
+				<<set $randomNNPCStraponsToClear to true>>
+				<<if !$NPCName[$_i].strapons or $NPCName[$_i].strapons.length is 0>>
+					<<set $NPCName[$_i].strapons to [$NPCList[_xx].strapon]>>
+				<<else>>
+					<!-- This may not make sense? Why would a strapon be randomly generated if they already had one? -->
+					<<run console.debug("Random strapon added to "+$NPCName[$_i].nam+"'s strapon collection when they already had one")>>
+					<<set $NPCName[$_i].strapons.push($NPCList[_xx].strapon)>>
+				<</if>>
+			<</if>>
+		<</if>>
+		<<set $NPCList[_xx].strapon.state to "worn">>
+	<</if>>
+<</widget>>
 
+<<widget "generateNewStrapon">>
+	<<set $_straponSize to $args[0]>>
+	<<set $_straponSizeDesc to {2: "", 3: "large", 4: "massive"}[$args[0]]>>
+	<<set $_straponColour to $args[1]>>
+	<<set $_straponShape to $args[2]>>
+	<<set $_modifier to ($args[3] ? $args[3] : "")>>
+	<<set $_straponDesc to `${$_straponSizeDesc} ${$_modifier} ${$_straponColour} strap-on ${$_straponShape}`.trim().replace(/\s\s+/, " ")>>
+	<<set _newStrapon to {
+		color: $_straponColour,
+		size: $_straponSize,
+		description: $_straponDesc,
+	}>>
+<</widget>>
+
+<<widget "setNPCStrapon">>
+	<<if $args[0] and $args[1]>>
+		<<set $_npc to $args[0]>>
+		<<set $_strapon to $args[1]>>
+
+		<<set $_npc.strapon to clone($_strapon)>>
+		<<set $_npc.strapon.state to "worn">>
+		<<set $_npc.penisdesc to $_npc.strapon.description>>
+		<<set $_npc.penissize to $_npc.strapon.size>>	
+	<</if>>
 <</widget>>
 
 <<widget "generate_npc_traits">>
diff --git a/game/base-combat/speech.twee b/game/base-combat/speech.twee
index bd5c417c83..40f574fee5 100644
--- a/game/base-combat/speech.twee
+++ b/game/base-combat/speech.twee
@@ -1455,7 +1455,11 @@
 			<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
 				<<He>> speaks hushedly. "I've been needing this so badly."
 			<<else>>
+				<<if playerHasStrapon()>>
+					<<He>> <<print either("speaks.","speaks.","coos.","whispers.")>> "Your <<print $worn.under_lower.name>> feels so good inside me."
+				<<else>>
 				<<He>> speaks. "You feel so good inside me."
+				<</if>>
 			<</if>>
 		<<elseif $enemyanger lte 100>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
@@ -1469,7 +1473,11 @@
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
 				<<He>> is lost in the moment. "You... Stupid... AHH!"
 			<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
-				<<He>> mocks you. "What's it like having your dick dominated like this?"
+				<<if playerHasStrapon()>>
+					<<He>> <<print either("jeers","mocks you","teases")>>. "Do you know how to use this toy?"
+				<<else>>
+					<<He>> mocks you. "What's it like having your dick dominated like this?"
+				<</if>>
 			<<else>>
 				<<He>> mocks you. "You're right where you belong."
 			<</if>>
@@ -1504,6 +1512,33 @@
 
 <<elseif $speechotheranuspenetrated is 1>>
 	<<if $devstate gte 1>>
+		<<if playerHasStrapon()>>
+			<<if $enemyanger lte 20>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "<<print either("Yes! Yes! Give it to me! Fuck my ass!","Yes, yes! Make me your strap-on bitch!","Oh-oh-yes! I'm nearly there, don't stop!")>>"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks hushedly. "<<print either("I've been needing this so badly.","Give it to me harder!","Right there, just like that.")>>"
+				<<else>>
+					<<He>> speaks. "Your toy feels so good inside me."
+				<</if>>
+			<<elseif $enemyanger lte 100>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "UHH! That's it...Not long now... AH!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks hushedly. "That's it right there, good <<girl>>."
+				<<else>>
+					<<He>> <<print either("speaks. \"I've been waiting too long for this, don't even think about stopping!\"","teases. \"Do you know how to use this toy?\"")>>. 
+				<</if>>
+			<<else>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "You... Stupid... AHH!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> <<print either("mocks you","mocks you","jeers","snarls")>>. "Even with your toy up my ass, you're still the bottom bitch."
+				<<else>>
+					<<He>> mocks you. "You're right where you belong."
+				<</if>>
+			<</if>>
+		<<else>>
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
 				<<He>> is lost in the moment. "Yes! Yes! Give it to me! Fill me up!"
@@ -1529,6 +1564,7 @@
 				<<He>> mocks you. "You're right where you belong."
 			<</if>>
 		<</if>>
+		<</if>>
 	<<else>>
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
@@ -1559,6 +1595,33 @@
 
 <<elseif $speechvaginapenetrated is 1>>
 	<<if $devstate gte 1>>
+		<<if $vaginatarget isnot undefined and npcHasStrapon($vaginatarget)>> <!-- NPC strap-on -->
+			<<if $enemyanger lte 20>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. <<print either("Yes baby, just like that!","Oh yes! Just like that, my little fucktoy!","Take it like the whore you are!","I can feel your legs shaking!")>>
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks. "It feels so good hammering against my clit."
+				<<else>>
+					<<He>> speaks. "Your pussy is perfect."
+				<</if>>
+			<<elseif $enemyanger lte 100>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "That's it! Take it, whore!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks hushedly. "Good <<girl>>."
+				<<else>>
+					<<He>> speaks "Your body is welcoming me at least."
+				<</if>>
+			<<else>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "Take it! Take it all you worthless slut!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> mocks you. "What's it like having your pussy dominated like this?"
+				<<else>>
+					<<He>> mocks you. "You're right where you belong."
+				<</if>>
+			<</if>>
+		<<else>>
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
 				<<He>> is lost in the moment. "I'm gonna fill you up soon, I hope you're ready!"
@@ -1584,6 +1647,7 @@
 				<<He>> mocks you. "You're right where you belong."
 			<</if>>
 		<</if>>
+		<</if>>
 	<<else>>
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
@@ -1614,6 +1678,33 @@
 
 <<elseif $speechanuspenetrated is 1>>
 	<<if $devstate gte 1>>
+		<<if $anustarget isnot undefined and npcHasStrapon($anustarget)>> <!-- NPC strap-on -->
+			<<if $enemyanger lte 20>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. <<print either("Yes baby, just like that!","Oh yes! Just like that, my little fucktoy!","Your moans are so good! I'm cumming!","Moan for me, bitch!")>>
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks. "It feels so good hammering against my clit."
+				<<else>>
+					<<He>> speaks. <<print either("Your butt is so welcoming","You're so tight, just relax")>>.
+				<</if>>
+			<<elseif $enemyanger lte 100>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "That's it! Take it, whore!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks hushedly. "Good <<girl>>."
+				<<else>>
+					<<He>> speaks "Your body is welcoming me at least."
+				<</if>>
+			<<else>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "Take it! Take it all you worthless slut!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> mocks you. "What's it like having your pussy dominated like this?"
+				<<else>>
+					<<He>> mocks you. "You're right where you belong."
+				<</if>>
+			<</if>>
+		<<else>>
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
 				<<He>> is lost in the moment. "I'm gonna fill you up soon, I hope you're ready!"
@@ -1639,6 +1730,7 @@
 				<<He>> mocks you. "You're right where you belong."
 			<</if>>
 		<</if>>
+		<</if>>
 	<<else>>
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
@@ -1669,6 +1761,34 @@
 
 <<elseif $speechmouthpenetrated is 1>>
 	<<if $devstate gte 1>>
+		<<if $mouthtarget isnot undefined and npcHasStrapon($mouthtarget)>> <!-- NPC strap-on -->
+			<<if $enemyanger lte 20>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. <<print either("Yes baby, just like that!","Oh yes! Just like that, my little fucktoy!","Open your mouth for me, bitch.","Your drooling is so hot.")>>
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks. "It feels so good hammering my clit."
+				<<else>>
+					<<He>> speaks. <<print either("Do you like mouth-fucking my toy?","How does my toy taste?","This is so hot baby.","I want to see you deep throat my toy.")>>
+				<</if>>
+			<<elseif $enemyanger lte 100>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "That's it! Take it, whore!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> speaks hushedly. "Good <<girl>>."
+				<<else>>
+					<<He>> speaks "Your body is welcoming me at least."
+				<</if>>
+			<<else>>
+				<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
+					<<He>> is lost in the moment. "Take it! Take it all you worthless slut!"
+				<<elseif $enemyarousal gte ($enemyarousalmax / 5) * 2>>
+					<<He>> mocks you. "What's it like having your pussy dominated like this?"
+				<<else>>
+					<<He>> mocks you. "You're right where you belong."
+				<</if>>
+			<</if>>
+		<<else>>
+		<!-- Not indented until feedback. Regular blowsex code -->
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
 				<<He>> is lost in the moment. "I'm gonna fill you up soon, I hope you're ready!"
@@ -1694,7 +1814,8 @@
 				<<He>> mocks you. "You're right where you belong."
 			<</if>>
 		<</if>>
-	<<else>>
+		<</if>>
+	<<else>>	<!-- Depracated for whatever reason. Pick out the good ones and migrate them to main? -->
 		<<if $enemyanger lte 20>>
 			<<if $enemyarousal gte ($enemyarousalmax / 5) * 4>>
 				<<He>> is lost in the moment. "Keep going, I'm almost there!"
@@ -1723,6 +1844,37 @@
 	<</if>>
 
 <<elseif $speechvaginaimminent is 1>>
+	<<if playerHasStrapon()>>
+		<<if $player.virginity.vaginal is true>>
+			<<if $enemyanger lte 60>>
+				<<if $rng gte 51>>
+					<<He>> speaks. "My toy is pressing against your virgin pussy... I could deflower you at any moment."
+				<<else>>
+					<<He>> speaks. "Let's find out if your virgin pussy can handle my strap-on."
+				<</if>>
+			<<else>>
+				<<if $rng gte 51>>
+					<<He>> speaks. "I'm an inch away from taking your virginity, bitch."
+				<<else>>
+					<<He>> speaks. "You're not gonna be a virgin for long."
+				<</if>>
+			<</if>>
+		<<else>>
+			<<if $enemyanger lte 60>>
+				<<if $rng gte 51>>
+					<<He>> speaks. "I need to feel your pussy hammer this toy against my clit!"
+				<<else>>
+					<<He>> speaks. "I can't wait to start pounding away at your pussy."
+				<</if>>
+			<<else>>
+				<<if $rng gte 51>>
+					<<He>> speaks. "I hope your pussy is ready, I sure am."
+				<<else>>
+					<<He>> speaks. "My fat toy will ruin your cunt, bitch."
+				<</if>>
+			<</if>>
+		<</if>>
+	<<else>>
 	<<if $player.virginity.vaginal is true>>
 		<<if $enemyanger lte 60>>
 			<<if $rng gte 51>>
@@ -1752,9 +1904,30 @@
 			<</if>>
 		<</if>>
 	<</if>>
+	<</if>>
 
 <<elseif $speechpenisimminent is 1>>
-	<<if $player.virginity.penile is true>>
+	<<if playerHasStrapon()>>
+		<<if $enemyanger lte 60>>
+			<<if $rng gte 51>>
+				<<He>> speaks. "Just having the tip pressing against me like this is driving me mad!"
+			<<else>>
+				<<He>> speaks. "I can't wait to feel your strap-on inside me."
+			<</if>>
+		<<elseif $enemyanger lte 80>>
+			<<if $rng gte 51>>
+				<<He>> speaks. "I need a hard cock, but this will do."
+			<<else>>
+				<<He>> speaks. "Can your little toy keep up with my pussy?"
+			<</if>>
+		<<else>>
+			<<if $rng gte 51>>
+				<<He>> speaks. "You better know how to use this toy, don't make me hurt you."
+			<<else>>
+				<<He>> speaks. "I'm going to destroy your strap-on."
+			<</if>>
+		<</if>>
+	<<elseif $player.virginity.penile is true>>
 		<<if $enemyanger lte 60>>
 			<<if $rng gte 51>>
 				<<He>> speaks. "My pussy is pressing against your virgin dick... I could deflower you at any moment."
@@ -1785,7 +1958,27 @@
 	<</if>>
 
 <<elseif $speechotheranusimminent is 1>>
-	<<if $player.virginity.penile is true>>
+	<<if playerHasStrapon()>>
+		<<if $enemyanger lte 60>>
+			<<if $rng gte 51>>
+				<<He>> speaks. "Just having the tip pressing against me like this is driving me mad!"
+			<<else>>
+				<<He>> speaks. "I can't wait to take your strap-on up my ass."
+			<</if>>
+		<<elseif $enemyanger lte 80>>
+			<<if $rng gte 51>>
+				<<He>> speaks. "I need a hard cock, but this will do."
+			<<else>>
+				<<He>> speaks. "Can your little toy satisfy my ass?"
+			<</if>>
+		<<else>>
+			<<if $rng gte 51>>
+				<<He>> speaks. "You better know how to use this toy, don't make me hurt you."
+			<<else>>
+				<<He>> speaks. "My ass will destroy your little strap-on."
+			<</if>>
+		<</if>>
+	<<elseif $player.virginity.penile is true>>
 		<<if $enemyanger lte 60>>
 			<<He>> speaks. "My ass is pressing against your virgin dick... I could deflower you at any moment."
 		<<else>>
@@ -1800,6 +1993,21 @@
 	<</if>>
 
 <<elseif $speechanusimminent is 1>>
+	<<if $anustarget isnot undefined and npcHasStrapon($anustarget)>>
+		<<if $player.virginity.anal is true>>
+			<<if $enemyanger lte 60>>
+				<<He>> speaks. "My toy is pressing against your virgin ass... It's gonna be a tight fit!"
+			<<else>>
+				<<He>> speaks. "I'm an inch away from taking your anal virginity, bitch."
+			<</if>>
+		<<else>>
+			<<if $enemyanger lte 60>>
+				<<He>> speaks. "I can't wait to start pounding your ass!"
+			<<else>>
+				<<He>> speaks. "I hope your ass is ready for my strap-on, <<bitch>>!"
+			<</if>>
+		<</if>>
+	<<else>>
 	<<if $player.virginity.anal is true>>
 		<<if $enemyanger lte 60>>
 			<<He>> speaks. "My dick is pressing against your virgin ass... It's gonna be a tight fit!"
@@ -1813,6 +2021,7 @@
 			<<He>> speaks. "I hope your ass is ready, my dick sure is!"
 		<</if>>
 	<</if>>
+	<</if>>
 
 <<elseif $speechmouthimminent is 1>>
 	<<if $player.virginity.oral is true>>
@@ -1867,6 +2076,15 @@
 	<</if>>
 
 <<elseif $speechmouthentrance is 1>>
+	<<if $mouthtarget isnot undefined and npcHasStrapon($mouthtarget)>>
+	<<if $enemyanger lte 20>>
+		<<He>> speaks. "Let's see that tongue of yours."
+	<<elseif $enemyanger lte 100>>
+		<<He>> speaks. "I can't wait to see your tongue on my strap-on."
+	<<else>>
+		<<He>> speaks. "I want your lips around my toy. Now."
+	<</if>>
+	<<else>>
 	<<if $enemyanger lte 20>>
 		<<He>> speaks. "Let's see that tongue of yours."
 	<<elseif $enemyanger lte 100>>
@@ -1874,9 +2092,21 @@
 	<<else>>
 		<<He>> speaks. "I want your lips around my dick. Now."
 	<</if>>
+	<</if>>
 
 <<elseif $speechpenisentrance is 1>>
-	<<if $player.gender_appearance is "f">>
+	<<if playerHasStrapon()>>
+		<<if $enemyanger lte 20>>
+			<<He>> speaks. "The anticipation is almost too much!"
+		<<elseif $enemyanger lte 80>>
+			<<He>> speaks. "I'd rather a penis, but this will do."
+		<<elseif $enemyanger lte 100>>
+			<<He>> speaks. "I hope you know how to use this toy."
+		<<else>>
+			<<He>> speaks. "I hope your toy satisfies me, for your sake."
+		<</if>>
+		
+	<<elseif $player.gender_appearance is "f">>
 		<<if $enemyanger lte 20>>
 			<<He>> speaks. "The anticipation is almost too much!"
 		<<elseif $enemyanger lte 100>>
@@ -1978,12 +2208,23 @@
 	<</if>>
 
 <<elseif $speechanus is 1>>
-	<<if $enemyanger lte 20>>
-		<<He>> speaks. "Does my finger make you feel good?"
-	<<elseif $enemyanger lte 100>>
-		<<He>> speaks. "You like that, don't you."
+	<<if $NPCList[_n].lefthand is "anusdildo" or $NPCList[_n].righthand is "anusdildo">>
+		<<set $_toy to ($NPCList[_n].lefthand is "anusdildo" ? $NPCList[_n].lefttool : $NPCList[_n].righttool)>>
+		<<if $enemyanger lte 20>>
+			<<He>> speaks. "Does my $_toy make you feel good?"
+		<<elseif $enemyanger lte 100>>
+			<<He>> speaks. "You like that, don't you."
+		<<else>>
+			<<He>> speaks. "You better start being good, I can be much rougher than this." <<He>> moves the $_toy in your anus more violently to demonstrate the point.
+		<</if>>
 	<<else>>
-		<<He>> speaks. "You better start being good, I can be much rougher than this." <<He>> moves the finger in your anus more violently to demonstrate the point.
+		<<if $enemyanger lte 20>>
+			<<He>> speaks. "Does my finger make you feel good?"
+		<<elseif $enemyanger lte 100>>
+			<<He>> speaks. "You like that, don't you."
+		<<else>>
+			<<He>> speaks. "You better start being good, I can be much rougher than this." <<He>> moves the finger in your anus more violently to demonstrate the point.
+		<</if>>
 	<</if>>
 
 <<elseif $speechvaginamouth is 1>>
@@ -2325,7 +2566,17 @@
 	<</if>>
 
 <<elseif $speechspank is 1>>
-	<<if $enemyanger lte 20>>
+	<<if ["dildo","riding crop","length of anal beads","flog"].contains($NPCList[_n].lefttool) or ["dildo","riding crop","length of anal beads","flog"].contains($NPCList[_n].righttool)>>
+		<<if $rng lte 24>>
+			<<He>> speaks. "I'll spank you raw, cutie."
+		<<elseif $rng lte 49>>
+			<<He>> speaks. "Naughty <<girl>>."
+		<<elseif $rng lte 74>>
+			<<He>> speaks. "Have you learnt your lesson yet?"
+		<<else>>
+			<<He>> speaks. "You've been a bad, bad <<girl>>. And bad <<girls>> get spanked."
+		<</if>>
+	<<elseif $enemyanger lte 20>>
 		<<if $rng lte 24>>
 			<<He>> speaks. "If this doesn't teach you to behave, I'm not sure what will."
 		<<elseif $rng lte 49>>
diff --git a/game/base-combat/struggle.twee b/game/base-combat/struggle.twee
index 5b164a529d..76b6fdff77 100644
--- a/game/base-combat/struggle.twee
+++ b/game/base-combat/struggle.twee
@@ -693,7 +693,7 @@
 <<if $dissociation lte 1 and $orgasmdown lte 0 and ($pain lt 100 or $willpowerpain is undefined)>>
 	<<switch $penisstate>>
 	<<case "struggle" "struggle_pen">>
-		<span @class="(_gold_penis ? 'gold' : '')">A <<print $struggle.penis.creature>> clings to your tummy, where it threatens your penis.</span>
+		<span @class="(_gold_penis ? 'gold' : '')">A <<print $struggle.penis.creature>> clings to your tummy, where it threatens your <<cock>>.</span>
 		<<if $leftarmstate is "penis_struggle" and $rightarmstate is "penis_struggle">>
 			You clutch it with both hands.
 		<<elseif $leftarmstate is "penis_struggle">>
diff --git a/game/base-combat/tentacles/tentacle-adv.twee b/game/base-combat/tentacles/tentacle-adv.twee
index 1844f16c5c..00f02e96d0 100644
--- a/game/base-combat/tentacles/tentacle-adv.twee
+++ b/game/base-combat/tentacles/tentacle-adv.twee
@@ -1391,7 +1391,7 @@ The _tentacle.fullDesc writhes between your feet.
 			<br>
 			<<combatdeviancy5>>
 			<br>
-			You <<handtext>> guide the _tentacle.fullDesc with your _hand hand between your thighs close to your penis.
+			You <<handtext>> guide the _tentacle.fullDesc with your _hand hand between your thighs close to your <<cock>>.
 
 			<<if $rng lte 30>> /* How common will the tentacle wrap around the arm guiding it */
 				<<if _hand is "left">>
diff --git a/game/base-combat/tentacles/tentacleActionsGeneration.twee b/game/base-combat/tentacles/tentacleActionsGeneration.twee
index 49a8f8691c..495a947433 100644
--- a/game/base-combat/tentacles/tentacleActionsGeneration.twee
+++ b/game/base-combat/tentacles/tentacleActionsGeneration.twee
@@ -357,6 +357,9 @@
 		<<if $player.penisExist and $penisuse is 0 and $nopenile is 0>>
 			<<set _leftaction["Guide to your penis"] to "showpenis"+_tentacleLeftOption>>
 		<</if>>
+		<<if playerHasStrapon() and $penisuse is 0 and $nopenile is 0>>
+			<<set _leftaction["Guide to your strap-on"] to "showpenis"+_tentacleLeftOption>>
+		<</if>>
 		<<if $player.vaginaExist and $vaginause is 0 and $novaginal is 0>>
 			<<set _leftaction["Guide to your pussy"] to "showvagina"+_tentacleLeftOption>>
 		<</if>>
@@ -658,6 +661,9 @@
 		<<if $player.penisExist and $penisuse is 0>>
 			<<set _rightaction["Guide to your penis"] to "showpenis"+_tentaclerightOption>>
 		<</if>>
+		<<if $worn.under_lower.type.includes("strap-on") and $penisuse is 0 and $nopenile is 0>>
+			<<set _rightaction["Guide to your strap-on"] to "showpenis"+_tentacleRightOption>>
+		<</if>>
 		<<if $player.vaginaExist and $vaginause is 0>>
 			<<set _rightaction["Guide to your pussy"] to "showvagina"+_tentaclerightOption>>
 		<</if>>
@@ -898,6 +904,9 @@
 		<<if $player.penisExist and $penisuse is 0>>
 			<<set _feetaction["Guide to your penis"] to "showpenis"+_tentacleFeetOption>>
 		<</if>>
+		<<if playerHasStrapon() and $penisuse is 0 and $nopenile is 0>>
+			<<set _feetaction["Guide to your strap-on"] to "showpenis"+_tentacleFeetOption>>
+		<</if>>
 		<<if $player.vaginaExist and $vaginause is 0>>
 			<<set _feetaction["Guide to your pussy"] to "showvagina"+_tentacleFeetOption>>
 		<</if>>
diff --git a/game/base-combat/widgets.twee b/game/base-combat/widgets.twee
index c6db1d2f06..c412be7a3a 100644
--- a/game/base-combat/widgets.twee
+++ b/game/base-combat/widgets.twee
@@ -2,34 +2,38 @@
 
 <<widget "takeVirginity">>
 <<if $args[1]>>
-	<<if $player.virginity[$args[1]] is true>>
-		<<if $wraith and $wraith.mimic is $args[0]>>
-			<<set $args[0] to "Ivory Wraith">>
-		<<elseif $args[1] is "vaginal" or $args[1] is "penile">>
-			<<switch $args[0]>>
-				<<case "Robin">><<earnFeat "Robin the Lover">>
-				<<case "Kylar">><<earnFeat "Kylar the Obsessed">>
-				<<case "Eden">><<earnFeat "Eden the Lonely">>
-				<<case "Whitney">><<earnFeat "Whitney the Tsundere">>
-				<<case "Avery">><<earnFeat "Avery the Moneybags">>
-				<<case "Leighton">><<earnFeat "Leighton the Shady">>
-				<<case "Alex">><<earnFeat "Alex the Robust">>
-				<<case "Great Hawk">><<earnFeat "Great Hawk the Terror">>
-				<<case "Wren">><<earnFeat "Wren the Sly">>
-				<<case "Black Wolf">><<earnFeat "Great Wolf the Alpha">>
-				<<case "Harper">><<earnFeat "Harper the Hypnotist">>
-				<<case "Morgan">><<earnFeat "Morgan the Lost">>
-			<</switch>>
-		<</if>>
-		<<if $args[0] isnot undefined and $args[0] isnot 0>>
-			<<set $player.virginity[$args[1]] to $args[0]>>
-		<<else>>
-			<<set $player.virginity[$args[1]] to false>>
+	<<if $args[1] is "penile" and playerHasStrapon()>>
+		<!-- Do nothing -->
+	<<else>>
+		<<if $player.virginity[$args[1]] is true>>
+			<<if $wraith and $wraith.mimic is $args[0]>>
+				<<set $args[0] to "Ivory Wraith">>
+			<<elseif $args[1] is "vaginal" or $args[1] is "penile">>
+				<<switch $args[0]>>
+					<<case "Robin">><<earnFeat "Robin the Lover">>
+					<<case "Kylar">><<earnFeat "Kylar the Obsessed">>
+					<<case "Eden">><<earnFeat "Eden the Lonely">>
+					<<case "Whitney">><<earnFeat "Whitney the Tsundere">>
+					<<case "Avery">><<earnFeat "Avery the Moneybags">>
+					<<case "Leighton">><<earnFeat "Leighton the Shady">>
+					<<case "Alex">><<earnFeat "Alex the Robust">>
+					<<case "Great Hawk">><<earnFeat "Great Hawk the Terror">>
+					<<case "Wren">><<earnFeat "Wren the Sly">>
+					<<case "Black Wolf">><<earnFeat "Great Wolf the Alpha">>
+					<<case "Harper">><<earnFeat "Harper the Hypnotist">>
+					<<case "Morgan">><<earnFeat "Morgan the Lost">>
+				<</switch>>
+			<</if>>
+			<<if $args[0] isnot undefined and $args[0] isnot 0>>
+				<<set $player.virginity[$args[1]] to $args[0]>>
+			<<else>>
+				<<set $player.virginity[$args[1]] to false>>
+			<</if>>
 		<</if>>
-	<</if>>
 
-	<<if $player.virginity.temple is true and ($args[1] is "vaginal" or $args[1] is "penile") and $templePromised isnot $args[0]>>
-		<<set $player.virginity.temple to false>>
+		<<if $player.virginity.temple is true and ($args[1] is "vaginal" or $args[1] is "penile") and $templePromised isnot $args[0]>>
+			<<set $player.virginity.temple to false>>
+		<</if>>
 	<</if>>
 <</if>>
 <</widget>>
@@ -134,8 +138,10 @@
 		<<set $_npc to $NPCList[$args[0]]>>
 	<</if>>
 
-    <<set $_vType to $args[1]>>
-    <<if $_npc and $_vType and $_npc.virginity and $_npc.virginity[$_vType] and (!$wraith or $wraith.mimic isnot $_npc.nam)>>
+    <<set $_straponvirginityIgnore to (npcHasStrapon($args[0]) and $args[1] is "penile" ? true : false)>>
+
+	<<set $_vType to $args[1]>>
+    <<if $_npc and $_vType and $_npc.virginity and $_npc.virginity[$_vType] and (!$wraith or $wraith.mimic isnot $_npc.nam) and !_straponvirginityIgnore>>
         /* note: virginity must be exactly equal to true; only true means that they still have their virginity. */
         <<if $_npc.virginity[$_vType] is true>>
 			<<set $_npc.virginity[$_vType] to "player">>
diff --git a/game/base-debug/test encounters.twee b/game/base-debug/test encounters.twee
index 5b46d10aa6..bf1f0290db 100644
--- a/game/base-debug/test encounters.twee	
+++ b/game/base-debug/test encounters.twee	
@@ -1326,6 +1326,175 @@ $$hour * 60 + $$minute = <<= $hour * 60 + $minute>>
 <br>
 <<link [[Go back|$prevPassage]]>><<run delete V.timeDistortion>><</link>>
 
+:: NNPC Strapon Generator Widgets [widget]
+
+<<widget "straponGeneratorOptions">>
+
+	<i>Size:</i>
+	<<listbox "_straponSize" autoselect>>
+		<<option "regular" 2>>
+		<<option "large" 3>>
+		<<option "massive" 4>>
+	<</listbox>>
+
+	<i>Colour:</i>
+	<<set _colourOptions to ["black","red","pink","purple","fleshy","blue","green"]>>
+
+	<<listbox "_straponColour" autoselect>>
+		<<optionsfrom _colourOptions>>
+	<</listbox>>
+
+	<i>Shape:</i>
+	<<set _shapeOptions to ["dildo","penis","beaded dildo","horse cock","knotted cock","tentacle","dolphin cock","studded cock","fist dildo"]>>
+
+	<<listbox "_straponShape" autoselect>>
+		<<optionsfrom _shapeOptions>>
+	<</listbox>>
+
+	<i>Additional Modifier:</i>
+	<<set _modifierOptions to ["","floppy","transparent","sparkly"]>>
+	<<listbox "_straponModifier" autoselect>>
+		<<optionsfrom _modifierOptions>>
+	<</listbox>>
+	<br><br>
+
+<</widget>>
+
+
+:: NNPC Strapon Generator
+The lights flash on. You find yourself in a strange chamber, completely smooth and featureless.
+There is a sign on the wall that says <span class="orange">DEBUG</span> in bright orange letters.
+A large, opaque tube reaches to the ceiling, The words <span class="blue">CUSTOM CONSTRUCT</span> are labelled on the front.
+<br>
+
+<<set _nnpcOptions to $NPCName.filter(npc => npc.penis === "none")>>
+<<set _nnpcOptions to _nnpcOptions.map(npc => npc.nam)>>
+
+A terminal is attached to the tube.
+
+<<if _nnpcOptions.length gte 1>>
+	Its screen is a monochrome green. You look at the prompts. The first one surprises you. It's a list of the names of people you recognise, how peculiar...
+	<br><br>
+	<i>Please select the construct's model.</i>
+	<br>
+
+
+	<<listbox "_npcNameSelect" autoselect>>
+		<<optionsfrom _nnpcOptions>>
+	<</listbox>>
+	<br><br>
+
+	<i>Please design the construct's strap-on.</i>
+	<br>
+	<<set _straponSize to 3>>
+	<span id="straponOptions">
+	<<straponGeneratorOptions>>
+	</span>
+
+	<<button "<i>Randomize</i>">>
+		<<set _straponSize to [2,3,4].random()>> 
+		<<set _straponColour to ["black","red","pink","purple","fleshy","blue","green"].random()>> 
+		<<set _straponShape to ["dildo","penis","beaded dildo","horse cock","knotted cock","tentacle","dolphin cock","studded cock","fist dildo"].random()>> 
+		<<set _straponModifier to ["","","floppy","transparent","sparkly"].random()>>
+		<<replace "#straponOptions">><<straponGeneratorOptions>><</replace>>
+	<</button>><br><br>
+
+	Having selected the desired options, your finger hovers over the "Create" button. You really have no idea what this strange device is about to do...
+	<br><br>
+
+	<<link [[Create Construct|NNPC Strapon Generator Sex]]>>
+		<<npc _npcNameSelect>><<npcexpose>><<person1>>
+		<<generateNewStrapon _straponSize _straponColour _straponShape _straponModifier>>
+		<<npcstrapon 0>>
+		<<setNPCStrapon $NPCList[0] _newStrapon>>
+		<<set $sexstart to 1>>
+	<</link>>
+	<br><br>
+
+<<else>>
+	Its screen is a solid red colour, and it displays a message.
+	<br><br>
+	<span class="red"><i>Subject has no compatible candidates for construct in memory.</i></span>
+	<br>
+	<span class="red"><i>No actions available at this time.</i></span>
+	<br><br>
+
+<</if>>
+
+<<link [[Back home|Bedroom]]>><</link>>
+
+
+:: NNPC Strapon Generator Sex
+<<if $sexstart is 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+
+	<<maninit>>
+	With a hiss of steam, the tube retracts to the ceiling.
+	A figure walks out, looking identical to <<print $NPCList[0].fullDescription>>,
+	<<if $NPCList[0].fullDescription is "Whitney">>
+		although fully nude and holding a <<print $NPCList[0].strapon.description>> in <<his>> hand. 
+		<br><br>
+		<<setNPCStrapon $NPCList[0] $NPCName[$NPCNameList.indexOf("Whitney")].strapons[0]>>
+		"This thing is cute and all, but I've already got one", <<he>> says,
+		throwing it away and pulling <<his>> favorite <<print $NPCList[0].strapon.description>> out of nowhere.
+	<<else>>
+		although fully nude and wearing a <<print $NPCList[0].strapon.description>>.
+	<</if>>
+	<br><br>
+
+	"Beginning sex encounter," the <<personsimple>> says in a flat tone, before <<his>> face morphs into a lavicious smile. <<catcall>>
+<</if>>
+
+<<effects>>
+<<effectsman>><<man>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $finish is 1>>
+	<span id="next"><<link [[FINISH|NNPC Strapon Generator Sex Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[HEALTH|NNPC Strapon Generator Sex Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[ORGASM|NNPC Strapon Generator Sex Finish]]>><</link>></span><<nexttext>>
+<<elseif $pain gte 100 and $willpowerpain is 0>>
+	<span id="next"><<link [[PAIN|NNPC Strapon Generator Sex Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|NNPC Strapon Generator Sex]]>><</link>></span><<nexttext>>
+<</if>>
+<br>
+<<link [[Emergency exit|NNPC Strapon Generator Sex Finish]]>><<set $finish to 1>><</link>>
+<br><br><br><br>
+
+:: NNPC Strapon Generator Sex Finish
+<<if $finish is 1>>
+	"Test concluded," the <<personsimple>> says in a flat tone, abruptly stepping back. "Restoring state to default."
+<<elseif $enemyhealth lte 0>>
+	"Test concluded," the <<personsimple>> says in a flat tone, stepping away from you as if <<he>> weren't hurt at all. "Restoring state to default."
+<<elseif $pain gte 100 and $willpowerpain is 0>>
+	"Test concluded," the <<personsimple>> says in a flat tone, stepping away from you. "Restoring state to default."
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+	"Test concluded," the <<personsimple>> says in a flat tone, stepping away from you. "Restoring state to default."
+<</if>>
+<br><br>
+
+<<He>> walks back to the terminal and flicks a switch. <<He>> steps past it, and the tube descends from the ceiling over <<him>> again.
+Once the tube touches the floor, the lights switch off.
+<br><br>
+
+<<tearful>> you wonder what to do next.
+<br><br>
+
+<<endcombat>><<clotheson>>
+
+<<link [[Create another construct|NNPC Strapon Generator]]>><</link>><br>
+<<link [[Back home|Bedroom]]>><</link>>
+
 :: Cow Test Sex
 <<if $sexstart is 1>>
 	<<beastNEWinit 1 cow>>
diff --git a/game/base-system/bdsm.twee b/game/base-system/bdsm.twee
index b24c8634b4..82607b2672 100644
--- a/game/base-system/bdsm.twee
+++ b/game/base-system/bdsm.twee
@@ -8,6 +8,10 @@
     <<set $worn.neck.type.push("broken")>>
     <<neckruined>>
     <<neckwear 22>>
+<<elseif $worn.neck.name is "leather collar">>
+    <<set $worn.neck.type.push("broken")>>
+    <<neckruined>>
+    <<neckwear 24>>
 <</if>>
 <</widget>>
 
@@ -20,5 +24,9 @@
     <<set $worn.neck.type.push("broken")>>
     <<neckruined>>
     <<neckwear 20>>
+<<elseif $worn.neck.name is "leather collar with leash">>
+    <<set $worn.neck.type.push("broken")>>
+    <<neckruined>>
+    <<neckwear 25>>
 <</if>>
 <</widget>>
\ No newline at end of file
diff --git a/game/base-system/images.twee b/game/base-system/images.twee
index d7c317d31d..5985d49df6 100644
--- a/game/base-system/images.twee
+++ b/game/base-system/images.twee
@@ -586,6 +586,18 @@
 	<</if>>
 <</widget>>
 
+<<widget "adultshopicon">>
+	<<if $images is 1>>
+		<img id="icon" src="img/misc/icon/adultshop.gif">
+	<</if>>
+<</widget>>
+
+<<widget "landfillicon">>
+	<<if $images is 1>>
+		<img id="icon" src="img/misc/icon/landfillicon.png">
+	<</if>>
+<</widget>>
+
 <<widget "binicon">>
 	<<if $images is 1>>
 		<img id="icon" src="img/misc/icon/bin.png">
@@ -1154,6 +1166,12 @@
 	<</if>>
 <</widget>>
 
+<<widget "lockpickicon">>
+	<<if $images is 1>>
+		<img id="icon" src="img/misc/icon/lockpick.png">
+	<</if>>
+<</widget>>
+
 <<widget "infirmaryicon">>
 	<<if $images is 1>>
 		<img id="icon" src="img/misc/icon/infirmary.png">
diff --git a/game/base-system/journal.twee b/game/base-system/journal.twee
index 8f530a5526..1675ab297e 100644
--- a/game/base-system/journal.twee
+++ b/game/base-system/journal.twee
@@ -506,6 +506,8 @@
 	<</if>>
 <</if>>
 
+<<adultShopOpeningProgressJournal>>
+
 <<if $farm>>
 	<br>
 	<<farm_upgrades_current>>
diff --git a/game/base-system/named-npcs.twee b/game/base-system/named-npcs.twee
index 8fe4598843..7ee84b171a 100644
--- a/game/base-system/named-npcs.twee
+++ b/game/base-system/named-npcs.twee
@@ -379,6 +379,7 @@ alternative way to write that:
 	<<set $NPCName[_i].chastity to {penis:"", vagina:"", anus:""}>>
 	<<generatePronouns $NPCName[_i]>>
 	<<initNNPCClothes _nam>>
+	<<initNNPCstrapon $NPCName[_i]>>
 
 	<!-- Special Cases NNPC Variables, Introductions, Adjustments -->
 	<<switch _nam>>
@@ -687,6 +688,42 @@ alternative way to write that:
 <</if>>
 <</widget>>
 
+<!-- generates the strapon that the NNPC will use if the scene or rng calls for it. doesn't guarantee they will have it 100% of the time. -->
+<<widget "initNNPCstrapon">>
+	<<set $_npcName to $args[0]>>
+	<<set $_name to $_npcName.nam>>
+	<<switch $_name>>
+		<<case "Whitney">>
+			<<set $_npcName.strapons to [{"state": "worn", "color": "dark red", "size": 3, "description":"large dark red strap-on cock"}]>>
+		<<default>>
+			<<set $_npcName.strapons to []>>
+	<</switch>>
+<</widget>>
+
+<!-- give an NNPC a *new* strapon -->
+<!-- <<giveNNPCnewstrapon _npcNameSelect _straponSize _straponColour _straponShape _modifierOptions>> -->
+<<widget "giveNNPCnewstrapon">>
+	<<set $_name to $args[0]>>
+	<<set $_npcName to $NPCName.find(npc => npc.nam === $_name)>>
+	<<set $_index to $NPCName.findIndex(npc => npc.nam === $_name)>>
+	<<if _newStrapon is undefined>>
+		<<run throw new Error("giveNNPCnewstrapon was run when _newStrapon was undefined! Call generateNewStrapon first!")>>
+	<<else>>
+		<<set $_strapon to clone(_newStrapon)>>
+		<!-- unset _newStrapon so that we can't accidentally dupe strapons. That's right, we're forcing you to generate multiple if you want identical ones. -->
+		<<unset _newStrapon>>
+	<</if>>
+
+	<!-- if the nnpc's name is in the following list, they will refuse to accept a new strapon -->
+	<<if !["Whitney"].includes($_name)>>
+		<<if $_npcName.strapons is undefined or $_npcName.strapons.length is 0>>
+			<<set $NPCName[$_index].strapons to [$_strapon]>>
+		<<else>>
+			<<set $NPCName[$_index].strapons.push($_strapon)>>
+		<</if>>
+	<</if>>
+<</widget>>
+
 <<widget "npc">>
 /* Prepare the call for multiple Named NPCs at the same time.
 * We do this by changing all $NPCList[0] calls to $NPCList[x] in which x can be any temporary variable. In this case, we'll use _npcno.
@@ -737,6 +774,9 @@ alternative way to write that:
 	<<getNNPCClothes _nam>>
 <</if>>
 
+<<if !$NPCName[_i].strapons>>
+	<<initNNPCstrapon $NPCName[_i]>>
+<</if>>
 <<set $NPCList[_npcno].virginity to $NPCName[_i].virginity>>
 
 <!-- Set global variables -->
@@ -828,6 +868,11 @@ alternative way to write that:
 	<<set $npcCondoms to "normal">>
 <</if>>
 
+/* Whitney and Avery should wear strap-ons based on strap-on chance */
+<<if $NPCList[_npcno].penis is "none" and (_nam is "Whitney" or _nam is "Avery") and !_strapIgnore and random(0,99) lt  $straponchance>>
+	<<npcstrapon _npcno>>
+<</if>>
+
 <!-- Adjust for Beast type NNPCs: Black Wolf -->
 <!-- We don't change anything here, since beasts can only attack one at a time. But in case this changes, it would be better to change the zeroes (0) to _npcno -->
 <<if $NPCList[0].type is "wolf">>
diff --git a/game/base-system/orgasm.twee b/game/base-system/orgasm.twee
index 057f3d6cfc..fadde58142 100644
--- a/game/base-system/orgasm.twee
+++ b/game/base-system/orgasm.twee
@@ -38,6 +38,18 @@
 			<span class="pink">You are overcome by sensation and climax, but nothing comes out.</span>
 			<<set $femaleclimax to 1>>
 			<<semenvolume -1>>
+		<<elseif playerHasStrapon()>>
+			<span class="pink">You are overcome by sensation and climax under your strap-on.</span>
+			<<if $semen_amount lte ($semen_volume * (6 / 24))>>
+				<span class="pink">Exhausted, your body only manages to produce a few droplets of watery cum.</span>
+				<<semenvolume -2>>
+			<<elseif $semen_amount lte ($semen_volume * (12 / 24))>>
+				<span class="pink">Tired from overuse, your cum is thin and watery.</span>
+				<<semenvolume -1>>
+			<<elseif $semen_amount lte ($semen_volume * (18 / 24))>>
+				<span class="pink">The repeated orgasms are taking their toll, reducing the amount of cum your body manages to produce.</span>
+				<<semenvolume -1>>
+			<</if>>
 		<<else>>
 			<<set $player.bodyliquid.penis.semen += 1>>
 			<<if $player.condom>>
diff --git a/game/base-system/pregnancy/pregnancy.twee b/game/base-system/pregnancy/pregnancy.twee
index 34ee529323..f92e66d03d 100644
--- a/game/base-system/pregnancy/pregnancy.twee
+++ b/game/base-system/pregnancy/pregnancy.twee
@@ -1050,6 +1050,7 @@
 	<<case "school">>
 	<<case "schoolLibrarian">>
 		/*Wake up while being put in an ambulance?*/
+	<<case "adultShop">>
 	<<default>>
 		With your waters broken, your too stressed to continue.
 <</switch>>
diff --git a/game/base-system/settings.twee b/game/base-system/settings.twee
index f9e2e83e95..1dc6bc5650 100644
--- a/game/base-system/settings.twee
+++ b/game/base-system/settings.twee
@@ -55,6 +55,8 @@
 <<set $npcVirginityChance to 50>>
 <<set $npcVirginityChanceAdult to 10>>
 <<set $footdisable to "f">>
+<<set $toywhipdisable to "f">>
+<<set $toydildodisable to "f">>
 <<set $tipdisable to "f">>
 <<set $statdisable to "f">>
 <<set $bodywritingImages to true>>
@@ -1044,6 +1046,20 @@ Values above 5 can lead to errors when creating new saves! Make sure you know wh
 	<mouse class="tooltip linkBlue">(?)<span>Does not remove the player's feet.</span></mouse>
 	</div></label>
 
+	<div class="settingsToggle" role="group" aria-labelledby="settingsToysHead">
+	<span id="settingsSexToysHead">Sex toys:</span>
+	<label>
+		<<checkbox "$toydildodisable" "t" "f" autocheck>> Dildos
+	</label>
+	<label>
+		<<checkbox "$toywhipdisable" "t" "f" autocheck>> Whips
+	</label>
+	/*<label>
+		<<checkbox "$toyvirginitydisable" "t" "f" autocheck>> Take virginity
+	</label>*/
+	<mouse class="tooltip linkBlue">(?)<span>"Dildos" are insertables such as dildos, anal beads, and the like. Does not disable strap-ons. <br>"Whips" include riding crops and flogs. Does not remove them from spanking scenes.</span></mouse>
+	</div>
+
 	<div class="settingsToggle" style="display: inline-flex;">
 	&nbsp;Asphyxiation
 	<<numberslider "$asphyxiaLvl" $asphyxiaLvl 0 4 1>>
diff --git a/game/base-system/skill-difficulties.twee b/game/base-system/skill-difficulties.twee
index 1f19e508bd..a32b90a855 100644
--- a/game/base-system/skill-difficulties.twee
+++ b/game/base-system/skill-difficulties.twee
@@ -19,10 +19,12 @@
 <</widget>>
 
 <<widget "seductiondifficulty">><<silently>>
-<<if $checkstyle is "skillname" or $statdisable is "t">>
+<<if $statdisable is "t">>
 	<<set _text_output to "">>
 <<elseif $combat is 1>>
-	<<if $args[0] is true>>
+	<<if $checkstyle is "skillname">>
+		<<set _text_output to "">>
+	<<elseif $args[0] is true>>
 		<<if (990 - ($enemytrust * 10) - $seductionskill + $enemyanger) lte (($enemyarousalmax / ($enemyarousal + 1)) * 100)>>
 			<<set _text_output to '(Very Easy)'>>
 		<<elseif (800 - ($enemytrust * 10) - $seductionskill + $enemyanger) lte (($enemyarousalmax / ($enemyarousal + 1)) * 100)>>
@@ -56,23 +58,28 @@
 		<</if>>
 	<</if>>
 <<else>>
-	<<if 990 - $seductionskill - ($attractiveness / 10) lte -100>>
-		<<set _text_output to '<span class="green">(Very Easy)</span>'>>
-	<<elseif 800 - $seductionskill - ($attractiveness / 10) lte -100>>
-		<<set _text_output to '<span class="teal">(Easy)</span>'>>
-	<<elseif 600 - $seductionskill - ($attractiveness / 10) lte -100>>
-		<<set _text_output to '<span class="lblue">(Medium)</span>'>>
-	<<elseif 400 - $seductionskill - ($attractiveness / 10) lte -100>>
-		<<set _text_output to '<span class="blue">(Challenging)</span>'>>
-	<<elseif 200 - $seductionskill - ($attractiveness / 10) lte -100>>
-		<<set _text_output to '<span class="purple">(Hard)</span>'>>
-	<<elseif 1 - $seductionskill - ($attractiveness / 10) lte -100>>
-		<<set _text_output to '<span class="pink">(Very Hard)</span>'>>
+	<<if $checkstyle is "skillname">>
+		<<set _text_output to ` | <span class="lewd">Seduction</span>`>>
 	<<else>>
-		<<set _text_output to '<span class="red">(Impossible)</span>'>>
+		<<set _text_output to ` | <span class="lewd">Seduction</span>: `>>
+		<<if 990 - $seductionskill - ($attractiveness / 10) lte -100>>
+			<<set _text_output += '<span class="green">(Very Easy)</span>'>>
+		<<elseif 800 - $seductionskill - ($attractiveness / 10) lte -100>>
+			<<set _text_output += '<span class="teal">(Easy)</span>'>>
+		<<elseif 600 - $seductionskill - ($attractiveness / 10) lte -100>>
+			<<set _text_output += '<span class="lblue">(Medium)</span>'>>
+		<<elseif 400 - $seductionskill - ($attractiveness / 10) lte -100>>
+			<<set _text_output += '<span class="blue">(Challenging)</span>'>>
+		<<elseif 200 - $seductionskill - ($attractiveness / 10) lte -100>>
+			<<set _text_output += '<span class="purple">(Hard)</span>'>>
+		<<elseif 1 - $seductionskill - ($attractiveness / 10) lte -100>>
+			<<set _text_output += '<span class="pink">(Very Hard)</span>'>>
+		<<else>>
+			<<set _text_output += '<span class="red">(Impossible)</span>'>>
+		<</if>>
 	<</if>>
 <</if>>
-<</silently>><<if _text_output and $args[0] isnot true and $checkstyle isnot "skillname">><<print _text_output>><</if>>
+<</silently>><<if _text_output and $args[0] isnot true>><<print _text_output>><</if>>
 <</widget>>
 
 <<widget "oraldifficulty">>
diff --git a/game/base-system/text.twee b/game/base-system/text.twee
index 5dd3ffff8c..e141a06186 100644
--- a/game/base-system/text.twee
+++ b/game/base-system/text.twee
@@ -979,6 +979,14 @@
 	<<genitalstate>><<set _genital_state_text to _text_output>>
 
 	<<set _text_output to _penissize_text + _genital_state_text + "penis">>
+
+	<<if playerHasStrapon()>>
+		<<if $args[0] isnot undefined and $args[0] is "strap-on" and $player.penisExist>>
+			<!-- Do nothing. This is an override for wacky cases such as player masturbation -->
+		<<else>>
+			<<set _text_output to _penissize_text + "strap-on">>
+		<</if>>
+	<</if>>
 <</silently>><<genitalsensitivity>><<print _text_output>><</widget>>
 
 <<widget "reveal">>
@@ -5637,7 +5645,9 @@ School finishes on the first Monday of December.
 <</widget>>
 
 <<widget "penilevirginitywarning">>
-	<<if $player.virginity.penile is true and $statdisable is "f">>
+ 	<<if playerHasStrapon()>>
+		!<!-- do nothing -->
+	<<elseif $player.virginity.penile is true and $statdisable is "f">>
 		<span class="red">This action will deflower you.</span>
 	<</if>>
 <</widget>>
@@ -6719,14 +6729,32 @@ $worn.genitals.name
 		<<set _text_output to "caged penis">>
 	<<elseif $NPCList[$_npcGen].chastity.penis.includes("chastity")>>
 		<<set _text_output to $NPCList[$_npcGen].chastity.penis>>
-	<<elseif $NPCList[$_npcGen].penisdesc.includes("strap-on")>>
-		<<set _text_output to "strap-on cock">>
+	<<elseif npcHasStrapon($_npcGen)>>
+		<<set _text_output to either("strap-on","strap-on cock")>>
 	<<else>>
-		<<set _text_output to either("penis","cock","shaft")>>
+		<<set _text_output to either("penis","penis","cock","shaft")>>
 	<</if>>
 	<<print _text_output>>
 <</widget>>
 
+<<widget "npcPenisColored">>
+	<<set $_npcGen to ($args[0] ? $args[0] : 0)>>
+	<<set $_ppcolor to "tan">>
+	<<if $NPCList[$_npcGen].chastity.penis.includes("chastity")>>
+		<<set $_ppcolor to "gray">>
+		<<set _text_output to $NPCList[$_npcGen].chastity.penis>>
+	<<elseif npcHasStrapon($_npcGen)>>
+		/*<<set $_straponcolor to $NPCList[$_npcGen].penisdesc.split(" ")>>
+		<<set $_ppcolor to $_straponcolor[1]>>*/
+		<<set $_ppcolor to $NPCList[$_npcGen].strapon.color>>
+		<<if $_ppcolor is "fleshy">><<set $_ppcolor to "tan">><</if>>
+		<<set _text_output to $NPCList[$_npcGen].penisdesc>>
+	<<else>>
+		<<set _text_output to $NPCList[$_npcGen].penisdesc>>
+	<</if>>
+	<span @class=$_ppcolor><b><<print _text_output>></b></span>
+<</widget>>
+
 <<widget "npcVagina">>
 <<if !$args[0]>>
 	<<set _npcGen to 0>>
@@ -7082,8 +7110,37 @@ Argument 2, where appropriate, determines whether it's the player undressing the
 <<widget "vulva">>
 <<print either("vulva","vulva","quim","flange","pussy")>>
 <</widget>>
+
 -->
 
+
+<<widget "cock">><<silently>>
+	<<penissize>><<set _penissize_text to _text_output>>
+	<<if _penissize_text isnot "">>
+		<<set _penissize_text to _penissize_text + " ">>
+	<</if>>
+
+	<<set $_penis to "penis">>
+	<<if playerHasStrapon()>>
+		<<set $_penis to "strap-on">>
+	<</if>>
+
+	<<set _text_output to _penissize_text + $_penis>>
+
+<</silently>><<genitalsensitivity>><<print _text_output>><<unset _text_output>>
+<</widget>>
+
+<<widget "phallus">>
+	<<silently>>
+	<<set $_phallus to "penis">>
+	<<if $args[0] isnot undefined>>
+		<<set $_phallus to (npcHasStrapon($args[0]) ? "strap-on" : "penis")>>
+	<</if>>
+	<</silently>>
+	<<print $_phallus>>
+<</widget>>
+
+
 <<widget "gfabric">>
 	<<if $statdisable is "f">>
 		<span class="green">+ Fabric</span>
@@ -7135,3 +7192,11 @@ Argument 2, where appropriate, determines whether it's the player undressing the
 		<span class="pink">+ + + Drugged</span>
 	<</if>>
 <</widget>>
+
+<<widget "cute">><<silently>>
+<<if $player.gender_appearance is "f">>
+	<<set _text_output to (random(1) is 0 ? "cute" : "pretty")>>
+<<else>>
+	<<set _text_output to (random(1) is 0 ? "cute" : "handsome")>>
+<</if>>
+<</silently>>_text_output<</widget>>
diff --git a/game/base-system/time.twee b/game/base-system/time.twee
index c9dde62341..407bdedee8 100644
--- a/game/base-system/time.twee
+++ b/game/base-system/time.twee
@@ -1301,6 +1301,25 @@
 	<<else>>
 		<<set $clothingShop.banExtension to false>>
 	<</if>>
+	<<if $adultShop isnot undefined>>
+		<<if $adultShop.ban gt 0>>
+			<<set $adultShop.ban-->>
+		<<else>>
+			<<set $adultShop.banExtension to false>>
+		<</if>>
+	<<else>>
+		<<if $adultShop is undefined>>
+			<<set $adultShop to {
+				ban: 0,
+				banExtension: false,
+				spotted: false,
+				stolenClothes: 0,
+				totalStolenClothes: 0,
+				banCount: 0,
+				rng: random(0,1000)
+			}>>
+		<</if>>
+	<</if>>
 	<<unset $slimeFarmNaked>>
 	<<if $farm>>
 		<<if $farm.milking.catchChance gt random(10,1000)/10>>
@@ -1325,6 +1344,16 @@
 	<<if $wolfcavepatrol is 1>>
 		<<set $wolfcavepatrolchance to random(1,3)>>
 	<</if>>
+
+	<<if $randomNNPCStraponsToClear>>
+		<!-- Clear any strapons that were randomly generated for the NNPCs -->
+		<<run $NPCName.forEach(npc => {
+			if (npc.strapons && npc.strapons.length >= 1){
+				/* This removes all strapons that have the temp tag, and ignores any that lack this variable */
+				npc.strapons = npc.strapons.filter(strapon => !strapon.temp)
+			}
+		})>>
+	<</if>>
 <</if>>
 <</widget>>
 
@@ -1336,6 +1365,7 @@
 	<<clearNPC bartend>>
 <</if>>
 <<set $clothingShop.spotted to false>>
+<<set $adultShop.spotted to false>>
 <<dailySellProduce>>
 <<if $lake_ice_broken gte 1>>
 	<<set $lake_ice_broken -= 1>>
@@ -1566,6 +1596,7 @@
 <<unset $oceanbreezetheft>>
 <<unset $stripclubtheft>>
 <<unset $clothingshoptheft>>
+<<unset $adultshoptheft>>
 <<unset $hairdresserstheft>>
 <<unset $tailortheft>>
 <<unset $petshoptheft>>
@@ -1612,6 +1643,8 @@
 	<<set $photo.shoot to 0>>
 <</if>>
 
+<<unset $adultShopWhitney>>
+
 <</widget>>
 
 <<widget "year">>
diff --git a/game/base-system/widgets.twee b/game/base-system/widgets.twee
index dfd9fd3b56..aa110b1e32 100644
--- a/game/base-system/widgets.twee
+++ b/game/base-system/widgets.twee
@@ -1834,6 +1834,13 @@
 					<img id="location" @src="'img/misc/' + _weather_display + '/poolday.gif'">
 				<<case "landfill">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/landfillday.png'">
+				<<case adult_shop>>
+					<<getadultshopstate>>
+					<<if $adultshopstate is "closed">>
+						<img id="location" @src="'img/misc/' + _weather_display + '/sex_shop_day.png'">
+					<<else>>
+						<img id="location" @src="'img/misc/' + _weather_display + '/sex_shop_day_open.gif'">
+					<</if>>
 				<<case "temple">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/templeday.png'">
 				<<case "strip_club">>
@@ -1969,6 +1976,8 @@
 					<</if>>
 				<<case "pool">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/poolnight.gif'">
+				<<case adult_shop>>
+				<img id="location" @src="'img/misc/' + _weather_display + '/sex_shop_night.gif'">
 				<<case "landfill">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/landfillnight.png'">
 				<<case "temple">>
@@ -2105,6 +2114,8 @@
 					<img id="location" @src="'img/misc/' + _weather_display + '/pooldawn.gif'">
 				<<case "landfill">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/landfilldawn.png'">
+				<<case adult_shop>>
+				<img id="location" @src="'img/misc/' + _weather_display + '/sex_shop_dawn.png'">
 				<<case "temple">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/templedawn.png'">
 				<<case "strip_club">>
@@ -2239,6 +2250,8 @@
 					<img id="location" @src="'img/misc/' + _weather_display + '/pooldusk.gif'">
 				<<case "landfill">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/landfilldusk.png'">
+				<<case adult_shop>>
+				<img id="location" @src="'img/misc/' + _weather_display + '/sex_shop_dusk.gif'">
 				<<case "temple">>
 					<img id="location" @src="'img/misc/' + _weather_display + '/templedusk.png'">
 				<<case "strip_club">>
@@ -2797,6 +2810,9 @@ or $args[0] is "force">>
 	<<if $drugged gt 1>>
 		<<set $_arousal += $pass * 10>>
 	<</if>>
+	<<if playerHasButtPlug()>>
+		<<set $_arousal += $pass * 12>>
+	<</if>>
 	<<if $parasite.left_ear.name is "slime" and random(1, 100) gte 90>>
 		<<drugs $pass>>
 	<</if>>
@@ -5055,4 +5071,39 @@ __Map__<br>
 <<if $args[0]>>
 	<<set $hypnotised += $args[0]>>
 <</if>>
+<</widget>>
+
+<<widget "getstraponcolor">>
+	<<set $phalluscolorA to "fleshy">>
+	<<set $phalluscolorB to "fleshy">>
+
+	<<if $args[0] isnot undefined and $args[1] isnot undefined>>
+		<<if npcHasStrapon($args[0])>>
+			<<set $phalluscolorA to "strapon-"+$NPCList[$args[0]].strapon.color>>
+		<</if>>
+		<<if npcHasStrapon($args[1])>>
+			<<set $phalluscolorB to "strapon-"+$NPCList[$args[1]].strapon.color>>
+		<</if>>
+	<<elseif $args[0] isnot undefined>>
+		<<if npcHasStrapon($args[0])>>
+			<<set $phalluscolorA to "strapon-"+$NPCList[$args[0]].strapon.color>>
+		<</if>>
+	<<else>>
+		<<set $phalluscolorA to "strapon-fleshy">>
+	<</if>>
+<</widget>>
+
+<<widget "giftStrapon">>
+	<!--
+	$args[0] is the named NPC.
+	$args[1] is the state of the gift. "held" when purchased from the shop, and "given" when the NPC has accepted the gift.
+	-->
+	<<if $args[0] isnot undefined and $NPCNameList.includes($args[0])>>
+		<<if $giftStrapon is undefined>>
+			<<set $giftStrapon to []>>
+		<</if>>
+		<<if $args[1] is "held" or $args[1] is "given">>
+			<<set $giftStrapon[$args[0]] to $args[1]>>
+		<</if>>
+	<</if>>
 <</widget>>
\ No newline at end of file
diff --git a/game/overworld-forest/loc-cabin/main.twee b/game/overworld-forest/loc-cabin/main.twee
index af6c19567f..234bd5c967 100644
--- a/game/overworld-forest/loc-cabin/main.twee
+++ b/game/overworld-forest/loc-cabin/main.twee
@@ -379,6 +379,10 @@ You are in Eden's cabin.
 		<</if>>
 		<<link [[Approach Eden|Cabin Eden Actions]]>><</link>>
 		<br><br>
+		<<if $giftStrapon["Eden"] is "held" and $NPCName[$NPCNameList.indexOf("Eden")].penis isnot "none">>
+			<<link [[Gift Eden a strap-on|Eden Gift Strap-on]]>><</link>>
+			<br><br>
+		<</if>>
 		<<link [[Look around the cabin|Cabin House Actions]]>><</link>>
 		<br><br>
 		<<link [[Examine the sleeping area|Cabin Actions]]>><</link>>
@@ -396,6 +400,10 @@ You are in Eden's cabin.
 		<</if>>
 		<<link [[Approach Eden|Cabin Eden Actions]]>><</link>>
 		<br><br>
+		<<if $giftStrapon["Eden"] is "held" and $NPCName[$NPCNameList.indexOf("Eden")].penis isnot "none">>
+			<<link [[Gift Eden a strap-on|Eden Gift Strap-on]]>><</link>>
+			<br><br>
+		<</if>>
 		<<link [[Look around the cabin|Cabin House Actions]]>><</link>>
 		<br><br>
 		<<link [[Examine the sleeping area|Cabin Actions]]>><</link>>
diff --git a/game/overworld-plains/loc-farm/cottage.twee b/game/overworld-plains/loc-farm/cottage.twee
index e21301ed1c..c97986521d 100644
--- a/game/overworld-plains/loc-farm/cottage.twee
+++ b/game/overworld-plains/loc-farm/cottage.twee
@@ -855,6 +855,10 @@ You are in Alex's bedroom. It's similar to yours. Clothes tumble from the wardro
 			<<link [[Crawl beneath the desk|Farm Alex Admin Crawl]]>><<npc Alex>><<person1>><<set $alex_admin_oral to 1>><</link>><<promiscuous4>>
 			<br>
 		<</if>>
+		<<if $giftStrapon["Alex"] is "held" and ($loveInterest.primary is "Alex" or $loveInterest.secondary is "Alex">>
+			<<link [[Gift Alex a strap-on|Alex Gift Strap-on]]>><<npc Alex>><<person1>><</link>>
+			<br>
+		<</if>>
 	<</if>>
 	<<if $farm_stage gte 7>>
 		<<link [[Sit at the desk|Farm Upgrades]]>><</link>> | <span class="gold">Farm projects</span>
diff --git a/game/overworld-plains/loc-riding/main.twee b/game/overworld-plains/loc-riding/main.twee
index 9d2bd8d60c..6163f0ae43 100644
--- a/game/overworld-plains/loc-riding/main.twee
+++ b/game/overworld-plains/loc-riding/main.twee
@@ -491,7 +491,7 @@ You steer the <<steed_text>> into the trees, away from prying eyes. You ride dow
 
 Perhaps there are clothes inside.
 <<if $physiquesize lte 6000>>
-	If you move some of the smaller bits of debris, you small frame should have no trouble squeezing through.
+	If you move some of the smaller bits of debris, your small frame should have no trouble squeezing through.
 <<else>>
 <</if>>
 <br><br>
diff --git a/game/overworld-town/loc-adultshop/adultshop.twee b/game/overworld-town/loc-adultshop/adultshop.twee
new file mode 100644
index 0000000000..061737b202
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/adultshop.twee
@@ -0,0 +1,232 @@
+:: Adult Shop
+
+/* Variables */
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+<<set $adultshopstate to "closed">>
+<<getadultshopstate>>
+<<if $adultshopintro is undefined>>
+	<<set $adultshopintro to 0>>
+<</if>>
+<<if random(0,99) is 0>>
+	<<set _shopnameshort to "Aubergine's">>
+<<else>>
+	<<set _shopnameshort to "the shop">>
+<</if>>
+<<set _shopnamelong to "Erotic Adult Toys: Aubergine's Sensual Secrets">>
+<<set _shopgreeting to [
+	"don't hit each other with dildos,",
+	"keep your hands off your crotch,",
+	"keep your pants on at all times,",
+	"we don't sell used panties,",
+	"used items are non-returnable,"
+	]>>
+<<set _shopmusic to ["Smooth jazz","Salsa","Tango","Reggae","R&B","Romantic lounge","Classic rock","Classic pop"]>>
+
+/* Shop text */
+<<if $adultshopintro is 0 and random(0,99 is 0)>>
+You are in an adult shop, bemusingly titled "_shopnamelong". A wide array of strap-ons, lingerie, fetish wear, and all manner of sex toys line the shelves.
+<<else>>
+You are in an adult shop. A wide array of strap-ons, lingerie, fetish wear, and all manner of sex toys line the shelves.
+<</if>>
+<br>
+<<if $adultshopstate isnot "closed">><<print _shopmusic[random(0,_shopmusic.length-1)]>> music plays softly in the background.<</if>>
+<br><br>
+
+<<if $stress gte $stressmax>>
+	You've pushed yourself too far.
+	<br><br>
+	<<passoutadultshop>>
+	<<pass 1 hour>>
+	<<trauma 6>><<set $stress -= 2000>>
+<<else>>
+	/* States */
+	<<switch $adultshopstate>>
+		<<case "sirris">>
+			<<if $adultshopintro is 0>>
+				<<set _shopgreeting.push(
+					"discount on jumbo buttplugs,",
+					"we're always happy to help,",
+					"try our flavoured condoms,",
+					"number one adult shop,",
+					"number one adult shop,",
+					"here for our customers,",
+					"always nice to see you,",
+					"always nice to see you,",
+					"20% discount on gallon drums of lube,")
+				>>
+				/* Shop intro text*/
+				<<npc Sirris>>
+				"Welcome to _shopnameshort, <<print _shopgreeting[random(0,_shopgreeting.length-1)]>>" Sirris <<print either("beams","greets warmly","welcomes","waves and smiles","smiles and winks","winks and thumbs up","intones")>>.
+				<<He>> <<print either("resumes discussing the merits of strap-ons","returns to completing a sale","returns to showing customers various dildos","resumes discussing lubes","returns to showing off fetish wear")>>.
+				<br><br>
+				<<set $adultshopintro to 1>>
+			<</if>>
+			<<adultShopEvents>>
+			<br><br>
+		<<case "sydney">>
+			<<npc "Sydney">>
+			<<if $adultshopintro is 0>>
+				<<NPCStatusCheck "Sydney">>
+				<<set _sydneysays to ["greets warmly","welcomes","waves and smiles"]>>
+				<<set _sydneyactivity to [
+					", looking up from stocking shelves",
+					" from behind the counter",
+					", coming out of the stock room, pushing a dolly of stock",
+					", looking up returning a sale",
+					", looking up from a clipboard",
+					", feather duster in hand",
+					", dodging a handsy customer"
+				]>>
+				/* Switch tone between corrupt and noncorrupt */
+				<<if !_sydneyStatus.includes("corrupt")>>
+					<<set _shopgreeting to [
+						"don't hit each other with dildos,",
+						"we're always happy to help,",
+						"please respect the other patrons,",
+						"number one adult shop,",
+						"here for our customers,",
+						"always nice to see you,"]>>
+						<<set _sydneysays.push("recites","says flatly","intones")>>
+				<<else>>
+					<<set _shopgreeting to [
+						"don't hit each other with dildos,",
+						"keep your hands off your crotch,",
+						"keep your pants on at all times,",
+						"we don't sell used panties,",
+						"we're always happy to help",
+						"used items are non-returnable,",
+						"this is not a brothel,",
+						"number one adult shop,",
+						"here for our customers,",
+						"always nice to see you,",
+						"don't creep on other patrons,",
+						"I don't want to see your pictures,"]>>
+						<<set _sydneysays.push("beams","winks","sings")>>
+				<</if>>
+				<<if $sydneyromance is 1 and ($loveInterest.primary is "Sydney" or $loveInterest.secondary is "Sydney")>>
+					<<set _shopgreeting to ["Hey you,","Heya,", "Always nice to see you!"]>>
+					<<set _sydneysays to ["beams","blows a kiss","finger guns","blushes and waves","waves with a dildo","dodges a customer and waves"]>>
+
+					/* Shop intro text */
+					<<npc Sydney>>
+					"<<print _shopgreeting[random(0,_shopgreeting.length-1)]>>" Sydney <<print _sydneysays[random(0,_sydneysays.length-1)]>><<print _sydneyactivity[random(0,_sydneyactivity.length-1)]>>.
+				<<else>>
+					/* Shop intro text */
+					"Welcome to _shopnameshort, <<print _shopgreeting[random(0,_shopgreeting.length-1)]>>"
+					Sydney <<print _sydneysays[random(0,_sydneysays.length-1)]>><<print _sydneyactivity[random(0,_sydneyactivity.length-1)]>>.
+				<</if>>
+				<br><br>
+				<<set $adultshopintro to 1>>
+			<</if>>
+			<<if $sydneypout>>
+				Sydney <<print either("pouts","mopes around","broods sullenly")>> while carrying out <<nnpc_his Sydney>> duties.
+				<br><br>
+			<</if>>
+			<<adultShopEvents>>
+			<br><br>
+		<<case "clerk">> /* Test purposes */
+			<<generatey1>><<person1>>
+			<<set _shopgreeting.push(
+				"adult toys and stuff or whatever,",
+				"this is not a brothel,",
+				"don't creep on other patrons,",
+				"I don't want to see your pictures,")>>
+			<<set $_i to random(0,_shopgreeting.length-1)>>
+			The <<print either("brooding","brooding","sullen","angsty")>> clerk <<personsimple>> looks up as you enter.
+			"Welcome to _shopnameshort, <<print _shopgreeting[random(0,_shopgreeting.length-1)]>>" <<he>> <<print either("drones","mutters","murmurs","sighs","jeers")>>, leaning on the counter
+			<<print either(
+			"inspecting <<his>> nails.",
+			"painting <<his>> nails",
+			"browsing <<his>> phone.",
+			"flicking through a magazine.",
+			"touching up <<his>> makeup.")>>
+			<br><br>
+			<<adultShopEvents>>
+			<br><br>
+			<br><br>
+
+			<<generatey1>><<generate2>>
+			<<print ""+$NPCList[0].fullDescription + $NPCList[0].teen + " + " + $NPCList[1].fullDescription + " " + $NPCList[1].teen>>
+			<br><br>
+
+		<<default>> /* I.E. closed */
+			The shop is closed. You stand alone in the near darkness, lit only by a dim glow emanating from a novelty penis lamp.
+			<<if ($hour lt 16 or $hour gt $closinghour) and $adultshoptheft isnot 1>>
+					<br>
+					<<if $images is 1>> <img id="icon" src="img/misc/icon/clothes/traits/sticky_fingers.png"> Â <</if>><<link [[Examine the cash register|Adult Shop Register]]>><</link>>
+				<</if>>
+			<br><br>
+
+	<</switch>>
+	/* Passout. This should be replaced with a widget bespoke to the store. */
+	<<if $stress gte $stressmax>>
+		<<passout>>
+	<</if>>
+	/* Links */
+	<<if $adultshopclerk and $adultshopstate isnot "closed">>
+		/* work in this shop */
+		<<ind>><<link [[Work (1:00)|Adult Shop Clerk Job]]>><<pass 60>><</link>>
+		<br>
+	<</if>>
+	<<if !$adultshopclerk and $debug is 1>>
+		<<link[[Debug unlock clerk job|$passage]]>><<set $adultshopclerk to true>><</link>>
+		<br>
+	<</if>>
+	<<if $adultshopstate isnot "closed">>
+		<<ind>><<link [[Approach Sirris|Adult Shop Approach Sirris]]>><</link>>
+		<br>
+	<</if>>
+	<<if $adultshopstate is "sydney" and $giftStrapon isnot undefined and $giftStrapon["Sydney"] is "held">>
+		<<ind>><<link [[Approach Sydney|Adult Shop Approach Sydney]]>><</link>>
+		<br>
+	<</if>>
+	<img id="icon" src="img/misc/icon/clothes/strap-on.png"> <<link [[Browse clothing|Adult Shop Store]]>><<pass 1>><</link>>
+	<<if $adultshopstate isnot "closed">>
+	<br>
+	<img id="icon" src="img/misc/icon/sex toys/analbeads.png"> <<link [[Browse toys|Adult Shop Toys]]>><<pass 1>><</link>>
+	<</if>>
+	<br><br>
+	<<exiticon>><<link [[Exit (0:01)|Elk Street]]>><<pass 1>><<clearadultshopvariables>><</link>>
+
+<</if>>
+
+:: Adult Shop Store
+/*<<exiticon>><<link [[Exit (0:01)|Adult Shop]]>><<pass 1>><</link>>*/
+<br><br>
+<div id="clothingShop-div" class="main-shop-div">
+	<<adultShop-main>>
+</div>
+
+:: Adult Shop Approach Sirris
+/*<<npc "Sirris">> clothes bug */
+/*Unfinished content. Removes binds etc but demonstrates this to the customers.*/
+<<if $adultshopclerk and $NPCName[$NPCNameList.indexOf("Sirris")].love gt 50>>
+	"You're doing a good job." /*<<He>>*/<<nnpc_He Sirris>> smiles.
+<</if>>
+"Was there something that you needed?"
+<br><br>
+<<link[[Back|Adult Shop]]>><</link>>
+
+:: Adult Shop Approach Sydney
+<<npc Sydney>>
+<<NPCStatusCheck "Sydney">>
+<<sydneyGreeting>>
+<br>
+"Was there something you needed?"
+<br>
+<<if $giftStrapon["Sydney"] is "held">>
+	<<link [[Gift Sydney a strap-on|Gift Strap-on Sydney Counter]]>><</link>>
+<</if>>
+<br><br>
+<<link[[Back|Adult Shop]]>><</link>>
+
+:: Adult Shop Clerk Job
+<br>
+You work behind the counter, selling adult products and stocking shelves.
+<br><br>
+<<adultshopclerkevents>>
+<<if $debug is 1>>
+<br><br><br>
+	<<link[[Debug return|Adult Shop]]>><</link>>
+<</if>>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/beast-phallus-project.twee b/game/overworld-town/loc-adultshop/beast-phallus-project.twee
new file mode 100644
index 0000000000..39aab58286
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/beast-phallus-project.twee
@@ -0,0 +1,26 @@
+:: Beast Phallus Project
+
+You have an ongoing project for the adult shop about measuring beast phalluses and taking moulds of them.
+
+<<if $wolfphalli isnot undefined>>
+<</if>>
+<<if $dogphalli isnot undefined>>
+<</if>>
+<<if $tentaclephalli isnot undefined>>
+<</if>>
+<<if $greathawkphalli isnot undefined>>
+<</if>>
+<<if $reptilephalli isnot undefined>>
+<</if>>
+<<if $blackwolfphalli isnot undefined>>
+<</if>>
+<<if $dolphinphalli isnot undefined>>
+<</if>>
+<<if $porcinephalli isnot undefined>>
+<</if>>
+<<if $equinephalli isnot undefined>>
+<</if>>
+<<if $ursinephalli isnot undefined>>
+<</if>>
+<<if $humanphalli isnot undefined>>
+<</if>>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/events.twee b/game/overworld-town/loc-adultshop/events.twee
new file mode 100644
index 0000000000..e61b1119c7
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/events.twee
@@ -0,0 +1,2094 @@
+:: Adult Shop Event Widgets [widget]
+
+<<widget "sydneyEvent1AnalBeads">>
+	<<npc "Sydney">><<person1>>
+	<<sydneyStatusCheck>>
+
+	<<if _sydneyStatus.includes("corrupt")>>
+		Something whips your <<bottom>>.
+		<<if $awarelevel gte 1>>
+			You turn to find Sydney twirling a string of anal beads around <<his>> palm. "Got you."<<npcincr Sydney lust 1>><<gslust>>
+			<br><br>
+
+			<<if !$sydneyAnalRosary and random(0,2) is 2>>
+				<<He>> looks at the beads with an impish grin. "Maybe I should wear these to the temple. Like a rosary." <<He>> holds them around <<his>> neck to demonstrate. "How much you wanna bet those stuffy <<monks_and_nuns>> won't know the difference?"
+				<br><br>
+
+				You can't tell if <<hes>> serious.
+				<br><br>
+
+				<<link [[Encourage|Adult Shop Sydney Rosary]]>><<set $phase to 1>><<npcincr Sydney purity -3>><</link>><<llspurity>>
+				<br>
+				<<link [[Admonish|Adult Shop Sydney Rosary]]>><<set $phase to 0>><<npcincr Sydney purity 1>><</link>><<gspurity>>
+				<br>
+			<<else>>
+				<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+				<br>
+			<</if>>
+		<<else>>
+			You turn to find Sydney twirling a string of beads around <<his>> palm, grinning.
+			<<if $submissive gte 1150>>
+				You tilt your head curiously. "I've never seen something like that before."
+			<<elseif $submissive lte 850>>
+				You furrow your brow. "What the hell is that?"
+			<<else>>
+				You give <<him>> a puzzled look. "What's that?"
+			<</if>>
+			<br><br>
+
+			Sydney stops smiling. "You're shitting me.
+			<<if !$sydneySeen.includes("corruptBeads")>>
+				You seriously don't know what these are?"
+			<<else>>
+				Did you forget already?"
+			<</if>>
+			<<if $analdisable is "t">>
+				<<He>> sighs and ruffles your hair. "So innocent. You really ought to broaden your horizons." <<He>> gives your <<bottom>> a pinch. "Maybe I can help with that."<<arousal 100>><<awareness 1>><<npcincr Sydney lust 1>><<garousal>><<gawareness>><<gslust>>
+				<br><br>
+
+				<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+				<br>
+			<<else>>
+				<<He>> rolls <<his>> eyes.
+				<<if !$sydneySeen.includes("corruptBeads")>>
+					<<set $sydneySeen.pushUnique("corruptBeads")>>
+					"And I thought I was sheltered."
+				<<else>>
+					"Pay attention this time."
+				<</if>>
+				<br><br>
+
+				<<if _sydneyStatus.includes("Lust") and $sydneyromance is 1>>
+					<<He>> grabs you by the shoulder, spinning you around and pushing you against a stack of boxes.
+					<br><br>
+
+					"<<sydneyMum>> says the best way to learn is by experience." <<He>> places <<his>> hand on the small of your back. "Now, bend over."
+					<br><br>
+
+					<<if $promiscuity gte 15>>
+						<<link [[Bend over|Adult Shop Sydney Beads Sex]]>><<set $sexstart to 1>><<npcincr Sydney purity -1>><</link>><<promiscuous2>><<lspurity>>
+					<<else>>
+						<span class="blue">You aren't promiscuous enough to engage in such lewd activities.</span>
+					<</if>>
+					<br>
+					<<link [[Refuse|Adult Shop Sydney Beads Refuse]]>><<npcincr Sydney love -1>><<npcincr Sydney purity 1>><</link>><<llove>><<gspurity>>
+					<br>
+				<<else>>
+					<<He>> sits you down by a pile of boxes. "Listen good. You have a lot to learn."
+					<br><br>
+
+					<<He>> explains what the beads are, their use, and where to insert them, all in rich detail. <<His>> demeanor is surprisingly professional. By the end, you feel like you just sat through a lecture at school.
+					<br><br>
+
+					"Let me know if you've got any questions," <<he>> says, lowering <<his>> voice. "I'd be happy to demonstrate."<<arousal 100>><<awareness 1>><<npcincr Sydney lust 1>><<garousal>><<gawareness>><<gslust>>
+					<br><br>
+
+					<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+					<br>
+				<</if>>
+			<</if>>
+		<</if>>
+	<<else>>
+		You hear Sydney's soft laughter behind you. You turn to find <<him>>
+		<<if !$sydneySeen.includes("pureBeads")>>
+			peering into a cardboard box.
+			<br><br>
+
+			"That's silly. <<sydneyMum>> must've gotten my things mixed with <<nnpc_hers "Sirris">>. Last time I checked, we don't sell rosaries here."
+			<br><br>
+
+			<<if $awarelevel gte 1>>
+				You blush as <<he>> pulls the alleged rosary out of the box. <span class="lewd">It's a string of anal beads.</span> Sydney smiles at you, oblivious.
+				<br><br>
+
+				<<link [["Tell " + $NPCList[0].pronouns.him|Adult Shop Sydney Pure Beads]]>><<set $phase to 2>><<npcincr Sydney lust 1>><<npcincr Sydney purity -2>><</link>><<glust>><<lspurity>>
+				<br>
+				<<link [[Keep quiet|Adult Shop Sydney Pure Beads]]>><<set $phase to 0>><</link>>
+				<br>
+			<<else>>
+				<<He>> takes the object in question out to inspect it. The beads are thicker than any rosary you've seen. There's no pendant attached, either.
+				<br><br>
+
+				<<link [[Ask Sirris about it (0:05)|Adult Shop Sydney Pure Beads]]>><<set $phase to 1>><<pass 5>><<npcincr Sydney purity -2>><</link>>
+				<br>
+				<<link [[Just put it back|Adult Shop Sydney Pure Beads]]>><<set $phase to 0>><</link>>
+				<br>
+			<</if>>
+		<<else>>
+			gazing at a string of anal beads.
+			<br><br>
+
+			"A rosary," <<he>> giggles to <<himself>>. "Was I really that naive?"<<npcincr Sydney purity -1>><<lspurity>>
+			<br><br>
+			You earn <<moneyGain 15>>.
+			<br><br>
+			<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+			<br>
+		<</if>>
+	<</if>>
+<</widget>>
+
+<<widget "sydneyEvent2CuffedSydney">>
+	<<npc Sydney>><<person1>>
+	<<NPCStatusCheck "Sydney">>
+
+	You hear a distressed voice from one of the back rooms.
+	<<if $sydneyromance is 1 and _sydneyStatus.includes("Lust")>>
+		<<if _sydneyStatus.includes("corrupt")>>
+			"What's taking <<phim>> so long...?"
+		<<elseif _sydneyStatus.includes("pure")>>
+			"I knew this was a bad idea. What if <<sydneyMum>> finds me?"
+		<<else>>
+			"My arms are getting tired..."
+		<</if>>
+	<<else>>
+		<<if _sydneyStatus.includes("corrupt")>>
+			"Piece of shit! Why won't you..."
+		<<elseif _sydneyStatus.includes("pure")>>
+			"Oh dear... Please come off..."
+		<<else>>
+			"Uh oh. Should I call for help...?"
+		<</if>>
+	<</if>>
+	<br><br>
+
+	It's faint, but it sounds like Sydney.
+	<br><br>
+
+	<<link [[Investigate|Adult Shop Sydney Cuffs]]>><<set $phase to 1>><</link>>
+	<br>
+	<<link [[Ignore|Adult Shop Sydney Cuffs]]>><<set $phase to 0>><</link>>
+	<br>
+
+<</widget>>
+
+<<widget "sydneyEvent3HumblePeddlerofHonestWares">>
+	<<npc Sydney>><<generate_adultshopcustomer 2>><<person2>>
+
+	You overhear Sydney haggling with a <<person>> over a selection of dildos.
+	<br><br>
+
+	<<link [[Listen in|Adult Shop Sydney Bartering]]>><</link>>
+	<br>
+	<<link [[Ignore|Adult Shop Sydney Bartering Ignore]]>><<endevent>><</link>>
+	<br>
+
+<</widget>>
+
+:: Whitney Dildo Thief
+	<<endevent>>
+	As you step into the store you hear Sydney yelling. "Hey, put that down and get out of here!"
+	<br><br>
+	You turn to see Whitney flash you a rakish grin as <<nnpc_he Whitney>> shoves past with a handful of dildos.
+	<br><br>
+	<<link [[Approach Sydney|Adult Shop Dildo Thief Approach Sydney]]>><<set $phase to 0>><</link>>
+	<<if $submissive lte 850 or $debug is 1>>
+		<br>
+		<<link [[Chase Whitney|Adult Shop Dildo Thief Chase 1]]>><</link>>
+	<</if>>
+
+
+:: Sydney Backroom Invitation
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+You enter the store. Sydney looks up from stocking shelves, beaming when <<nnpc_he Sydney>> sees you. 
+<br>
+"Hey, I need your help lifting a box down from the stock room," she tugs on your arm.
+<br>
+Sirris winks at you, watching the exchange with a glint in <<nnpc_his Sirris>> eye.
+<br><br>
+<<set $adultshopintro to 1>>
+<<link [[Follow Sydney|Sydney Backroom Sex 1]]>><</link>>
+<br>
+<<link [[Refuse|Sydney Backroom Sex Refuse]]>><</link>>
+
+
+:: Sydney Backroom Sex Refuse
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $submissive gte 1500>>
+	"I-I have to go now. I don't have much time." You kiss <<nnpc_his Sydney>> cheek.
+<<elseif $submissive lte 500>>
+	"I'm not doing that. Get back to work." You turn away to carry about your business without a second glance.
+<<else>>
+	"I'm sorry, but I'm busy. Another time, okay?"
+<</if>>
+<br>
+<<nnpc_He Sydney>> pouts but lets go of your arm. "See you around..."
+<br>
+<<npcincr Sydney love -5>><<lllove>><<npcincr Sydney purity 1>><<gspurity>><<npcincr Sydney lust 2>><<glust>>
+
+<<set $sydneypout to true>>
+<br><br>
+<<link [[Leave Sydney|Adult Shop]]>><</link>>
+
+:: Sydney Backroom Sex 1
+Unfinished content
+<<link [[Leave|Adult Shop]]>><</link>>
+
+
+:: Sirris Shop Assistant 1
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+As you enter the store, you notice the implacable Sirris frantically placating impatient customers and completing sales. <<nnpc_He Sirris>> looks relieved at your sudden appearance. It's rare to see the teacher this on edge.
+<br><br>
+"Hey, I'm swamped here. Mind lending me a hand? Grab these from the back and stock the shelves." <<nnpc_He Sirris>> presses a list of items into your hand and points you to the stockroom before returning to the agitated crowd.
+<br><br>
+"Easy, easy! Everyone can get their items, please cue in an orderly fashion!" The science teacher shouts cheerily to the lecherous crowd eager to make their purchases.
+<br><br>
+<<link [[Assist Sirris (0:50)|Sirris Shop Assistant 2]]>><<pass 50>><<stress 5>><<tiredness 5>><</link>><<ggtiredness>><<gstress>><<glove>>
+<br>
+<<link [[Leave Sirris to the mercy of the crowd|Sirris Shop Assistant Leave]]>><<pass 1>><<npcincr Sirris love -1>><</link>><<llove>>
+
+
+:: Sirris Shop Assistant Leave
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+That's a shame. I could've really used your help." <<nnpc_He Sirris>> shakes <<nnpc_his Sirris>> head before returning to the horde of boisterous customers, desperate for their items.
+<br><br><br>
+<<generate1>><<generate2>><<generate_adultshopcustomer 2>><<person1>>
+As you turn to leave, a <<person>> bars your way.
+<br>
+"Well hello there, hot stuff," <<he>> purrs, idly slapping <<his>> hand with a leather flog. "I've been waiting in line a long time. I just can't wait to use this toy. Why don't we have a cheeky little play before purchase?"/* <<He>> grins at you wolfishly.*/
+<br><br>
+You try to turn around but a <<person2>><<person>> rests a hand on your shoulder. "Yeah cutie, have some fun with us," <<he>> guffaws.
+<br><br>
+
+<<link [[Refuse|Sirris Shop Assistant Creeps Refuse]]>><</link>>
+<br>
+<<if $promiscuity gte 75 and $submissve gte 1150>>
+    <<link [[Agree|Sirris Shop Assistant Creeps Agree]]>><</link>>
+<</if>>
+
+
+:: Sirris Shop Assistant Creeps Refuse
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $submissive gte 1500>>
+"No-no, I can't!" you exclaim.
+<<elseif $submissive lte 500>>
+"Get out of my way, losers!" You demand.
+<<else>>
+You refuse.
+<</if>>
+<br><br>
+
+"Shut the fuck up," the <<person>> snarls. "Go ahead, scream. No one will hear you over this din." <<He>> licks <<his>> lips. "Now get your sweet ass over here."
+<br><br>
+The <<person2>><<person>> snatches a handful of your hair and drags you into an empty aisle. No one seems to notice.
+<br><br>
+/* NPC1 brandishes the flog. NPC2 pulls a dildo out of their pocket */
+<<set $NPCList[1].lefthand to "hair">><<giveNPCsextoy 1 dildo>><<giveNPCsextoy 0 flog>>
+<<link [[Next|Sirris Shop Assistant Refuse Creeps Rape]]>><<set $molestationstart to 1>><<set $phase to 1>><</link>>
+<<if $debug is 1>>
+	<br>
+	<<link [[Debug Leave|Adult Shop]]>><</link>>
+<</if>>
+
+
+:: Sirris Shop Assistant Refuse Creeps Rape
+
+<<if $molestationstart is 1>>
+	<<set $molestationstart to 0>>
+	<<controlloss>>
+	<<violence 1>>
+	<<neutral 1>>
+	<<molested>>
+	<<maninit>>
+	<<set $enemyanger += 40>>
+	<<set $enemytrust -= 40>>
+<</if>>
+<<if $sexstart is 1>>
+	<<set $sexstart to 0>>
+	<<consensual>><<set $consensual to 1>>
+	<<neutral 1>>
+	<<maninit>>
+	<<set $enemyanger += 10>>
+	<<set $enemytrust += 10>>
+<</if>>
+<<effects>>
+<<effectsman>><<man>>
+/*<<audience>>*/
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Sirris Shop Assistant Refuse Creeps Rape Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Sirris Shop Assistant Refuse Creeps Rape Finish]]>><</link>></span><<nexttext>>
+<<elseif $finish is 1>>
+	<span id="next"><<link [[Next|Sirris Shop Assistant Refuse Creeps Rape]]>><</link>></span><<nexttext>>
+<</if>>
+
+
+:: Sirris Shop Assistant Refuse Creeps Rape Finish
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	"Was it as good for you as it was for me, baby?" The pair share a hearty chuckle. They return to their spot in line, leaving you on the ground.
+<<elseif $enemyhealth lte 0>>
+	"Fucking psycho bitch!" they spit, scrambling out of the store. Sirris watches them leave with a bemused expression.
+<<else>>
+	The pair back away, keeping you at arm's reach. They look hesitant to stop. The <<person>> opens <<his>> mouth to speak, but stops as Sirris pops <<nnpc_his "Sirris">> head into the aisle.
+	<br><br>
+
+	"Everything alright back here?" <<nnpc_He "Sirris">> smiles at the <<person>>. "I can help you two up front."
+	<br><br>
+
+	The <<person>> glances at the <<person2>><<person>>, who shrugs. <<person1>><<He>> gives you one last look before following Sirris to the counter.
+<</if>>
+<br><br>
+
+<<clotheson>>
+<<endcombat>>
+
+<<tearful>> you rise to your feet.
+<br><br>
+
+<<link [[Next|Adult Shop]]>><</link>>
+<br>
+
+:: Sirris Shop Assistant Creeps Agree
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $submissive gte 1500>>
+"I'll be a good little helper," you purr.
+<<elseif $submissive lte 500>>
+"You two think you can keep up with me? Prove it."
+<<else>>
+You nod your head solemnly.
+<</if>>
+<br><br>
+<<if $famerape gte 600 or $famesex gte 600>>
+	<<person1>>
+	"I knew a <<slut>> like you would be into this. Everyone says you're like a bitch in heat. Now down on your knees for us, hot stuff!"
+	<<person1>><<He>> chuckles, licking <<his>> lips while cracking <<his>> flog against <<his>> palm in anticipation.
+	<br>
+	The <<person2>><<person>> laughs along lecherously, rubbing <<his>> crotch with a dildo while leading you to an aisle with the other hand.
+<<else>>
+	<<person1>>"Okay, hot stuff. Hop to it, down on your knees right over there for us. Be a good <<bitch>>." <<He>> licks <<his>> lips while slapping <<his>> flog against <<his>> palm.
+	<br><br>
+	The <<person2>><<person>> giggles in agreement, rubbing <<his>> crotch with a dildo in one hand while leading you to an aisle with the other.
+<</if>>
+<br><br>
+
+<<set $NPCList[1].lefthand to "hair">><<giveNPCsextoy 1 dildo>><<giveNPCsextoy 0 flog>>
+<<link [[Next|Sirris Shop Assistant Refuse Creeps Rape]]>><<set $sexstart to 1>><<set $phase to 2>><</link>>
+
+
+:: Sirris Shop Assistant 2
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+The list is long yet you methodically work through it, collecting items from the stock room to restock shelves, and retrieving customer orders.
+<<if $danceskill gte 600>>
+	You skilfully dodge and weave through customers as they attempt to pinch, prod, and grope at you while carrying about your duties.
+<<else>>
+	<span class="red">Your attempts to dodge the groping and pinching masses prove futile.</span> You struggle to avoid the worst of them.<<stress 4>><<pain 2>><<arousal 400>><<gstress>><<gpain>><<garousal>>
+<</if>>
+<br><br>
+After what feels like an eternity, the rush is over. Sirris finishes checking out the last customer in line before turning to you.
+<br>
+"Thanks for your help today, it was very much appreciated. I couldn't have gotten through this without you. Here's a little something for your hard work. See you at school."
+<<npcincr Sirris love 2>><<glove>>
+<br>
+You gain <<moneyGain 40>>.
+<br><br>
+<<link [[Next|Adult Shop]]>><</link>>
+
+
+:: Adult Shop Whitney Spank Agree
+<<set $location to "adult_shop">><<set $outside to 1>><<effects>>
+
+<<if $submissive gte 1150>>
+	You look down, but nod.
+<<elseif $submissive lte 850>>
+	"Oh, you think you can threaten me with a good time? Lead on," you purr.
+<<else>>
+	You nod your head in agreement.
+<</if>>
+<br><br>
+Spotting Sirris heading in your direction, <<he>> releases your arms and puts <<his>> hands around your shoulders. "Lets get out of here. There's an alleyway out back where no one will disturb us."
+<br><br>
+<<link [[Go with Whitney|Adult Shop Whitney Spank Sex]]>><<set $location to "alley">><<giveNPCsextoy 0 "flog">><<npcstrapon 0>><<set $sexstart to 1>><</link>>
+
+
+:: Adult Shop Whitney Spank Refuse
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $submission lt 850>>
+You shove the bully away from you. "Get lost, I've got work to do."
+<<elseif $submission gt 1150>>
+"N-no, I have work to do. I'm sorry," you mumble.
+<<else>>
+"I can't, I'm working right now."
+<</if>>
+<br><br>
+The bully spots Sirris heading towards the two of you.
+<br><br>
+"Another time. See you later, slut." <<He>> shoves you against the shelves and retreats from the store.<<gstress>><<gpain>><<stress 3>><<pain 3>>
+<br><br>
+You earn <<moneyGain 15>>.
+<br><br>
+<<link [[Return|Adult Shop]]>><<endevent>><</link>>
+
+
+:: Adult Shop Whitney Spank Sex
+
+<<if $sexstart is 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+	<<maninit>>
+	<<set $enemytrust += 100>>
+	<<set $enemyanger +=50>>
+	<<set $NPCList[0].health to 40>>
+	<<set $enemyhealth to  $NPCList[0].health>>
+	You follow Whitney out behind a dumpster.
+	<br><br>
+<</if>>
+<<effects>>
+<<effectsman>><<man>>
+
+<<if $alarm is 1 and $rescue is 0>>
+	<<set $alarm to 0>>
+	No one comes to your aid.
+	<<if $drugged gte 1>>The drugs inhibit you, you couldn't cry very convincingly.<</if>>
+	<br><br>
+<</if>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Whitney Spank Sex End]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Whitney Spank Sex End]]>><</link>></span><<nexttext>>
+<<elseif $finish is 1>>
+	<span id="next"><<link [[Next|Adult Shop Whitney Spank Sex End]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Whitney Spank Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Whitney Spank Sex End
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	<<He>> strokes your face with the flog. "Nice. See you later, slut." <<He>> leaves it on the ground before slinking out of the alley.
+	<br><br>
+<<elseif $enemyhealth lte 0>>
+	Whitney recoils in pain. "What the fuck did you do that for? I thought we were having fun. Bitch." <<He>> storms off.
+<<else>>
+	<<He>> backs away, disappointment obvious on his face. "Fucking tease. See you later, slut."
+<</if>>
+<br><br>
+
+<<clotheson>>
+<<endcombat>>
+
+<<tearful>> you return to the store. Sirris frowns.
+<br><br>
+
+The rest of the shift is uneventful. You earn <<moneyGain 15>>.<<npcincr Sirris love -5>><<llove "Sirris">>
+<br><br>
+
+<<link [[Return to work|Adult Shop]]>><<endevent>><</link>>
+<br>
+
+:: Adult Shop School Bully Offer Your Body
+
+You nod and lead them to the back.
+<br><br>
+<<link [[Next|Adult Shop School Bully Sex]]>><<set $sexstart to 1>><</link>>
+
+
+:: Adult Shop School Bully Assertive
+/* submissive lte 500 > march them out */
+<<if $submissive lt 500>>
+	"Get out of here!" You demand as you shove him backwards, sending him sprawling.
+	<br><br>
+	"Freak!" <<He>> <<print either("jeers","sobs","exclaims","shouts","spits")>>, picking <<him>>self up before bolting out the door.
+<<else>>
+	"Get out. Now," you demand, marching the <<personsimple>> out with a hand on their shoulder.
+	<br><br>
+	"Fucking freak. I'll make sure everyone knows about you and this shop."
+<</if>>
+<br><br>
+Sirris scowls but says nothing. You take a moment to collect yourself before returning to work. The rest of your shift is uneventful.
+<br><br>
+You earn <<moneyGain 15>>.<<npcincr Sirris love -5>><<llove "Sirris">>
+<br><br>
+<<link [[Return to work|Adult Shop]]>><<endevent>><</link>>
+
+
+:: Adult Shop School Bully Endure
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<He>> takes a picture of you then leaves. "My friends will get a kick out of this! Freak."
+<br><br>
+You take a moment to collect yourself in the back before returning to work. The rest of your shift is uneventful.
+<br><br>
+You earn <<moneyGain 15>>.<<npcincr Sirris love 5>><<glove "Sirris">>
+<br><br>
+<<link [[Return to work|Adult Shop]]>><<endevent>><</link>>
+
+
+:: Adult Shop School Bully Sex
+
+<<if $sexstart is 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+	<<maninit>>
+	<<set $enemytrust += 100>>
+<</if>>
+<<effects>>
+<<effectsman>><<man>>
+
+<<if $alarm is 1 and $rescue is 0>>
+	<<set $alarm to 0>>
+	No one comes to your aid.
+	<<if $drugged gte 1>>The drugs inhibit you, you couldn't cry very convincingly.<</if>>
+	<br><br>
+<</if>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop School Bully Sex End]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop School Bully Sex End]]>><</link>></span><<nexttext>>
+<<elseif $finish is 1>>
+	<span id="next"><<link [[Next|Adult Shop School Bully Sex End]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop School Bully Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop School Bully Sex End
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	"All right, I'll keep your filthy secret. What kind of a freak works in a store like this anyway?" <<He>> laughs as <<he>> leaves.
+<<elseif $enemyhealth lte 0>>
+	<<He>> staggers back. "Fucking bitch. I'll keep your fucking secret, I was just having a bit of fun." <<He>> hurries out of the store.
+<<else>>
+	The <<person>> shoves off you. "Whatever you say." <<He>> taps something into <<his>> phone, smirking. "See you at school, perv." <<He>> laughs as <<he>> leaves.
+	<<gtrauma>><<gstress>><<lcool>><<status -5>><<stress 5>><<trauma 5>>
+<</if>>
+<br><br>
+
+<<clotheson>>
+<<endcombat>>
+
+<<tearful>> you return to work. The rest of your shift passes without note. You earn <<moneyGain 15>>.
+<br><br>
+
+<<link [[Next|Adult Shop]]>><</link>>
+<br>
+
+:: Adult Shop Sydney Rosary
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+<<if $phase is 1>>
+	<<if $submissive gte 1150>>
+		You giggle. "That's so naughty! Do you really think you can...?"
+	<<elseif $submissive lte 850>>
+		You shrug. "If you think you've the guts to do it, go for it."
+	<<else>>
+		You sigh with a smile. "I don't think I could stop you if I wanted to."
+	<</if>>
+    <br><br>
+
+	<<set $sydneyAnalRosary to true>>
+	Sydney's grin widens. "I'm not kidding. I'm really gonna do it."
+	<br><br>
+
+	<<He>> tucks the beads in <<his>> pocket and goes back to work, humming to <<himself>>.
+<<else>>
+	<<if $submissive gte 1150>>
+		You bite your lip nervously. "I'm not so sure that's a good idea..."
+	<<elseif $submissive lte 850>>
+		You cross your arms. "That's a good way to get your ass punished."
+	<<else>>
+		You raise an eyebrow. "That's a bit much, even for you."
+	<</if>>
+	<br><br>
+
+	Sydney rolls <<his>> eyes.
+	<<if $purity lte 500 or $demon gte 6>>
+		"I thought you were cooler than that," <<he>> scoffs. You don't fall for <<his>> goading.
+	<<else>>
+		"Dunno what I expected," <<he>> sighs. "You're a bigger prude than I ever was."
+	<</if>>
+	<br><br>
+
+	<<He>> returns the beads to their spot on the shelf and goes back to work.
+<</if>>
+<br><br>
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+
+:: Adult Shop Sydney Beads Sex
+<<NPCStatusCheck "Sydney">>
+<<if $sexstart is 1>>
+	<<set $sydneyDaily.sex += 1>><<set $sydney.sexTotal += 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+
+	<<maninit>>
+	<<set $enemytrust += 500>>
+	<<set $enemyarousalmax to 600>>
+	<<if _sydneyStatus.includes("corrupt")>>
+		<<set $enemyarousalmax += 100>>
+	<<elseif _sydneyStatus.includes("pure")>>
+		<<set $enemyarousalmax -= 100>>
+	<</if>>
+	You bend over and give your rear an inviting wiggle. Sydney snickers and presses <<his>> palm against your cheek.
+	<<promiscuity2>>
+<</if>>
+
+<<set $enemyanger to -10>>
+<<effects>>
+<<effectsman>>
+
+<<if $worn.genitals.anal_shield is 1 and $worn.under_lower.anus_exposed is 1 and $worn.lower.anus_exposed is 1>>
+	<<set $finish to 1>>
+	<br>
+	Sydney pouts at the sight of your anal shield. "Oh, you fucking tease." <<He>> chucks the beads aside and gives your <<bottom>> a petty slap.<<violence 2>><<npcincr Sydney purity 1>><<gpain>><<gspurity>>
+	<br><br>
+<<else>>
+	<<man>>
+<</if>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $finish is 1 or $noanal is 1>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Beads Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Beads Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Beads Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Beads Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Sydney Beads Finish
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	<<He>> sighs wistfully.
+	<<if _sydneyChastity and $sydneyChastityKnown>>
+		<<sydneyChastityMessage>><<npcincr Sydney lust 3>><<ggslust>>
+	<<else>>
+		<<npcincr Sydney lust -20>><<lllslust>>
+	<</if>>
+	<<npcincr Sydney purity -2>><<lspurity>>
+	<br>
+	"How was that?" <<he>> giggles. "Just think, we haven't even scratched the surface of..."
+	<br><br>
+
+	<span class="red"><<He>> falls silent at the sound of footsteps.</span> "Is everything alright?" calls a voice outside. It's Sirris.
+	<br>
+	Sydney's eyes pop wide open, and <<he>> scrambles to <<his>> feet. "W-we're fine! I mean, I'm fine! And alone. No one else is back here."
+	<br>
+	There's a pause before Sirris answers. "Okay," <<nnpc_he "Sirris">> says. "Just checking in." Sydney sighs in relief as Sirris departs.
+	<br><br>
+
+	Sydney turns to you, face red, <<his>> lustful bravado caving into to a familiar tenderness. "I... I hope that was... informative." <<He>> clears <<his>> throat. "We can continue our lesson later... if you want."
+	<br><br>
+
+	<<tearful>> you return to work, with Sydney close behind you.
+<<elseif $enemyhealth lte 0>>
+	You shove Sydney into a shelf. <<He>> collides with a crash, sending sex toys flying across the room. "Everything alright back there?" you hear Sirris call out. Sydney hurriedly rises to <<his>> feet, stammering reassurances to the front counter.
+	<br><br>
+
+	<<tearful>> you help Sydney straighten up, ignoring <<his>> lustful stare. "Don't think I'm done with you." <<He>> traces <<his>> tongue across <<his>> lips. "We've still got lots to learn, you and I."<<npcincr Sydney lust 1>><<gslust>>
+<<else>>
+	<<He>> gives you a gentle spank. "Ready or not, we're going all the way next time."<<npcincr Sydney lust 1>><<gslust>>
+	<br><br>
+
+	<<tearful>> you return to work, catching more than a few crude taunts from Sydney.
+<</if>>
+<br><br>
+
+<<clotheson>>
+<<endcombat>>
+
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+<br>
+
+:: Adult Shop Sydney Beads Refuse
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+<<if $submissive gte 1150>>
+	You squirm away from Sydney. "M-maybe another time."
+<<elseif $submissive lte 850>>
+	You shove Sydney away. "Not happening."
+<<else>>
+	You nudge Sydney's arm away and shake your head.
+<</if>>
+<br>
+"C'mon," <<he>> whines. "Just give it a try!"
+<br><br>
+
+You hold firm, despite <<his>> insistence. <<He>> finally gives up with a sigh, tossing the beads over <<his>> shoulder. "You're a real tease, you know? Get me all worked up, now you won't even indulge me a little."
+<br><br>
+
+Glancing over <<his>> shoulder, <<he>> grasps the back of your head and brings you close. You can feel <<his>> breath in your ear. "One of these days," <<he>> whispers, "You're gonna have to prove you're not all talk."<<npcincr Sydney lust 1>><<gslust>>
+<br><br>
+
+<<He>> giggles into your ear, giving you a light shove before returning to work.
+<br><br>
+
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+<br>
+
+:: Adult Shop Sydney Pure Beads
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<npc Sirris 2>>
+
+<<if $phase is 2>>
+	<<set $sydneySeen.pushUnique("pureBeads")>>
+	Sydney's eyes go wide when you tell <<him>> what <<his>> "rosary" really is.
+	<<if $submissive gte 1150>>
+		You sugarcoat your explanation, leaving out the more graphic details, but <<hes>> still visibly uncomfortable by the end.
+	<<elseif $submissive lte 850>>
+		You don't mince your words on its use. <<He>> has to stop you whenever you get too detailed.
+	<<else>>
+		<<He>> squirms throughout your explanation, but <<he>> listens without interruption.
+	<</if>>
+	<br><br>
+
+	"R-really?" <<He>> gulps. "There? In your... But what about... And..." <<He>> stops <<himself>> short, frantically shaking <<his>> head. "No, no, no. That's enough." <<He>> stares at the beads as if they were infectious, then gingerly places them back in the box.
+	<br><br>
+
+	<<He>> gives you a strained smile. "Th-thank you for... enlightening me." <<He>> returns to work, mumbling to <<himself>> all the while.
+<<elseif $phase is 1>>
+	<<set $sydneySeen.pushUnique("pureBeads")>>
+	<<person1>><<person>>
+	You find Sirris at the front counter and show <<him>> the strange rosary. <<He>> stares at it with a blank expression, before bursting out in laughter. Sydney looks to you with a puzzled frown.
+	<br><br>
+
+	It takes some time for Sirris to calm down. "A rosary," <<he>> chuckles, wiping a tear from <<his>> eye. "That's good."
+	<br><br>
+
+	<<He>> places a sign on the counter and leads you to a back room. <<He>> explains exactly what the so-called "rosary" is, and goes into excrutiating detail on its use. Too much detail for Sydney, who leaves partway through, <<his>> face flushed.<<lspurity>>
+	<br><br>
+
+	Sirris shakes <<his>> head. "The <<nnpc_gendery "Sydney">>'s got to learn eventually," <<he>> mutters. <<He>> places a hand on your shoulder and smiles. "In any case, I hope that cleared things up. Don't be afraid to ask any questions. Curiosity is a virtue!"
+<<else>>
+	Sydney places the rosary back in the box.
+	<br><br>
+
+	"I'll let <<sydneyMum>> find it on <<nnpc_his "Sirris">> own. I don't want to embarrass <<nnpc_him "Sirris">>," <<he>> giggles. "<<nnpc_He "Sirris">> can be so scatterbrained, sometimes."
+<</if>>
+<br><br>
+
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+<br>
+
+
+:: Temple Sydney Rosary
+<<set $outside to 0>><<set $location to "temple">><<temple_effects>><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+<<if $phase is 2>>
+	You stroll through the temple grounds with Sydney,
+	<<if _sydneyStatus.includes("corrupt")>>
+		<<his>> hands behind <<his>> back and <<his>> head held high.
+	<<else>>
+		<<his>> eyes darting about anxiously.
+	<</if>>
+	Most of the <<monks_and_nuns>> pass without a second glance. A few give <<him>> odd looks. Fewer still realise what <<hes>> wearing, reactions ranging from discomfort to disgust. An elder <<monk>> chuckles at the sight.
+	<br><br>
+
+	<<if $rng gte 26>>
+		<<generatey2>><<person2>>
+		Only an initiate, a <<person>>, is bold enough to confront <<person1>><<him>>.
+		<br><br>
+
+		"Sydney!" <<person2>><<he>> hisses. "You can't wear that here! Take it off!"
+		<br>
+		"What's wrong?" Sydney asks, thumbing the beads innocently. "It's just my rosary."
+		<br>
+		The <<persons>> lip quivers. "Th-that's not... I mean, it's... those are..."
+		<br><br>
+
+		<<He>> stammers incoherently, until an approaching procession of <<monks>> causes <<him>> to scurry away in a panic.
+		<br><br>
+
+		<<if $corruptionRollover is 1>>
+			<<unset $corruptionRollover>>
+			Sydney lets out a deep breath, then turns to you with a wide grin.
+			<br>
+			"I forgot how much fun that was! Breaking the rules like that..." <<He>> shivers. "You know... <span class="lewd">I really should cut loose every now and then.</span> It wouldn't hurt, would it?"
+		<<else>>
+			Sydney shakes <<his>> head. "I was never that bad, was I?"
+		<</if>>
+		<br>
+		You walk back to the main hall, snickering amongst yourselves.<<trauma -2>><<ltrauma>>
+	<<else>>
+		<<generate2>><<person2>>
+		Eventually, a stern-faced <<monk>> approaches the two of you.
+		<br><br>
+
+		"Take that off at once," <<he>> demands, "Or you'll be punished."
+		<br>
+		Sydney smirks, unfazed. "Don't threaten me with a good time," <<person1>><<he>> taunts.
+		<br>
+		The <<person2>><<monk>>'s eyes narrow. "Do I need to have a talk with <<nnpc_brother "Jordan">> Jordan?"
+		<br><br>
+
+		Sydney's face drains of colour, <<person1>><<his>> cocky demeanor crumbling before your eyes. With a pout, <<he>> pulls the beads off <<his>> neck. The <<person2>><<monk>> snatches them, then storms off without another word.
+		<br><br>
+
+		Once <<hes>> gone, Sydney shoots you a glare. "Don't look at me like that. It was a fun idea, but messing with <<nnpc_brother "Jordan">> Jordan? That's too far." <<person1>><<He>> purses <<his>> lips. "Dunno how I'm gonna explain the missing product to <<sydneyMum>>..."
+	<</if>>
+<<elseif $phase is 1>>
+	<<if $submissive gte 1150>>
+		You blush and look away. "That's very brave of you."
+	<<elseif $submissive lte 850>>
+		You shake your head in disbelief. "Alright, I admit it. That takes balls."
+	<<else>>
+		You stare in disbelief. "That's brave," you say. "Or crazy."
+	<</if>>
+	<br><br>
+
+	<<if _sydneyStatus.includes("corrupt")>>
+		Sydney crosses <<his>> arms. "You totally doubted me, didn't you?" <<He>> laughs and flashes a smug grin. "I'm not such a prude now, am I?"
+	<<else>>
+		Sydney perks up at your words. <<Hes>> still tense, but <<his>> smile is a bit more genuine. "I can't believe you talked me into this," <<he>> giggles.
+	<</if>>
+	<br><br>
+
+	You sit with Sydney for a bit, snickering at the occasional gawking passerby. Eventually, <<he>> grows bored and returns to <<if $sydney_templeWork is "pray">>the pews<<else>><<his>> duties<</if>>.
+<<else>>
+	<<if $submissive gte 1150>>
+		You look around worriedly. "Are you sure you should be doing this?" you mumble. "You could get in trouble."
+	<<elseif $submissive lte 850>>
+		You grab Sydney by the wrist and pull <<him>> to a secluded alcove, out of view. "You idiot," you snap. "Are you trying to get yourself in trouble?"
+	<<else>>
+		You give Sydney a concerned look. "This is a bad idea," you say. "You're going to get in trouble."
+	<</if>>
+	<br><br>
+
+	<<if $purityRollover is 1>>
+		<<unset $purityRollover>>
+		<<He>> winces. "You're right," <<he>> sighs, staring down. "It was a stupid idea."
+		<br><br>
+
+		There's a brief pause before Sydney turns to face you. <<He>> looks ashamed. It's a look you haven't seen from <<him>> in a while. "I'm sorry. I just..." <<He>> sniffles. "Lately I've been acting odd. Doing things like, well." <<He>> holds up the string of beads. "This."
+		<br><br>
+
+		"I don't know what came over me, but hearing you talk just now... <span class="gold">it reminded me who I was.</span>" <<He>> clutches <<his>> pendant and smiles. "Thank you."
+	<<else>>
+		<<if _sydneyStatus.includes("corrupt")>>
+			<<He>> scoffs. "Whatever. It was your idea." <<He>> takes the beads off and hides them in <<his>> robes.
+		<<else>>
+			<<He>> winces at your words, but nods. "Y-yeah. It was a stupid idea, anyway." <<He>> pulls the beads off and quickly hides them in <<his>> robes.
+		<</if>>
+	<</if>>
+	<br><br>
+
+	<<He>> returns to <<if $sydney_templeWork is "pray">>the pews<<else>><<his>> duties<</if>> in silence.
+<</if>>
+<br><br>
+
+<<link [[Next|Temple]]>><<endevent>><</link>>
+<br>
+
+/* Event #2 - Cuffed Syd */
+
+:: Adult Shop Sydney Cuffs
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+<<if $phase is 1>>
+	You enter the back room to find Sydney in a compromising position.
+	<<if _sydneyStatus.includes("Lust") and $sydneyromance is 1>>
+		<<His>> arms are bound behind <<his>> back and over <<his>> head by a pair of pink, fuzzy handcuffs, linked around a shelf.
+		<br><br>
+
+		<<if _sydneyStatus.includes("corrupt")>>
+			<<He>> smiles when <<he>> sees you. "Just testing the products," <<he>> explains. <<He>> tries to move, but doesn't get far. "Yep. Nice and tight." <<He>> looks around.
+			<br>
+			"Must've dropped the key." You spot it halfway across the room. Sydney shrugs. "Oops. Now, you're gonna help me free..." A mischievous glint flashes in <<his>> eyes. "Right?"
+		<<else>>
+			<<He>> looks down, a coy smile on <<his>> lips. "I'm so careless. I was testing the products, and... well, this happened. I dropped the key, too..." You spot it lying at <<his>> feet.
+			<br>
+			<<He>> stares at you with a longing gaze. "I-I'm so vulnerable..."
+		<</if>>
+		<br><br>
+
+		<<link [[Play along|Adult Shop Sydney Cuffed Sex]]>><<set $sexstart to 1>><<npcincr Sydney purity -1>><</link>><<promiscuous1>><<lspurity>>
+		<br>
+		<<link [["Just free " + $NPCList[0].pronouns.him|Adult Shop Sydney Cuffs Free]]>><<set $phase to 1>><<npcincr Sydney purity 1>><</link>><<gspurity>>
+		<br>
+	<<else>>
+		<<His>> arms are bound in front of <<him>> by a pair of pink, fuzzy handcuffs, linked around a shelf.
+		<<if _sydneyStatus.includes("corrupt")>>
+			<<He>> glances over <<his>> shoulder at you and groans.
+			<br><br>
+
+			"Believe it or not, this was an accident. Now are you gonna help, or are you just gonna stand there drooling?"
+		<<else>>
+			Even with <<his>> back to you, you can tell <<hes>> blushing.
+			<br><br>
+
+			"I was just just playing around, and then I dropped the key, and... and..." <<He>> gives you a pitiful look. "Please help?"
+		<</if>>
+		<br><br>
+
+		<<link [[Tease|Adult Shop Sydney Cuffs Tease]]>><<if $sydneyromance isnot 1>><<npcincr Sydney love -1>><</if>><<npcincr Sydney lust 1>><<npcincr Sydney purity -1>><</link>><<if $sydneyromance isnot 1>><<llove>><</if>><<gslust>><<lspurity>>
+		<br>
+		<<link [["Free " + $NPCList[0].pronouns.him|Adult Shop Sydney Cuffs Free]]>><<set $phase to 0>><<npcincr Sydney love 1>><</link>><<glove>>
+		<br>
+	<</if>>
+<<else>>
+	You decide Sydney can handle whatever <<hes>> gotten <<himself>> into on <<his>> own. Sure enough, <<he>> soon emerges from the back room, looking no worse for wear.
+	<br><br>
+
+    <<if _sydneyStatus.includes("Lust") and $sydneyromance is 1>>
+        <<if _sydneyStatus.includes("corrupt")>>
+            <<He>> tosses you a pair of pink fuzzy handcuffs. <<He>> looks upset. "You can be really dense, you know that?" <<He>> shoves past you, leaving you bewildered.
+        <<else>>
+            <<He>> approaches with a pout. "Where were you? I've been..." <<He>> cuts off, <<his>> face turning red. "I've been, um, hard at work. That's all."
+        <</if>>
+    <<else>>
+        <<He>> rubs <<his>> wrists. "Sorry, I..." <<He>> coughs awkwardly. "Just testing the products. Everything's in order."
+    <</if>>
+    <br><br>
+	The rest of the shift passes without incident.
+    You earn <<moneyGain 15>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+    <br><br>
+    <<link [[Return|Adult Shop]]>><</link>>
+<</if>>
+
+:: Adult Shop Sydney Cuffs Free
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+<<if $phase is 1>>
+	You pick the key off the ground and unlock Sydney's cuffs. <<He>> looks surprised<<if $awarelevel gte 1>>, and a little disappointed<</if>>.
+	<br><br>
+
+	<<if _sydneyStatus is "corruptLust">>
+		<<bind>>
+		You turn to leave, but Sydney grabs your wrists and pulls you back. Before you can react, <<he>> pulls them over your head, just like <<his>> were. <span class="lewd">You hear a click.</span> You're stuck.<<stress 2>><<gstress>>
+		<br><br>
+
+		"You wanna do things the hard way?" <<He>> licks <<his>> lips. "Fine by me."
+		<br><br>
+
+		<<link [[Give in|Adult Shop Sydney Uncuffed Sex]]>><<set $sexstart to 1>><<npcincr Sydney purity -1>><</link>><<promiscuous1>><<lspurity>>
+		<br>
+		<<link [[Struggle|Adult Shop Sydney Cuffs Struggle]]>><<stress 4>><<npcincr Sydney love -1>><<npcincr Sydney purity 1>><</link>><<gstress>><<llove>><<gspurity>>
+		<br>
+	<<else>>
+		<<if _sydneyStatus.includes("corrupt")>>
+			<<He>> shoves past you, muttering over <<his>> shoulder. "You seriously need to learn how to take a hint."
+			<br><br>
+
+			<<He>> exits the room, leaving you <<if $awarelevel gte 1>>exasperated<<else>>confused<</if>>.
+		<<else>>
+			"Um... thanks." There's an awkward pause. <<He>> wrings <<his>> hands. "Good thing you were around."
+			<br><br>
+
+			<<He>> leaves the room, staring at <<his>> feet. You follow after <<him>>.
+		<</if>>
+		<br><br>
+
+		<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+		<br>
+	<</if>>
+<<else>>
+	You waste no time undoing Sydney's cuffs. <<His>> arms fall free to <<his>> side, and <<he>> gives you a
+	<<if _sydneyStatus.includes("corrupt")>>
+		sullen pout.
+		<br><br>
+
+		"It really was an accident," <<he>> mutters. There's a pause, and <<his>> frown gives way to a smirk. "Besides, if anyone's locking me up like that, it'll be you."<<arousal 100>><<npcincr Sydney lust 1>><<garousal>><<glust>>
+	<<else>>
+		grateful smile.
+		<br><br>
+
+		"Thanks. I was just sorting things out back here, when I saw those, and..." <<He>> trails off, shaking <<his>> head. "Never you mind. Let's just forget about this, okay?"
+	<</if>>
+	<br><br>
+
+	<<He>> returns the cuffs and key to the shelf and leads you back to the store proper.
+	<br><br>
+
+	<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+	<br>
+<</if>>
+
+:: Adult Shop Sydney Cuffs Tease
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+You tap your chin in mock thought.
+<<if $submissive gte 1150>>
+	"Gosh, I don't know." You smile coyly. "I kind of like seeing you like this."
+<<elseif $submissive lte 850>>
+	"Help you?" you say. "Nah. Not when I've got you right where I want you."
+<<else>>
+	"Are you sure you need help?" you ask. "You look pretty good from where I'm standing."
+<</if>>
+<br><br>
+
+<<if _sydneyStatus.includes("corrupt") and $sydneyromance is 1>>
+	Sydney opens <<his>> mouth to retort, looking indignant, but stops <<himself>>. <<His>> pout morphs into a smirk.
+	<br><br>
+
+	"Tough talk. Shame you're too much of a wuss to go through with it." <<He>> wiggles <<his>> rear in your direction, taunting you.
+	<br><br>
+
+	<<link [[Give in|Adult Shop Sydney Cuffed Sex]]>><<set $sexstart to 1>><<npcincr Sydney purity -1>><</link>><<promiscuous1>><<lspurity>>
+	<br>
+	<<link [["Just free " + $NPCList[0].pronouns.him|Adult Shop Sydney Cuffs Free]]>><<set $phase to 1>><<npcincr Sydney purity 1>><</link>><<gspurity>>
+	<br>
+<<else>>
+	<<if $sydneyromance is 1>>
+		Sydney looks away and sighs, surrendering a tiny smile. "C-come on, not right now..."
+	<<elseif _sydneyStatus.includes("corrupt")>>
+		Sydney rolls <<his>> eyes. "Give me a break. If I was doing this for you, you'd know." <<He>> pulls on the cuffs. "Now hurry up and get these off, or I'm gonna scream."
+	<<else>>
+		Sydney glares at you with as much malice as <<he>> can muster from <<his>> awkward position. "That's not funny. Help me out, now."
+	<</if>>
+	<br><br>
+
+	You let Sydney squirm for a bit longer, before finally helping <<him>> out of <<his>> bind. "I'd hold this against you, but it's a sin to bear grudges." <<He>> gives you a light punch. "Jerk."
+	<br><br>
+
+	<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+	<br>
+<</if>>
+
+:: Adult Shop Sydney Cuffs Struggle
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+You resist Sydney's touching, kicking and thrashing against your restraints. <<He>> throws <<his>> arms up defensively. "Hey, take it easy! I was just-" <<He>> cuts off as <<he>> stumbles backwards into a stack of boxes.
+<br><br>
+
+The door swings open as Sirris arrives to investigate the commotion. "Is everything alright? I thought I heard..." <<He>> trails off, taking in the scene before <<him>>.
+<br><br>
+
+<<He>> hurries over to you, freeing you, before making <<his>> way to Sydney. <<He>> grabs <<him>> by the arm and lifts <<him>> up, a troubled look on <<his>> face. "We need to talk."
+<br><br>
+
+Sydney tries to explain the situation, but <<his>> stammering fades into the distance as Sirris drags <<him>> outside. Once you've regained your bearings, you dust yourself off and return to the shop.
+<br><br>
+
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+<br>
+
+:: Adult Shop Sydney Cuffed Sex
+<<NPCStatusCheck "Sydney">>
+<<if $sexstart is 1>>
+	<<set $sydneyDaily.sex += 1>><<set $sydney.sexTotal += 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+
+	<<maninit>>
+	<<set $enemytrust += 500>>
+	<<set $enemyarousalmax to 600>>
+	<<if _sydneyStatus.includes("corrupt")>>
+		<<set $enemyarousalmax += 100>>
+	<<elseif _sydneyStatus.includes("pure")>>
+		<<set $enemyarousalmax -= 100>>
+	<</if>>
+
+	<<if $NPCList[0].penis isnot "none">>
+		<<set $NPCList[0].penis to "clothed">>
+	<</if>>
+	<<if $NPCList[0].vagina isnot "none">>
+		<<set $NPCList[0].vagina to "clothed">>
+	<</if>>
+	<<set $NPCList[0].lefthand to "idle">>
+	<<set $NPCList[0].righthand to "idle">>
+	<<set $npcSub to 1>>
+
+	You creep up to Sydney like a hunt<<if $player.gender_appearance is "m">>er<<else>>ress<</if>> sizing up <<pher>> prey.
+	<<if _sydneyStatus.includes("corrupt")>>
+		<<He>> laughs and ensares your waist between <<his>> legs, pulling your body against <<his>>.
+	<<else>>
+		<<He>> feigns a struggle, giggling as <<he>> tries to push you away, before finally "submitting" to you.
+	<</if>>
+	<<promiscuity1>>
+<</if>>
+
+<<set $enemyanger to -10>>
+<<effects>>
+<<effectsman>><<man>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $finish is 1>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Cuffed Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Cuffed Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Cuffed Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Cuffed Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Sydney Cuffed Finish
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	<<tearful>> you unlock Sydney's cuffs, freeing <<his>> arms. They fall over your shoulders
+	<<if _sydneyStatus.includes("corrupt")>>
+		as <<he>> pulls you into <<his>> embrace.
+		<<if _sydneyChastity and $sydneyChastityKnown>>
+			<<sydneyChastityMessage>><<npcincr Sydney lust 3>><<ggslust>>
+		<<else>>
+			<<npcincr Sydney lust -20>><<lllslust>>
+		<</if>>
+		<<npcincr Sydney purity -2>><<lspurity>>
+		<br><br>
+
+		<<He>> twirls the cuffs around <<his>> finger. "Maybe next time, I'll lock you up instead. Bet you'd like that."<<arousal 100>><<garousal>><<npcincr Sydney lust 1>><<glust>>
+	<<else>>
+		as <<he>> collapses into your embrace.
+		<<if _sydneyChastity and $sydneyChastityKnown>>
+			<<sydneyChastityMessage>><<npcincr Sydney lust 3>><<ggslust>>
+		<<else>>
+			<<npcincr Sydney lust -20>><<lllslust>>
+		<</if>>
+		<<npcincr Sydney purity -2>><<lspurity>>
+		<br><br>
+
+		<<if $corruptionRollover is 1>>
+			<<unset $corruptionRollover>>
+			<<He>> takes a deep breath. "It was a little scary, being so helpless. But..." <<He>> blushes. "It felt kind of good, too. <span class="lewd">Can we try it again sometime?</span>"
+		<<else>>
+			<<Hes>> shaking. "I don't like feeling helpless, but I trust you..." <<He>> sighs, and looks up with a smile. "Well, as long as you had fun, I'm happy."
+		<</if>>
+		<<npcincr Sydney purity -1>><<lspurity>>
+	<</if>>
+	<br><br>
+
+	Sydney clings to your arm as you exit the storeroom and return to work.
+<<elseif $enemyhealth lte 0>>
+	Sydney yelps and kicks you away.
+	<<if _sydneyStatus.includes("corrupt")>>
+		"Seriously? Beating up on a bound <<personsimple>>?"
+	<<else>>
+		"H-hey! That's too rough!"
+	<</if>>
+	You can't help but notice <<hes>> blushing.<<npcincr Sydney lust 1>><<glust>>
+	<br><br>
+
+	The door to the back room bursts open as Sirris barges in. "Syd? What's wrong? I heard..."
+	<br>
+	<<nnpc_He "Sirris">> trails off as <<nnpc_he "Sirris">> takes in the whole scene, and raises an eyebrow. "Is this a bad time?"
+	<br>
+	Sydney grits <<his>> teeth, struggling to uphold <<his>> poise. "I'm fine. Please take these off of me."
+	<br><br>
+
+	Sirris brushes past you and swiftly undoes Sydney's cuffs, letting <<his>> arms fall free. <<He>> exits in a blur. Sirris glances at you, frowns, and leaves after Sydney.<<npcincr Sirris love -5>>
+	<br><br>
+
+	<<tearful>> you follow them out.
+<<else>>
+	<<switch _sydneyStatus>>
+		<<case "pure" "pureLust">>
+			Sydney seems relieved, though <<he>> does give you a worried look. "You... you're not going to leave me like this, are you?"
+		<<case "corrupt" "corruptLust">>
+			"Well, that was a waste of time," Sydney groans. "Do you have any idea how hard it is to get these on by yourself?"
+		<<default>>
+			"Oh... okay." <<He>> starts to leave, but <<hes>> pulled back by the cuffs. <<He>> looks at you sheepishly. "A little help, please?"
+	<</switch>>
+	<br><br>
+
+	<<tearful>> you undo Sydney's cuffs. <<He>> rubs <<his>> wrists.
+	<br><br>
+	<<switch _sydneyStatus>>
+		<<case "pure" "pureLust">>
+			"Those things aren't nearly as cosy as they look," <<he>> mutters on the way out. <<He>> gives you a concerned look. "Let's just... do it normally, next time. Okay?"
+		<<case "corrupt" "corruptLust">>
+			"You keep chickening out on me, next time I'll lock you up instead." <<He>> winks as <<he>> leaves. You're not sure if <<hes>> joking.<<stress 2>><<arousal 100>><<npcincr Sydney lust 1>><<gstress>><<garousal>><<gslust>>
+		<<default>>
+			"That... wasn't as fun as I thought." <<He>> frowns, muttering under <<his>> breath as you leave. "Maybe we'll try them on you next time..."<<arousal 50>><<npcincr Sydney lust 1>><<garousal>><<glust>>
+	<</switch>>
+<</if>>
+<br><br>
+
+<<clotheson>>
+<<endcombat>>
+
+<<link [[Next|Adult Shop]]>><</link>>
+<br>
+
+:: Adult Shop Sydney Uncuffed Sex
+<<NPCStatusCheck "Sydney">>
+<<if $sexstart is 1>>
+	<<set $sydneyDaily.sex += 1>><<set $sydney.sexTotal += 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+
+	<<maninit>>
+	<<set $enemytrust += 500>>
+	<<set $enemyarousalmax to 600>>
+	<<if _sydneyStatus.includes("corrupt")>>
+		<<set $enemyarousalmax += 100>>
+	<<elseif _sydneyStatus.includes("pure")>>
+		<<set $enemyarousalmax -= 100>>
+	<</if>>
+
+	You stay perfectly still as Sydney approaches, <<his>> lips curled in a lustful grin. <<He>> slides the key down the front of <<his>> <<if $pronoun is "m">>trousers<<else>>shirt<</if>>. "Be a good <<girl>>, and maybe I'll let you go."
+	<<promiscuity1>>
+<</if>>
+
+<<set $enemyanger to -10>>
+<<effects>>
+<<effectsman>><<man>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $finish is 1>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Uncuffed Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Uncuffed Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Uncuffed Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Sydney Uncuffed Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Sydney Uncuffed Finish
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	<<He>> sighs, steadying <<himself>> against a pile of boxes.
+	<<if _sydneyChastity and $sydneyChastityKnown>>
+		<<sydneyChastityMessage>><<npcincr Sydney lust 3>><<ggslust>>
+	<<else>>
+		<<npcincr Sydney lust -20>><<lllslust>>
+	<</if>>
+	<<npcincr Sydney purity -2>><<lspurity>>
+	<br>
+	<<He>> reaches over your head and unlocks your cuffs. Your arms fall to your sides.
+	<br><br>
+
+	<<if _sydneyStatus.includes("corrupt")>>
+		"So, you like being all tied up?" <<He>> hums thoughtfully. "Good to know."
+	<<else>>
+		"I would've liked being on the other end, but..." <<He>> giggles. "This felt pretty good, too."
+	<</if>>
+	<br><br>
+
+	<<tearful>> you return to work, Sydney clinging to your arm.
+<<elseif $enemyhealth lte 0>>
+	Sydney yelps and stumbles back. "Okay, okay! You could've just said no."
+	<br><br>
+
+	<<He>> steps towards you. You brace yourself, but <<he>> reaches above your head. "This is your fault, you know. Should've just played along," <<he>> mutters while fiddling with your cuffs. "And after all the effort it took getting myself in those cuffs. Honestly!"
+	<br><br>
+
+	The handcuffs click open, and your arms fall free. Sydney pokes your chest. "Next time, we're doing this my way."<<npcincr Sydney lust 1>><<glust>>
+	<br><br>
+
+	<<He>> leaves the storeroom with a wink over <<his>> shoulder. <<tearful>> you follow after <<him>>.
+<<else>>
+	Sydney shrugs. "Okay. I'll leave you alone." <<He>> exits the back room without another word, leaving you locked up.<<stress 2>><<gstress>>
+	<br><br>
+
+	You struggle in vain to free yourself. After a while, Sirris comes in to investigate the noise. <<He>> gasps when <<he>> sees you, and quickly sets you free.
+	<br><br>
+
+	<<tearful>> you dodge Sirris' questions and hasten back to work. You pass by Sydney, who smiles and waves.<<npcincr Syndey lust 1>><<gslust>>
+<</if>>
+<br><br>
+
+<<unbind>>
+<<clotheson>>
+<<endcombat>>
+
+<<link [[Next|Adult Shop]]>><</link>>
+<br>
+
+:: Adult Shop Sydney Bartering
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+You approach Sydney and the <<person>>. As you get close, you realise they're not arguing over prices.
+<br><br>
+
+<<if _sydneyStatus.includes("corrupt")>>
+	"Come on," Sydney whispers huskily. "You think that little thing's gonna satisfy you?"
+	<br>
+	"I'm not falling for that," the <<person>> mutters with a glare. "The bigger ones are too expensive."
+	<br>
+	Sydney shrugs. "Whatever. But you'll regret it later."
+	<br><br>
+
+	<<link [[Encourage Sydney|Adult Shop Sydney Bartering 2]]>><<set $phase to 3>><<npcincr Sydney purity -1>><</link>><<lspurity>>
+	<br>
+	<<link [[Stay out of it|Adult Shop Sydney Bartering 2]]>><<set $phase to 2>><</link>>
+	<br>
+<<else>>
+	"Are you sure you can... handle that?" Sydney bites <<person1>><<his>> lip. "Maybe you should try a smaller-"
+	<br>
+	<<if random(1,5) is 1>>
+		"Not for me," the <<person2>><<person>> interrupts. "For my <<spouse>>."
+		<br>
+		Sydney pauses. "Are you sure your <<print _text_output>> can-"
+		<br>
+		The <<person>> <<print either("jabs Sydney in the chest with a dildo","points a dildo at Sydney with an accusatory glare")>>. "You stay out of my personal life, kid."
+	<<elseif $NPCList[0].vagina isnot "none">>
+		"You calling my cunt weak?" the <<person2>><<person>> snaps over <<his>> shoulder.
+		<br>
+		Sydney gulps. "Of course not, <<sir>>, I-I'm sure it's very-"
+		<br>
+		"Then mind your own damn business."
+	<<else>>
+		"You calling me a tight-ass?" the <<person2>><<person>> snaps over <<his>> shoulder.
+		<br>
+		Sydney gulps. "N-no <<sir>>, I was only-"
+		<br>
+		"Then mind your own damn business."
+	<</if>>
+	<br><br>
+
+	After a one-sided yet heated exchange,
+	<<switch random(2)>>
+		<<case 2>>
+			the <<person>> refuses to budge and ends up purchasing the oversized toy.
+		<<case 1>>
+			the <<person>> concedes, settling on a smaller size.
+		<<default>>
+			the <<person>> storms out of the shop.
+	<</switch>>
+	Sydney is left gawking.
+	<br><br>
+
+	"It's impossible," <<he>> mutters. "No one could fit that in there. Could they?" <<He>> looks to you, distressed.
+	<br><br>
+
+	<<link [[Agree|Adult Shop Sydney Bartering 2]]>><<set $phase to 1>><<npcincr Sydney purity 1>><</link>><<gspurity>>
+	<br>
+	<<link [[Disagree|Adult Shop Sydney Bartering 2]]>><<set $phase to 0>><<npcincr Sydney purity -1>><<npcincr Sydney lust 1>><</link>><<lspurity>><<glust>>
+	<br>
+<</if>>
+
+:: Adult Shop Sydney Bartering 2
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<NPCStatusCheck "Sydney">>
+
+<<if $phase is 3>>
+	You step up to Sydney's side. The <<person>> shoots you an annoyed glance.
+	<br><br>
+
+	<<if $submissive gte 1150>>
+		"It's okay to be scared," you giggle. "We won't tease you."
+		<br>
+		The <<person>> balks. "Scared? It's a piece of plastic, for fuck's sake. I'm not-"
+		<br>
+		"Oh, <<hes>> totally scared," Sydney interjects. "And that's not even our biggest size!"
+	<<elseif $submissive lte 850>>
+		"Cut <<him>> some slack," you say to Sydney. "Just look at <<him>>. You can tell <<hes>> inexperienced."
+		<br>
+		The <<person>> grits <<his>> teeth. "I can hear you, you know."
+		<br>
+		Sydney giggles, ignoring <<him>>. "Poor thing, I bet <<hes>> afraid to touch <<himself>>."
+	<<else>>
+		"I hope this customer isn't giving you trouble," you say.
+		<br>
+		The <<person>> scoffs. "<<person1>><<He>> started harassing me first."
+		<br>
+		Sydney laughs. "<<Him>>? Giving me trouble? <<He>> doesn't have the nerve."
+	<</if>>
+	<br><br>
+
+	The <<persons>> face turns red in a mixture of anger and embarrassment. What started as teasing grows into a heated debate between you and Sydney, and the <<person>>.
+	<<switch random(2)>>
+		<<case 2>>
+			Somehow, it ends with the <<person>> buying half your stock. Sydney chuckles as the <<he>> exits the shop, struggling to fit <<his>> haul through the door.
+			<br><br>
+
+			"We make a good team." <<person1>><<He>> slings an arm over your shoulder<<if $sydneyromance is 1>>, twirling <<his>> fingers through your hair<</if>>.<<npcincr Sydney love 1>><<glove>>
+		<<case 1>>
+			<<He>> relents in the end, purchasing the larger size. <<He>> leaves the store grumbling under <<his>> breath.
+			<br><br>
+
+			Sydney sighs theatrically. "Another poor soul succumbs to <<his>> pride." <<He>> glances at you and smirks. "What about you, sinner? Have you succumbed yet?"<<npcincr Sydney lust 1>>
+		<<default>>
+			It's more than <<he>> can take, and <<he>> ends up leaving the store emptyhanded.
+			<br><br>
+
+			Sydney shakes <<his>> head. "I'm not surprised. People like that don't know what they want."
+			<<if $sydneyromance is 1>>
+				<<He>> looks at you, running <<his>> tongue over <<his>> lips. "Me, I know exactly what I want."<<npcincr Sydney lust 1>><<glust>>
+			<<else>>
+				<<He>> shrugs. "If you're gonna do something, might as well go all out. Right?"
+			<</if>>
+	<</switch>>
+<<elseif $phase is 2>>
+	You let Sydney handle the customer on <<person1>><<his>> own, sitting back as they get into a heated verbal exchange.
+	<<if random(1)>>
+		Finally, the <<person2>><<person>> relents, leaving with a dildo half as tall as <<him>>.
+		<br><br>
+
+		"I hope you were taking notes," <<he>> says to you.
+		<<if $sydneyromance is 1>>
+			"Or maybe you'd prefer a more personal demonstration of my... persuasiveness." <<He>> winks.<<arousal 50>><<npcincr Sydney lust 1>><<garousal>><<glust>>
+		<<else>>
+			"There's a lot I have to teach you." <<He>> winks.
+		<</if>>
+	<<else>>
+		You watch the <<person2>><<person>> throw <<his>> hands up in frustration before storming out of the shop.
+		<br><br>
+
+		Sydney frowns. "Maybe I need to work on my sales pitch."
+	<</if>>
+<<elseif $phase is 1>>
+	<<if $submissive gte 1150>>
+		"Maybe <<he>> was exaggerating," you say. "I wouldn't put too much thought into it."
+		<br><br>
+
+		Sydney stares ahead pensively, then smiles and nods. "You're right. 
+	<<elseif $submissive lte 850>>
+		You shrug dismissively. "Nah, forget about it. <<He>> was just trying to show off."
+		<br><br>
+
+		Sydney furrows <<person1>><<his>> brow. "I don't see what's so impressive about..." <<He>> sighs and shakes <<his>> head. "Nevermind.
+	<<else>>
+		"I'm sure <<he>> was lying," you say. "Don't stress over it."
+		<br><br>
+
+		Sydney sighs. "I was just worried for <<his>> health, that's all." <<person1>><<He>> shakes <<his>> head, then turns to you with a smile. "But you're right.
+	<</if>>
+	Let's just get back to work."
+<<else>>
+	<<if $submissive gte 1150>>
+		You blush. "W-well, actually..."
+		<br><br>
+
+		Sydney furrows <<his>> brow. "'Actually'? Actually, what?" You silently stare down at your lap. Sydney grabs your arm, whining. "Come on, tell me!"
+	<<elseif $submissive lte 850>>
+		You smirk. "You sure are interested in this."
+		<br><br>
+
+		Sydney gasps. <<He>> looks mortified. "N-no! I'm just curious, that's all. <<sydneyMum>> says curiosity is a virtue..."
+	<<else>>
+		You shrug. "You'd be surprised."
+		<br><br>
+
+		Sydney's mouth falls open slightly. "What? What's that supposed to mean? You... you can't just say things like that!"
+	<</if>>
+	<br><br>
+
+	You don't elaborate, despite Sydney's pestering. <<He>> eventually gives up and returns to work, mumbling to <<himself>>.
+<</if>>
+
+<br><br>
+You earn <<moneyGain 15>>.<<npcincr Sirris love 1>><<glove "Sirris">><<npcincr Sydney love 1>><<glove "Sydney">>
+<br><br>
+<<link [[Return|Adult Shop]]>><</link>>
+
+
+:: Adult Shop Sydney Bartering Ignore
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+The rest of the shift passes without incident.
+<br><br>
+You earn <<moneyGain 15>>.<<npcincr Sirris love 1>><<glove "Sirris">><<npcincr Sydney love 1>><<glove "Sydney">>
+<br><br>
+<<link [[Return|Adult Shop]]>><</link>>
+
+
+:: Adult Shop Dildo Thief Chase 1
+<<set $location to "alley">><<set $bus to "industrial">><<set $outside to 1>><<effects>>
+
+<<endevent>>
+<<generate_adultshopcustomer 1>><<generate_adultshopcustomer 2>>
+You bolt out the door after <<nnpc_him Whitney>>. The bully knocks over a <<person1>><<person>> carrying bags of goods purchased from the store. Dildos, anal eggs, and lubricants spill all over the ground, making pursuit difficult.
+<br><br>
+<<link [[Jump over the mess|Adult Shop Dildo Thief Chase 2]]>><<set $phase to 0>><</link>><<athleticsdifficulty>>
+<br>
+<<link [[Skip over the mess|Adult Shop Dildo Thief Chase 2]]>><<set $phase to 1>><</link>><<dancedifficulty>>
+<br>
+<<if $debug is 1>>
+	<<link [[Debug fail|Adult Shop Dildo Thief Chase 2]]>><<set $debugfail to 1>><</link>>
+	<br>
+<</if>>
+<<link [[Return to the store|Adult Shop Dildo Thief Approach Sydney]]>><</link>>
+
+
+:: Adult Shop Dildo Thief Chase 2
+<<set $location to "alley">><<set $bus to "industrial">><<set $outside to 1>><<effects>>
+
+<<if $athleticsSuccess is 1 and $phase is 0 and $debugfail isnot 1>>
+	<<set $phase to 1>>
+<<elseif $danceSuccess is 1 and $phase is 1 and $debugfail isnot 1>>
+	<<set $phase to 2>>
+<<else>>
+	<<set $phase to 0>>
+<</if>>
+
+<<if $phase is 1>>
+	<<if $cowbuild gte 20>>
+		You charge straight through, oblivious to the obstacles.
+	<<elseif $wolfbuild>>
+		You growl as you leap over the flopping items in dogged pursuit.
+	<<elseif $catbuild or $danceSuccess>>
+		You nimbly leap across with grace.
+	<</if>>
+	The distraction doesn't slow you down and you quickly gain ground on Whitney.
+	<br><br>
+	<<link [[Next|Adult Shop Dildo Thief Chase 3]]>><<set $debugfail to 1>><</link>>
+<<elseif $phase is 2>>
+	<<if $angelbuild gte 20>>
+		As you leap, you feel yourself borne aloft as if on spectral wings.
+	<<elseif $birdbuild>>
+		You skip across with the ease of a raptor.
+	<<elseif $catbuild or $danceSuccess>>
+		You nimbly leap across with grace.
+	<</if>>
+	The distraction doesn't slow you down and you quickly gain ground on Whitney.
+	<br><br>
+	<<link [[Bear down on Whitney|Adult Shop Dildo Thief Chase 3]]>><</link>>
+
+<<else>>
+	"Oi!" The <<person1>><<person>> snarls. "My stuff!"
+	<br>
+	"Did this cheeky <<bitch>> just knock you over? I think <<pshe>> needs a lesson in manners." A passing <<person2>><<person>> exclaims.
+	<br>
+	"Get <<pher>>!"
+	<br><br>
+	<<link [[Next|Adult Shop Dildo Thief Rape]]>><<set $molestationstart to 1>><</link>>
+<</if>>
+
+
+:: Adult Shop Dildo Thief Rape
+
+<<if $molestationstart is 1>>
+	<<set $molestationstart to 0>>
+	<<controlloss>>
+	<<violence 1>>
+	<<neutral 1>>
+	<<molested>>
+	<<maninit>>
+	<br>
+	<<enable_rescue>>
+<</if>>
+<<effects>>
+<<effectsman>><<man>>
+
+<<if $alarm is 1 and $rescue is 0>>
+	<<set $alarm to 0>>
+	No one comes to your aid.
+	<<if $drugged gte 1>>The drugs inhibit you, you couldn't cry very convincingly.<</if>>
+	<br><br>
+<</if>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Thief Rape End]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Thief Rape End]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Thief Rape]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Dildo Thief Rape End
+<<set $location to "alley">><<set $bus to "industrial">><<set $outside to 1>><<effects>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	They smack your <<bottom>> and collect up the spilled items. "Hope that teaches you a lesson. Fucking dumb bitch."
+	<br><br>
+
+	<<tearful>> you hurry back to the shop.
+	<br><br>
+
+	<<clotheson>>
+	<<endcombat>>
+
+	<<link [[Return|Adult Shop Dildo Thief Approach Sydney]]>><<set $phase to 3>><</link>>
+	<br>
+<<else>>
+	They recoil in pain, giving you the chance you need. <<tearful>> you hurry back to the shop.
+	<br><br>
+
+	<<clotheson>>
+	<<endcombat>>
+
+	<<link [[Return|Adult Shop Dildo Thief Approach Sydney]]>><<set $phase to 1>><</link>>
+	<br>
+<</if>>
+
+:: Adult Shop Dildo Thief Approach Sydney
+
+
+<<npc Sydney>><<person1>>
+<<NPCStatusCheck "Sydney">>
+You return to Sydney at the counter.
+<br><br>
+<<if $phase is 0>>
+	"Whitney does that a lot. <<nnpc_He Whitney>>'s always coming in here and messing with me or stealing small items.<<if !_sydneyStatus.includes("corrupt")>> I'm sorry you had to see that.<</if>>"
+<<else>>
+	"Are you okay? Thanks for going after <<nnpc_him "Whitney">> like that. <<if $sydneyromance gte 1>>It was very brave." <<He>> kisses your cheek. "<</if>>But it's no use. <<nnpc_He "Whitney">> got what <<nnpc_he "Whitney">> wanted this time though, so at least <<nnpc_he "Whitney">> won't be back for a while."
+<</if>>
+<<if _sydneyStatus.includes("corrupt")>>
+	<<He>> clenches <<his>> work trousers in his fist before continuing.
+<<else>>
+	<<He>> fondles <<his>> necklace before continuing.
+<</if>>
+"<<sydneyMum>> will deal with <<nnpc_him "Whitney">> at school. <<nnpc_He Sirris>>'s very patient with him. I don't understand it."
+<<if _sydneyStatus.includes("corrupt")>>
+	<<He>> flashes a wicked grin. "Needs a good flogging if you ask me."
+<<else>>
+	<<He>> pauses briefly before smiling. "There's good in everyone, even if we can't see it."
+<</if>>
+<br><br>
+<<link [[Next|Adult Shop]]>><<set $phase to 3>><</link>>
+
+
+:: Adult Shop Dildo Thief Chase 3
+<<set $location to "alley">><<set $bus to "industrial">><<set $outside to 1>><<effects>>
+
+<<endevent>><<npc Whitney>>
+You corner <<him>> in an alleyway.
+<br><br>
+<<if $submissive lte 850>>
+	"Give them back, jerk." You shove <<him>>.
+<<else>>
+	"Give them back," you say. "That's theft"
+<</if>>
+<br><br>
+"Calm down <<bitch>>, it's just a joke." <<He>> throws the dildos at your head. You dodge, but <<he>> uses the distraction to effect an escape. "See you around, slut!"
+<br><br>
+<<link [[Gather the items and return|Adult Shop Dildo Thief Approach Sydney]]>><<set $phase to 1>><</link>>
+
+
+:: Adult Shop Dildo Lesson
+<<addinlineevent "adultshopdildolesson" 5>>
+<<generate_adultshopcustomer>><<person1>>
+A <<person>> approaches the counter with a handful of dildos. "Hey <<girl>>. I haven't used one of these things before. I need a demonstration."
+<br><br>
+<<if $promiscuity gte 34 and $awareness gte 200>>
+    Offer lesson
+    <<link [[Offer to show them|Adult Shop Dildo Lesson Seduction]]>><<set $seductiondifficulty to 8000>><</link>><<seductiondifficulty>>
+    <br>
+<</if>>
+deflect
+
+<<if $submissive lte 500>>
+"This isn't a brothel! Creep. Here's a pamphlet, go figure out yourself!" <<llove "Sirris">><<npcincr Sirris love -5>>
+<<elseif $submissive gt 1500>>
+"H-here's a pamplet. Everything you need should be on there."<<glove "Sirris">><<npcincr Sirris love 1>>
+<<else>>
+"Here's a pamplet. Everything you need should be on there."<<glove "Sirris">><<npcincr Sirris love 1>>
+<</if>>
+<</addinlineevent>>
+
+
+:: Adult Shop Dildo Lesson Seduction
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<set $seductiondifficulty to 6000>>
+<<seductioncheck>>
+<br><br>
+<<if $seductionskill lt 1000>><span class="gold">You feel more confident in your powers of seduction.</span><</if>><<seductionskilluse>>
+
+You lean closer to the <<person>>.
+<<if $submissive lt 500>>
+    "Hmph, come on dummy. I'll show you everything," you jeer softly, nodding towards the back room.
+<<elseif $submissive gte 1500>>
+    "Let me show you. I'll be your good little helper," you coo into <<his>> ear.
+<<else>>
+    "Do you need a... private demonstration? There's a backroom where we can play," you whisper.
+<</if>>
+<<promiscuity2>>
+<<if $seductionrating gte $seductionrequired>>
+	<<He>> glances around, and takes you by the arm. You lead <<him>> into the back room, then <<he>> turns and embraces you.
+	<br><br>
+	<<link [[Next|Adult Shop Dildo Lesson Sex]]>><<giveNPCsextoy 0 "dildo">><<set $sexstart to 1>><</link>>
+	<br>
+<<else>>
+    <<if random(0,2) is 0>>
+	    "I-It was nice meeting you," <<he>> says. <<He>> walks away, leaving the items on the counter.
+        <<gstress>><<stress 3>>
+    <<else>>
+        "What? I just need cleaning instructions.<<print either(" Freak!\" <<He>> storms out of the store.","\" Aghast, <<he>> hurries from the store.","\" Wide-eyed, <<he>> drops the items and backs out of the store.")>>
+        <<gstress>><<gtrauma>><<lcontrol>><<control -5>><<stress 5>><<trauma 5>>
+	<</if>>
+    <br><br>
+    The rest of the shift passes without incident. You earn <<moneyGain 15>>.
+    <br><br>
+    <<endevent>>
+    <<link [[Return|Adult Shop]]>><</link>>
+<</if>>
+
+
+:: Adult Shop Dildo Lesson Refuse
+<<set $location to "adult_shop">><<set $outside to 0>><<effects>>
+
+<<if $phase is 1>>
+	"This isn't a brothel, creep." You crumple up a pamphlet and chuck it at the <<person>>. "Read that and fuck off, before I stick those toys right up your-"
+	<br><br>
+
+	"Excuse me!" Sirris butts in. <<nnpc_He "Sirris">> turns to the <<person>>. "Why don't you come with me, <<sir>>? I'd be more than happy to educate you." <<nnpc_He "Sirris">> leads the bewildered <<person>> away, frowning over <<nnpc_his "Sirris">> shoulder.
+	<br><br>
+
+	The rest of the shift passes without incident. You earn <<moneyGain 15>>.<<llove "Sirris">><<npcincr Sirris love -5>>
+<<else>>
+	<<if $submissive gte 1150>>
+		"H-here's a pamphlet. Everything you need should be in there."
+	<<elseif $submissive lte 850>>
+		You shove a pamphlet into the <<persons>> hands. "Read that. You can read, can't you?"
+	<<else>>
+		"Here's a pamphlet. Everything you need should be in there."
+	<</if>>
+	<br><br>
+	<<He>> huffs and wears a sour expression while you complete the transaction.
+	<br><br>
+	The rest of the shift passes without incident. You earn <<moneyGain 15>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+<</if>>
+<br><br>
+<<endevent>>
+<<link [[Return|Adult Shop]]>><</link>>
+
+
+:: Adult Shop Dildo Lesson Sex
+
+<<if $sexstart is 1>>
+	<<set $sexstart to 0>>
+	<<consensual>>
+	<<set $consensual to 1>>
+	<<neutral 1>>
+	<<maninit>>
+	<<set $enemytrust += 100>>
+<</if>>
+<<effects>>
+<<effectsman>><<man>>
+
+<<if $alarm is 1 and $rescue is 0>>
+	<<set $alarm to 0>>
+	No one comes to your aid.
+	<<if $drugged gte 1>>The drugs inhibit you, you couldn't cry very convincingly.<</if>>
+	<br><br>
+<</if>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Lesson Sex End]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Lesson Sex End]]>><</link>></span><<nexttext>>
+<<elseif $finish is 1>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Lesson Sex End]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Dildo Lesson Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Dildo Lesson Sex End
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	The <<person>> grins. "I think I just found my new favourite store. Thanks for the demonstration, slut." <<He>> leaves you a good tip as <<he>> exits the storeroom.
+	<<set _tip to 20+random(2,6)*(random(1,10)+($mathstrait / 4)+($allure/4000))>>
+<<elseif $enemyhealth lte 0>>
+	Recoiling in pain and shocked by your outburst, <<he>> pulls <<him>>self together and scrambles out the storeroom.
+	<<set _tip to 15>>
+<<else>>
+	While you're stopping sooner than <<he>> would like, <<he>> looks grateful for the demonstration. <<He>> leaves you a tip.
+	<<set _tip to 15+random(1,5)*(random(1,10)+($mathstrait / 4)+($allure/4000))>>
+<</if>>
+<br><br>
+
+<<clotheson>>
+<<endcombat>>
+
+<<tearful>> you return to work. The rest of your shift passes uneventfully. You earn <<moneyGain _tip>>.<<glove "Sirris">><<npcincr Sirris love 1>>
+<br><br>
+
+<<link [[Next|Adult Shop]]>><</link>>
+<br>
+
+:: Adult Shop Debug Zone
+	<<set $worn.butt_plug to clone(setup.sextoys[4])>>
+	<<link [[Wear butt plug |Adult Shop Debug Zone]]<<set $worn.butt_plug.state to "worn">><</link>>
+	<<link [[Remove butt plug |Adult Shop Debug Zone]]>>
+		<<if $worn.butt_plug.state is "worn">>
+			<<set $worn.butt_plug.state to "removed">>
+		<</if>>
+	<</link>>
+
+<br><br>
+<<link [[Next|Adult Shop]]>><</link>>
+
+/* Oyea passout */
+:: Adult Shop Passout Bondage
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<bind>><<facewear 4>>
+<<generate1>><<person1>>
+
+You wake up on your knees, your hands behind your back. Your face is encased in something hot and leathery. It's stuffy. Something tight is clamped around your neck.
+<br><br>
+
+You survey your surroundings. A <<person>> towers above you, talking with someone across a counter.
+<br><br>
+
+"Enjoy your purchase, <<sir>>." It's Sirris. <<nnpc_He "Sirris">> leans over the counter and winks at you. "You enjoy yourself, too." <span class="red"><<nnpc_He "Sirris">> doesn't recognise you behind the mask.</span><<trauma 2>><<stress 6>><<gtrauma>><<gstress>>
+<br><br>
+
+<<if $adultshopstate is "sydney">>
+	<<link [[Next|Adult Shop Passout Bondage Sydney]]>><</link>>
+	<br>
+<<else>>
+	<<link [[Next|Adult Shop Passout Bondage 2]]>><</link>>
+	<br>
+<</if>>
+
+:: Adult Shop Passout Bondage 2
+<<set $outside to 1>><<set $bus to "industrial">><<set $location to "alley">><<effects>>
+
+You're powerless to resist as the <<person>> drags you out the store. <<He>> makes a beeline for a nearby alley.
+<br><br>
+
+"What a bargain," <<he>> <<laughs>>, looming over you. "Got me some nice gear, and a whore to boot."
+<br><br>
+
+<<link [[Next|Adult Shop Passout Bondage Molestation]]>><<set $molestationstart to 1>><</link>>
+<br>
+
+:: Adult Shop Passout Bondage Molestation
+
+<<if $molestationstart is 1>>
+	<<set $molestationstart to 0>>
+	<<violence 1>>
+	<<neutral 1>>
+	<<molested>>
+	<<controlloss>>
+	<<generate1>>
+	<<maninit>>
+<</if>>
+
+<<effects>>
+<<effectsman>><<man>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Passout Bondage Molestation Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Passout Bondage Molestation Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Passout Bondage Molestation]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Passout Bondage Molestation Finish
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+
+	<<if $enemyanger gte 1>>
+		The <<person>> grabs you from behind before you can escape. "Not so fast, <<bitch>>." <<He>> holds your head in place as <<he>> <span class="red">wraps a roll of fabric around your eyes,</span> blinding you.
+		<br><br>
+
+		"You can keep the rest, too," <<he>> <<laughs>> as <<he>> boots you out of the alley. <<tearful>> you scramble to your feet.
+		<br><br>
+
+		<<endcombat>>
+
+		<<set $worn.face.type.push("broken")>>
+		<<faceruined>>
+		<<facewear 6>>
+
+		<<destinationbondage>>
+	<<else>>
+		<<He>> undoes your bondage. "That was fun," <<he>> laughs. "Thanks for the test run, slut."
+		<<unbind>><<set $worn.face.type.push("broken")>><<faceruined>>
+		<br><br>
+
+		<<He>> leaves you lying in the alley. <<tearful>> you rise to your feet.
+		<br><br>
+
+		<<clotheson>>
+		<<endcombat>>
+
+		<<destinationeventend>>
+	<</if>>
+<<else>>
+	You kick the <<person>> away. <<He>> tries to grab you, but you narrowly avoid <<him>>.
+	<br><br>
+
+	<<tearful>> you scurry back to the shop. Sirris glances up as you burst through the door.
+	<br><br>
+
+	<<clotheson>>
+	<<endcombat>>
+
+	<<link [[Next|Adult Shop Passout Bondage Sirris]]>><<npc Sirris>><<person1>><</link>>
+	<br>
+<</if>>
+
+:: Adult Shop Passout Bondage Sirris
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+"Welcome back!" <<He>> smiles. "Was there something else..." <<He>> trails off as <<he>> takes another look at you. <<His>> eyes widen. "Oh. Oh dear. You're..."
+<br><br>
+
+<<He>> drops what <<hes>> doing and pulls you into a back room, where <<he>> swiftly undoes your bindings. "I'm so sorry," <<he>> whispers, voice trembling. "I didn't realise..."
+<br><br>
+
+A voice from outside grabs <<his>> attention. "I'm sorry. I need to take this." <<He>> hurries out to the storefront. You take a moment to collect yourself before following <<him>> out.
+<br><br>
+
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+<br>
+
+:: Adult Shop Passout Bondage Sydney
+<<NPCStatusCheck "Sydney">>
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<npc Sydney 2>>
+
+The <<person>> begins dragging you outside. You're almost to the door when a <<person2>><<personsimple>> calls out to <<person1>><<him>> from behind. "Excuse me, <<sir>>!" <span class="teal">It's Sydney.</span> "You forgot your <<wallet>>!"
+<br><br>
+
+Sydney trots up to the <<person>>, hand outstretched. You watch <<person2>><<him>> through your mask.
+<<if _sydneyStatus.includes("corrupt")>>
+	<<He>> glances at you with a raised eyebrow, but looks away just as quickly.
+<<else>>
+	<<His>> eyes flick over you briefly, but <<he>> looks away with a blush.
+<</if>>
+<br><br>
+
+<<link [["Get " + $NPCList[1].pronouns.his + " attention"|Adult Shop Passout Bondage Help]]>><<stress 6>><<npcincr Sydney purity -5>><</link>><<gstress>><<llspurity>>
+<br>
+<<link [[Stay silent|Adult Shop Passout Bondage 2]]>><<trauma 6>><</link>><<gtrauma>>
+<br>
+
+:: Adult Shop Passout Bondage Help
+<<NPCStatusCheck "Sydney">>
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+You bound towards Sydney, straining against your bondage. <<He>> yelps and jumps back.
+<<if $submissive gte 1150>>
+	<<gagged_speech "P-please, Sydney" ,>> you whimper. <<gagged_speech "Please don't leave me" !>>
+<<elseif $submissive lte 850>>
+	<<gagged_speech "Sydney" !>> you grunt. <<gagged_speech "It's me, you idiot" !>>
+<<else>>
+	<<gagged_speech "Sydney" !>> you cry. <<gagged_speech "It's me" !>>
+<</if>>
+<br><br>
+
+The <<person1>><<person>> laughs nervously. "B-bad <<girl>>. Leave the nice young <<person2>><<if $pronoun is "m">>fellow<<else>>lady<</if>> alone."
+<br><br>
+
+<<if $sydneyromance is 1>>
+	<<if _sydneyStatus.includes("corrupt")>>
+		"Weirdos," you hear Sydney mutter. "Can't you keep this stuff to..."
+	<<else>>
+		"Th-thank you for your patronage," Sydney says. "Please, if you don't mind..."
+	<</if>>
+	<br><br>
+
+	<<He>> takes another look at you, and falls silent. Then, <span class="green"><<he>> gasps.</span>
+	<br><br>
+
+	<<link [[Next|Adult Shop Passout Bondage Saved]]>><</link>>
+	<br>
+<<else>>
+	<<if _sydneyStatus.includes("corrupt")>>
+		"Gross," Sydney says as <<he>> shoves you aside. "Keep it to yourselves, creeps." <<He>> walks away in disgust,
+	<<else>>
+		Sydney shudders and backs away. "Thank you, have a nice day, goodbye!" <<He>> hastily retreats behind the counter,
+	<</if>>
+	<span class="red">leaving you at the mercy of the <<person1>><<person>>.</span><<trauma 10>><<ggtrauma>>
+	<<clearsinglenpc 1>>
+	<br><br>
+
+	<<link [[Next|Adult Shop Passout Bondage 2]]>><</link>>
+	<br>
+<</if>>
+
+:: Adult Shop Passout Bondage Saved
+<<NPCStatusCheck "Sydney">>
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+<<if _sydneyStatus.includes("corrupt")>>
+	Sydney lunges for the <<person1>><<person>>, who ends up tripping over your prone body.
+	<br><br>
+
+	A struggle ensues. Sydney manages to wrestle your leash out of the <<persons>> grasp. <<person2>><<He>> rushes you into a back room, leaving the <<person1>><<person>> to explain <<himself>> to the bemused crowd of customers.
+<<else>>
+	Sydney screams. "H-help! Somebody! <<person1>><<Hes>> trying to kidnap my <<girl>>friend!"
+	<br><br>
+
+	Heads turn up and down the aisles. The <<person>> curses under <<his>> breath before bolting out the door, leaving you behind. Sydney grabs your arm and rushes you into a back room.
+<</if>>
+<br><br>
+
+<<link [[Next|Adult Shop Passout Bondage Saved 2]]>><</link>>
+<br>
+
+:: Adult Shop Passout Bondage Saved 2
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+<<unbind>><<set $worn.face.type.push("broken")>><<faceruined>>
+
+Sydney wastes no time undoing your binds. As soon as your arms are free, <<he>> throws <<himself>> into them. You can feel <<his>> heart racing.
+<br><br>
+
+Suddenly, the door flies open. Sydney tenses up, pulling you close, but <<he>> relaxes when <<he>> sees Sirris. "Sydney! Is everything alright?" <<nnpc_he "Sirris">> asks, panting. "I heard screaming, and..."
+<br><br>
+
+"Don't worry, <<sydneyMum>>." <<He>> shuts <<his>> eyes and squeezes you tight. "Everything's fine."<<trauma -4>><<stress -6>><<ltrauma>><<lstress>>
+<br><br>
+
+<<link [[Next|Adult Shop Passout Bondage Saved 3]]>><<pass 10>><</link>>
+<br>
+
+:: Adult Shop Passout Bondage Saved 3
+<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+
+Once <<nnpc_hes "Sirris">> sure you're okay, Sirris shuts the door, leaving you alone with Sydney. You lay with <<him>> for a while longer.
+<br><br>
+
+After some time, you decide to head back to the shop. <<He>> seems reluctant to leave you, but you assure <<him>> you'll be fine. <<tearful>> you make your way back outside.
+<br><br>
+
+<<link [[Next|Adult Shop]]>><<endevent>><</link>>
+<br>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/gift-strap-ons.twee b/game/overworld-town/loc-adultshop/gift-strap-ons.twee
new file mode 100644
index 0000000000..420f4d011a
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/gift-strap-ons.twee
@@ -0,0 +1,364 @@
+:: Alex Gift Strap-on
+<<set $location to "alex_cottage">><<set $outside to 0>><<effects>>
+
+<<set _toy to "strap-on">>
+You place the _toy on Alex's desk. <<He>> swivels in <<his>> chair to face you, nearly dropping the phone in surprise when <<he>> sees it. <<He>> clears <<his>> throat. "P-please hold."
+<br><br>
+
+Setting the phone down, <<he>> grabs the _toy and gives it a good look.
+<<if $NPCName[$NPCNameList.indexOf("Alex")].dom gte 30>>
+    <<He>> whistles. "Nice choice." <<He>> pauses, flashing you a smirk. "For a newbie, anyway."
+    <br><br>
+
+    <<He>> gets up from <<his>> desk, smacking your <<bottom>> with the _toy as <<he>> passes. "Hope you know what you're getting into," <<he>> whispers. "You're in for a wild ride, cow<<girl>>."
+    <br><br>
+
+    <<He>> places it in a drawer near <<his>> bed before returning back to work, whistling a tune.
+<<elseif $NPCName[$NPCNameList.indexOf("Alex")].dom lte -30>>
+    <<He>> scratches <<his>> head sheepishly. "You've got some wild ideas." <<He>> stares at the _toy thoughtfully, and lets out a quiet chuckle.
+    <br><br>
+
+    <<He>> rises from the desk with a sigh. "Hell, if you think it's a good idea, you're probably right."
+    <br><br>
+
+    <<He>> places it in a drawer near <<his>> bed before returning to work, blushing.
+<<else>>
+    "You've got some wild ideas, y'know." <<He>> licks <<his>> lips. "I like 'em."
+    <br><br>
+
+    <<He>> rises from <<his>> desk, bopping you on the head with the _toy as <<he>> passes. "Hope you know how to ride, cow<<girl>>."
+    <br><br>
+
+    <<He>> places it in a drawer near <<his>> bed before returning to work, grinning.
+<</if>>
+<br><br>
+
+<<link [[Next|Farm Alex Bedroom]]>><<endevent>><</link>>
+<br>
+
+:: Eden Gift Strap-on
+<<set $location to "cabin">><<set $outside to 0>><<effects>>
+
+<<set _sextoy to "black strap-on">>
+<<if $submissive gte 1150>>
+	"Eden?" You hold the _sextoy out. "I was hoping you could... use this." You look away, blushing. "O-on me."
+<<elseif $submissive lte 850>>
+	"Hey." You toss the _sextoy into <<his>> lap. "We're trying that out later. Got it?"
+<<else>>
+	You set the _sextoy on the table beside Eden. "I thought we could try something new. How about it?"
+<</if>>
+<br><br>
+
+<<He>> snatches the _sextoy up with a furrowed brow, studying it. <<He>> shakes <<his>> head. "Waste of time," <<he>> grunts. "What would I even get out of it?"
+<br><br>
+
+<<if $NPCName[$NPCNameList.indexOf("Eden")].love gte 100>>
+	<<if $submissive gte 1150>>
+		You drop to your knees beside Eden's chair, wrapping your arms around <<his>> bicep and propping your head on <<his>> shoulder.
+		<br>
+		"Please?" you beg, staring into <<his>> eyes. "I've been good, haven't I...?"
+	<<elseif $submissive lte 850>>
+		Without warning, you leap onto the chair, straddling Eden's waist, hands on <<his>> shoulders. <<His>> expression doesn't change.
+		<br>
+		"Know what I think?" You lean in, whispering into <<his>> ear. "I think you're scared. Scared you can't handle me. Is that it?"
+	<<else>>
+		You sit on the arm of the chair, wrapping your arms around Eden's shoulders and pulling <<him>> against you.
+		<br>
+		"Come on," you say, giving <<his>> arm a light squeeze. "It'd make me happy."
+	<</if>>
+	<br><br>
+
+	Eden stares at you, unflinching. Finally, <<he>> sighs. "Fine. But if I don't like it, that's it." <<He>> looks to the _sextoy, and snorts. "It might be worth it to hear you squeal, at least."
+	<<giftStrapon "Eden" "given">>
+<<else>>
+	<<if $submissive gte 1150>>
+		"Please? You-"
+	<<elseif $submissive lte 850>>
+		"C'mon, just-"
+	<<else>>
+		"Just give it-"
+	<</if>>
+	<br><br>
+
+	"No," Eden interrupts, <<his>> voice firm. <<He>> looks up from <<his>> book with a glare. "When you start taking care of things around here, you can call the shots. Until then, we do what I want. And that's that."
+	<br><br>
+
+	<i>If <<he>> liked you more <<he>> might be amenable to your request.</i>
+<</if>>
+<br><br>
+<<link [[Next|Eden Cabin]]>><</link>>
+
+
+:: Gift Strap-on Sydney Counter
+<<set $outside to 0>><<effects>>
+
+<<NPCStatusCheck "Sydney">>
+<<set _sextoy to "strap-on">>
+You place the _sextoy on the counter.
+<<if _sydneyStatus.includes("corrupt")>>
+	Sydney's eyebrows raise, but <<he>> doesn't seem surprised. <<He>> holds it up to the light, squinting. A few passing students gawk at <<his>> shamelessness.
+	<br><br>
+
+	<<if _sydneyChastity>>
+		<<He>> looks thoughtful for a moment, before shaking <<his>> head.
+		<br><br>
+
+		"I'm already packing heat down there." <<He>> clunks the _sextoy against <<his>> chastity belt. "It's a fun idea, though."
+	<<else>>
+		<<His>> face splits into a wide grin as <<he>> regards the _sextoy.
+		<br><br>
+
+		"I thought you'd never ask," <<he>> says. <<He>> tucks it into <<his>> <<if $pronoun is "m">>trousers<<else>>skirt<</if>>. <<His>> excitement is palpable.
+		<<giftStrapon "Sydney" "given">>
+	<</if>>
+<<elseif _sydneyStatus.includes("pure")>>
+	Sydney blankly stares at it, until <<his>> eyes widen in realisation. <<He>> gasps, scrambling to shove the _sextoy under the counter.
+	<br><br>
+
+	<<if _sydneyStatus.includes("Lust")>>
+		<<He>> brings <<his>> fingers up to <<his>> lip, eyes wide. "R-really?" <<he>> gulps. "You're going to put that in my-"
+		<br>
+		You cut <<him>> off to clarify that you want <<him>> to use it on you. <<His>> face turns an even deeper red.
+	<<else>>
+		"This isn't what I think it is... is it?" <<He>> swallows nervously. "And you want me to... on you?"
+		<<if $submissive gte 1150>>
+			You look down and nod, blushing.
+		<<elseif $submissive lte 850>>
+			You nod eagerly.
+		<<else>>
+			You nod.
+		<</if>>
+	<</if>>
+	<br><br>
+
+	<<if _sydneyChastity>>
+		<<He>> looks down and shakes <<his>> head. "I don't think I could... work it... with my... you know..." <<He>> taps a finger against <<his>> chastity belt.
+		<br><br>
+
+		<<He>> shifts focus back to <<his>> work, refusing to speak further on the matter.
+	<<elseif _sydneyStatus.includes("Lust")>>
+		<<His>> eyes dart about nervously, looking everywhere but you. "Well... <<sydneyMum>> says I need to broaden my horizons." <<He>> wets <<his>> lips. "If it'll make you happy..."
+		<br><br>
+
+		<<He>> takes the _sextoy in trembling hands, shoving it to the bottom of <<his>> school bag. <<He>> doesn't stop glancing over <<his>> shoulder.
+		<<giftStrapon "Sydney" "given">>
+	<<else>>
+		<<He>> doesn't hesitate as <<he>> shoves the _sextoy back into your hands, wiping <<his>> own on <<his>> <<if $pronoun is "m">>trousers<<else>>skirt<</if>>.
+		<br><br>
+
+		"I'm sorry, I can't. It's just too..." <<He>> trails off into a series of formless squeaks and murmurs as <<he>> forces it back in your hands. "C-can you please put it away now? Someone might see..."
+	<</if>>
+<<else>>
+	Sydney gasps and hurriedly pulls it into <<his>> lap, out of view.
+	<br><br>
+
+	"You can't be serious," <<he>> whispers. "You really want me to...?"
+	<<if $submissive gte 1150>>
+		You look down and nod, blushing.
+	<<elseif $submissive lte 850>>
+		You nod eagerly.
+	<<else>>
+		You nod.
+	<</if>>
+	<br><br>
+
+	<<if _sydneyChastity>>
+		<<He>> stares at it with a frown, before shaking <<his>> head.
+		<br><br>
+
+		"Sorry, but I'd be a bit... encumbered." <<He>> taps <<his>> knuckles against <<his>> chastity belt. "It's an interesting idea, though."
+	<<elseif _sydneyStatus.includes("Lust")>>
+		<<He>> stares at it thoughtfully. Finally, he murmurs, "I... I guess it won't hurt to try something new."
+		<br><br>
+
+		<<He>> takes the _sextoy and shoves it to the bottom of <<his>> school bag. <<He>> looks conflicted, but flashes you an uneasy smile all the same.
+		<<giftStrapon "Sydney" "given">>
+	<<else>>
+		<<He>> bites <<his>> lip, staring at the toy in consideration. Finally, <<he>> sighs.
+		<br><br>
+
+		"I'm sorry, but... no. Not now." <<He>> places it back in your hands, giving you a small smile. "I... I'll think about it." <<His>> tone is unconvincing, but you decide to drop the subject for now.
+	<</if>>
+<</if>>
+<br><br>
+<<link [[Return|Adult Shop]]>><</link>>
+
+
+<!--
+At the temple:
+:: Gift Strap-on Sydney Temple
+<<set _sextoy to "strap-on">>
+
+You furtively hold the _sextoy beneath the pew, tapping it against Sydney's leg.
+<<if _sydneyStatus.includes("corrupt")>>
+	<<He>> giggles. "Cut it out-" <<He>> trails off upon looking down, eyebrows raising in surprise. "I'm not saying no, but..." <<He>> looks over <<his>> shoulder nervously, lowering <<his>> voice. "Maybe later?"
+<<elseif _sydneyStatus.includes("pure")>>
+	<<He>> opens <<his>> eyes with a frown. "Please, I'm trying-" <<He>> cuts off with a gasp upon looking down. <<He>> averts <<his>> gaze, <<his>> face red. "C-can this wait?"
+<<else>>
+	<<He>> pops an eye open. "Is everything al-" <<He>> cuts off with a gasp upon looking down. <<He>> nudges it away with <<his>> foot, <<his>> face red. "Seriously?" <<he>> whispers. "Here?"
+<</if>>
+<br><br>
+
+<<if $submissive gte 1150>>
+	"I-I know it's asking a lot, but I really want you to try it on me." You hold it out. Sydney
+	<<if _sydneyStatus.includes("corrupt")>>
+		smirks
+	<<elseif _sydneyStatus.includes("pure")>>
+		bites <<his>> lip
+	<<else>>
+		looks uneasy
+	<</if>>
+	as <<he>> takes it from you. "Please?"
+<<elseif $submissive lte 850>>
+	<<if _syndeyStatus.includes("corrupt")>>
+		"'Maybe later,'" you repeat teasingly. You toss it on Sydney's lap. <<He>> casually tucks it in <<his>> robe. "No, I want your answer now. You gonna use it or not?"
+	<<elseif _sydneyStatus.includes("pure")>>
+		"'Can this wait?'" you repeat teasingly. You toss it on Sydney's lap. <<He>> yelps in shock, fumbling to hide it. "No, I want your answer now. You gonna use it or not?"
+	<<else>>
+		"'Seriously?'" you repeat teasingly. You toss it on Sydney's lap. <<He>> to yelp in shock, quickly hiding it away. "Yeah, I'm serious. You gonna use it or not?"
+	<</if>>
+<<else>>
+	"I just thought we could spice things up," you say. You place it in Sydney's lap.
+	<<if _syndeyStatus.includes("corrupt")>>
+		<<He>> casually tucks it in <<his>> robe.
+	<<elseif _sydneyStatus.includes("pure")>>
+		<<He>> fumbles to hide it in <<his>> robe.
+	<<else>>
+		<<He>> quickly hides it away.
+	<</if>>
+	"What do you think?"
+<</if>>
+<br><br>
+
+<<if _syndeyStatus.includes("corrupt")>>
+	<<if _sydneyChastity>>
+		<<He>> looks thoughtful for a moment, before shaking <<his>> head.
+		<br><br>
+
+		"I'm already packing heat down there." <<He>> clunks the _sextoy against <<his>> chastity belt. "It's a fun idea, though."
+	<<else>>
+		<<His>> face splits into a wide grin as <<he>> regards the _sextoy.
+		<br><br>
+
+		"I thought you'd never ask," <<he>> says. <<He>> eagerly tucks it into <<his>> robes, unaware or uncaring of the distinctive outline visible through the fabric.
+	<</if>>
+<<elseif _sydneyStatus.includes("pure")>>
+	<<if _sydneyChastity>>
+		<<He>> looks down and shakes <<his>> head. "I don't think I could... work it... with my... you know..." <<He>> taps a finger against <<his>> chastity belt.
+		<br><br>
+
+		<<He>> shifts focus back to <<his>> work, refusing to speak further on the matter.
+	<<elseif _sydneyStatus.includes("Lust")>>
+		<<His>> eyes dart about nervously, looking everywhere but you. "Well... <<sydneyMum>> says I need to broaden my horizons." <<He>> wets <<his>> lips. "If it'll make you happy..."
+		<br><br>
+
+		<<He>> bunches <<his>> robe up around the _sextoy, struggling to conceal it. <<He>> doesn't stop glancing over <<his>> shoulder.
+	<<else>>
+		<<He>> doesn't hesitate as <<he>> shoves the _sextoy back into your hands, wiping <<his>> own on <<his>> <<if $pronoun is "m">>trousers<<else>>skirt<</if>>.
+		<br><br>
+
+		"I'm sorry, I can't. It's just too..." <<He>> trails off into a series of formless squeaks and murmurs as <<he>> forces it back in your hands. "C-can you please put it away now? Someone might see..."
+	<</if>>
+<<else>>
+	<<if _sydneyChastity>>
+		<<He>> stares at it with a frown, before shaking <<his>> head.
+		<br><br>
+
+		"Sorry, but I'd be a bit... encumbered." <<He>> taps <<his>> knuckles against <<his>> chastity belt. "It's an interesting idea, though."
+	<<elseif _sydneyStatus.includes("Lust")>>
+		<<He>> stares at it thoughtfully. Finally, he murmurs, "I... I guess it won't hurt to try something new."
+		<br><br>
+
+		<<He>> bunches <<his>> robe up around the _sextoy, struggling to conceal it. <<He>> looks conflicted, but flashes you an uneasy smile all the same.
+	<<else>>
+		<<He>> bites <<his>> lip, staring at the toy in consideration. Finally, <<he>> sighs.
+		<br><br>
+
+		"I'm sorry, but... no. Not now." <<He>> places it back in your hands, giving you a small smile. "I... I'll think about it." <<His>> tone is unconvincing, but you decide to drop the subject for now.
+	<</if>>
+<</if>>
+
+-->
+
+:: Kylar Gift Strap-on
+/* This needs a rework before release */
+<<effects>>
+
+You pass the loner a package wrapped with a ribbon. <<His>> face lights up as <<he>> gingerly takes it.
+<br><br>
+
+<<if $NPCName[$NPCNameList.indexOf("Kylar")].rage gte 30 and ($NPCList[0].penis isnot "none" or $player.penisExist)>>
+	"A g-gift? Really? I thought..." Kylar shakes <<his>> head. "Thank you, I will cherish this"
+<br>
+	<<He>> looks at the unwrapped strap-on and exhales sharply, eyes locked on the toy.
+	<br>
+	"Are you giving me this because I'm... not enough? If that makes you happy, I'll do it, just d-don't leave me for... someone else."
+<<else>>
+	"A gift from you? I will cherish this, thank you my love."<<set $kylarSeen.pushUnique("saidLove")>>
+	<<His>> breathing gets heavy as she looks at the unwrapped strap-on.
+	<<if $NPCList[0].penis is "none" and !$player.penisExist>>
+		There's tears in <<his>> eyes.
+		<br>
+		"Now we can be inside each other. I didn't think that would be possible. Thank you for this."
+	<<else>>
+		<br>
+		"This is so lewd. Y-you really want me to wear this? I love you so much, I'll do anything for you."
+	<</if>>
+<</if>>
+<br><br>
+Kylar crushes the strap-on against her chest, staring intently into your eyes. "Do you want to use it now? I need do things to you."
+<<giftStrapon "Kylar" "given">>
+<br><br>
+<<link [[Invite Kylar to the orphanage|Kylar Invite]]>><<npcstrapon 0>><</link>><<gglust>><<gglove>><<lksuspicion>>
+<br>
+<<link [[Refuse|Kylar Strap-on Sex Refuse]]>><</link>><<gglust>>
+
+:: Kylar Strap-on Sex Refuse
+<<He>> looks disappointed. "That's okay. I understand."
+<br>
+<<kylaroptions>>
+
+
+:: Robin Gift Strap-on
+<<set $location to "home">><<set $outside to 0>><<effects>>
+
+<<set _sextoy to "strap-on">>
+<<if $submissive gte 1150>>
+	You tug on Robin's sleeve. <<He>> looks up from <<his>> game with a smile, nodding for you to continue. You set the _sextoy down on <<his>> bed.
+	<br><br>
+
+	Robin's mouth opens slightly, <<his>> face turning red. You look away, hiding a blush of your own. "D-do you want try it?"
+<<elseif $submissive lte 850>>
+	You turn Robin's console off. <<He>> frowns, but it's replaced with a lock of shock as you drop the _sextoy onto <<his>> lap.
+	<br><br>
+
+	"How about it?" you ask with a grin. "Ready to step up your game?"
+<<else>>
+	"Hey, Robin?" you ask. <<He>> nods for you to continue. "I was hoping we could try something new."
+	<br><br>
+
+	<<He>> beams. "Sure! What kind of game-" <<He>> stops when <<he>> sees the _sextoy in your hands. <<He>> blushes. "Oh. You mean..."
+<</if>>
+<br><br>
+
+<<He>> takes the _sextoy in <<his>> hands, studying it through wide eyes. A moment later, <<he>> looks up at you with a smile.
+<<if $NPCName[$NPCNameList.indexOf("Robin")].dom gte 50>>
+	"You always have the craziest ideas," <<he>> laughs. "I'll do it. Maybe it'll be fun for me, too!"
+	<br><br>
+
+	<<He>> goes back to <<his>> game, giggling quietly to <<himself>> and throwing the occasional coy look your way.
+	<<giftStrapon "Robin" "given">>
+<<elseif $NPCName[$NPCNameList.indexOf("Robin")].dom gte 20>>
+	It's subdued, but genuine. "I-it's a bit out of my comfort zone, but..." <<He>> squeezes your arm. "If it's what you want, I'll do it."
+	<br><br>
+
+	<<He>> goes back to <<his>> game, a slight blush dusting <<his>> cheeks.
+	<<giftStrapon "Robin" "given">>
+<<else>>
+	It doesn't quite reach <<his>> eyes. "Y-yeah. I'll think about it." <<He>> doesn't sound overly enthused.
+	<br><br>
+
+	<i><span class="blue">Robin might be more receptive to the idea if <<he>> were more confident.</span></i>
+<</if>>
+<br><br>
+<<link [[Return|Robin's Room Entrance]]>><<endevent>><</link>>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/intro.twee b/game/overworld-town/loc-adultshop/intro.twee
new file mode 100644
index 0000000000..3f0bce80db
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/intro.twee
@@ -0,0 +1,21 @@
+/* This should probably be for the events in which you assist Sirris setting up the shop, or witness Sirris setting up. */
+:: Shady Shop
+<<effects>>
+You pass by a shop avertising pornography, dildos, 
+<<if $awareness lt 200>>
+    and all manner of depraved sex toys.
+<<else>>
+    B.D.S.M. gear, lingerie, and sex dolls.
+<</if>>
+<br><br>
+<<link [[Leave|Elk Street]]>><</link>>
+
+:: Dilapidated Shop
+<<effects>>
+You pass by a run down shop. The windows are boarded over. Peeking through a gap in the boards, you see the floor littered with pornographic magazines and VHS tapes.
+<br><br>
+
+<<link [[Leave|Elk Street]]>><</link>>
+<br>
+<<link [[Unlock shop|Elk Street]]>><<set $adultshopunlocked to true>><</link>>
+<br>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/sextoys.twee b/game/overworld-town/loc-adultshop/sextoys.twee
new file mode 100644
index 0000000000..4a1e49d487
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/sextoys.twee
@@ -0,0 +1,99 @@
+:: Widgets Sex Toys [widget]
+
+<<widget "init_sex_toys">>
+<<set setup.sextoys to [
+    {
+        index:0,
+        name:"dildo",
+        namecap:"Dildo",
+        variable:"dildo",
+        cost:5000,
+        type:["dildo"],
+        size:2,
+        icon:"dildo.png",
+        colour: 1,
+        colour_options: ["black","blue","teal","lime-green","light-pink","purple","tan","brown","red"]
+    },
+
+    {
+        index:1,
+        name:"small dildo",
+        namecap:"Small dildo",
+        variable:"smalldildo",
+        cost:4000,
+        type:["dildo"],
+        size:1,
+        icon:"dildo_small.png",
+        colour: 1,
+        colour_options: ["black","blue","teal","lime-green","light-pink","purple","tan","brown","red"]
+    },
+
+    {
+        index:2,
+        name:"anal beads",
+        namecap:"Anal beads",
+        variable:"analbeads",
+        cost:8000,
+        type:["dildo","anal"],
+        size:2,
+        icon:"analbeads.png",
+        colour: 1,
+        colour_options: ["black","blue","teal","lime-green","light-pink","purple","tan","brown","red"],
+    },
+
+    {
+        index:3,
+        name:"bullet vibe",
+        namecap:"Bullet vibe",
+        variable:"bulletvibe",
+        cost:12000,
+        type:["dildo","vibrator"],
+        size:0,
+        icon:"bulletvibe.png",
+        colour: 0,
+        colour_options: []
+    },
+
+    {
+        index:4,
+        name:"butt plug",
+        namecap:"Butt plug",
+        variable:"buttplug",
+        cost:8000,
+        type:["dildo","anal","plug"],
+        state:"worn",
+        size:2,
+        icon:"",
+        colour: 1,
+        colour_options: ["black","blue","teal","lime-green","light-pink","purple","tan","brown","red"]
+    },
+
+    {
+        index:3,
+        name:"onahole",
+        namecap:"Onahole",
+        variable:"onahole",
+        cost:8000,
+        type:["onahole"],
+        icon:"",
+        colour: 1,
+        colour_options: ["black","blue","teal","lime-green","light-pink","purple","tan","brown","red"]
+    }
+
+]>>
+<</widget>>
+
+<<widget "init_npc_sex_toys">>
+    <<set $toy_dildos to [
+        {
+            name:"dildo",
+        },
+        {
+            name:"length of anal beads",
+        },,
+        {
+            name:"vibrator",
+        }
+    ]>>
+    
+<</widget>>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/shop.twee b/game/overworld-town/loc-adultshop/shop.twee
new file mode 100644
index 0000000000..efa1ddd3d0
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/shop.twee
@@ -0,0 +1,545 @@
+:: Adult clothing shop widgets [widget]
+
+<<widget "adultShop-main">>
+	<<if $tryOn.autoReset isnot false>><<tryOnReset>><</if>><<unset $tempDisable>>
+	<<set $outside to 0>><<set $location to "adult_shop">><<effects>>
+	<<set $shopName = "adult">>
+
+	You are in the adult shop. It has a large selection of fetish clothing and strap-ons.
+	<br><br>
+
+	<<if $stress gte $stressmax>>
+	<<passoutshop>>
+	<<else>>
+		<<if $hour is 21 and $minute lt 10>>
+			It's closing time. Sirris is herding everyone outside. <<if $exposed gte 1>>Panic swells within you as you realise how exposed you'll be should Sirris find you in this state of dress.<</if>>
+			<br><br>
+
+			<<set $adultshopstate to "closed">>
+			<<if $exposed lte 0>>
+				<<link [[Go outside|Elk Street]]>><<clearadultshopvariables>><</link>>
+				<br>
+			<<else>>
+				<<link [[Hide until it's over (1:00)|Adult Shop]]>><<pass 1 hour>><</link>>
+			<</if>>
+		<<else>>
+			<div id="tryonstats-div"><<tryOnStats>></div>
+			<<unset $shopListStartCount>>
+			<<unset $clothes_choice>>
+			<<set $shopPage = 0>>
+
+			<<if $daystate is "night">>
+				You are alone in the darkness.
+				<br><br>
+			<<elseif $exposed gte 1>>
+				You are hiding within a gimp suit stand to protect your dignity.
+				<br><br>
+			<</if>>
+
+			<span>Warmth:</span>
+			<<warmthscale>>
+			<div id="warmth-description">
+				<<warmth_description>>
+			</div>
+			<br><br>
+			<<if $debug is 1>>
+				<<clothingcategoryicon "overoutfit">>
+				<<link "View over outfits">><<replace "#clothingShop-div">><<OverOutfitShop>><</replace>><</link>>
+				<br>
+				<<clothingcategoryicon "overoutfit">>
+				<<link "View over tops">><<replace "#clothingShop-div">><<OverTopShop>><</replace>><</link>>
+				<br><br>
+			<</if>>
+			<<clothingcategoryicon "outfit">>
+			<<link "View outfits">><<replace "#clothingShop-div">><<OutfitShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "upper">>
+			<<link "View tops">><<replace "#clothingShop-div">><<TopShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "lower">>
+			<<link "View bottoms">><<replace "#clothingShop-div">><<BottomShop>><</replace>><</link>>
+			<br><br>
+			<<clothingcategoryicon "underoutfit">>
+			<<link "View under outfits">><<replace "#clothingShop-div">><<UnderOutfitShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "underupper">>
+			<<link "View under tops">><<replace "#clothingShop-div">><<UnderTopShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "underlower">>
+			<<link "View under bottoms">><<replace "#clothingShop-div">><<UnderBottomShop>><</replace>><</link>>
+			/* Left here for future expansion */
+			/*<br>
+			<<clothingcategoryicon "genitals">>
+			<<link "View Genital wear">><<replace "#clothingShop-div">><<GenitalShop>><</replace>><</link>>*/
+			<br><br>
+			<<clothingcategoryicon "head">>
+			<<link "View Head Accessories">><<replace "#clothingShop-div">><<HeadShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "face">>
+			<<link "View Face Accessories">><<replace "#clothingShop-div">><<FaceShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "neck">>
+			<<link "View Neck Accessories">><<replace "#clothingShop-div">><<NeckShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "hand">>
+			<<link "View Hand Accessories">><<replace "#clothingShop-div">><<HandsShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "legs">>
+			<<link "View Legwear">><<replace "#clothingShop-div">><<LegsShop>><</replace>><</link>>
+			<br>
+			<<clothingcategoryicon "feet">>
+			<<link "View Shoes">><<replace "#clothingShop-div">><<FeetShop>><</replace>><</link>>
+			<br><br>
+			<<run linkifyDivs('.button-back-to-shop')>>
+
+			/*<<if $clothingrebuy is 1>>
+				[[Disable automatic clothing rebuy|Rebuy Shop]]
+				<br>
+			<<else>>
+				[[Enable automatic clothing rebuy|Rebuy Shop]]
+				<br>
+			<</if>>*/
+
+			<<if $daystate is "night" and $hour isnot $closinghour and $adultshoptheft isnot 1>>
+				<<link [[Examine the cash register|Adult Shop Register]]>><</link>>
+				<br>
+			<</if>>
+
+			<br>
+
+			<<if $daystate is "night" or $tryOn.value is 0>>
+				<<if $daystate is "night" and $adultShop.spotted is true and $adultShop.stolenClothes gt 0>>
+					<<link[[Leave|Adult Shop Night Guard Found]]>>
+						<<shopClothingFilterReset>>
+						<<ShowUnderEquip "normal">>
+						<<ShowUnderEquip "over">>
+						<<set $tryOn.autoReset to true>>
+						<<crimeup `$tryOn.value / 100`>>
+						<<set $adultshopstate to "closed">>
+					<</link>>
+				<<else>>
+					<<link[[Leave|Adult Shop]]>>
+						<<shopClothingFilterReset>>
+						<<ShowUnderEquip "normal">>
+						<<ShowUnderEquip "over">>
+						<<set $tryOn.autoReset to true>>
+						<<crimeup `$tryOn.value / 100`>>
+						<<set $adultshopstate to "closed">>
+					<</link>>
+				<</if>>
+				<<if $tryOn.value gt 0>>
+					<<crime>>
+				<</if>>
+				<br><br>
+			<<elseif $tryOn.value gt 0>>
+				<<link "Return clothes">><<clothingReset>>
+					<<updatesidebarimg>>
+					<<updatesidebardescription>>
+					<<updateallure>>
+					<<updatewarmthscale>>
+					<<updatewarmthdescription>>
+					<<updateclothingshop>>
+					<<run updateMoment()>>
+				<</link>>
+				<br>
+				<<if $tryOn.value lt $money>>
+					<<sendItemsToDropdown>>
+					<<link "Buy clothes">><<buyTryOnClothes "wear">><<updateclothingshop>><</link>>
+					<br>
+					<<link "Buy clothes and send to wardrobe">>
+						<<buyTryOnClothes "wardrobe">>
+						<<updatesidebarmoney>>
+						<<updatesidebarimg>>
+						<<updatesidebardescription>>
+						<<updateallure>>
+						<<updatewarmthscale>>
+						<<updatewarmthdescription>>
+						<<updateclothingshop>>
+						<<run updateMoment()>>
+					<</link>>
+					<br>
+				<</if>>
+				<<link [[Leave with stolen clothes|Stolen Adult Shop Result]]>><<shopClothingFilterReset>><</link>>
+				<br>
+			<</if>>
+		<</if>>
+	<</if>>
+<</widget>>
+
+
+:: Stolen Adult Shop Result
+<<effects>>
+<<ShowUnderEquip "over">>
+<<ShowUnderEquip "normal">>
+<<if $skulduggery lt 90>>
+	Sirris watches the entrance out of the corner of <<nnpc_his "Sirris">> eye. There's no other way out, so you put everything back before leaving.
+	<<clothingReset>>
+<<else>>
+	<<set $rng to random(0,100)>>
+	<<if $crime gte 50000 or ($crime gte 40000 and $rng * 20 gte $skulduggery) or ($crime gte 25000 and $rng * 10 gte $skulduggery)
+	or ($crime gte 10000 and $rng * 5 gte $skulduggery)>>
+		<<generate1>><<person1>>
+		Sirris watches the entrance out of the corner of <<nnpc_his "Sirris">> eye, and as you try to stroll past, <<he>> stops you.
+		<br><br>
+		"So. I've been keeping an eye on you," <<he>> continues, "I'm letting you go this time, but you're going to be
+		banned from the premises for a while. Hopefully this will help you learn why you shouldn't steal merchandise."
+		<<if $adultShop.banCount lt 4>>
+			<<set $adultShop.ban to 7>>
+		<<elseif $adultShop.banCount lt 8>>
+			<<set $adultShop.ban to 10>>
+		<<else>>
+			<<set $adultShop.ban to 14>>
+		<</if>>
+		<<crime>>
+		<<set $adultShop.banCount++>>
+	<<else>>
+		Sirris watches the entrance out of the corner of <<nnpc_his "Sirris">> eye, but you leave without arousing suspicion.
+		<<crime>>
+	<</if>>
+	<<set _crime to ($tryOn.value / 100)>>
+	<<crimeup _crime>>
+<</if>>
+<br><br>
+<<link [[Next|Elk Street]]>><<set $tryOn.autoReset to true>><<clearadultshopvariables>><<endevent>><</link>>
+
+:: Adult Shop Guard
+<<effects>>
+<<generate1>><<person1>>
+Sirris watches the entrance out of the corner of <<nnpc_his "Sirris">> eye and spots you. <<He>> says a few words to someone you can't see, then approaches you.
+<br><br>
+"Sorry, can't let you pass," <<he>> says. "You still have <<if $adultShop.ban gt 1>><<number $adultShop.ban>> days<<else>>another day<</if>>
+till your ban is lifted."
+<br><br>
+
+<<link [[Next|Elk Street]]>><<endevent>><<clearadultshopvariables>><</link>>
+
+:: Adult Shop Sneak Guard
+<<effects>>
+You spot Sirris right by the entrance. It doesn't look like you'll be able to sneak past.
+
+<<link [[Next|Elk Street]]>><<clearadultshopvariables>><</link>>
+
+:: Adult Shop Night Guard Found
+<<effects>>
+<<generate1>><<person1>>
+<<set $adultShop.banCount++>>
+<<set $adultShop.spotted to false>>
+After making sure that you close the shop's door as quietly as you can, you turn around and are shocked to
+find a <<person>> face to face with you. <<He>> places a hand on your shoulder before you can even think of running.
+<br><br>
+"What do we have here? A little rat thief, trying to make off with some fuck toys?" <<He>> says with a
+disapproving expression, "I'll be informing the owners of this situation."
+<br><br>
+<<He>> pulls out <<his>> phone and seems to call to Sirris.
+<<if $adultShop.ban gt 0>>
+	<<set $adultShop.banExtension to true>>
+	<<set $adultShop.ban += 7>>
+	"Aha! So you already have a ban in place," <<he>> continues, "They do have a rather strict banning policy,
+	so it's going to be a good while before you're going to be able to shop here."
+<<else>>
+	<<if $adultShop.banCount lt 4>>
+		<<set $adultShop.ban to 7>>
+	<<elseif $adultShop.banCount lt 8>>
+		<<set $adultShop.ban to 10>>
+	<<else>>
+		<<set $adultShop.ban to 14>>
+	<</if>>
+	"That should do it," <<he>> continues, "Well. You won't be entering this establishment for quite some time.
+	Hopefully this will teach you a lesson."
+<</if>>
+<br><br>
+"Now follow me, I'll be escorting you away from here. You're lucky that I don't just take you straight to the pillory."
+
+<br><br>
+<<link [[Run|Adult Shop Night Guard Found Run]]>><</link>><<athleticsdifficulty 500>>
+<br>
+<<link [[Follow the guard|Adult Shop Night Guard Found Follow]]>><</link>>
+
+:: Adult Shop Night Guard Found Run
+<<effects>>
+You decide to run and hide.
+<<if $athleticsSuccess>>
+	The <<combatperson>> attempts to fully grab you, but you're able to avoid <<him>> just enough to get away.
+	You run through an alleyway with <<him>> shouting in the distance.
+	<br><br>
+	<<link [[Run|Elk Street]]>><<endevent>><<clearadultshopvariables>><</link>>
+<<else>>
+	However, before being able to get past the <<combatperson>>, <<he>> pulls on you hard enough for you to fall right on your ass.
+	<br><br>
+	"You'll regret trying to run from me," <<he>> says with a grin on <<his>> face. "There aren't any cameras here."
+	<br><br>
+	<<link [[Next|Adult Shop Night Guard Molestation]]>><<set $molestationstart to 1>><</link>>
+<</if>>
+
+:: Adult Shop Night Guard Found Follow
+<<effects>>
+<<He>> directs you towards the exit.
+<<if random(0,100) gte 50>>
+	"You know what?" <<he>> questions, "There aren't any cameras in this spot."
+	<br><br>
+	You look at <<him>> with a worried expression just before <<he>> grabs hold of you.
+	<br><br>
+	<<link [[Next|Adult Shop Night Guard Molestation]]>><<set $molestationstart to 1>><</link>>
+<<else>>
+	You walk down the street in silence and as you reach the corner of Elk street,
+	the <<combatperson>>> turns to you.
+	<br><br>
+	"I hope this is a good lesson for you," <<He>> smiles, "You should look for more honest ways of
+	earning money. Less trouble that way for everyone."
+	<br><br>
+	<<He>> flips you the bird as you leave.
+	<br><br>
+	<<link [[Leave|Elk Street]]>><<endevent>><<clearadultshopvariables>><</link>>
+<</if>>
+
+:: Adult Shop Night Guard Molestation
+
+<<if $molestationstart is 1>>
+	<<set $molestationstart to 0>>
+	<<controlloss>>
+	<<violence 1>>
+	<<neutral 1>>
+	<<molested>>
+
+	<<maninit>>
+	<<set $enemytrust -= 40>>
+	<<set $enemyanger += 40>>
+	<<set $NPCList[0].lefthand to "arms">>
+	<<set $leftarm to "grappled">>
+	<<set $rightarm to "grappled">>
+<</if>>
+
+<<effects>>
+<<effectsman>><<man>>
+
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Adult Shop Night Guard Molestation Finish]]>><</link>></span><<nexttext>>
+<<elseif $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Adult Shop Night Guard Molestation Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Adult Shop Night Guard Molestation]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Adult Shop Night Guard Molestation Finish
+
+<<if $enemyhealth lte 0>>
+	You're able to hurt <<him>> enough to get away. <<tearful>> you flee the shop.
+	<<clotheson>>
+	<<endcombat>>
+	<<link [[Escape|Elk Street]]>><<endevent>><<unset adultshopintro>><</link>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+	"Well, that was fun," <<he>> says, "But I think it's time for you to leave."
+	<<clotheson>>
+	<<endcombat>>
+	<<link [[Leave|Elk Street]]>><<endevent>><<unset adultshopintro>><</link>>
+<</if>>
+
+:: Adult Shop Register
+
+<<set $outside to 0>><<effects>><<set $lock to 250>>
+A standard cash register sits on a counter. It's locked tight.
+<br><br>
+<<if $skulduggery gte $lock>>
+	<span class="green">The lock looks easy to pick.</span>
+	<br><br>
+	<<lockpickicon>><<link [[Pick it (0:10)|Adult Shop Register Sneak]]>><<pass 10>><<crimeup 1>><</link>><<crime>>
+	<br>
+<<else>>
+	<span class="red">The lock looks beyond your ability to pick.</span><<skulduggeryrequired>>
+	<br><br>
+<</if>>
+<<ind>><<link [[Leave|Adult Shop]]>><</link>>
+<br>
+
+:: Adult Shop Register Sneak
+
+<<set $outside to 0>><<effects>><<set $lock to 200>>
+<<set $adultshoptheft to 1>>
+<<set $tip to random(4000, 10000)>>
+<<set $tip to Math.round($tip)>>
+You deftly open the cash register and count out the money inside.
+There's <<printmoney $tip>>.
+<br><br>
+<<if $skulduggery lt 300>>
+	<<skulduggeryskilluse>>
+<<else>>
+	<span class="blue">There's nothing more you can learn from locks this simple.</span>
+<</if>>
+<br><br>
+<<if $rng gte 86>>
+	<<skulshopevents>>
+<<else>>
+	<<link [[Take it|Adult Shop]]>><<set $money += 2*$tip>><<set $crime += ($tip / 100)>><</link>><<crime>>
+	<br>
+	<<link [[Leave it|Adult Shop]]>><</link>>
+	<br>
+<</if>>
+
+
+:: Adult Shop Toys
+
+<label><span class="lblue">Toys owned:</span></label>
+<label>
+	<<if $playerToys isnot undefined>>
+		<<set $_playertoys to []>>
+		<<for $_i = 0; $_i lt $playerToys.length; $_i++>>
+			<<set $_playertoys.push($playerToys[$_i].namecap)>>
+		<</for>>
+		<<listbox "$_playerownedtoy">>
+			<<optionsfrom $_playertoys>>
+		<</listbox>>
+	<<else>>
+		<<listbox "$_playerownedtoy">>
+			<<option "none">>
+		<</listbox>>
+	<</if>>
+</label>
+<br><br>
+<label><span class="green"><u>Toys available:</u></span></label>
+
+<head>
+<style>
+.grid-container {
+  display: grid;
+  grid-template-columns: auto;
+  grid-template-columns: 500px;
+  grid-template-rows: auto auto;
+  padding: 15px;
+}
+.grid-item {
+  background-color: rgba(0, 0, 0, 0);
+  border: 2px solid rgba(255, 255, 255, 0.8);
+  padding: 5px;
+  text-align: center;
+}
+</style>
+</head>
+
+<<if $playerToys is undefined or $playerToys.length lte 10>>
+<div class="grid-container">
+	<<set $shopItems to []>>
+	<<set $_shopindex to 0>>
+	<div class="grid-item">
+		<<set _dildo to clone(setup.sextoys[0])>>
+		<<set _icon to _dildo.icon>>
+		<<set $_index to random(0,_dildo.colour_options.length-1)>>
+		<<set _dildo.colour to "strapon-"+_dildo.colour_options[$_index]>>
+		<<set _ppcolor to "strapon-pink">>
+		<<set $shoppurchase to _dildo.name>>
+		<<set $shopItems.push(_dildo)>>
+		/*<img id="icon" @src="'img/misc/icon/sex toys/'+_icon" @style="'filter:brightness(140%) hue-rotate(300deg) saturate(150%)'" @class="_ppcolor"><<ind>><<print _dildo.namecap>> £<<print (_dildo.cost/100)>><<ind>>*/
+		<img id="icon" @src="'img/misc/icon/sex toys/'+_icon" @class="_ppcolor"><<ind>><<print _dildo.namecap>> £<<print (_dildo.cost/100)>><<ind>>
+		<<if $money gte _dildo.cost>>
+			<<link [[Buy|Buy Toy]]>>
+				<<pass 1>>
+				<<if $playerToys is undefined>><<set $playerToys to []>><</if>>
+				<<set $playerToys.push($shopItems[0])>>
+				<<set $shoppurchase to $shopItems[0]>>
+				<<set $money -=_dildo.cost>>
+			<</link>>
+		<</if>>
+	</div>
+	<div class="grid-item">
+		<<set _dildo to clone(setup.sextoys[1])>>
+		<<set _icon to _dildo.icon>>
+		<<set $_index to random(0,_dildo.colour_options.length-1)>>
+		<<set _dildo.colour to "strapon-"+_dildo.colour_options[$_index]>>
+		<<set _ppcolor to "strapon-pink">>
+		<<set $shoppurchase to _dildo.name>>
+		<<set $shopItems.push(_dildo)>>
+		<img id="icon" @src="'img/misc/icon/sex toys/'+_icon" @class="_ppcolor"><<ind>><<print _dildo.namecap>> £<<print (_dildo.cost/100)>><<ind>>
+		<<if $money gte _dildo.cost>>
+			<<link [[Buy|Buy Toy]]>>
+				<<pass 1>>
+				<<if $playerToys is undefined>><<set $playerToys to []>><</if>>
+				<<set $playerToys.push($shopItems[1])>>
+				<<set $shoppurchase to $shopItems[1]>>
+				<<set $money -=_dildo.cost>>
+			<</link>>
+		<</if>>
+	</div>
+	<div class="grid-item">
+		<<set _dildo to clone(setup.sextoys[2])>>
+		<<set _icon to _dildo.icon>>
+		<<set _ppcolor to "strapon-purple">>
+		<<set $shoppurchase to _dildo.name>>
+		<<set $shopItems.push(_dildo)>>
+		<img id="icon" @src="'img/misc/icon/sex toys/'+_icon" @style="'filter:brightness(180%) hue-rotate(290deg) saturate(160%)'" @class="_ppcolor"><<ind>><<print _dildo.namecap>> £<<print (_dildo.cost/100)>><<ind>>
+		<<if $money gte _dildo.cost>>
+			<<link [[Buy|Buy Toy]]>>
+				<<pass 1>>
+				<<if $playerToys is undefined>><<set $playerToys to []>><</if>>
+				<<set $playerToys.push($shopItems[2])>>
+				<<set $shoppurchase to $shopItems[2]>>
+				<<set $money -=_dildo.cost>>
+			<</link>>
+		<</if>>
+	</div>
+	<div class="grid-item">
+		<<set _dildo to clone(setup.sextoys[3])>>
+		<<set _icon to _dildo.icon>>
+		<<set _ppcolor to "strapon-purple">>
+		<<set $shoppurchase to _dildo.name>>
+		<<set $shopItems.push(_dildo)>>
+		<img id="icon" @src="'img/misc/icon/sex toys/'+_icon"><<ind>><<print _dildo.namecap>> £<<print (_dildo.cost/100)>><<ind>>
+		<<if $money gte _dildo.cost>>
+			<<link [[Buy|Buy Toy]]>>
+				<<pass 1>>
+				<<if $playerToys is undefined>><<set $playerToys to []>><</if>>
+				<<set $playerToys.push($shopItems[3])>>
+				<<set $shoppurchase to $shopItems[3]>>
+				<<set $money -=_dildo.cost>>
+			<</link>>
+		<</if>>
+	</div>
+</div>
+<<else>>
+	You have too many sex toys already.
+<</if>>
+<<if $money gte 8000 and ($loveInterest.primary is "Alex" or $loveInterest.secondary is "Alex") and $giftStrapo["Alex"] is undefined>>
+	<br>
+	<<link [[Buy Alex a strap-on: £80|$passage]]>>
+		<<giftStrapon "Alex" "held">>
+	<</link>>
+<</if>>
+<<if $money gte 8000 and ($loveInterest.primary is "Eden" or $loveInterest.secondary is "Eden") and $syndromeeden is 1 and $giftStrapon["Eden"] is undefined>>
+	<br>
+	<<link [[Buy Eden a strap-on: £80|$passage]]>>
+		<<giftStrapon "Eden" "held">>
+	<</link>>
+<</if>>
+<<if $money gte 8000 and ($loveInterest.primary is "Kylar" or $loveInterest.secondary is "Kylar") and $giftStrapon["Kylar"] is undefined>>
+	<br>
+	<<link [[Buy Kylar a strap-on: £80|$passage]]>>
+		<<giftStrapon "Kylar" "held">>
+	<</link>>
+<</if>>
+<<if  $money gte 8000 and ($loveInterest.primary is "Robin" or $loveInterest.secondary is "Robin") and $giftStrapon["Robin"] is undefined>>
+	<br>
+	<<link [[Buy Robin a strap-on: £80|$passage]]>>
+		<<giftStrapon "Robin" "held">>
+	<</link>>
+<</if>>
+<<if  $money gte 8000 and $sydneyromance is 1 and ($loveInterest.primary is "Sydney" or $loveInterest.secondary is "Sydney") and $adultshopstate is "sirris" and $giftStrapon["Sydney"] is undefined>>
+	<br>
+	<<link [[Buy Sydney a strap-on: £80|$passage]]>>
+		<<giftStrapon "Sydney" "held">>
+	<</link>>
+<</if>>
+<br><br>
+<<link [[Back|Adult Shop]]>><<pass 1>><<unset $shoppurchase>><</link>>
+
+:: Buy strap-on gift
+
+
+<<link [[Back|Adult Shop]]>><<pass 1>><</link>>
+
+:: Buy Toy
+You purchase the <<print $shoppurchase.name>>.
+<br><br>
+<<link [[Back|Adult Shop Toys]]>><<pass 1>><</link>>
\ No newline at end of file
diff --git a/game/overworld-town/loc-adultshop/widgets.twee b/game/overworld-town/loc-adultshop/widgets.twee
new file mode 100644
index 0000000000..7a9ce143aa
--- /dev/null
+++ b/game/overworld-town/loc-adultshop/widgets.twee
@@ -0,0 +1,608 @@
+:: Adult Shop Widgets [widget]
+
+<<widget "adultShopEvents">>
+    <<endevent>>
+    <<generate_adultshopcustomer>>
+
+    <<set _reactTone to either("scoffs","exclaims","laments quitely","facepalms","glares and rolls <<his>> eyes")>>
+    <<set _reactSpeech to ["That's not appropriate."]>>
+    <<set _reactPerson to "Sirris">>
+    <<set _reactTitle to "The science teacher">>
+
+    <<if $adultshopstate is "sydney" and random(0,1) is 1>>
+            <<set _reactSpeech to [
+                "Good Lord!",
+                "Can we help you with something?",
+                "That's not appropriate.",
+                "Hmm?",
+                "Hmm?",
+                "W-wha-. Please be mindful."
+            ]>>
+            <<set _reactTone to either("scoffs","exclaims","facepalms","laments under <<nnpc_his Sydney>> breath","offers","glares and rolls <<nnpc_his Sydney>> eyes","retreats behind the counter")>>
+            <<sydneyStatusCheck>>
+            <<if _sydneyStatus.includes("corrupt")>>
+                <<set _reactPerson to "Sydney">>
+                    <<set _reactSpeech to [
+                        "Now that's just swell,",
+                        "That's not appropriate.",
+                        "Fuck off, loser!",
+                        "Buy something or move on,",
+                        "Buy something or fuck off!",
+                        "Fuck's sake!",
+                        "Naughty! What ever will I do with you?",
+                        "Wow. Just wow,",
+                        "Tsk, tsk,",
+                        "Blow me!",
+                        "Do you need toy recommendations?"
+                    ]>>
+                <<set _reactTone to either("scoffs","exclaims","facepalms","laments","offers","glares and rolls <<nnpc_his Sydney>> eyes","jeers")>>
+            <</if>>
+            <<set _reactTitle to "the " + $NPCName[$NPCNameList.indexOf("Sydney")].title + ($NPCName[$NPCNameList.indexOf("Sydney")].gender is "m" ? " boy" : " girl")>>
+            <<set _reactTitle to "Sydney">>
+    <<set _reactPerson to "Sydney">>
+    <<else>>
+        <<set _reactSpeech.push(
+                "Naughty! What ever will I do with you?",
+                "You can do better than this, now come on,",
+                "Need a hand with something? Can I interest you in novelty butt plugs?",
+                "Oh, behave!",
+                "Good Lord!",
+                "Tsk, tsk,",
+                "Be mindful of other customers!"
+                )>>
+        <<set _reactTone to either("scoffs","exclaims","facepalms","chuckles","huffs with bemusement","sighs good-naturedly","offers","grins broadly","points with a dildo","waggles a finger")>>
+        <<set _reactPerson to "Sirris">>
+        <<set _reactTitle to "the " + $NPCName[$NPCNameList.indexOf("Sirris")].title>>
+        <<set _reactTitle to "Sirris">>
+    <</if>>
+    <<if $adultshopstate is "clerk">> /* unused testing content */
+        <<set _reactSpeech.push(
+                "Fuck off, loser!",
+                "Eat a dick, creep!",
+                "Buy something or fuck off!",
+                "Fuck my life!",
+                "Not today!"
+                )>>
+        <<set _reactTone to either("jeers","sneers","scoffs","exclaims","laments under <<his>> breath","facepalms","glares and rolls <<his>> eyes")>>
+        <<set _reactPerson to "the clerk <<personsimple>>">>
+    <</if>>
+
+    <<if $adultshopintro is 0 or ($adultshopintro is 1 and random(2) is 0)>>
+    <!-- Background event pool -->
+    <<switch random(0,12)>>
+        <<case 0 1>>
+            A $NPCList[0].fullDescription leers at you while holding up a dildo suggestively.
+            <<if $adultshopstate is "clerk">>
+                <<set _reactSpeech.push("Creep alert!")>>
+            <</if>>
+        <<case 2 3>>
+            A <<person1>><<person>> shuffles nervously and moans while rubbing a <<print either("dildo","DVD","magazine","butt plug")>> on <<his>> crotch.
+            <<NPCStatusCheck "Sydney">>
+            <<if $adultshopstate is "clerk">>
+                <<set _reactSpeech.push("Creep alert!","You better be paying for that.","You better be paying for that.","Buy it before you try it, creep.","Buy something or move along,")>>
+            <<elseif $adultshopstate is "sydney" and _sydneyStatus.includes("corrupt")>>
+                <<set _reactSpeech to ["That's not appropriate.","Creep alert!","You better be paying for that.","You better be paying for that.","Buy it before you try it, creep.","Buy something or fuck off!","Buy something or move along,"]>>
+            <</if>>
+        <<case 4 5>>
+            A <<person1>><<person>> <<print either("says","coos","<<laughs>>")>> to _reactTitle,
+            <<print either("\"hey honey, can you model this for me?\"",
+            "\"hey baby, care to show us how to use this device?\"",
+            "\"lookin' fine, baby!\" <<He>> wolf whistles.")>>
+            <<NPCStatusCheck "Sydney">>
+            <<if $adultshopstate is "clerk" or ($adultshopstate is "sydney" and _sydneyStatus.includes("corrupt"))>>
+                <<set _reactSpeech.push("Suck my ass, piss lord!","Creep alert!","Dream on, fucknut!")>>
+            <<elseif $adultshopstate is "sirris">>
+                <<set _reactSpeech.push("What's going on here then?")>>
+            <</if>>
+        <<case 6 7>>
+            A <<person1>><<person>> glances around furtively, holding <<his>> coat together. <<He>> runs up to _reactTitle and casts the coat wide open, exposing <<his>> genitals.
+            <<NPCStatusCheck "Sydney">>
+            <<if $adultshopstate is "clerk">>
+                <<set _reactSpeech.push("Suck my ass, piss lord!","Creep alert!")>>
+            <<elseif $adultshopstate is "sydney" and _sydneyStatus.includes("corrupt") and _reactPerson is "Sydney">>
+                <<set _reactSpeech.push("Creep alert!","Fuck's sake!","Banned, banned, fuck off! Banned!")>>
+                <<set _reactTone to "covers <<nnpc_his Sydney>> face and retreats behind the counter">>
+            <<elseif $adultshopstate is "sydney" and _reactPerson is "Sydney">>
+                <<set _reactSpeech.push("Oh not again!")>>
+                <<set _reactTone to "covers <<nnpc_his Sydney>> face and retreats behind the counter">>
+            <</if>>
+        <<case 8 9>>
+            /*A couple are comparing dildos. One of them smacks the other in the face playfully.*/
+            A couple are comparing dildos. The <<person1>><<person>> smacks the <<generate_adultshopcustomer 2 "couple">><<person2>><<person>> in the face playfully.
+        <<case 10 11>>
+            A <<person1>><<person>>, engrossed in a magazine, knocks over a shelf full of dildos.
+
+        <<case 12>>
+            <!-- Wraith? -->
+            <<rngWraith 1>>
+            <<if _wraithEvent is true>>
+                You hear a breathless voice whisper in your ear.
+                <br>
+                "<span class="wraith"><<print either("Wracked with your charm, I'm circled like prey","We are not dead. We have ever lived..","The fire in the sky is extinguised","What once was is now away. All longing and pain","Fall to my arms, hold their mesmeric sway","I'm a prayer for your loneliness","In the pool of dreams, the water darkens")>>.</span>"
+                <br>
+                Startled, you knock over a display of <<print either("lubricants","ball gags","onaholes","dildos")>>. Spinning about, there's no one behind you.
+                <<stress 12>><<ggstress>><<trauma 4>><<gtrauma>>
+                <br>
+            <<else>>
+                Something pokes your back. You spin around only to see a <<person1>><<person>> poking you with a dildo, grinning ear-to-ear.
+                <<stress 5>><<gstress>>
+            <</if>>
+            <<if $adultshopclerk or $adultshopstate is "sydney" and ($sydneyromance gte 1 or $loveInterest.primary is "Sydney" or $loveInterest.secondary is "Sydney")>>
+                <<set _reactSpeech to ["Are you okay?","Everything all right over there?", "Do you need a hand?"]>>
+                <<if $adultshopstate is "sydney" and $sydneyromance gte 1 and _reactPerson is "Sydney">>
+                    <<set _reactTone to either("inquires","exclaims","huffs with bemusement","sighs good-naturedly","offers","smiles warmly")>>
+                <</if>>
+            <</if>>
+
+    <</switch>>
+    <br>
+
+    <<set $_i to _reactSpeech.length-1>>
+    <<print "\""+_reactSpeech[random(0,$_i)] + "\"" + " "+_reactPerson+" " + _reactTone +".">>
+
+    <<else>>
+        <<generate_adultshopcustomer>>
+        <<if _reactPerson is "Sirris">>
+        <<switch random(0,8)>>
+        <<case 0>>
+            <<set $_topic to either("running your own business","pegging","various lubricant brands","butt plugs","hygiene","body paint","dildos","onaholes","various condom types","vibrators","condoms vs. diaphrams")>>
+            <<if random(1) is 0>>
+            _reactPerson discusses the merits of $_topic with a <<person1>><<person>>.
+            <<else>>
+            <<generate_adultshopcustomer 2 "partner">>
+            _reactPerson discusses the merits of $_topic with a <<person1>><<person>> and a <<person2>><<person>>.
+            <</if>>
+        <<case 1 2 3>>
+            _reactPerson works the till.
+        <<case 4 5>>
+            _reactPerson is showing customers various <<print either("dildos","strap-ons","butt plugs","lubricants","ball gags","latex outfits","chastity devices")>>.
+        <<case 6>>
+            <<generate_adultshopcustomer>><<generate_adultshopcustomer 2 "partner">>
+            _reactPerson discusses couples <<print either("strap-ons","roleplay","costumes","dildos","bondage wear")>> with a <<person1>><<person>> and a <<person2>><<person>>.
+        <<case 7>>
+            _reactPerson signs for a package.
+        <<case 8>>
+            _reactPerson pours through documents.
+        <</switch>>
+        <<else>>
+            <<switch random(0,7)>>
+            <<case 0 1 2>>
+                _reactPerson works the till.
+            <<case 3>>
+                _reactPerson diligently cleans the windows.
+            <<case 3>>
+                _reactPerson is stocking shelves.
+            <<case 4>>
+                _reactPerson is coming out of the stock room, pushing a dolly of stock.
+            <<case 5>>
+                _reactPerson pours over a clipboard.
+            <<case 6>>
+                <<NPCStatusCheck "Sydney">>
+                <<if !_sydneyStatus.includes("corrupt")>>
+                    _reactPerson dodges a handsy customer and retreats behind the counter.
+                <<else>>
+                    _reactPerson smacks the hands of a handsy customer and continues about <<nnpc_his "Sydney">> duties.
+                <</if>>
+            <<case 7>>
+                _reactPerson dusts the products.
+            <</switch>>
+        <</if>>
+    <</if>>
+<</widget>>
+
+<<widget "getadultshopstate">>
+    <<sydneySchedule>>
+    <<if $hour gte 21 or $weekday is 1 or ($weekday is 7 ? $hour lt 9 : $hour lt 16)>>
+        <<set $adultshopstate to "closed">>
+    <<elseif _sydney_location is "shop">>
+        <<set $adultshopstate to "sydney">>
+    <<else>>
+        <<set $adultshopstate to "sirris">>
+    <</if>>
+<</widget>>
+
+<<widget "generate_adultshopcustomer">>
+    /* Generates up to 3 random customers with descriptors unique to the store. Takes args[0] for more than 1 person */
+
+    <<set $_customertype to [{description:"vulgar",hp:220},{description:"shady",hp:220},{description:"shifty",hp:220},{description:"rotund",hp:250},{description:"slick-haired",hp:200},{description:"muscular",hp:275},{description:"senior",hp:175},{description:"flamboyant",hp:200},{description:"mouth-breathing",hp:200},{description:"creepy",hp:250},{description:"slender",hp:200},{description:"giggly",hp:200},{description:"boney",hp:175}]>>
+
+    <<generate1>>
+    <<if $NPCList[0].pronoun is "m">>
+        <<set $_customertype.push({description:"handsome",hp:200},{description:"rugged",hp:250},{description:"brutish",hp:275},{description:"foppish",hp:175},{description:"toned",hp:250})>>
+        <<set $NPCList[0].description to $_customertype[random(0,$_customertype.length-1)].description>>
+        <<set $NPCList[0].fullDescription to $NPCList[0].description + " man">>
+        <<set $NPCList[0].healthmax to $_customertype[random(0,$_customertype.length-1)].hp>>
+    <<else>>
+        <<set $_customertype.push({description:"pretty",hp:200},{description:"cute",hp:200},{description:"plush",hp:250},{description:"busty",hp:220},{description:"curvy",hp:220})>>
+        <<set $NPCList[0].description to $_customertype[random(0,$_customertype.length-1)].description>>
+        <<set $NPCList[0].fullDescription to $NPCList[0].description + " woman">>
+        <<set $NPCList[0].healthmax to $_customertype[random(0,$_customertype.length-1)].hp>>
+    <</if>>
+
+    <<if $args[0] and $args[0] is 2>>
+        <<if $args[1] isnot undefined>>
+            <<generatep2>>
+        <<else>>
+            <<generate2>>
+        <</if>>
+        <<set $_customertype to [{description:"vulgar",hp:220},{description:"shady",hp:220},{description:"shifty",hp:220},{description:"rotund",hp:250},{description:"slick-haired",hp:200},{description:"muscular",hp:275},{description:"senior",hp:175},{description:"flamboyant",hp:200},{description:"mouth-breathing",hp:200},{description:"creepy",hp:250},{description:"slender",hp:200},{description:"giggly",hp:200},{description:"boney",hp:175}]>>
+        /*<<set $_customerDescription to ["vulgar","shady","shifty","corpulent","greasy","muscular","elderly","flamboyant","mouth-breathing","creepy","slender","giggly","skeletal"]>>*/
+        <<set $_rng to random(0,$_customertype.length-1)>>
+        <<if $NPCList[1].pronoun is "m">>
+            <<set $_customertype.push({description:"handsome",hp:200},{description:"rugged",hp:250},{description:"brutish",hp:275},{description:"foppish",hp:175},{description:"toned",hp:250},{description:"cross-dressing",hp:175})>>
+            <<set $NPCList[0].description to $_customertype[$_rng].description>>
+            <<set $NPCList[0].fullDescription to $NPCList[0].description + " man">>
+            <<set $NPCList[0].healthmax to $_customertype[$_rng].hp>>
+        <<else>>
+            <<set $_customertype.push({description:"pretty",hp:200},{description:"cute",hp:200},{description:"plush",hp:250},{description:"busty",hp:220},{description:"curvy",hp:220})>>
+            <<set $NPCList[0].description to $_customertype[$_rng].description>>
+            <<set $NPCList[0].fullDescription to $NPCList[0].description + " woman">>
+            <<set $NPCList[0].healthmax to $_customertype[$_rng].hp>>
+        <</if>>
+    <<elseif $args[0] and $args[0] is 3>>
+        <<if $args[1] isnot undefined>>
+            <<generatep2>>
+        <<else>>
+            <<generate2>>
+        <</if>>
+        <<set $_customertype to [{description:"vulgar",hp:220},{description:"shady",hp:220},{description:"shifty",hp:220},{description:"rotund",hp:250},{description:"slick-haired",hp:200},{description:"muscular",hp:275},{description:"senior",hp:175},{description:"flamboyant",hp:200},{description:"mouth-breathing",hp:200},{description:"creepy",hp:250},{description:"slender",hp:200},{description:"giggly",hp:200},{description:"boney",hp:175}]>>
+        <<if $NPCList[1].pronoun is "m">>
+            <<set $_customertype.push({description:"handsome",hp:200},{description:"rugged",hp:250},{description:"brutish",hp:275},{description:"foppish",hp:175},{description:"toned",hp:250},{description:"cross-dressing",hp:175})>>
+            <<set $_rng to random(0,$_customertype.length-1)>>
+            <<set $NPCList[1].description to $_customertype[random(0,$_customertype.length-1)].description>>
+            <<set $NPCList[1].fullDescription to $NPCList[1].description + " man">>
+            <<set $NPCList[1].healthmax to $_customertype[random(0,$_customertype.length-1)].hp>>
+        <<else>>
+            <<set $_customertype.push({description:"pretty",hp:200},{description:"cute",hp:200},{description:"plush",hp:250},{description:"busty",hp:220},{description:"curvy",hp:220})>>
+            <<set $_rng to random(0,$_customertype.length-1)>>
+            <<set $NPCList[1].description to $_customertype[$_rng].description>>
+            <<set $NPCList[1].fullDescription to $NPCList[0].description + " woman">>
+            <<set $NPCList[1].healthmax to $_customertype[$_rng].hp>>
+        <</if>>
+        <<generate3>>
+        <<set $_customertype to [{description:"vulgar",hp:220},{description:"shady",hp:220},{description:"shifty",hp:220},{description:"rotund",hp:250},{description:"slick-haired",hp:200},{description:"muscular",hp:275},{description:"senior",hp:175},{description:"flamboyant",hp:200},{description:"mouth-breathing",hp:200},{description:"creepy",hp:250},{description:"slender",hp:200},{description:"giggly",hp:200},{description:"boney",hp:175}]>>
+        <<if $NPCList[2].pronoun is "m">>
+            <<set $_customertype.push({description:"handsome",hp:200},{description:"rugged",hp:250},{description:"brutish",hp:275},{description:"foppish",hp:175},{description:"toned",hp:250},{description:"cross-dressing",hp:175})>>
+            <<set $_rng to random(0,$_customertype.length-1)>>
+            <<set $NPCList[2].description to $_customertype[$_rng].description>>
+            <<set $NPCList[2].fullDescription to $NPCList[2].description + " man">>
+            <<set $NPCList[2].healthmax to $_customertype[$_rng].hp>>
+        <<else>>
+            <<set $_customertype.push({description:"pretty",hp:200},{description:"cute",hp:200},{description:"plush",hp:250},{description:"busty",hp:220},{description:"curvy",hp:220})>>
+            <<set $_rng to random(0,$_customertype.length-1)>>
+            <<set $NPCList[2].description to $_customertype[$_rng].description>>
+            <<set $NPCList[2].fullDescription to $NPCList[2].description + " woman">>
+            <<set $NPCList[2].healthmax to $_customertype[$_rng].hp>>
+        <</if>>
+    <</if>>
+<</widget>>
+
+<<widget "clearadultshopvariables">>
+    <<unset $adultshopintro>>
+    <<unset $sydneypout>>
+    <<endnpc>>
+<</widget>>
+
+<<widget "adultshopentryevent">>
+    /* Events which take you to a specific passage instead of the usual store */
+    <<cleareventpool>>
+    <<getadultshopstate>>
+
+    <<addinlineevent "entershop" 100>>
+        <<adultshopicon>><<link [[Adult Shop (0:01)|Adult Shop]]>><<pass 1>><</link>>
+    <</addinlineevent>>
+
+    <<if $adultshopstate is "sirris">>
+        <<addinlineevent "sirrisshopassist" 5>>
+            <<adultshopicon>><<link [[Adult Shop (0:01)|Sirris Shop Assistant 1]]>><<pass 1>><</link>>
+        <</addinlineevent>>
+    <</if>>
+
+    <<if $adultshopstate is "sydney" and ($NPCName[$NPCNameList.indexOf("Whitney")].state is "active" or $NPCName[$NPCNameList.indexOf("Whitney")].state is "rescued")>>
+        <<addinlineevent "whitneydildothief" 1>>
+            <<adultshopicon>><<link [[Adult Shop (0:01)|Whitney Dildo Thief]]>><<pass 1>><</link>>
+        <</addinlineevent>>
+    <</if>>
+
+    <<if $adultshopstate is "sydney" and $debug is 1>>
+        <<addinlineevent "sydneybackroominvitation" 1>>
+            <<adultshopicon>><<link [[Adult Shop (0:01)|Sydney Backroom Invitation]]>><<pass 1>><</link>>
+        <</addinlineevent>>
+    <</if>>
+
+    <<runeventpool>>
+
+<</widget>>
+
+<<widget "giveNPCsextoy">>
+    /* args[0] = NPC index */
+    /* args[1] = toy name */
+    /* possible toys: ("dildo","length of anal beads","riding crop","flog") */
+    <<if $args[0] isnot undefined and $args[1]>>
+        <<set $_temp to $args[0]>>
+        <<set $_temp2 to $args[1]>>
+        <<if random(0,1) is 0 and $NPCList[$_temp].lefthand isnot "hair">>
+            <<set $NPCList[$_temp].lefttool to $_temp2>>
+            <<set $NPCList[$_temp].lefthand to "dildo_reveal">>
+        <<else>>
+            <<set $NPCList[$_temp].righttool to $_temp2>>
+            <<set $NPCList[$_temp].righthand to "dildo_reveal">>
+        <</if>>
+    <</if>>
+<</widget>>
+
+<<widget "adultShopOpeningProgressJournal">>
+    <<set $_theshop to "The adult shop">>
+    <<set $_youcanhelp to "You can help Sydney here on Fridays after 4pm.">>
+    <<if $adultshopprogress isnot undefined>>
+        <br>
+        <<if $adultshopprogress lt 5>>
+            $_theshop is in great disrepair. $_youcanhelp
+        <<elseif $adultshopprogress lt 10>>
+            $_theshop is in disrepair. $_youcanhelp
+        <<elseif $adultshopprogress lt 20>>
+            $_theshop is starting to take shape. $_youcanhelp
+        <<elseif $adultshopprogress lt 30>>
+            $_theshop is halfway to completion. $_youcanhelp
+        <<elseif $adultshopprogress lt 40>>
+            $_theshop is nearing completion.
+        <<elseif $adultshopprogress lt 42>>
+            $_theshop's official opening is on Friday from 4pm.
+        <</if>>
+        <br>
+    <</if>>
+<</widget>>
+
+<<widget "adultshopclerkevents">>
+    <<generate_adultshopcustomer>>
+    <<cleareventpool>>
+    <<set _wage to 15>>
+
+    <<addinlineevent "uneventful" 3>>
+        The shift passes uneventfully. You earn <<moneyGain 15>><<glove "Sirris">><<npcincr Sirris love 1>>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "uneventful2" 1>>
+        <<set $_tip to _wage>>
+        <<if $awareness gte 300 and $promiscuity gte 74>>
+            You provide good advice to customers and converse with ease.<<control 1>><<stress -1>><<gcontrol>><<lstress>><<glove "Sirris">><<npcincr Sirris love 1>>
+            <<set $_tip to _wage+random(1,5)*(random(1,10)+($mathstrait / 4)+($allure/4000))>>
+        <<else>>
+            You manage the conversions, but find them uncomfortable nonetheless.<<stress -1>><<lstress>><<gtiredness>><<tiredness 2>>
+        <</if>>
+        <br><br>
+        You earn <<moneyGain $_tip>>.
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "vipnope" 0.1>>
+        A <<person1>><<person>> steps through the doors in expensive-looking business attire. As you make eye contact, <<he>> spins on <<his>> heels to stroll out the door while whistling a tune.
+        <br><br>
+        You earn <<moneyGain _wage>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "stockingshelves" 1>>
+        As you're stocking shelves
+        <<set $_randomitem to either("some dildos","some anal beads","some ball gags","anal eggs","butt plugs","a patch of lube","bottles of lube")>>
+        <<if $worn.feet.type.includes("heels")>>
+            you slip on $_randomitem, falling and spraining your ankle.<<gpain>><<gstress>><<pain 4>><<stress 5>>
+        <<elseif $worn.feet.type.includes("rugged")>>
+            you crush $_randomitem with your heavy footwear, but fortunately you keep your balance.<<gstress>><<stress 3>>
+        <<else>>
+            you almost slip on $_randomitem, but keep your footing.<<gstress>><<stress 3>>
+        <</if>>
+        <br><br>
+        You earn <<moneyGain _wage>>.<<glove "Sirris">><<npcincr Sirris love 1>><<gtiredness>><<tiredness 3>>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "outfitcompliment" 1>>
+        /*Customer compliments you on your costume/fetish wear/school uniform/formal outfit/compliments your service skills*/
+        <<generate_adultshopcustomer>><<person1>>
+        <<if $worn.upper.type.includes("fetish") or $worn.upper.type.includes("costume") or ($worn.upper.type.includes("school") and random(0,3) is 0)>>
+            "Nice outfit you're wearing. Very <<cute>>," a <<person>> says, leering at your $worn.upper.name and <<breasts>>.<<gstress>><<gcontrol>><<control 5>><<stress 3>>
+        <<elseif $worn.upper.type.includes("school")>>
+            "School <<girl>>, nice. I've got a lesson for you right here!" <<He>> <<laughs>>, grabbing <<his>> crotch.<<gstress>><<stress 5>>
+        <<else>>
+            <<switch random(0,2)>>
+            <<case 0 1>>
+                "You're doing a good job," a <<person>> compliments.<<lstress>><<gcontrol>><<control 5>><<stress -5>>
+            <<case 2>>
+                A <<person>> eyes up your chest.
+                <<stress 5>>
+                <<exposedcheck>>
+                <<if $player.perceived_breastsize lte 1>>
+                    "I'd lick those nipples, cutie," <<he>> remarks.<<gstress>><<stress 5>><<insecurity "breasts_tiny" 5>><<ginsecurity "breasts_tiny">>
+                <<elseif $player.perceived_breastsize lte 5>>
+                    "Cute lil' titties!" <<He>> exclaims, grinning broadly.<<gstress>><<stress 5>><<insecurity "breasts_small" 5>><<ginsecurity "breasts_small">>
+                <<elseif $player.perceived_breastsize lte 7>>
+                    "Get a load of those honkers," <<he>> jeers.<<gstress>><<stress 5>><<insecurity "breasts_big" 5>><<ginsecurity "breasts_big">>
+                <<else>>
+                    "Nice cow tits. I'd suck on them all day," <<he>> jeers. <<He>> purses <<his>> lips and makes a suckling motion.<<gstress>><<stress 5>><<insecurity "breasts_big" 5>><<ginsecurity "breasts_big">>
+                <</if>>
+            <</switch>>
+        <</if>>
+        <br><br>
+        <<set $_tip to _wage+random(1,5)*(random(1,10)+($mathstrait / 4)+($allure/4000))>>
+        <<He>> leaves you a tip. You earn <<moneyGain $_tip>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "customerthankyoutip" 1>>
+        /*tip is based on maths tip chance \$_shoptip*=random(1,10)+($mathstrait / 4)+($allure/4000)*/
+        <<generate_adultshopcustomer>><<person1>>
+        You spend some time with a <<person>>, helping <<him>> select a range of products. <<He>> thanks you profusely and tries to get handsy, but you manage to deflect <<him>>.<<gstress>><<gtiredness>>
+        <br><br>
+        <<set $_tip to _wage+random(1,5)*(random(1,10)+($mathstrait / 4)+($allure/4000))>>
+        To show <<his>> appreciation for your sevice, <<he>> leaves you a tip. You earn <<moneyGain $_tip>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "students" 1>>
+        /* Low school status event */
+        <<generatey1>><<generatey2>><<generatey3>>
+        A small group of students enter the store. You recognise them from school.
+        <br><br>
+        <<if $cool lte 80>>
+            "Hey, you're that freak from school," a <<person1>><<person>> jeers.
+            <br>
+            <<if $worn.upper.type.includes("school")>>
+                "<<pShe>>'s still in <<pher>> school uniform. What a poor orphan loser!" A <<person2>><<person>> <<print either("laughs","chortles","giggles")>>.
+            <<else>>
+                "You work in those ugly clothes? Weirdo."
+            <</if>>
+            <br>
+            "<<pShe>> looks <<cute>> like that," a <<person3>><<person>> interjects, looking you up and down.
+            <br>
+            "Shut up, <<pshes>> a freak!" a <<person2>><<person>> admonishes.
+            <br>
+            "Whatever, let's leave this weirdo's store," the <<person1>><<person>> says.<<gstress>><<gtrauma>><<trauma 5>><<stress 5>><<status -1>><<lcool>>
+            <br>
+        <<elseif $cool lt 140>>
+            "Do I know you from somewhere? School? Huh," a <<person1>><<person>> <<laughs>> <<if random(1) is 1>>to <<him>>self.<<else>>along with a <<person2>><<person>>.<</if>><<gstress>><<stress 5>>
+            <br>
+        <<else>>
+            "Looking good mate!" a <<person1>><<person>> compliments.<<lstress>><<ltrauma>><<gcontrol>><<stress -5>><<trauma -5>><<control 5>>
+            <br>
+        <</if>>
+        <br>
+        You earn <<moneyGain _wage>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<addinlineevent "gimp1" 1>>
+        <<generate_adultshopcustomer>><<generateyv2>>
+        A <<person2>><<person>> has downcast eyes as <<hes>> led around the shop on a leash. A <<person1>><<person>> takes delight in yanking the chain when the <<person2>><<personsimple>> isn't expecting it.
+        <br>
+        The <<person1>><<person>> purchases several <<print either("huge dildos","large dildos","dildos","whips and flogs","very large butt plugs and anal beads")>>. <<He>> grins at <<his>> companion lecherously as you complete the sale.
+        <<if $awareness gte 300>>
+            While the <<person2>><<personsimple>>'s eyes remain downcast throughout the transaction, you can't help but notice <<he>> trembles in sexual ecstacy.
+        <<else>>
+            The <<person2>><<personsimple>>'s hollow eyes remain downcast throughout the transaction.
+        <</if>>
+        <br><br>
+        <<set $_tip to _wage+random(1,5)*(random(1,10)+($mathstrait / 4)+($allure/4000))>>
+        <<person1>><<He>> leaves you a tip. You earn <<moneyGain $_tip>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+        <br><br>
+        <<link [[Return|Adult Shop]]>><</link>>
+    <</addinlineevent>>
+
+    <<if $cool lt 80 or $debug is 1>>
+        /* school status event */
+        <<addinlineevent "studentbully" 0.1>>
+            <<endevent>>
+            <<generatey1>><<person1>>
+            A <<person>> motions you over.
+            <br><br>
+            "I recognise you from class. You're working in a sex shop!" <<He>> laughs in your face. "Wait 'til the others hear about this! Unless..."
+            <<He>> trails off as <<he>> eyes you up and down.
+            <br><br>
+            <<if $promiscuity gte 55>>
+                <<link [[Offer your body|Adult Shop School Bully Offer Your Body]]>><<stress 12>><<trauma 12>><</link>><<promiscuous4>><<ggstress>><<ggtrauma>>
+				<br>
+            <</if>>
+            <<if $submissive lte 850>>
+                <<link [[Demand they leave|Adult Shop School Bully Assertive]]>><<status -15>><<stress 5>><<control 5>><</link>><<llcool>><<gstress>><<gcontrol>>
+                <br>
+            <</if>>
+            <<link [[Endure|Adult Shop School Bully Endure]]>><<status -5>><<stress 5>><<trauma 5>><</link>><<lcool>><<gstress>><<gtrauma>>
+
+        <</addinlineevent>>
+    <</if>>
+
+    <<if $NPCName[$NPCNameList.indexOf("Whitney")].state isnot "dungeon" and $whitneyromance gte 1 and !$adultShopWhitney and $adultshopstate isnot "sydney" and $NPCName[$NPCNameList.indexOf("Whitney")].dom gte 10>>
+        <<addinlineevent "whitneytoysex" 0.1>>
+            /*Whitney arm locks you, forces you outside, spanks you with a flog.*/
+            <<set $adultShopWhitney to true>> /* this event will only happen once a week */
+            <<npc "Whitney">>
+            As you're leaning over stocking shelves, a hand twists your arm behind your back. The faint scent of cigarettes fills your nostrils.
+            <br><br>
+            "Hey, <<slut>>," Whitney jeers, licking your ear. You feel a blunt object poke your <<bottom>>.<<pain 3>><<gpain>>
+            <<if $NPCName[$NPCNameList.indexOf("Whitney")].dom gte 15>>
+                "You're coming with me."
+            <<elseif $NPCName[$NPCNameList.indexOf("Whitney")].dom gte 10 and $NPCName[$NPCNameList.indexOf("Whitney")].love gte 20>>
+                /*"Why don't you come along and let me use this on you?"*/
+                "Why don't you be a good slut and come along?"
+            <<else>>
+                "Be a good <<bitch>> and come with me."
+            <</if>>
+            <br>
+            <br>
+            <<link [[Go with Whitney|Adult Shop Whitney Spank Agree]]>><</link>><<ggdom "Whitney">><<gglove "Whitney">><<llove "Sirris">>
+            <br>
+            <<link [[Refuse|Adult Shop Whitney Spank Refuse]]>><</link>><<lldom "Whitney">><<lllove "Whitney">>
+        <</addinlineevent>>
+    <</if>>
+
+    <<if $adultshopstate is "sydney">>
+        <<addevent "sydneyEvent1AnalBeads" 0.1>>
+        <<addevent "sydneyEvent2CuffedSydney" 5>>
+        <<addevent "sydneyEvent3HumblePeddlerofHonestWares" 0.1>>
+
+        <<addinlineevent "whitneydildothief" 0.1>>
+            <<endevent>>
+            As you step into the store you hear Sydney yelling. "Hey, put that down and get out of here!"
+            <br><br>
+            You turn to see Whitney flash you a rakish grin as <<nnpc_he Whitney>> shoves past with a hand full of dildos.
+            <br><br>
+            <<link [[Approach Sydney|Adult Shop Dildo Thief Approach Sydney]]>><<set $phase to 0>><</link>>
+            <<if $submissive lte 850 or $debug is 1>>
+                <br>
+                <<link [[Chase Whitney|Adult Shop Dildo Thief Chase 1]]>><</link>>
+            <</if>>
+        <</addinlineevent>>
+    <</if>>
+
+    <<if $weekday is 7 or $weekday is 6>>
+        <<addinlineevent "adultshopleighton" 0.1>>
+            Leighton walks into the store.
+			<<npc Leighton>><<person1>>
+			You think <<he>> recognises you but <<he>> simply busies himself browsing the <<print either("magazines","videos","lubricants")>>. <<He>> waits until Sirris is at the counter before making <<his>> purchase.
+            <br><br>
+            The rest of your shift is uneventful. You earn <<moneyGain 15>>.<<npcincr Sirris love 1>><<glove "Sirris">>
+            <br><br>
+            <<link [[Return|Adult Shop]]>><</link>>
+        <</addinlineevent>>
+    <</if>>
+
+    <<addinlineevent "adultshopdildolesson" 0.5>>
+        <<generate_adultshopcustomer>><<person1>>
+        A <<person>> approaches the counter with a handful of dildos. "Hey <<girl>>. I haven't used one of these things before. I need a demonstration."
+        <br><br>
+        <<if $promiscuity gte 35 and $awareness gte 200>>
+            <<link [[Offer to show them privately|Adult Shop Dildo Lesson Seduction]]>><<set $seductiondifficulty to 8000>><</link>><<seductiondifficulty>>
+            <br>
+        <</if>>
+		<<if $submissive lte 500>>
+			<<link [[Get angry|Adult Shop Dildo Lesson Refuse]]>><<set $phase to 1>><<def 1>><<trauma -6>><<stress -6>><<npcincr Sirris love -5>><</link>><<defianttext>><<ltrauma>><<lstress>><<llove "Sirris">>
+		<</if>>
+        <<link [[Deflect|Adult Shop Dildo Lesson Refuse]]>><<set $phase to 0>><</link>>
+		<br>
+
+    <</addinlineevent>>
+
+    /* Event ideas: */
+    /* You help courier with packages, get gangraped */
+    /* High rape fame event */
+    /* Model fame event? */
+
+    <<runeventpool>>
+<</widget>>
+
+<<widget "passoutadultshop">>
+/*ToDo: Pregnancy, remove $pregnancyTesting to properly enable*/
+    <<if $sexStats.vagina.pregnancy.waterBreaking is true and $pregnancyTesting>>
+        <<pregnancyWatersBrokenPassout "adultShop">>
+    <<else>>
+        <<link [[Everything fades to black...|Adult Shop Passout Bondage]]>><</link>>
+    <</if>>
+<</widget>>
\ No newline at end of file
diff --git a/game/overworld-town/loc-home/main.twee b/game/overworld-town/loc-home/main.twee
index 35a29f89f4..8f3b477f3e 100644
--- a/game/overworld-town/loc-home/main.twee
+++ b/game/overworld-town/loc-home/main.twee
@@ -87,7 +87,11 @@ You are in your bedroom.
 		<br>
 		<<link [[Test new features for DoL (0:15)|Bedroom]]>><<pass 15>><</link>>
 		<br>
-		<span class="green">Debugging ends here</span>
+		<<link [[Debug Strap-on|Kylar Strap-on Test]]>><</link>>
+		<br>
+		<<link [[Debug Adult Shop stuff|Adult Shop Debug Zone]]>><</link>>
+		<br>
+		<span class="green">Debugging end here</span>
 		<br><br>
 	<</if>>
 	Your bed takes up most of the room.
@@ -2881,3 +2885,55 @@ The pair blame each other for the mishap, and spend a few moments arguing before
 	<<endcombat>>
 	<<link [[Next|Harvest Street]]>><<set $eventskip to 1>><</link>>
 <</if>>
+
+:: Kylar Strap-on Test
+<<npc Kylar>>
+<<npcstrapon 0>>
+
+<<link [[Go with Kylar|Kylar Strap-on Sex]]>><<set $sexstart to 1>><</link>>
+
+
+:: Kylar Strap-on Sex
+<<NPCStatusCheck "Kylar">>
+<<if $sexstart is 1>>
+	<<set $sexstart to 0>>
+	<<controlloss>>
+	<<violence 1>>
+	<<neutral 1>>
+	<<molested>>
+	<<maninit>><<set $kylar.raped += 1>>
+	<<if $daystate isnot "night">><<enable_rescue>><</if>>
+	Kylar pushes you toward the alley, <<his>> dildo poking the small of your back. You turn another corner and find a mattress already lying there.
+	<<if _kylarStatus.includes("MaxRage")>>
+		<<set $NPCList[0].righthand to "none">>
+		<<He>> shoves you on top of it, leaps on you and holds the dildo to your neck.
+	<<else>>
+		<<He>> shoves you on top of it, discards the dildo and leaps on you.
+	<</if>>
+	<br><br>
+<</if>>
+<<effects>>
+<<effectsman>><<man>>
+<<if $NPCList[0].righthand is "none">>
+	<<He>> holds a dildo to your throat. <<if $enemyarousal gte ($enemyarousalmax / 3)>>It trembles in <<his>> grip.<</if>><<gpain>><<violence 5>><br><br>
+<</if>>
+<<stateman>>
+<br><br>
+<<actionsman>>
+<<if $enemyhealth lte 0>>
+	<span id="next"><<link [[Next|Bedroom]]>><</link>></span><<nexttext>>
+<<elseif $enemyarousal gte $enemyarousalmax>>
+	<span id="next"><<link [[Next|Bedroom]]>><</link>></span><<nexttext>>
+<<elseif $alarm is 1 and $rescue is 1>>
+	<span id="next"><<link [[Next|Bedroom]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Kylar Strap-on Sex]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Kylar Strap-on Finish
+<<ejaculation>>
+<<clotheson>>
+<<endcombat>>
+<br>
+
+<<link [[Next|Bedroom]]>><</link>></span>
\ No newline at end of file
diff --git a/game/overworld-town/loc-shop/clothing.twee b/game/overworld-town/loc-shop/clothing.twee
index c9e31230cb..033bcb199a 100644
--- a/game/overworld-town/loc-shop/clothing.twee
+++ b/game/overworld-town/loc-shop/clothing.twee
@@ -89,6 +89,9 @@
 			<br>
 			<<clothingcategoryicon "feet">>
 			<<link "View Shoes">><<replace "#clothingShop-div">><<FeetShop>><</replace>><</link>>
+			/*<br>
+			*<<clothingcategoryicon "strapon">> <!-- disable for now-->
+			*<<link "View Genital wear">><<replace "#clothingShop-div">><<GenitalShop>><</replace>><</link>>*/
 			<br><br>
 			<<run linkifyDivs('.button-back-to-shop')>>
 
diff --git a/game/overworld-town/loc-shop/clothingCategories-v2.twee b/game/overworld-town/loc-shop/clothingCategories-v2.twee
index 162ce14eed..5f994037d8 100644
--- a/game/overworld-town/loc-shop/clothingCategories-v2.twee
+++ b/game/overworld-town/loc-shop/clothingCategories-v2.twee
@@ -257,6 +257,24 @@
 	</div>
 <</widget>>
 
+<<widget "GenitalShop">>
+	<<set $outside to 0>><<effects>>
+
+	<<if $clothes_choice and $clothes_choice_previous>>
+		<<if $clothes_choice is $clothes_choice_previous>>
+			<<shopbuyv2 "genitals">>
+		<<else>>
+			<<shopbuyv2 "genitals" "reset">>
+		<</if>>
+	<<else>>
+		<<shopbuyv2 "genitals" "reset">>
+	<</if>>
+
+	<div id="clothes-list" class="clothes-list">
+		<<clothingShopv2 $shopName "genitals">>
+	</div>
+<</widget>>
+
 <!-- Renders block of buttons for switching category -->
 <<widget "shopCategoryTabs">>
 	<div id="shopCategories" class="shop-category-tabs no-numberify">
@@ -343,6 +361,18 @@
 				<</if>>
 				<<link "">><<set $shopPage = 0>><<unset $clothes_choice>><<set _shopNameFilter to ''>><<replace "#clothingShop-div">><<UnderBottomShop>><</replace>><</link>>
 			</div>
+			<<if $location is "adult_shop">>
+				<<set _active = $args[0] == "genitals" ? "active" : "">>
+				/* Left here for future expansion */
+				/*<div @class="'div-link category-tab ' + _active">
+					<<if $images is 1>>
+						<<clothingcategoryicon "genitals">>
+					<<else>>
+						<div class="category-icon-alt">Fe</div>
+					<</if>>
+					<<link "">><<set $shopPage = 0>><<unset $clothes_choice>><<replace "#clothingShop-div">><<GenitalShop>><</replace>><</link>>
+				</div>*/
+			<</if>>
 		</div>
 		<div class="category-group">
 			<<set _active = $args[0] == "head" ? "active" : "">>
diff --git a/game/overworld-town/loc-shop/stolenClothes.twee b/game/overworld-town/loc-shop/stolenClothes.twee
index da8c72bcef..9333db3b5e 100644
--- a/game/overworld-town/loc-shop/stolenClothes.twee
+++ b/game/overworld-town/loc-shop/stolenClothes.twee
@@ -164,7 +164,7 @@ You decide to run and hide.
 	<<link [[Roof|Commercial rooftops]]>><<endevent>><</link>>
 <<elseif $enemyarousal gte $enemyarousalmax>>
 	<<ejaculation>>
-	"Well, that was fun," <<he>> says, "But I it's time for you to leave."
+	"Well, that was fun," <<he>> says, "But I think it's time for you to leave."
 	<<clotheson>>
 	<<endcombat>>
 	<<link [[Leave|High Street]]>><<endevent>><</link>>
diff --git a/game/overworld-town/loc-shop/widgets.twee b/game/overworld-town/loc-shop/widgets.twee
index d61e344429..c7d4d5345b 100644
--- a/game/overworld-town/loc-shop/widgets.twee
+++ b/game/overworld-town/loc-shop/widgets.twee
@@ -475,6 +475,8 @@ Forth argument - item index*/
 		Prison - Clothes from the local prison.
 	<<case "sticky">>
 		Sticky - Stuck to your skin.
+	<<case "strap-on">>
+		Fits around your waist, can be used to penetrate.
 	<<case "covered">>
 		Covered - Protects your mouth.
 	<<default>>
diff --git a/game/overworld-town/loc-street/elk.twee b/game/overworld-town/loc-street/elk.twee
index 973e576804..e75493bb69 100644
--- a/game/overworld-town/loc-street/elk.twee
+++ b/game/overworld-town/loc-street/elk.twee
@@ -47,16 +47,28 @@ You are on Elk Street. There are roads leading to several large industrial compl
 			<span class="blue">The compound is prowled by guards.</span> They'll be less agitated tomorrow.
 			<br>
 		<<elseif $compoundstate is 0>>
-			<<link [[Sneak into the compound|Elk Compound]]>><<crimeup 1>><</link>><<crime>>
+			<<ind>><<link [[Sneak into the compound|Elk Compound]]>><<crimeup 1>><</link>><<crime>>
 			<br>
 			<<if $farm_stage gte 9 and $phials_held gte 1 and $exposed lte 0>>
-				<<link [[Approach the compound|Elk Compound Approach]]>><</link>>
+				<<ind>><<link [[Approach the compound|Elk Compound Approach]]>><</link>>
 				<br>
 			<</if>>
 		<<elseif ($compoundcard is 1 or $farm_stage gte 9) and $exposed lte 0>>
-			<<link [[Approach strange compound|Elk Compound Approach]]>><</link>>
+			<<ind>><<link [[Approach strange compound|Elk Compound Approach]]>><</link>>
 			<br>
 		<</if>>
+		<<if $adultshopunlocked is undefined and $adultshopprogress isnot undefined and $adultshopprogress lt 30 or ($adultshopprogress isnot undefined and $adultshopprogress lt 30 and $promiscuity lt 300 and $awareness lt 200)>>
+			<<ind>><<link [[Dilapidated Shop (0:01)|Dilapidated Shop]]>><<pass 1>><</link>>
+		<<elseif $promiscuity lt 300 and $awareness lt 200>>
+			<<ind>><<link [[Shady shop (0:01)|Shady Shop]]>><<pass 1>><</link>>
+		<<elseif $exposed lte 0>>
+			<<if $adultShop.ban gt 0>>
+				<<adultshopicon>><<link [[Adult Shop (0:01)|Adult Shop Guard]]>><<pass 1>><</link>>
+			<<else>>
+				<<adultshopentryevent>>
+			<</if>>
+		<</if>>
+		<br>
 		<br>
 		<<if $exposed gte 1 and $daystate isnot "night">>
 		<<else>>
diff --git a/game/overworld-town/loc-strip club/events.twee b/game/overworld-town/loc-strip club/events.twee
index d1812ae2b1..2a91eea3bc 100644
--- a/game/overworld-town/loc-strip club/events.twee	
+++ b/game/overworld-town/loc-strip club/events.twee	
@@ -376,7 +376,7 @@ The onlookers cheer and shout, so loud that security take notice.
 You walk around the counter and approach the <<person>> and onlookers. <<Hes>> stood well away from the bar now, surrounded by leering and groping clientele. You sneak up behind <<him>>, until you're close, then lunge. You grasp both <<his>> arms in yours, pulling them away from <<his>> body and <span class="lewd">baring everything to the crowd.</span><<promiscuity4>>
 
 The <<person>> feigns a struggle as the onlookers feast on <<his>> exposed body. The <<person2>><<person>> seizes the opportunity and
-<<if $NPCList[0].penis isnot "none" and !$NPCList[0].penisdesc.includes("strap-on")>>
+<<if $NPCList[0].penis isnot "none" and !npcHasStrapon(0)>>
 	cups the <<person1>><<persons>> testes.
 <<else>>
 	grabs the <<person1>><<persons>> $NPCList[0].breastsdesc.
diff --git a/game/overworld-town/loc-temple/main.twee b/game/overworld-town/loc-temple/main.twee
index b1e7ffa925..a65c596a62 100644
--- a/game/overworld-town/loc-temple/main.twee
+++ b/game/overworld-town/loc-temple/main.twee
@@ -70,6 +70,48 @@ You are in the main hall of the temple. Stone walls and pillars tower into darkn
 
 <<elseif $temple_event is 1 and $daystate isnot "night" and $exposed lte 0>><<set $temple_event to 0>>
 	<<eventstemple>>
+
+<<elseif _sydneyTemple and $sydneyAnalRosary>>
+	<<npc Sydney>><<person1>>
+	<<unset $sydneyAnalRosary>>
+	<<if _sydneyStatus.includes("pure")>>
+		You spot Sydney peeking out from behind a pillar, fiddling with something in <<his>> hands. <span class="lewd">It's a string of anal beads.</span> The same one from the store.
+		<br><br>
+
+		<<He>> gasps when you approach <<him>>. <<He>> breathes a sigh of relief once <<he>> realises it's you. "I can't," <<he>> squeaks. "I can't do it. I thought I could, but it's too... too..."
+		<br>
+		<<He>> trails off into unintelligible stammering, shaking <<his>> head frantically. <<He>> shoves the beads in your hands, then scurries away, <<his>> gaze fixed to the floor.
+		<br><br>
+
+		You're left holding a string of anal beads on holy grounds. Unsure what to do, you leave them on the ground for some hapless <<monk>> to deal with.
+		<br><br>
+
+		<<link [[Next|Temple]]>><<endevent>><</link>>
+		<br>
+	<<else>>
+		<<if _sydneyStatus.includes("corrupt")>>
+			You spot Sydney running towards you, beaming from ear to ear.
+		<<else>>
+			You notice Sydney shuffling towards you. <<His>> face is red.
+		<</if>>
+		<span class="lewd">Around <<his>> neck lies a string of anal beads.</span> The same one from the store.
+		<br><br>
+
+		<<if _sydneyStatus.includes("corrupt")>>
+			<<He>> holds a hand over <<his>> mouth to conceal <<his>> laughter. "You should see your face! You didn't think I'd do it, did you?"
+		<<else>>
+			<<He>> smiles nervously, struggling to meet your gaze. "W-well? I said I'd do it, and I did."
+		<</if>>
+		<br><br>
+
+		<<link [["Encourage " + $NPCList[0].pronouns.him " to flaunt it"|Temple Sydney Rosary]]>><<set $phase to 2>><<grace -3 monk>><<npcincr Sydney purity -5>><</link>><<llgrace monk>><<llspurity>><<sydneyWarning>>
+		<br>
+		<<link [["Commend " + $NPCList[0].pronouns.him|Temple Sydney Rosary]]>><<set $phase to 1>><<npcincr Sydney love 1>><<npcincr Sydney purity -1>><</link>><<glove>><<lspurity>>
+		<br>
+		<<link [["Scold " + $NPCList[0].pronouns.him|Temple Sydney Rosary]]>><<set $phase to 0>><<npcincr Sydney purity 3>><</link>><<ggspurity>><<sydneyWarning>>
+		<br>
+	<</if>>
+
 <<elseif $dance_job_intro and $jordan_ritual_dance is undefined and ($grace gte 80 and $temple_rank is "initiate" or $temple_rank is "monk" or $temple_rank is "priest")>>
 	<<npc Jordan>><<person1>>
 	"My child," says a voice from the side. It's Jordan, looking more haggard than usual. A rogue strand of hair falls between <<his>> eyes. "I must ask a favour. <span class="gold">Do you know Charlie?</span> Forgive me my inquiry, but you have something of a reputation as a dancer.
diff --git a/game/overworld-town/special-avery/main.twee b/game/overworld-town/special-avery/main.twee
index f481522282..4f997222b9 100644
--- a/game/overworld-town/special-avery/main.twee
+++ b/game/overworld-town/special-avery/main.twee
@@ -3675,8 +3675,8 @@ They're whispering amongst themselves, but the distance makes it hard to hear ex
 	"How can I refuse such a devoted gesture?" <<he>> says, "But you're embarrassing yourself. There are better ways to show how sorry you are. Come with me."
 	<<He>> takes your hand and leads you outside. <<takeHandholdingVirginity "Avery" "romantic">>
 	<<endevent>><<npc Avery>><<person1>>
-	<br><br>
-	<<link [[Next|Avery Dismissal Sex]]>><<set $sexstart to 1>><</link>>
+
+	<<link[[Next|Avery Dismissal Sex]]>><<set $sexstart to 1>><</link>>
 	<br>
 <</if>>
 
diff --git a/game/overworld-town/special-kylar/main.twee b/game/overworld-town/special-kylar/main.twee
index 4b263d15d4..44e2bd6a24 100644
--- a/game/overworld-town/special-kylar/main.twee
+++ b/game/overworld-town/special-kylar/main.twee
@@ -107,6 +107,10 @@
 		<<link [[Tell Kylar about the orphanage loft|Kylar Loft]]>><</link>>
 		<br>
 	<</if>>
+	<<if $giftStrapon["Kylar"] is "held" and ($loveInterest.primary is "Kylar" or $loveInterest.secondary is "Kylar" or $loveInterest.tertiary is "Kylar")>>
+		<<link [[Gift Kylar a strap-on|Kylar Gift Strap-on]]>><</link>><<glove>><<lksuspicion>><<gglust>><<lstress>>
+		<br>
+	<</if>>
 
 	<<if random(1, 100) gte 61 and _kylarStatus.includes("Love") and $kylar_action isnot "stop">>
 		<<link [[Leave|Kylar Stop]]>><</link>>
diff --git a/game/overworld-town/special-robin/main.twee b/game/overworld-town/special-robin/main.twee
index e9f25cc00a..51e5f1f780 100644
--- a/game/overworld-town/special-robin/main.twee
+++ b/game/overworld-town/special-robin/main.twee
@@ -2275,7 +2275,7 @@ Robin leans on to you, panting, beads of sweat dripping down <<his>> naked body.
 <<He>> blushes and looks away. "Y-yes," <<he>> says. "You can stay."
 <br><br>
 
-<<strip>>
+<<strip "strap-on">>
 
 <<He>> turns off the light and you hear <<him>> shuffle around. Probably undressing. You undress yourself, and climb into the bed. <<He>> climbs in beside you.
 <br><br>
diff --git a/game/overworld-town/special-robin/walk.twee b/game/overworld-town/special-robin/walk.twee
index 6a0b3ca524..6e0c761006 100644
--- a/game/overworld-town/special-robin/walk.twee
+++ b/game/overworld-town/special-robin/walk.twee
@@ -431,7 +431,7 @@ You don't think Robin's face could get any more red.
 <<set $outside to 0>><<set $location to "town">><<effects>>
 Robin removes your clothing with trembling fingers. <<He>> tosses your clothing aside.
 <br><br>
-<<strip>>
+<<strip "strap-on">>
 <<link [[Next|Robin Bush Sex]]>><<set $sexstart to 1>><</link>>
 <br>
 
@@ -439,7 +439,7 @@ Robin removes your clothing with trembling fingers. <<He>> tosses your clothing
 
 You strip yourself naked. You barely have enough time to remove the last piece before <<hes>> on top of you.
 <br><br>
-<<strip>>
+<<strip "strap-on">>
 <<link [[Next|Robin Bush Sex]]>><<set $sexstart to 1>><</link>>
 <br>
 
diff --git a/game/overworld-town/special-robin/widgets.twee b/game/overworld-town/special-robin/widgets.twee
index 3ad853f204..031b5e5c0d 100644
--- a/game/overworld-town/special-robin/widgets.twee
+++ b/game/overworld-town/special-robin/widgets.twee
@@ -313,6 +313,10 @@
 			<<link [[Share milkshake (0:20)|Robin Share Milkshake]]>> <<set $milkshake -= 1>><<stress -10>> <</link>><<lstress>><<gglove>>
 			<br>
 		<</if>>
+		<<if $giftStrapon["Robin"] isnot undefined and $giftStrapon["Robin"] is "held">>
+			<<link [[Gift Robin a strap-on|Robin Gift Strap-on]]>><</link>>
+			<br>
+		<</if>>
 		<br>
 		<<robinbully>>
 		<<link [[Leave|Orphanage]]>><<set $robinhugging to 0>><<endevent>><</link>>
diff --git a/game/overworld-town/special-sydney/widgets.twee b/game/overworld-town/special-sydney/widgets.twee
index 8aa31ee980..59ac25a0b5 100644
--- a/game/overworld-town/special-sydney/widgets.twee
+++ b/game/overworld-town/special-sydney/widgets.twee
@@ -515,6 +515,19 @@
 	<</if>>
 <<elseif $weekday is 6 and $hour gte 16 and $hour lt 20>>
 	<<set _sydney_location to "shop">>
+<<elseif $sydneySeen isnot undefined and $NPCName[$NPCNameList.indexOf("Sydney")].corruption gt 10 and $hour gte 16 and $hour lt 20>>
+	<<set $_corruption to $NPCName[$NPCNameList.indexOf("Sydney")].corruption>>
+	<<if $_corruption gt 10 and $weekday is 4>>
+		<<set _sydney_location to "shop">>
+	<<elseif $_corruption gt 20 and $weekday is 5>>
+		<<set _sydney_location to "shop">>
+	<<elseif $_corruption gt 30 and $weekday is 3>>
+		<<set _sydney_location to "shop">>
+	<<elseif $_corruption gt 40 and $weekday is 2>>
+		<<set _sydney_location to "shop">>
+	<<else>>
+		<<set _sydney_location to "temple">>
+	<</if>>
 <<elseif $schoolterm is 0>>
 	<<if $hour gte 6 and $hour lte 22>>
 		<<set _sydney_location to "temple">>
diff --git a/game/overworld-town/special-whitney/main.twee b/game/overworld-town/special-whitney/main.twee
index 0839b791bd..b79e530236 100644
--- a/game/overworld-town/special-whitney/main.twee
+++ b/game/overworld-town/special-whitney/main.twee
@@ -3698,6 +3698,11 @@ Whitney brings you to your knees. "All I wanted was some fucking peace and quiet
 
 	<<maninit>>
 	<<prop bench>>
+	<<if $NPCList[0].penis is "none">>
+		<<if random(0, 99) lt $straponchance>>
+			<<npcstrapon 0>>
+		<</if>>
+	<</if>>
 <</if>>
 <<if $rng gte 98>>
 	A <<if $malechance lte random(1,100)>>man<<else>>woman<</if>> walking by takes notice, and quickly reverses their direction. Whitney gives them a smug smile.
diff --git a/game/special-masturbation/actions.twee b/game/special-masturbation/actions.twee
index 0d540bbc88..628ab54523 100644
--- a/game/special-masturbation/actions.twee
+++ b/game/special-masturbation/actions.twee
@@ -2,6 +2,8 @@
 
 <<widget "masturbationactions">>
 
+<<if $currentToyLeft is undefined>><<set $currentToyLeft to "none">><</if>>
+<<if $currentToyRight is undefined>><<set $currentToyRight to "none">><</if>>
 <<set $_genitals_exposed to $worn.over_lower.vagina_exposed gte 1 and $worn.lower.vagina_exposed gte 1 and $worn.under_lower.vagina_exposed gte 1>>
 <<set $_balls_exposed to $_genitals_exposed and !($worn.genitals.type.includes("chastity") and $worn.genitals.type.includes("belt"))>>
 
@@ -45,6 +47,21 @@
 	<<if $awareness gte 200 and $worn.genitals.anal_shield isnot 1>>
 		| <label><<radiobutton "$leftaction" "manusentrance" autocheck>> <span class="sub">Stroke your anus</span></label>
 	<</if>>
+	<<if $awareness gte 200 and ["home","brothel","cafe"].includes($location)>> <!-- v0.3.6.2: Player sex toys -->
+		<<if $playerToys isnot undefined>>
+			<<set $_playertoysLeft to {}>>
+			<<for $_i = 0; $_i lt $playerToys.length; $_i++>>
+				<<set $_playertoysLeft[$playerToys[$_i].namecap] to $_i>>
+			<</for>>
+			<<set $_toyoptions to $_playertoysLeft>>
+			<label><<radiobutton "$leftaction" "mpickupdildo" autocheck>> <span class="green">Use Toy:</span></label>
+			<label>
+				<<listbox "$currentToyLeft" autoselect>>
+					<<optionsfrom $_toyoptions>>
+				<</listbox>>
+			</label>
+		<</if>>
+	<</if>>
 
 <<elseif $leftarm is "mpenisentrance">>
 	You hold your <<penis>> <<if $penissize gte 0>>in your left hand.<<else>>with your left thumb and fingers.<</if>>
@@ -69,6 +86,50 @@
 	| <label><<radiobutton "$leftaction" "mvaginarub" autocheck>> <span class="sub">Rub your vulva</span></label>
 	| <label><<radiobutton "$leftaction" "mvaginastop" autocheck>> Move your hand away</label>
 
+<<elseif $leftarm is "mpickupdildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+	<<if $currentToyLeft isnot $currentToyRight>>
+		You pick up your $_lefttoy in your left hand.
+		<br>
+		<<if $player.vaginaExist>>
+			| <label><<radiobutton "$leftaction" "mvaginaentrance_dildo" autocheck>> <span class="sub">Move to your vagina</span></label>
+		<</if>>
+		| <label><<radiobutton "$leftaction" "manusentrance_dildo" autocheck>> <span class="sub">Move to your anus</span></label>
+		| <label><<radiobutton "$leftaction" "mvaginastop_dildo" autocheck>> Move your hand away</label>
+	<<else>>
+		You tried to pick up the $_lefttoy with both hands.
+		<br>
+		| <label><<radiobutton "$leftaction" "mdildostop" autocheck>> Let go of the $_lefttoy.</label>
+	<</if>>
+
+<<elseif $leftarm is "mvaginaentrance_dildo">>
+	<<if $currentToyLeft is "none">>
+		Your left hand is free as you do not have a toy selected.
+	<<else>>
+		You rub your <<pussy>> with the $currentToyLeft in your left hand.
+		<<if $currentToyLeft is "anal beads" or $currentToyLeft is "butt plug">>It feels unusual, but you enjoy it anyway.<</if>>
+		<br>
+		<<if $_genitals_exposed>>
+			<<if ($rightarm isnot "mvagina" and $rightarm isnot "mvagina_dildo")>>
+				| <label><<radiobutton "$leftaction" "mvagina_dildo" autocheck>> <span class="sub">Push your $currentToyLeft in</span></label>
+			<</if>>
+			| <label><<radiobutton "$leftaction" "mvaginaclit_dildo" autocheck>> <span class="sub">Play with your clit</span></label>
+		<<else>>
+		| <label><<radiobutton "$leftaction" "mvaginarub" autocheck>> <span class="sub">Rub your labia</span></label>
+		<</if>>
+		| <label><<radiobutton "$leftaction" "mvaginastop_dildo" autocheck>> Move your hand away</label>
+	<</if>>
+
+<<elseif $leftarm is "mvagina_dildo">>
+	You fuck your pussy with the $currentToyLeft in your left hand.
+	<br>
+
+	<<if $fingersInVagina gte 1>>
+		| <label><<radiobutton "$leftaction" "mvaginadildoremove" autocheck>> <span class="sub">Take the $currentToyLeft out</span></label>
+	<</if>>
+	| <label><<radiobutton "$leftaction" "mvaginatease_dildo" autocheck>> <span class="sub">Tease</span></label>
+	| <label><<radiobutton "$leftaction" "mvaginastop_dildo" autocheck>> Move your hand away</label>
+
 <<elseif $leftarm is "mvagina">>
 	<<set $_fingers to ($fingersInVagina is 1 ? "finger" : "fingers")>>
 	You have <<number $fingersInVagina>> $_fingers in your <<pussy>>. <<if $fingersInVagina is $vaginaFingerLimit>>You're too tight to fit any more.<</if>>
@@ -99,6 +160,28 @@
 		| <label><<radiobutton "$leftaction" "manusprostate" autocheck>> <span class="sub">Tease your prostate</span></label>
 	<</if>>
 	| <label><<radiobutton "$leftaction" "manusstop" autocheck>> Move your hand away</label>
+	
+
+<<elseif $leftarm is "manusentrance_dildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+	You tease your anus with the $_lefttoy your left hand.
+	<br>
+	<<if $worn.over_lower.anus_exposed gte 1 and $worn.lower.anus_exposed gte 1 and $worn.under_lower.anus_exposed gte 1 and $worn.genitals.anal_shield isnot 1>>
+		| <label><<radiobutton "$leftaction" "manus_dildo" autocheck>> <span class="sub">Push your $_lefttoy in</span></label>
+	<</if>>
+	| <label><<radiobutton "$leftaction" "manusrub_dildo" autocheck>> <span class="sub">Tease your anus with your $_lefttoy</span></label>
+	| <label><<radiobutton "$leftaction" "manusstop_dildo" autocheck>> Move your hand away</label>
+
+<<elseif $leftarm is "manus_dildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+	You tease your anus with the $_lefttoy in your left hand.
+	<br>
+	| <label><<radiobutton "$leftaction" "manustease_dildo" autocheck>> <span class="sub">Tease</span></label>
+	<<if $player.penisExist>>
+		| <label><<radiobutton "$leftaction" "manusprostate_dildo" autocheck>> <span class="sub">Tease your prostate</span></label>
+	<</if>>
+	| <label><<radiobutton "$leftaction" "manusstop_dildo" autocheck>> Move your hand away</label>
+
 <<elseif $leftarm is "mballs">>
 	You hold <<if $ballssize gte 1>>one of <</if>> your $ballsText with your left hand.
 	<br>
@@ -199,6 +282,22 @@
 	<<if $awareness gte 200 and $worn.genitals.anal_shield isnot 1>>
 		| <label><<radiobutton "$rightaction" "manusentrance" autocheck>> <span class="sub">Stroke your anus</span></label>
 	<</if>>
+	<<if $awareness gte 200 and ["home","brothel","cafe"].includes($location)>> /* Player sex toys */
+		<<if $playerToys isnot undefined>>
+			<<set $_playertoysRight to {}>>
+			<<for $_i = 0; $_i lt $playerToys.length; $_i++>>
+				/*<<set $_playertoysRight.push($playerToys[$_i].namecap)>>*/
+				<<set $_playertoysRight[$playerToys[$_i].namecap] to $_i>>
+			<</for>>
+			<<set $_toyoptions to $_playertoysRight>>
+			<label><<radiobutton "$rightaction" "mpickupdildo" autocheck>> <span class="green">Use Toy:</span></label>
+			<label>
+				<<listbox "$currentToyRight" autoselect>>
+					<<optionsfrom $_toyoptions>>
+				<</listbox>>
+			</label>
+		<</if>>
+	<</if>>
 
 <<elseif $rightarm is "mpenisentrance">>
 	You hold your <<penis>> <<if $penissize gte 0>>in your right hand.<<else>>with your right thumb and fingers.<</if>>
@@ -236,6 +335,68 @@
 	| <label><<radiobutton "$rightaction" "mvaginatease" autocheck>> <span class="sub">Finger your vagina</span></label>
 	| <label><<radiobutton "$rightaction" "mvaginastop" autocheck>> Move your hand away</label>
 
+<<elseif $rightarm is "mpickupdildo">>
+	<<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<if $currentToyLeft isnot $currentToyRight>>
+		You pick up your $_righttoy in your right hand.
+		<br>
+		<<if $player.vaginaExist>>
+			| <label><<radiobutton "$rightaction" "mvaginaentrance_dildo" autocheck>> <span class="sub">Move to your vagina</span></label>
+		<</if>>
+		| <label><<radiobutton "$rightaction" "manusentrance_dildo" autocheck>> <span class="sub">Move to your anus</span></label>
+		| <label><<radiobutton "$rightaction" "mvaginastop_dildo" autocheck>> Move your hand away</label>
+	<<else>>		
+		You tried to pick up the $_righttoy with both hands.
+		<br>
+		| <label><<radiobutton "$rightaction" "mdildostop" autocheck>> Let go of the $_righttoy.</label>
+	<</if>>
+
+<<elseif $rightarm is "mvaginaentrance_dildo">>
+	<<if $currentToyRight is "none">>
+		Your right hand is free as you do not have a toy selected.
+	<<else>>
+		You rub your <<pussy>> with the $currentToyRight in right hand.
+		<<if $currentToyRight is "anal beads" or $currentToyRight is "butt plug">>It feels unusual, but you enjoy it anyway.<</if>>
+		<br>
+		<<if $_genitals_exposed>>
+			<<if ($rightarm isnot "mvagina" and $rightarm isnot "mvagina_dildo")>>
+				| <label><<radiobutton "$rightaction" "mvagina_dildo" autocheck>> <span class="sub">Push your $currentToyRight in</span></label>
+			<</if>>
+			| <label><<radiobutton "$rightaction" "mvaginaclit_dildo" autocheck>> <span class="sub">Play with your clit</span></label>
+		<<else>>
+		| <label><<radiobutton "$rightaction" "mvaginarub" autocheck>> <span class="sub">Rub your labia</span></label>
+		<</if>>
+		| <label><<radiobutton "$rightaction" "mvaginastop_dildo" autocheck>> Move your hand away</label>
+	<</if>>
+
+<<elseif $rightarm is "mvagina_dildo">>
+	You fuck your pussy with the $currentToyLeft.
+	<br>
+	<<if $fingersInVagina gte 1>>
+		| <label><<radiobutton "$rightaction" "mvaginadildoremove" autocheck>> <span class="sub">Take the $currentToyLeft out</span></label>
+	<</if>>
+	| <label><<radiobutton "$rightaction" "mvaginatease_dildo" autocheck>> <span class="sub">Tease</span></label>
+	| <label><<radiobutton "$rightaction" "mvaginastop_dildo" autocheck>> Move your hand away</label>
+
+<<elseif $rightarm is "manusentrance_dildo">>
+	<<set $_righttoy to $playerToys[$currentToyRight].name>>
+	You tease your anus with the $_righttoy in your right hand.
+	<br>
+	<<if $worn.over_lower.anus_exposed gte 1 and $worn.lower.anus_exposed gte 1 and $worn.under_lower.anus_exposed gte 1 and $worn.genitals.anal_shield isnot 1>>
+		| <label><<radiobutton "$rightaction" "manus_dildo" autocheck>> <span class="sub">Push your $_righttoy in</span></label>
+	<</if>>
+	| <label><<radiobutton "$rightaction" "manusrub_dildo" autocheck>> <span class="sub">Tease your anus with your $_righttoy</span></label>
+	| <label><<radiobutton "$rightaction" "manusstop_dildo" autocheck>> Move your hand away</label>
+
+<<elseif $rightarm is "manus_dildo">>
+	You tease your anus with the $playerToys[$currentToyRight].name in your right hand.
+	<br>
+	| <label><<radiobutton "$rightaction" "manustease_dildo" autocheck>> <span class="sub">Tease</span></label>
+	<<if $player.penisExist>>
+		| <label><<radiobutton "$rightaction" "manusprostate_dildo" autocheck>> <span class="sub">Tease your prostate</span></label>
+	<</if>>
+	| <label><<radiobutton "$rightaction" "manusstop_dildo" autocheck>> Move your hand away</label>
+
 <<elseif $rightarm is "manusentrance">>
 	You tease your anus with your right hand.
 	<br>
diff --git a/game/special-masturbation/effects.twee b/game/special-masturbation/effects.twee
index d793ac382c..b06dc4ded5 100644
--- a/game/special-masturbation/effects.twee
+++ b/game/special-masturbation/effects.twee
@@ -1022,14 +1022,14 @@
 			<<set $_genitals_exposed to true>>
 		<</if>>
 		<<if $arousal gte $arousalmax * (4/5)>>
-			Your <<penis>> bucks eagerly, and
+			Your <<penis "strap-on">> bucks eagerly, and
 			<<if $_genitals_exposed>>
 				precum leaps from the tip.
 			<<else>>
 				precum seeps through your _highestclothinglower.
 			<</if>>
 		<<else>>
-			Your <<penis>> bucks eagerly, and
+			Your <<penis "strap-on">> bucks eagerly, and
 			<<if $_genitals_exposed>>
 				precum beads at the tip.
 			<<else>>
@@ -1235,6 +1235,125 @@
 	<</if>>
 <</if>>
 
+
+<<if $leftaction is "mvaginaentrance_dildo" and $rightaction is "mvaginaentrance_dildo">>
+	<<set $_actiondefault to ($player.penisExist ? "mvaginarub" : "mvaginaclit")>>
+	<<set $leftactiondefault to $_actiondefault>><<set $leftaction to 0>><<set $leftarm to "mvaginaentrance_dildo">>
+	<<set $rightactiondefault to $_actiondefault>><<set $rightaction to 0>><<set $rightarm to "mvaginaentrance_dildo">>
+	<<arousal 400>>
+	<<if $_genitals_exposed>>
+		<span class="blue">You run your $currentToyLeft over your exposed <<pussy>> and shiver in anticipation.</span>
+		<<addVaginalWetness 2>>
+	<<elseif $worn.under_lower.vagina_exposed is 1>>
+		<span class="blue">You run your $currentToyLeft over your <<pussy>>, feeling its shape beneath your $worn.lower.name.</span>
+		<<addVaginalWetness 1>>
+	<<elseif $worn.lower.vagina_exposed is 1>>
+		<span class="blue">You run your $currentToyLeft over your <<pussy>>, feeling its shape beneath your $worn.under_lower.name.</span>
+		<<addVaginalWetness 1>>
+	<<else>>
+		<span class="blue">You run your $currentToyLeft over your <<pussy>>, feeling its shape beneath your clothing.</span>
+		<<addVaginalWetness 0>>
+	<</if>>
+<<elseif $leftaction is "mvaginaentrance_dildo">>
+	<<set $_actiondefault to ($player.penisExist ? "mvaginarub" : "mvaginaclit")>>
+	<<if $leftaction is "mvaginaentrance_dildo">>
+		<<set $leftactiondefault to $_actiondefault>><<set $leftaction to 0>><<set $leftarm to "mvaginaentrance_dildo">>
+	<</if>>
+	<<arousal 200>>
+	<span class="blue">You pick up your $currentToyLeft and run it over your exposed <<pussy>>,
+		<<if $_genitals_exposed>>
+			shivering in anticipation.
+			<<addVaginalWetness 2>>
+		<<elseif $worn.lower.vagina_exposed is 0>>
+			feeling its shape beneath your $worn.lower.name.
+			<<addVaginalWetness 0>>
+		<<elseif $worn.under_lower.vagina_exposed is 0>>
+			feeling its shape beneath your $worn.under_lower.name.
+			<<addVaginalWetness 1>>
+		<<else>>
+			feeling its shape beneath your clothing.
+			<<addVaginalWetness 0>>
+		<</if>>
+	</span>
+<<elseif $rightaction is "mvaginaentrance_dildo">>
+	<<set $_actiondefault to ($player.penisExist ? "mvaginarub" : "mvaginaclit")>>
+	<<if $rightaction is "mvaginaentrance_dildo">>
+		<<set $rightactiondefault to $_actiondefault>><<set $rightaction to 0>><<set $rightarm to "mvaginaentrance_dildo">>
+	<</if>>
+	<<arousal 200>>
+	<span class="blue">You pick up your $currentToyRight and run it over your exposed <<pussy>>,
+		<<if $_genitals_exposed>>
+			shivering in anticipation.
+			<<addVaginalWetness 2>>
+		<<elseif $worn.lower.vagina_exposed is 0>>
+			feeling its shape beneath your $worn.lower.name.
+			<<addVaginalWetness 0>>
+		<<elseif $worn.under_lower.vagina_exposed is 0>>
+			feeling its shape beneath your $worn.under_lower.name.
+			<<addVaginalWetness 1>>
+		<<else>>
+			feeling its shape beneath your clothing.
+			<<addVaginalWetness 0>>
+		<</if>>
+	</span>
+<</if>>
+
+
+<<if $leftaction is "mpickupdildo" or $rightaction is "mpickupdildo">>
+	<<set $_actiondefault to ($player.penisExist ? "mvaginarub" : "mvaginaclit")>>
+	<<if $leftaction is "mpickupdildo">>
+		<<set $leftactiondefault to $_actiondefault>><<set $leftaction to 0>><<set $leftarm to "mpickupdildo">>
+		<<arousal 200>>
+		You pick up your $playerToys[$currentToyLeft].name.
+	<</if>>
+	<<if $rightaction is "mpickupdildo">>
+		<<set $rightactiondefault to $_actiondefault>><<set $rightaction to 0>><<set $rightarm to "mpickupdildo">>
+		<<arousal 200>>
+		You pick up your $playerToys[$currentToyRight].name.
+	<</if>>
+<</if>>
+
+
+/* Dildo */
+<<if $leftaction is "mvagina_dildo" and $rightaction is "mvagina_dildo">>
+	<<set $rightaction to "mvaginarub_dildo">>
+<</if>>
+
+<<if $leftaction is "mvagina_dildo" or $rightaction is "mvagina_dildo">>
+	/*<<set $fingersInVagina += 1>>*/
+	<<if $leftaction is "mvagina_dildo">>
+		<<set $leftactiondefault to "mvagina_dildo">><<set $leftaction to 0>><<set $leftarm to "mvagina_dildo">>
+		<<set $semenInVagina to ($leftFingersSemen gte 1)>>
+		<<set _lubricated to ($leftFingersSemen gte 1 ? "semen-lubricated" : "")>>
+	<</if>>
+	<<if $rightaction is "mvagina_dildo">>
+		<<set $rightactiondefault to "mvagina_dildo">><<set $rightaction to 0>><<set $rightarm to "mvagina_dildo">>
+		<<set $semenInVagina to ($rightFingersSemen gte 1)>>
+		<<set _lubricated to ($rightFingersSemen gte 1 ? "semen-lubricated" : "")>>
+	<</if>>
+	<<arousal 200>>
+	<<set $_toy to $currentToyLeft>>
+	<<if $currentToyLeft isnot "none" and $currentToyRight isnot "none" and $leftaction is "mvagina_dildo" and $rightaction is "mvagina_dildo">>
+		<<set $_toy to ""+ $currentToyLeft + " and " + $currentToyRight>>
+	<<elseif $currentToyLeft isnot "none">>
+		<<set $_toy to $currentToyLeft>>
+	<<elseif $currentToyRight isnot "none">>
+		<<set $_toy to $currentToyRight>>
+	<</if>>
+	<<if $_hymenIntact>>
+		<span class="purple">You push the _lubricated $_toy into your <<pussy>> until you poke your unblemished hymen.</span>
+	<<elseif $bugsinside is 1>>
+		<span class="purple">You push the _lubricated <<print ($currentToyLeft isnot "none" ? $currentToyLeft : $currentToyRight)>> into your <<pussy>>. You feel insects crawling inside.</span>
+	<<else>>
+		<span class="purple">You push the _lubricated <<print ($currentToyLeft isnot "none" ? $currentToyLeft : $currentToyRight)>> into your <<pussy>> which parts to allow the intrusion.</span>
+	<</if>>
+
+	<<addVaginalWetness 1>>
+	<<set _fingeringEffects to true>>
+<</if>>
+
+/* Toys */
+
 /* the player can only finger themself with one hand */
 <<if $leftaction is "mvagina" and $rightaction is "mvagina">>
 	<<set $rightaction to "mvaginarub">>
@@ -1349,6 +1468,75 @@
 	<</if>>
 <</if>>
 
+<<if $leftaction is "mvaginatease_dildo" or $rightaction is "mvaginatease_dildo">>
+	<<if $leftaction is "mvaginatease_dildo">>
+		<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+	<</if>>
+	<<if $rightaction is "mvaginatease_dildo">>
+		<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+	<</if>>
+	/* arousal gains */
+	<<set $_toypleasure to 2>>
+	<<if $leftaction is "mvaginatease_dildo" and $rightaction isnot "mvaginatease_dildo">>
+		<<if $currentToyLeft is "dildo">>
+			<<set $_toypleasure to 3>>
+		<<elseif $currentToyLeft.includes("vibe")>>
+			<<set $_toypleasure to 5>>
+		<</if>>
+	<<elseif $rightaction is "mvaginatease_dildo" and $leftaction isnot "mvaginatease_dildo">>
+		<<if $currentToyRight is "dildo">>
+			<<set $_toypleasure to 3>>
+		<<elseif $currentToyRight.includes("vib")>>
+			<<set $_toypleasure to 5>>
+		<</if>>
+	<</if>>
+	<<set $_arousalGain to 300 + 50*$_toypleasure>>
+	<<arousal $_arousalGain>>
+	<<addVaginalWetness $_toypleasure>>
+	/* set vaginal wetness text */
+	<<set $_wet to "">>
+	<<if $vaginaArousalWetness gte 40>>
+		<<set $_wet to "wet">>
+	<<elseif $vaginaArousalWetness gte 20>>
+		<<set $_wet to "slick">>
+	<</if>>
+	/* set toy or toys */
+	<<set $_toy to $currentToyLeft>>
+	<<if $currentToyLeft isnot "none" and $currentToyRight isnot "none" and $leftaction is "mvaginatease_dildo" and $rightaction is "mvaginatease_dildo">>
+		<<set $_toy to ($currentToyLeft is $currentToyRight ? $currentToyLeft+"s" : $currentToyLeft + " and " + $currentToyRight)>>
+	<<elseif $rightaction is "mvaginatease_dildo" and $currentToyRight isnot "none">>
+		<<set $_toy to $currentToyRight>>
+	<</if>>
+	/* display action text */
+	<<if $bugsinside is 1>>
+		<<if $arousal gte ($arousalmax / 5) * 4>>
+			<<if $vaginaArousalWetness gte 60>>
+				<<vaginaFluidActive>>
+				You pump <<number $fingersInVagina>> $_fingers in and out of your $_wet <<pussy>>, coaxing out lewd fluid, along with some bugs and insects.
+			<<else>>
+				You pump <<number $fingersInVagina>> $_fingers in and out of your $_wet <<pussy>>, coaxing out some bugs and insects.
+			<</if>>
+		<<elseif $arousal gte ($arousalmax / 5) * 2>>
+			You push <<number $fingersInVagina>> $_fingers in and out of your $_wet <<pussy>>, feeling the insects and bugs inside of you.
+		<<else>>
+			You gently fuck the entrance of your $_wet <<pussy>> with <<number $fingersInVagina>> $_fingers, pushing some of the bugs around.
+		<</if>>
+	<<else>>
+		<<if $arousal gte ($arousalmax / 5) * 4>>
+			<<if $vaginaArousalWetness gte 60>>
+				<<vaginaFluidActive>>
+				You pump your $_toy in and out of your $_wet <<pussy>>, coaxing out lewd fluid.
+			<<else>>
+				You pump your $_toy in and out of your $_wet <<pussy>>, pushing as deep as you can reach.
+			<</if>>
+		<<elseif $arousal gte ($arousalmax / 5) * 2>>
+			You push your $_toy in and out of your $_wet <<pussy>>, feeling a thrill even without going too deep.
+		<<else>>
+			You gently fuck the entrance of your $_wet <<pussy>> with your $_toy.
+		<</if>>
+	<</if>>
+<</if>>
+
 <<if $leftaction is "mvaginaclit" and $rightaction is "mvaginaclit">>
 	<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
 	<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
@@ -1380,6 +1568,57 @@
 	<<addVaginalWetness 2>>
 <</if>>
 
+<<if $leftaction is "mvaginaclit_dildo" and $rightaction is "mvaginaclit_dildo">>
+	<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+	<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+	<<if $currentToyLeft.includes("vibe") or $currentToyRight.includes("vibe")>>
+	<<arousal 50>>
+	<<elseif $currentToyLeft.includes("vibe") and $currentToyRight.includes("vibe")>>
+	<<arousal 100>>
+	<</if>>
+	<<arousal 400>>
+	<<set $_toys to $currentToyLeft and $currentToyRight>>
+	<<if $currentToyLeft is $currentToyRight>>
+		<<set $_toys to $currentToyLeft+"s">>
+	<</if>>
+	<<if $arousal gte ($arousalmax / 5) * 4>>
+		You press down on your clit with your $_toys and rub it in a circular motion.
+		You gently brush the tip with your $_toys, but it becomes harder to do as you become more sensitive.
+	<<elseif $arousal gte ($arousalmax / 5) * 3>>
+		You tease the tip of your clit with your $_toys.
+	<<else>>
+		You rub your clit with your $_toys, developing a lewd feeling.
+	<</if>>
+	<<addVaginalWetness 3>>
+<<elseif $leftaction is "mvaginaclit_dildo" or $rightaction is "mvaginaclit_dildo">>
+	<<if $leftaction is "mvaginaclit_dildo">>
+		<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+		
+		<<if $arousal gte ($arousalmax / 5) * 4>>
+			You press down on your clit with your $currentToyLeft and rub it in a circular motion, feeling your arousal build.
+		<<elseif $arousal gte ($arousalmax / 5) * 3>>
+			You tease the tip of your clit with your $currentToyLeft.
+		<<else>>
+			You rub your clit with your $currentToyLeft, developing a lewd feeling.
+		<</if>>
+	<</if>>
+	<<if $rightaction is "mvaginaclit">>
+		<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+		<<if $arousal gte ($arousalmax / 5) * 4>>
+			You press down on your clit with your  $currentToyRight and rub it in a circular motion, feeling your arousal build.
+		<<elseif $arousal gte ($arousalmax / 5) * 3>>
+			You tease the tip of your clit with your $currentToyRight.
+		<<else>>
+			You rub your clit with your $currentToyRight, developing a lewd feeling.
+		<</if>>
+	<</if>>
+	<<if $currentToyLeft.includes("vibe") or $currentToyRight.includes("vibe")>>
+	<<arousal 50>>
+	<</if>>
+	<<arousal 200>>
+	<<addVaginalWetness 2>>
+<</if>>
+
 <<if $leftaction is "mvaginarub" and $rightaction is "mvaginarub">>
 	<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
 	<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
@@ -1441,6 +1680,42 @@
 	<span class="lblue">You move your right hand away from your <<pussy>>.</span>
 <</if>>
 
+<<if $leftaction is "mvaginastop_dildo" and $rightaction is "mvaginastop_dildo">>
+	<<set $fingersInVagina to 0>>
+	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
+	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<span class="lblue">You move the $_lefttoy and $_righttoy away from your <<pussy>>.</span>
+	<<set $currentToyRight to "none">><<set $currentToyLeft to "none">>
+<<elseif $leftaction is "mvaginastop_dildo">>
+	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
+	<span class="lblue">You move the $playerToys[$currentToyLeft].name in your left hand away from your <<pussy>>.</span>
+	<<set $currentToyLeft to "none">>
+<<elseif $rightaction is "mvaginastop_dildo">>
+	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
+	<span class="lblue">You move the $playerToys[$currentToyRight].name in your right hand away from your <<pussy>>.</span>
+	<<set $currentToyRight to "none">>
+<</if>>
+
+<<if $leftaction is "mdildostop" and $rightaction is "mdildostop">>
+	<<set $fingersInVagina to 0>>
+	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
+	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
+	<<set $_toy to $playerToys[$currentToyLeft].name>>
+	<span class="lblue">You let go of the $_toy.</span>
+	<<set $currentToyRight to "none">><<set $currentToyLeft to "none">>
+<<elseif $leftaction is "mdildostop">>
+	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
+	<<set $_toy to $playerToys[$currentToyLeft].name>>
+	<span class="lblue">You let go of the $_toy in your left hand.</span>
+	<<set $currentToyLeft to "none">>
+<<elseif $rightaction is "mdildostop">>
+	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
+	<<set $_toy to $playerToys[$currentToyRight].name>>
+	<span class="lblue">You let go of the $_toy in your right hand.</span>
+	<<set $currentToyRight to "none">>
+<</if>>
+
 <<if $leftaction is "mvaginafingerremove" or $rightaction is "mvaginafingerremove">>
 	<<set $fingersInVagina -= 1>>
 	<<if $fingersInVagina gte 1>>
@@ -1599,6 +1874,176 @@
 	<</if>>
 <</if>>
 
+<<if $leftaction is "manusentrance_dildo" and $rightaction is "manusentrance_dildo">>
+	<<set $leftactiondefault to "manusrub_dildo">><<set $leftaction to 0>><<set $leftarm to "manusentrance_dildo">>
+	<<set $rightactiondefault to "manusrub_dildo">><<set $rightaction to 0>><<set $rightarm to "manusentrance_dildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<arousal 300>>
+	<<if $worn.under_lower.anus_exposed is 1 and $worn.lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your exposed <<bottom>> and gently press your $_lefttoy and your $_righttoy against your anus.</span>
+	<<elseif $worn.under_lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your <<bottom>> and gently press your $_lefttoy and your $_righttoy against your anus through your $worn.lower.name.</span>
+	<<elseif $worn.lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your <<bottom>> and gently press your $_lefttoy and your $_righttoy against your anus through your $worn.under_lower.name.</span>
+	<</if>>
+<<elseif $leftaction is "manusentrance_dildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+	<<set $leftactiondefault to "manusrub_dildo">><<set $leftaction to 0>><<set $leftarm to "manusentrance_dildo">>
+	<<arousal 200>>
+	<<if $worn.under_lower.anus_exposed is 1 and $worn.lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your exposed <<bottom>> and gently press your $_lefttoy against your anus.</span>
+	<<elseif $worn.under_lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your <<bottom>> and gently press your $_lefttoy against your anus through your $worn.lower.name.</span>
+	<<elseif $worn.lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your <<bottom>> and gently press your $_lefttoy against your anus through your $worn.under_lower.name.</span>
+	<</if>>
+<<elseif $rightaction is "manusentrance_dildo">>
+	<<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<set $rightaction to 0>><<set $rightarm to "manusentrance_dildo">>
+	<<set $rightactiondefault to "manusrub_dildo">><<set $rightaction to 0>><<set $rightarm to "manusentrance_dildo">>
+	<<arousal 200>>
+	<<if $worn.under_lower.anus_exposed is 1 and $worn.lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your exposed <<bottom>> and gently press your $_righttoy against your anus.</span>
+	<<elseif $worn.under_lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your <<bottom>> and gently press your $_righttoy against your anus through your $worn.lower.name.</span>
+	<<elseif $worn.lower.anus_exposed is 1>>
+		<span class="blue">You reach down to your <<bottom>> and gently press your $_righttoy against your anus through your $worn.under_lower.name.</span>
+	<</if>>
+<</if>>
+
+<<if $leftaction is "manus_dildo" and $rightaction is "manus_dildo">>
+	<<set $leftactiondefault to "manustease_dildo">><<set $leftaction to 0>><<set $leftarm to "manus_dildo">>
+	<<set $rightactiondefault to "manustease_dildo">><<set $rightaction to 0>><<set $rightarm to "manus_dildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<arousal 500>>
+	<<set _lubricated to ($leftFingersSemen gte 1 or $rightFingersSemen gte 1 ? "semen-lubricated" : "")>>
+	<span class="purple">You push your _lubricated $_lefttoy and $_righttoy into your <<bottom>>.</span>
+<<elseif $leftaction is "manus_dildo" or $rightaction is "manus_dildo">>
+	<<if $leftaction is "manus_dildo">>
+		<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+		<<set $leftactiondefault to "manustease_dildo">><<set $leftaction to 0>><<set $leftarm to "manus_dildo">>
+		<<set _lubricated to ($leftFingersSemen gte 1 ? "semen-lubricated" : "")>>
+		<span class="purple">You push your _lubricated $_lefttoy into your <<bottom>>.</span>
+	<<elseif $rightaction is "manus_dildo">>
+		<<set $_righttoy to $playerToys[$currentToyRight].name>>
+		<<set $rightactiondefault to "manustease_dildo">><<set $rightaction to 0>><<set $rightarm to "manus_dildo">>
+		<<set _lubricated to ($rightFingersSemen gte 1 ? "semen-lubricated" : "")>>
+		<span class="purple">You push your _lubricated $_righttoy into your <<bottom>>.</span>
+	<</if>>
+	<<arousal 250>>
+<</if>>
+
+<<if $leftaction is "manusrub_dildo" and $rightaction is "manusrub_dildo">>
+	<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+	<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<arousal 500>>
+	<<print either(
+		"You keep your $_lefttoy and $_righttoy between your <<bottom>> cheeks and gently prod your anus.",
+		"You rub your anus in a circular motion with your $_lefttoy and $_righttoy.",
+		"You push your $_lefttoy and $_righttoy against your anus. You feel it open a little bit."
+	)>>
+<<elseif $leftaction is "manusrub_dildo" or $rightaction is "manusrub_dildo">>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<if $leftaction is "manusrub_dildo">>
+		<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+		<<set $leftactiondefault to "manusrub_dildo">><<set $leftaction to 0>><<set $leftarm to "manusentrance_dildo">>
+		<<arousal 250>>
+		<<print either(
+			"You keep your $_lefttoy pressed between your <<bottom>> cheeks and gently prod your anus.",
+			"You rub your anus in a circular motion with your $_lefttoy.",
+			"You push your $_lefttoy against your anus. You feel it open a little bit."
+		)>>
+	<<elseif $rightaction is "manusrub_dildo">>
+		<<set $_righttoy to $playerToys[$currentToyRight].name>>
+		<<set $rightactiondefault to "manusrub_dildo">><<set $rightaction to 0>><<set $rightarm to "manusentrance_dildo">>
+		<<print either(
+			"You keep your $_righttoy pressed between your <<bottom>> cheeks and gently prod your anus.",
+			"You rub your anus in a circular motion with your $_righttoy.",
+			"You push your $_righttoy against your anus. You feel it open a little bit."
+		)>>
+		<<arousal 250>>
+	<</if>>
+<</if>>
+
+<<if $leftaction is "manustease_dildo" and $rightaction is "manustease_dildo">>
+	<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+	<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<arousal 500>>
+	<<print either(
+		"You gently explore inside your <<bottom>> with your $_lefttoy and $_righttoy.",
+		"You slowly push your $_lefttoy and $_righttoy into and out of your anus.",
+		"You fuck your <<bottom>> with your $_lefttoy and $_righttoy. You feel naughty about playing with such a place."
+	)>>
+<<elseif $leftaction is "manustease_dildo" or $rightaction is "manustease_dildo">>
+	<<if $leftaction is "manustease_dildo">>
+		<<set $_lefttoy to $playerToys[$currentToyLeft].name>>
+		<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+		<<print either(
+			"You gently explore inside your <<bottom>> with your $_lefttoy.",
+			"You slowly push your $_lefttoy into and out of your anus.",
+			"You fuck your <<bottom>> with your $_lefttoy. You feel naughty about playing with such a place."
+		)>>
+	<</if>>
+	<<if $rightaction is "manustease_dildo">>
+		<<set $_righttoy to $playerToys[$currentToyRight].name>>
+		<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+		<<print either(
+			"You gently explore inside your <<bottom>> with your $_righttoy.",
+			"You slowly push your $_righttoy into and out of your anus.",
+			"You fuck your <<bottom>> with your $_righttoy. You feel naughty about playing with such a place."
+		)>>
+	<</if>>
+	<<arousal 250>>
+<</if>>
+
+<<if $leftaction is "manusprostate_dildo" and $rightaction is "manusprostate_dildo">>
+	<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+	<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<<arousal 700>>
+	<<if $arousal gte ($arousalmax / 5) * 4>>
+		You stroke your prostate with your $_lefttoy and $_righttoy, milking it of semen and making you shudder.
+	<<elseif $arousal gte ($arousalmax / 5) * 3>>
+		You press against your prostate with your $_lefttoy and $_righttoy, causing an almost unbearably pleasurable feeling of vulnerability.
+	<<else>>
+		You gently prod your prostate with your $_lefttoy and $_righttoy, each poke sending a wave of pleasure through your body.
+	<</if>>
+<<elseif $leftaction is "manusprostate_dildo" or $rightaction is "manusprostate_dildo">>
+	<<if $leftaction is "manusprostate_dildo">>
+		<<set $leftactiondefault to $leftaction>><<set $leftaction to 0>>
+		<<set $_toy to $playerToys[$currentToyLeft].name>>
+	<</if>>
+	<<if $rightaction is "manusprostate_dildo">>
+		<<set $rightactiondefault to $rightaction>><<set $rightaction to 0>>
+		<<set $_toy to $playerToys[$currentToyRight].name>>
+	<</if>>
+	<<arousal 350>>
+	<<if $arousal gte ($arousalmax / 5) * 4>>
+		You stroke your prostate with your $_toy, milking it of semen and making you shudder.
+	<<elseif $arousal gte ($arousalmax / 5) * 3>>
+		You press against your prostate with your $_toy, causing an almost unbearably pleasurable feeling of vulnerability.
+	<<else>>
+		You gently prod your prostate with your $_toy, each poke sending a wave of pleasure through your body.
+	<</if>>
+<</if>>
+
+<<if $leftaction is "manusstop_dildo" and $rightaction is "manusstop_dildo">>
+	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
+	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
+	<<set $_lefttoy to $playerToys[$currentToyLeft].name>><<set $_righttoy to $playerToys[$currentToyRight].name>>
+	<span class="purple">You move your $_lefttoy and $_righttoy away from your <<bottom>>.</span>
+
+<<elseif $leftaction is "manusstop_dildo">>
+	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
+	<span class="purple">You move your $playerToys[$currentToyLeft].name in your left hand away from your <<bottom>>.</span>
+
+<<elseif $rightaction is "manusstop_dildo">>
+	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
+	<span class="purple">You move your $playerToys[$currentToyRight].name in your right hand away from your <<bottom>>.</span>
+<</if>>
+
 <<if $leftaction is "manusstop" and $rightaction is "manusstop">>
 	<<set $leftactiondefault to "mrest">><<set $leftaction to 0>><<set $leftarm to 0>>
 	<<set $rightactiondefault to "mrest">><<set $rightaction to 0>><<set $rightarm to 0>>
diff --git a/game/special-masturbation/widgets.twee b/game/special-masturbation/widgets.twee
index 3c0a1a7854..6d0fd35159 100644
--- a/game/special-masturbation/widgets.twee
+++ b/game/special-masturbation/widgets.twee
@@ -113,6 +113,8 @@
 	<<unset $penisHeight>>
 	<<unset $canSelfSuckPenis>>
 	<<unset $canSelfSuckVagina>>
+	<<unset $currentToyLeft>>
+	<<unset $currentToyRight>>
 <</widget>>
 
 <<widget "masturbationstart">>
diff --git a/img/clothes/face/gagfetish/full.png b/img/clothes/face/gagfetish/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b3a0d98fe0740dcf3e04372610f9e3803f7a5e4
GIT binary patch
literal 422
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5L<4+6T!Hjl28Ikn
zk>d;u{}~wUxw-%U|39s%cM?#7u_VYZn8D%MjWiG^$=lt9Eir9JEs(=r;_2(k{*+CQ
z#gw`8)j6Pz42_;Hjv*Dd-kviQJYc}X;uu)LwNQX-S;D^%BeRArT3ez$p4N&2)u91q
z)y==(GXMH@eroyCKb3#KG2Z>Vs#f*6-<$3HFW!MXN-U_iOL;2Bn`Uz!<Z{&#*NBpo
z#FA92<f2p{#b9J$WT<OkrfX~vVqjur0z{_T1_o9J236drrlDxa%}>cptHiB=JFG|x
O<R(v7KbLh*2~7Y~6Kg5}

literal 0
HcmV?d00001

diff --git a/img/clothes/face/gagfetish/full_gray.png b/img/clothes/face/gagfetish/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca7ab45186c601f458d3508de4d12068656c7606
GIT binary patch
literal 674
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!e*o-U3d6?5L+*vrXm$io)k
z|2Wj9@%RN9x#*Rj4m(<`vuuB18<3o`q07HDni;5Vkbwus&scumT(+NmNB<w^L@|ad
zs{cQ*ACstDI<K+6qo*S#`)Snc(z>$x?|Tl+hAD7(z4!T4t2)McU*FH;|Kay<p#e9;
jt4Z~P%xA;PIS*bi`b+i*NIt5V0`i!rtDnm{r-UW|!)Hkv

literal 0
HcmV?d00001

diff --git a/img/clothes/face/muzzlefetish/full.png b/img/clothes/face/muzzlefetish/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7e7e9995c3e9f89f263b55e9a015c1c183aa050
GIT binary patch
literal 666
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$aLd-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5n3BBRT^Rni_n+Ah
z<gu4{`ns||Ws_quW$t`+4rmDDB2O2`kcwMxulsT}8wjvn*!U&Ew#)sahTKwfZ*eZs
z?D`{42A}V#aW@~~sWEl~nn5`@U>*CG`AU)g<tp!L=AA45KMDHH;9#5kH2&w?*T*X3
z@B7YGs20y?`}IDJso}`Ft^6OtU#rBIwiL$wes_~K?wjg6w&lzJ?Vib?uyLDO!&cW>
z{He-6&A(j~`1=183qvPoLq~_u(;wazYma;tXP6N2yWYM#N8U`1|LuK;yjTAxa#HRA
zdYZsj&9F~bEu!Q&hcVDv)e_f;l9a@fRIB8oR3OD*WME{dYhb2pY!G5#Vr2qErrHJu
kRt5%D+^43YXvob^$xN%nt${nNNDJgKPgg&ebxsLQ0G9@ks{jB1

literal 0
HcmV?d00001

diff --git a/img/clothes/face/muzzlefetish/full_gray.png b/img/clothes/face/muzzlefetish/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7e7e9995c3e9f89f263b55e9a015c1c183aa050
GIT binary patch
literal 666
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$aLd-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5n3BBRT^Rni_n+Ah
z<gu4{`ns||Ws_quW$t`+4rmDDB2O2`kcwMxulsT}8wjvn*!U&Ew#)sahTKwfZ*eZs
z?D`{42A}V#aW@~~sWEl~nn5`@U>*CG`AU)g<tp!L=AA45KMDHH;9#5kH2&w?*T*X3
z@B7YGs20y?`}IDJso}`Ft^6OtU#rBIwiL$wes_~K?wjg6w&lzJ?Vib?uyLDO!&cW>
z{He-6&A(j~`1=183qvPoLq~_u(;wazYma;tXP6N2yWYM#N8U`1|LuK;yjTAxa#HRA
zdYZsj&9F~bEu!Q&hcVDv)e_f;l9a@fRIB8oR3OD*WME{dYhb2pY!G5#Vr2qErrHJu
kRt5%D+^43YXvob^$xN%nt${nNNDJgKPgg&ebxsLQ0G9@ks{jB1

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/frayed.png b/img/clothes/genitals/chastitybeltfetish/frayed.png
new file mode 100644
index 0000000000000000000000000000000000000000..70307b0efec8569a13ebb49cab77a6bd7f8571b0
GIT binary patch
literal 462
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!AzY$Vf{s
zUApxD|Np1nzp)4M8B2ovf*Bm1-ADs*lDyqrSo$+=1_C+kC7!;n>`&R`SWMY|Hdq}3
z3a$5aaSW-r_4e99-a`f=tOxHmMHg_t+;2X~fzyNgRFD3?x0C(nF#;9h1`qnz-d=M)
z)pqTC{uRHM*G4|SS^bUq_s@o1|K$pKS3I)6aGw3j-x`OzAnN9EnU~B*U_7WGklO!$
zasRvL%&+WlTLYAd|IRdpRXp+O&&g|nJk=7{h?11Vl2ohYqEsNoU}RuqsB2)RYitl=
tU}9wgM5fvX237_JRothhp=ij>PsvQH#I1oltVj#w5>Hn@mvv4FO#sqqi;@5U

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/frayed_gray.png b/img/clothes/genitals/chastitybeltfetish/frayed_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..70307b0efec8569a13ebb49cab77a6bd7f8571b0
GIT binary patch
literal 462
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!AzY$Vf{s
zUApxD|Np1nzp)4M8B2ovf*Bm1-ADs*lDyqrSo$+=1_C+kC7!;n>`&R`SWMY|Hdq}3
z3a$5aaSW-r_4e99-a`f=tOxHmMHg_t+;2X~fzyNgRFD3?x0C(nF#;9h1`qnz-d=M)
z)pqTC{uRHM*G4|SS^bUq_s@o1|K$pKS3I)6aGw3j-x`OzAnN9EnU~B*U_7WGklO!$
zasRvL%&+WlTLYAd|IRdpRXp+O&&g|nJk=7{h?11Vl2ohYqEsNoU}RuqsB2)RYitl=
tU}9wgM5fvX237_JRothhp=ij>PsvQH#I1oltVj#w5>Hn@mvv4FO#sqqi;@5U

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/full.png b/img/clothes/genitals/chastitybeltfetish/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb9738c3e8f23efad834d303ca4669ee765a9b27
GIT binary patch
literal 714
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!dKJY5_^D(1YsW60NRAmZZ4
z*I2|e>&{J?%OT4;*8~Xs?U*|;=EBXRw<o1C0yT{+(6IkQ)b+T^RrmQ%e&IjJ!|>#i
zeL+=z^!_5Z1DoIHFaI_7fcjr&17?PuU-*4uWgA{qGkw2o&tl9l!TZ0!83qSEnB+mX
z2f6us-@fIkt&wJ^KnR0P#G>A(UNWjy|G{^dr6VWQ?>uF&t66p4KuGr<$kU##elF{r
H5}FtQ44q#9

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/full_gray.png b/img/clothes/genitals/chastitybeltfetish/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb9738c3e8f23efad834d303ca4669ee765a9b27
GIT binary patch
literal 714
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!dKJY5_^D(1YsW60NRAmZZ4
z*I2|e>&{J?%OT4;*8~Xs?U*|;=EBXRw<o1C0yT{+(6IkQ)b+T^RrmQ%e&IjJ!|>#i
zeL+=z^!_5Z1DoIHFaI_7fcjr&17?PuU-*4uWgA{qGkw2o&tl9l!TZ0!83qSEnB+mX
z2f6us-@fIkt&wJ^KnR0P#G>A(UNWjy|G{^dr6VWQ?>uF&t66p4KuGr<$kU##elF{r
H5}FtQ44q#9

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/tattered.png b/img/clothes/genitals/chastitybeltfetish/tattered.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec11078df4b7af7b04f12485e273802b9a78dc5e
GIT binary patch
literal 468
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!AzY$Vf{s
zUApxD|Np1nzp)4M8B2ovf*Bm1-ADs*lDyqrSo$+=1_C+kC7!;n>`&R`SWMY|Hdq}3
z3T^dtaSW-r_4dj^-ev<4)`Rz%ba$}+dauj3q{U-)hvbB#x%Uqyu>lq01`YOQGM_8&
zy|<IQcAovp-`ulNuXmjL`*%;B-GX=bzx{pv$o>LIyq5JcW2wD-!1wfXmQYr>&4PE&
znP2@geQ@$`jl<ph+_&lr?g7=-;<gMZv+o`2YgJ*zlZ)rF19_??t`Q|Ei6yC4$wjF^
ziowXh$WYh7OxM^T#K6SL1c*$v4GgRd463+KO+(R;o1c=IR*72!cUX}Y$R(bxelF{r
G5}E+OW{htD

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/tattered_gray.png b/img/clothes/genitals/chastitybeltfetish/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec11078df4b7af7b04f12485e273802b9a78dc5e
GIT binary patch
literal 468
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!AzY$Vf{s
zUApxD|Np1nzp)4M8B2ovf*Bm1-ADs*lDyqrSo$+=1_C+kC7!;n>`&R`SWMY|Hdq}3
z3T^dtaSW-r_4dj^-ev<4)`Rz%ba$}+dauj3q{U-)hvbB#x%Uqyu>lq01`YOQGM_8&
zy|<IQcAovp-`ulNuXmjL`*%;B-GX=bzx{pv$o>LIyq5JcW2wD-!1wfXmQYr>&4PE&
znP2@geQ@$`jl<ph+_&lr?g7=-;<gMZv+o`2YgJ*zlZ)rF19_??t`Q|Ei6yC4$wjF^
ziowXh$WYh7OxM^T#K6SL1c*$v4GgRd463+KO+(R;o1c=IR*72!cUX}Y$R(bxelF{r
G5}E+OW{htD

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/torn.png b/img/clothes/genitals/chastitybeltfetish/torn.png
new file mode 100644
index 0000000000000000000000000000000000000000..cfbde04af6c7029795d2db5c57b97050579f9609
GIT binary patch
literal 462
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!AzY$Vf{s
zUApxD|Np1nzp)4M8B2ovf*Bm1-ADs*lDyqrSo$+=1_C+kC7!;n>`&R`SWMY|Hdq}3
z3a$5aaSW-r_4d+5&Lav8td7weSff4u@12_-Wf8%b&h+TMok}uL86NQA_%pL}=J$W6
z{;hGid;eNQ_SxchziUC9diOK$Tm0^xXTJjCfvAo1J}%)G`2Lx()LuRSME&R4v2#BE
zir>|aznH&)RI%f+iQ&O>yM5Loe^=H&0eMZe#5JNMC9x#cD!C{XNHG{07#ZpsnCTiD
vgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0y)If)z4*}Q$iB}2U>~S

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitybeltfetish/torn_gray.png b/img/clothes/genitals/chastitybeltfetish/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..cfbde04af6c7029795d2db5c57b97050579f9609
GIT binary patch
literal 462
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!AzY$Vf{s
zUApxD|Np1nzp)4M8B2ovf*Bm1-ADs*lDyqrSo$+=1_C+kC7!;n>`&R`SWMY|Hdq}3
z3a$5aaSW-r_4d+5&Lav8td7weSff4u@12_-Wf8%b&h+TMok}uL86NQA_%pL}=J$W6
z{;hGid;eNQ_SxchziUC9diOK$Tm0^xXTJjCfvAo1J}%)G`2Lx()LuRSME&R4v2#BE
zir>|aznH&)RI%f+iQ&O>yM5Loe^=H&0eMZe#5JNMC9x#cD!C{XNHG{07#ZpsnCTiD
vgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0y)If)z4*}Q$iB}2U>~S

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/frayed.png b/img/clothes/genitals/chastitycagefetish/frayed.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdf9b4f94ef468b0035cfc68dc69dd173b2ae12b
GIT binary patch
literal 382
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838JL)X)Q*2@Uw{-#x}&cn1H;CC?mvmFK)yn<
zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A@C5jTxB_VzY3Zd)
zm;V3%e*=e&3XsoO666=m;PC858i<qR?e4-X$m8<~$YC$>^mS!_$|lER%J#Ft>JU&U
z$<xI#q~g}wiwk)f6nI=NO7Z;W4>&s|r@>K1@%>Nlx?5U6MaZCGvEaSq%x>i+{~Zp@
zxmatrpeptI&xYH=ar+hI0%Y$!2YC(&{J75+mc!ec!0EXgD5_fG8c~vxSdwa$T$Bo=
z7>o>z40R36bd3!{3{0#{fXGzaz`)ADpo;s{G!zZF`6-!cmAEx<hZTXH>gnp|vd$@?
F2>^Q6X7&I8

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/frayed_slime.png b/img/clothes/genitals/chastitycagefetish/frayed_slime.png
new file mode 100644
index 0000000000000000000000000000000000000000..726988272fcbb96c7961d5fbb61f12e74e8b5ab2
GIT binary patch
literal 2117
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

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/frayed_urchin.png b/img/clothes/genitals/chastitycagefetish/frayed_urchin.png
new file mode 100644
index 0000000000000000000000000000000000000000..8a9eab6ea7b0a64c4fa04fa84bb8634e49a61d39
GIT binary patch
literal 2047
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
Do!izF

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/full.png b/img/clothes/genitals/chastitycagefetish/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..214661a177ec7d031840663c543bf809d56dba33
GIT binary patch
literal 383
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838JL)X)Q*2@Uw{-#x}&cn1H;CC?mvmFK)yn<
zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A@C5jTxB_VzY3Zd)
zm;V3%e*=e&3XsoO666=m;PC858i<qR?e4-X$m8<~$YC$>^mS!_$|lER%J#Ft>JU&U
z+0(@_q~g}wiwk)V81T3RPM-AU`rjVoR5K349jmJP=YL5JX9Oxk1~Gdd*4jLH+4s&~
zU_)5ReEt>pZr0i*R2}-r{fP1E!&*CJwLs_pw~pS!cXZCvqi=x{swJ)wB`Jv|saDBF
zsX&Us$iT=@*T78I*dWBf#L5JSOtlRRtPBjQxKB+((U6;;l9^VCTLX7kkrv2mPgg&e
IbxsLQ01^mnhX4Qo

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/full_slime.png b/img/clothes/genitals/chastitycagefetish/full_slime.png
new file mode 100644
index 0000000000000000000000000000000000000000..2414ccedeb347ea51d553df367111ca78562af51
GIT binary patch
literal 2089
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

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/full_urchin.png b/img/clothes/genitals/chastitycagefetish/full_urchin.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcf18d54321a948c6c3d985a3eaa6b54d1ceacd2
GIT binary patch
literal 2154
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
LK(goB23`9bg>3=^

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/tattered.png b/img/clothes/genitals/chastitycagefetish/tattered.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c103d066f9bae74d93cdb55b85cc817f43684bb
GIT binary patch
literal 379
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838JL)X)Q*2@Uw{-#x}&cn1H;CC?mvmFK)yn<
zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A@C5jTxB_VzY3Zd)
zm;V3%e*=e&3XsoO666=m;PC858i<qR?e4-X$m8<~$YC$>^mS!_$|lER%J#Ft>JU&U
z-qXb~q~g}wiyJu^40%`_)&1_&GirUc{&D1B)6A3nVwt)?MaZBb-um8mM&q}3{5PI2
z`E93A?<l_^&%a{#duBDDII>CxhCT0@o9%cN531~43Y1VSag8WRNi0dVN-jzTQVd20
zMuxfuX1c}(AqFN^CO~AWZD3$!U{J+<Y8r}$-29Zxv`X9>xWkIHKvsLY`njxgN@xNA
DNpNJc

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/tattered_slime.png b/img/clothes/genitals/chastitycagefetish/tattered_slime.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b1acb198768cd52c8171cf7d25210247e6b3b62
GIT binary patch
literal 2052
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
O(+s*3aMj-jB>n^2HQ(?6

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/tattered_urchin.png b/img/clothes/genitals/chastitycagefetish/tattered_urchin.png
new file mode 100644
index 0000000000000000000000000000000000000000..8483bc87163337c7ae232d60d2b30d9af41f2426
GIT binary patch
literal 2168
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

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/torn.png b/img/clothes/genitals/chastitycagefetish/torn.png
new file mode 100644
index 0000000000000000000000000000000000000000..e02bc94d642d5f74589380eb23e17c6470a1f62e
GIT binary patch
literal 381
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838JL)X)Q*2@Uw{-#x}&cn1H;CC?mvmFK)yn<
zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A@C5jTxB_VzY3Zd)
zm;V3%e*=e&3XsoO666=m;PC858i<qR?e4-X$m8<~$YC$>^mS!_$|lER%J#Ft>JU&U
z(bL5-q~g}w3k!J}6a-ifnoIoBe_$GViIJ_a<;)LXy>O7LkU@dTq1u`QFZ#am^UN^5
z^_)Fqea?LOfbHV<zWrpBefJsUHze@mKHGOD-q=?)J%&J0)e_f;l9a@fRIB8oR3OD*
zWME{dYhb2pY!G5#Vr2qErrHJuRt5%D+^43YXvob^$xN%nt${nNNDE}Ir>mdKI;Vst
E0HdvDY5)KL

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/torn_slime.png b/img/clothes/genitals/chastitycagefetish/torn_slime.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f5910d16fd10b31bb4c0bc2fcb4b28b46ffa863
GIT binary patch
literal 2046
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
K<XCk$An89cyVSt|

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/chastitycagefetish/torn_urchin.png b/img/clothes/genitals/chastitycagefetish/torn_urchin.png
new file mode 100644
index 0000000000000000000000000000000000000000..faad19d732ec8aa458093b3eb166821a9249e201
GIT binary patch
literal 2111
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
Z5On2Q=zZeOVC%P&@s@VDXIQVae*m?A|91cY

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/goldchastitybelt/full2.png b/img/clothes/genitals/goldchastitybelt/full2.png
new file mode 100644
index 0000000000000000000000000000000000000000..02f5479e2c7d472b807122d427a233c86f254ee5
GIT binary patch
literal 239
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^hz$e5NNCUylnKPdrWcYub
zp>fyZO+Y?lNswPKgTu2MX+Tb&r;B4q#jUs3Hu4@&;Bj?4e~4?%gTLusJ~OQ*3IFV4
zw5wuO0-25*G|1oPzx<80<HV--!EEoi3-kiTGio|_eP=x(s?GkMTcLr0=?tGhZ~X-S
gH{7^Q0m<xn&E&IBd*W;B|5rg=Pgg&ebxsLQ0JaT1cK`qY

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/strapon/frayed.png b/img/clothes/genitals/strapon/frayed.png
new file mode 100644
index 0000000000000000000000000000000000000000..17befff03703cc1c826edd2b34ffef93a751cb75
GIT binary patch
literal 3333
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PWGBEJ$^K@|x
zsfc@fcYoiMREc8`6TOohHFRFQdAp{E(>?LAqCgLOvWiSId$N0~$BUj;L$PB;raqr0
z-W4pnpZL$<{_ov6S2nymS9|xod9|~W&5a-342(=H90DgeZBD3)&46%jNHFv@fSD|;
zJPipim4p=>fPCfyyaFIb<AMf80iD<skUoV3h8<u76a+*J7@C%L`+zm_FqngMFtIc-
zu{mrgnaBy!*ueOJ4XDGR!6D!P1IIKyBd|sThC2{jIk+Sk4qkFq18Zb!kOo=B$mGb#
ztPrv51js6f0}KVsV1|N50t1V;_)M@y35GndRUD&^9SvDvnjB3Aqsf4jWZ=S5_wUd5
z`ulEwKVO`k`zU>X-P>x1CBMHP4XN8vbCFXZgHwWG?Y{Tk*$j8oOBC(vN=vuKzPo<?
zy87EUG4aoxBKGnytroEOvh&X0WB*@mkKeX4{?FgPYrju+-hWQZVDE`?CiTB*hkjNt
zJ+Cr2|FyJF{jss&jQ9r^o?l{^@!!o(Z6V_a!>sua_FI18P57?*exIU_{l7n7&2QJ+
zd|hu+!{ih{=|C1MU+q8MhO1%qm&EfJ=1losG5^m6a|Y%I6|p~jSkCDdy!f2YFlYD1
z(i&Ul1X<g?)l-*ODM#!(aJs(kgEoWqZchE}${XH)w*S>zFL>ws=kh1deX<zVthw$i
ze}R9mq6CAsHH*HvCQwB_gUb07i!F=>KBbZJ6>H3y?*GtV9lpNpK*xa>pY5#}-0bh4
z$o_2jTF`*u+U2Wj!*{)Bex3eLTldy!wGVQQ7oXo}D6lIB2AB5!{@?dFY97Z|9*nbV
zv}UpU^5^%l_c?AXJPm?Nx&KKpKWIAr@e;?Jhyx53h992HzsE3R$%DJ*O!lAWFNrYZ
z;Nj@8`+xfVpYr?uGHm;n@XrL6{4*9D*)HgIpJCdLf93l<yTqFh$erKM_#h?^SZhqa
zd)SC&p6#EHVVjoo@4x%+cX_?d&3|{_e=(2z_())fA<MMq|4*yO=f=wY|JwTee(N89
zpm}dJcp6S}iMAh*W7-WgX#;!Q2WQ>}Pw)DFH~nwh+ZI$ZM<o6FykA{6Mu*9q#peIH
zM3(~$5`j?<k5@29Bxc4LH7avf{Of12{JGqaK~2A+Qu)T;;{EFVx^j$6v(Fy;{GR8X
zkO70*e*S!h$>KV4z)%31aTr#EH5|}o+|TqtVYEIRt-ME@MI57TxRKC0Zv4;ia>+q~
V#XfD8z-|qLr>mdKI;Vst1^^UWV;cYf

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/strapon/full.png b/img/clothes/genitals/strapon/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..17befff03703cc1c826edd2b34ffef93a751cb75
GIT binary patch
literal 3333
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PWGBEJ$^K@|x
zsfc@fcYoiMREc8`6TOohHFRFQdAp{E(>?LAqCgLOvWiSId$N0~$BUj;L$PB;raqr0
z-W4pnpZL$<{_ov6S2nymS9|xod9|~W&5a-342(=H90DgeZBD3)&46%jNHFv@fSD|;
zJPipim4p=>fPCfyyaFIb<AMf80iD<skUoV3h8<u76a+*J7@C%L`+zm_FqngMFtIc-
zu{mrgnaBy!*ueOJ4XDGR!6D!P1IIKyBd|sThC2{jIk+Sk4qkFq18Zb!kOo=B$mGb#
ztPrv51js6f0}KVsV1|N50t1V;_)M@y35GndRUD&^9SvDvnjB3Aqsf4jWZ=S5_wUd5
z`ulEwKVO`k`zU>X-P>x1CBMHP4XN8vbCFXZgHwWG?Y{Tk*$j8oOBC(vN=vuKzPo<?
zy87EUG4aoxBKGnytroEOvh&X0WB*@mkKeX4{?FgPYrju+-hWQZVDE`?CiTB*hkjNt
zJ+Cr2|FyJF{jss&jQ9r^o?l{^@!!o(Z6V_a!>sua_FI18P57?*exIU_{l7n7&2QJ+
zd|hu+!{ih{=|C1MU+q8MhO1%qm&EfJ=1losG5^m6a|Y%I6|p~jSkCDdy!f2YFlYD1
z(i&Ul1X<g?)l-*ODM#!(aJs(kgEoWqZchE}${XH)w*S>zFL>ws=kh1deX<zVthw$i
ze}R9mq6CAsHH*HvCQwB_gUb07i!F=>KBbZJ6>H3y?*GtV9lpNpK*xa>pY5#}-0bh4
z$o_2jTF`*u+U2Wj!*{)Bex3eLTldy!wGVQQ7oXo}D6lIB2AB5!{@?dFY97Z|9*nbV
zv}UpU^5^%l_c?AXJPm?Nx&KKpKWIAr@e;?Jhyx53h992HzsE3R$%DJ*O!lAWFNrYZ
z;Nj@8`+xfVpYr?uGHm;n@XrL6{4*9D*)HgIpJCdLf93l<yTqFh$erKM_#h?^SZhqa
zd)SC&p6#EHVVjoo@4x%+cX_?d&3|{_e=(2z_())fA<MMq|4*yO=f=wY|JwTee(N89
zpm}dJcp6S}iMAh*W7-WgX#;!Q2WQ>}Pw)DFH~nwh+ZI$ZM<o6FykA{6Mu*9q#peIH
zM3(~$5`j?<k5@29Bxc4LH7avf{Of12{JGqaK~2A+Qu)T;;{EFVx^j$6v(Fy;{GR8X
zkO70*e*S!h$>KV4z)%31aTr#EH5|}o+|TqtVYEIRt-ME@MI57TxRKC0Zv4;ia>+q~
V#XfD8z-|qLr>mdKI;Vst1^^UWV;cYf

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/strapon/tattered.png b/img/clothes/genitals/strapon/tattered.png
new file mode 100644
index 0000000000000000000000000000000000000000..17befff03703cc1c826edd2b34ffef93a751cb75
GIT binary patch
literal 3333
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PWGBEJ$^K@|x
zsfc@fcYoiMREc8`6TOohHFRFQdAp{E(>?LAqCgLOvWiSId$N0~$BUj;L$PB;raqr0
z-W4pnpZL$<{_ov6S2nymS9|xod9|~W&5a-342(=H90DgeZBD3)&46%jNHFv@fSD|;
zJPipim4p=>fPCfyyaFIb<AMf80iD<skUoV3h8<u76a+*J7@C%L`+zm_FqngMFtIc-
zu{mrgnaBy!*ueOJ4XDGR!6D!P1IIKyBd|sThC2{jIk+Sk4qkFq18Zb!kOo=B$mGb#
ztPrv51js6f0}KVsV1|N50t1V;_)M@y35GndRUD&^9SvDvnjB3Aqsf4jWZ=S5_wUd5
z`ulEwKVO`k`zU>X-P>x1CBMHP4XN8vbCFXZgHwWG?Y{Tk*$j8oOBC(vN=vuKzPo<?
zy87EUG4aoxBKGnytroEOvh&X0WB*@mkKeX4{?FgPYrju+-hWQZVDE`?CiTB*hkjNt
zJ+Cr2|FyJF{jss&jQ9r^o?l{^@!!o(Z6V_a!>sua_FI18P57?*exIU_{l7n7&2QJ+
zd|hu+!{ih{=|C1MU+q8MhO1%qm&EfJ=1losG5^m6a|Y%I6|p~jSkCDdy!f2YFlYD1
z(i&Ul1X<g?)l-*ODM#!(aJs(kgEoWqZchE}${XH)w*S>zFL>ws=kh1deX<zVthw$i
ze}R9mq6CAsHH*HvCQwB_gUb07i!F=>KBbZJ6>H3y?*GtV9lpNpK*xa>pY5#}-0bh4
z$o_2jTF`*u+U2Wj!*{)Bex3eLTldy!wGVQQ7oXo}D6lIB2AB5!{@?dFY97Z|9*nbV
zv}UpU^5^%l_c?AXJPm?Nx&KKpKWIAr@e;?Jhyx53h992HzsE3R$%DJ*O!lAWFNrYZ
z;Nj@8`+xfVpYr?uGHm;n@XrL6{4*9D*)HgIpJCdLf93l<yTqFh$erKM_#h?^SZhqa
zd)SC&p6#EHVVjoo@4x%+cX_?d&3|{_e=(2z_())fA<MMq|4*yO=f=wY|JwTee(N89
zpm}dJcp6S}iMAh*W7-WgX#;!Q2WQ>}Pw)DFH~nwh+ZI$ZM<o6FykA{6Mu*9q#peIH
zM3(~$5`j?<k5@29Bxc4LH7avf{Of12{JGqaK~2A+Qu)T;;{EFVx^j$6v(Fy;{GR8X
zkO70*e*S!h$>KV4z)%31aTr#EH5|}o+|TqtVYEIRt-ME@MI57TxRKC0Zv4;ia>+q~
V#XfD8z-|qLr>mdKI;Vst1^^UWV;cYf

literal 0
HcmV?d00001

diff --git a/img/clothes/genitals/strapon/torn.png b/img/clothes/genitals/strapon/torn.png
new file mode 100644
index 0000000000000000000000000000000000000000..17befff03703cc1c826edd2b34ffef93a751cb75
GIT binary patch
literal 3333
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PWGBEJ$^K@|x
zsfc@fcYoiMREc8`6TOohHFRFQdAp{E(>?LAqCgLOvWiSId$N0~$BUj;L$PB;raqr0
z-W4pnpZL$<{_ov6S2nymS9|xod9|~W&5a-342(=H90DgeZBD3)&46%jNHFv@fSD|;
zJPipim4p=>fPCfyyaFIb<AMf80iD<skUoV3h8<u76a+*J7@C%L`+zm_FqngMFtIc-
zu{mrgnaBy!*ueOJ4XDGR!6D!P1IIKyBd|sThC2{jIk+Sk4qkFq18Zb!kOo=B$mGb#
ztPrv51js6f0}KVsV1|N50t1V;_)M@y35GndRUD&^9SvDvnjB3Aqsf4jWZ=S5_wUd5
z`ulEwKVO`k`zU>X-P>x1CBMHP4XN8vbCFXZgHwWG?Y{Tk*$j8oOBC(vN=vuKzPo<?
zy87EUG4aoxBKGnytroEOvh&X0WB*@mkKeX4{?FgPYrju+-hWQZVDE`?CiTB*hkjNt
zJ+Cr2|FyJF{jss&jQ9r^o?l{^@!!o(Z6V_a!>sua_FI18P57?*exIU_{l7n7&2QJ+
zd|hu+!{ih{=|C1MU+q8MhO1%qm&EfJ=1losG5^m6a|Y%I6|p~jSkCDdy!f2YFlYD1
z(i&Ul1X<g?)l-*ODM#!(aJs(kgEoWqZchE}${XH)w*S>zFL>ws=kh1deX<zVthw$i
ze}R9mq6CAsHH*HvCQwB_gUb07i!F=>KBbZJ6>H3y?*GtV9lpNpK*xa>pY5#}-0bh4
z$o_2jTF`*u+U2Wj!*{)Bex3eLTldy!wGVQQ7oXo}D6lIB2AB5!{@?dFY97Z|9*nbV
zv}UpU^5^%l_c?AXJPm?Nx&KKpKWIAr@e;?Jhyx53h992HzsE3R$%DJ*O!lAWFNrYZ
z;Nj@8`+xfVpYr?uGHm;n@XrL6{4*9D*)HgIpJCdLf93l<yTqFh$erKM_#h?^SZhqa
zd)SC&p6#EHVVjoo@4x%+cX_?d&3|{_e=(2z_())fA<MMq|4*yO=f=wY|JwTee(N89
zpm}dJcp6S}iMAh*W7-WgX#;!Q2WQ>}Pw)DFH~nwh+ZI$ZM<o6FykA{6Mu*9q#peIH
zM3(~$5`j?<k5@29Bxc4LH7avf{Of12{JGqaK~2A+Qu)T;;{EFVx^j$6v(Fy;{GR8X
zkO70*e*S!h$>KV4z)%31aTr#EH5|}o+|TqtVYEIRt-ME@MI57TxRKC0Zv4;ia>+q~
V#XfD8z-|qLr>mdKI;Vst1^^UWV;cYf

literal 0
HcmV?d00001

diff --git a/img/clothes/neck/collarfetish/full.png b/img/clothes/neck/collarfetish/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdc60ae53e8a6ba6eda8cbf728da3cd0c04f6715
GIT binary patch
literal 3255
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?dYCK&WLn`9l-f+wkNE2xd
zl;zS}wcxPMGVhm3Mr$4{Vrds+VvM%hnKI!?_3@b>oQlr>6<+`I$3b}}77hUghX->G
z953!<RdZ-yU}R#klVFfz1kxM=78(f*GCHv-U{whW70eLT3mO;;Hk3@{1nO*PV0^#}
zq8S>Snb-~-yyOZogss6GVi+Hn1OvOb_)L(&91;xo!1SoWqd_s6DoDs6dp?_gxW4@S
z{<{7T->2Kp`}gbX?eF!fzdt|ckKO-yUF}bnf7%az-=AI4*-$SMx9B^Y-8KFO^MEG(
z#sk`%KmOIL{y4GRl;K|G#PjwH^Zq~o|KrDxD=!ZpK72W!ZC<_b19OJ=dotqf8vhG^
z`1?L`kIMmuiq3n|KO*cI?m2MoV_{ma^5FOXsSlLrUt{PH(PRS`4G}Cn4X&qk!R!uT
zYM!Wc6jTZ@GIcjFZphfF3T6v3GAjfvkpPz(34#U;V!GSGYz3tR2A3|8W^iGk11vWd
zJ)H(-y8un~n3x19P+Si%L~OYu1TI`U8W;sMgLuFN(FUM(-P5AMYyqIDO0Hdw;DSqx
zkvZXFkvEvF#Kh*X#KRC&x-}dCTBj402QIH1fW8~`#Ar;6Ca2LnF<Lr}7O|uC1f@0h
cKSo0(PsS<gihqIK5e83JKbLh*2~7+P0L|?E@c;k-

literal 0
HcmV?d00001

diff --git a/img/clothes/neck/collarfetish/full_gray.png b/img/clothes/neck/collarfetish/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..693596c6b6f2cbf1b1455bc6e24d81c1cce789cc
GIT binary patch
literal 3234
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?dGCf@!Ln`9l-Z<zbkRZ|$
zSZiM!Rcp`eyduMRN5KB-Tdd(F=l<M!^0?Wag+oBWq2YjK<MHB7RyBtP21X_pIUa_7
zFoQ!z#DIZsnw}9*kVC+LVGo#AC<r*fU=gwF1X%9@h7W8IGaMP2A0)g~5(b*bz{q?+
z8cZ{>v+^`FFYWdL8_2_uKWgx3P%w_B3KBC&-4E%Cy1KgG#)od-e!t(&?qBTN)2F-F
z)mL2KSHtw5>&L(EYIe#G<Xg|bsBP~5%KSij$^&nO53Wr6{_p3o`;^JsARqVSIDbR`
z|DXH!?b}!W>&urf|5i8j-)H&3dw^g6)^z^|_CU3^-RC(Z80KI6%_jev{eZc~!RZbU
zx>;)e*9+D>xh%ynQRyfoPj@#kZphfF3N9@K8JQJ=mPmlhf&@VW1~J|3V77u%0)tDJ
zNHeHF;m~1XJFw{KG%(wRg{Q$|ViKs>VQ6$cz!0(Jju4pL(ZDF68N>rBY7{mA-O)WQ
z8q5{|nyTd5<p?f0#2A?qE*5!%*-A`o4of@?A*Bz{I-RIIPLQz<E(aJoL^RpJrBwvb
zI@i;>V0H)4)KO22#>8lH8qE`<rPF8;J6carSYsd1Pul3oIE~FX5!m-&@O1TaS?83{
F1OUEi_+tP7

literal 0
HcmV?d00001

diff --git a/img/clothes/neck/collarleashfetish/acc.png b/img/clothes/neck/collarleashfetish/acc.png
new file mode 100644
index 0000000000000000000000000000000000000000..302a85c7c5744148a49f2ec37b6b0591a437f906
GIT binary patch
literal 3825
zcmeHKX;4#F6u$3~U`RwDMl*=)6hsheDT|^c3Y2BgU~vHjlA<&SBB>~#EO}8XBCVF%
z5fw35+!0J`Wig3)S``ruqNsoY;s(qpASw`u$?GLdf3$x)(_j3$_dCmd=brnWGv^gX
zt_(4y&Y=PTOv6Hhz6Jn=TLe&y;d1LIB_DtpwP8WaR%gZct6IKOh0;lpcW2i-a+7Ge
z#s0qsOA|=GjE6tt5ee)~Po-k5`K~kLiM~FKk2_0T2zxdL5R`P=B*(ILqm}a{I>7)1
z1~FwiBN7<z-P%N=nA@@0h`@Ma#c(!4=JEP!A`C_hz@IXn%ElBo{+~*Temgx!JJR2K
zX+bWbkE<z4Oz|hxkW|D1d!b&62}9j8Y-C_Itu=$9vQz83vDYmwWL|OLyNn@4o^JeV
zg)J*jrmyWLxzi=7<{CDx%Um*G5eWuXN!4>aG1}e)C)CBHj&ND#IpR&l6GQ<lmO^ih
zm6R~sJq}m(o43&gL~Z`3u|ZUC|6AM6cWAVG<THE09!x7VIvk?2#vUs%CZ1f_VJ6a{
z14N!1C%_d{TBDxWWBL_aR7+M7y0s@(gTwwt@t`R<Igpe=t0Sc6muN0w3L{C|!hfAO
z3tQ8SF|S`}>|lygkx}8ZJ2Uf)ByTODna_GFM~SOipGMz_E70iC=~>9d(yB6xzeDsy
zgwuE}>1whhNm3KcE5Ni0qee$6eu0nEc#k*r7vVKfl={j<fkcl$XLqZrA1&G#0>Za&
ziJFUC%r=&RC-<KyDO+GdHZ0exx{+wjgx%cgDvLIA0byOd6xGw!Hm6_kWt9DYdMy@3
z;yN>g$*l(NHWDWO0(oX5G9#&k4KE#G%N+XfoGi)0YeFVE=>Tl41NkX2XTTp$i7U|t
zn1qJX>W_s~JbbghIUc^DS=$IjV~TkR&SI#*CAR4ca`|Vj>2$w%T*vC#ewwoytPOv}
zK?5Jka!b<)J5BoQrlz7yy#M$PH-_lyof*~|xpwfq?cJPCvkz$9Rv&)E8F2h$PUoP2
zxKw)I@{lXw&*N(RWx!*u5~+}9UhfX*;EYeRV+!-N+__x`S_b6=Otn$w_aQQ{Hgrh0
zRHa3uH{2TNf^@smd_z9UMWVH_pRV|O?pET1a&?*1d$<DXLK*``(rtGTv#^GqjC#%}
zS{LgiHQv=q<2^0OPO?Ns6<&8kI)&u&4@+)FWn0|LFUZ3yJTxZ*$0do-JtcT71|D7a
zWRYJgq~xP>nYk@|Imj^WJ^9+89{;DBtLVGzp{bXCOkDs8S05HPtak&wC-yYulrr)9
zRk6clLG|u5>3+!2t@L$rf{NGos<(Cb1PdaZ*2&ckZ<S{+&R6Sg4{dp)TL%s_Dn_DY
z;6PzD^t(5Z8(s<hBDPh*i2R(1an6uK8}oTKvy*t#6~N-eMd7;clBQ&+Z7b2f=j=q@
z7G+&w;@9G`lXpP2a&J_^i}JVw8&4e5J0$7WbR98Dt}vS=AjHBvlB^?boPia@pS@-_
ziXIt8`}|Kj=bgf|tT*rm2W2a6iFLi48<k&jS<jia;T2+MwO;&{?mYJt$eB;<P^f6?
ztL;aAz$;))h0wS!Kg_~XUJ1rrtH&#^SBd+G{J7V?mL;sujbp=c9e2Kx@TmY7kG^>>
zeUJJbZ=FUzXCWX`e!aRmlB{<2FcS~6_Oxpc$;EwTVQ4R8d~b|+XayCwyi3b1VB*Wa
z>7a_N;Fqkfd+6&>!4S6o_A~8FZI@2dn0M)yUP{h2OiPSes=P#~;NUTDp-C3v#~}4k
z>xi;;H&9l8^w`9tK?y>s?3?_B6I=5>SObgGy}S)zABlnOYfhMu+dXhC2itqTO*Q~?
zlX<{Ge9JI{lt;0VzI*pu4Zw~b2^<27OeSU$HY}0{M@!F70;h5ilrwuKlmpR9gk0|B
z8#M_+*~mVP`{bNc1|#8bJu?Z4G1Po0W^$rgOlDw8Rm2LzSmS_@?Ot3yVu*b^b>7rP
q;PXtq$P~4vYGkTw{m1r8fXwrYYL(NwN8z6=2n${rRK1+H8~g>d3GD0u

literal 0
HcmV?d00001

diff --git a/img/clothes/neck/collarleashfetish/acc_gray.png b/img/clothes/neck/collarleashfetish/acc_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..302a85c7c5744148a49f2ec37b6b0591a437f906
GIT binary patch
literal 3825
zcmeHKX;4#F6u$3~U`RwDMl*=)6hsheDT|^c3Y2BgU~vHjlA<&SBB>~#EO}8XBCVF%
z5fw35+!0J`Wig3)S``ruqNsoY;s(qpASw`u$?GLdf3$x)(_j3$_dCmd=brnWGv^gX
zt_(4y&Y=PTOv6Hhz6Jn=TLe&y;d1LIB_DtpwP8WaR%gZct6IKOh0;lpcW2i-a+7Ge
z#s0qsOA|=GjE6tt5ee)~Po-k5`K~kLiM~FKk2_0T2zxdL5R`P=B*(ILqm}a{I>7)1
z1~FwiBN7<z-P%N=nA@@0h`@Ma#c(!4=JEP!A`C_hz@IXn%ElBo{+~*Temgx!JJR2K
zX+bWbkE<z4Oz|hxkW|D1d!b&62}9j8Y-C_Itu=$9vQz83vDYmwWL|OLyNn@4o^JeV
zg)J*jrmyWLxzi=7<{CDx%Um*G5eWuXN!4>aG1}e)C)CBHj&ND#IpR&l6GQ<lmO^ih
zm6R~sJq}m(o43&gL~Z`3u|ZUC|6AM6cWAVG<THE09!x7VIvk?2#vUs%CZ1f_VJ6a{
z14N!1C%_d{TBDxWWBL_aR7+M7y0s@(gTwwt@t`R<Igpe=t0Sc6muN0w3L{C|!hfAO
z3tQ8SF|S`}>|lygkx}8ZJ2Uf)ByTODna_GFM~SOipGMz_E70iC=~>9d(yB6xzeDsy
zgwuE}>1whhNm3KcE5Ni0qee$6eu0nEc#k*r7vVKfl={j<fkcl$XLqZrA1&G#0>Za&
ziJFUC%r=&RC-<KyDO+GdHZ0exx{+wjgx%cgDvLIA0byOd6xGw!Hm6_kWt9DYdMy@3
z;yN>g$*l(NHWDWO0(oX5G9#&k4KE#G%N+XfoGi)0YeFVE=>Tl41NkX2XTTp$i7U|t
zn1qJX>W_s~JbbghIUc^DS=$IjV~TkR&SI#*CAR4ca`|Vj>2$w%T*vC#ewwoytPOv}
zK?5Jka!b<)J5BoQrlz7yy#M$PH-_lyof*~|xpwfq?cJPCvkz$9Rv&)E8F2h$PUoP2
zxKw)I@{lXw&*N(RWx!*u5~+}9UhfX*;EYeRV+!-N+__x`S_b6=Otn$w_aQQ{Hgrh0
zRHa3uH{2TNf^@smd_z9UMWVH_pRV|O?pET1a&?*1d$<DXLK*``(rtGTv#^GqjC#%}
zS{LgiHQv=q<2^0OPO?Ns6<&8kI)&u&4@+)FWn0|LFUZ3yJTxZ*$0do-JtcT71|D7a
zWRYJgq~xP>nYk@|Imj^WJ^9+89{;DBtLVGzp{bXCOkDs8S05HPtak&wC-yYulrr)9
zRk6clLG|u5>3+!2t@L$rf{NGos<(Cb1PdaZ*2&ckZ<S{+&R6Sg4{dp)TL%s_Dn_DY
z;6PzD^t(5Z8(s<hBDPh*i2R(1an6uK8}oTKvy*t#6~N-eMd7;clBQ&+Z7b2f=j=q@
z7G+&w;@9G`lXpP2a&J_^i}JVw8&4e5J0$7WbR98Dt}vS=AjHBvlB^?boPia@pS@-_
ziXIt8`}|Kj=bgf|tT*rm2W2a6iFLi48<k&jS<jia;T2+MwO;&{?mYJt$eB;<P^f6?
ztL;aAz$;))h0wS!Kg_~XUJ1rrtH&#^SBd+G{J7V?mL;sujbp=c9e2Kx@TmY7kG^>>
zeUJJbZ=FUzXCWX`e!aRmlB{<2FcS~6_Oxpc$;EwTVQ4R8d~b|+XayCwyi3b1VB*Wa
z>7a_N;Fqkfd+6&>!4S6o_A~8FZI@2dn0M)yUP{h2OiPSes=P#~;NUTDp-C3v#~}4k
z>xi;;H&9l8^w`9tK?y>s?3?_B6I=5>SObgGy}S)zABlnOYfhMu+dXhC2itqTO*Q~?
zlX<{Ge9JI{lt;0VzI*pu4Zw~b2^<27OeSU$HY}0{M@!F70;h5ilrwuKlmpR9gk0|B
z8#M_+*~mVP`{bNc1|#8bJu?Z4G1Po0W^$rgOlDw8Rm2LzSmS_@?Ot3yVu*b^b>7rP
q;PXtq$P~4vYGkTw{m1r8fXwrYYL(NwN8z6=2n${rRK1+H8~g>d3GD0u

literal 0
HcmV?d00001

diff --git a/img/clothes/neck/collarleashfetish/full.png b/img/clothes/neck/collarleashfetish/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdc60ae53e8a6ba6eda8cbf728da3cd0c04f6715
GIT binary patch
literal 3255
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?dYCK&WLn`9l-f+wkNE2xd
zl;zS}wcxPMGVhm3Mr$4{Vrds+VvM%hnKI!?_3@b>oQlr>6<+`I$3b}}77hUghX->G
z953!<RdZ-yU}R#klVFfz1kxM=78(f*GCHv-U{whW70eLT3mO;;Hk3@{1nO*PV0^#}
zq8S>Snb-~-yyOZogss6GVi+Hn1OvOb_)L(&91;xo!1SoWqd_s6DoDs6dp?_gxW4@S
z{<{7T->2Kp`}gbX?eF!fzdt|ckKO-yUF}bnf7%az-=AI4*-$SMx9B^Y-8KFO^MEG(
z#sk`%KmOIL{y4GRl;K|G#PjwH^Zq~o|KrDxD=!ZpK72W!ZC<_b19OJ=dotqf8vhG^
z`1?L`kIMmuiq3n|KO*cI?m2MoV_{ma^5FOXsSlLrUt{PH(PRS`4G}Cn4X&qk!R!uT
zYM!Wc6jTZ@GIcjFZphfF3T6v3GAjfvkpPz(34#U;V!GSGYz3tR2A3|8W^iGk11vWd
zJ)H(-y8un~n3x19P+Si%L~OYu1TI`U8W;sMgLuFN(FUM(-P5AMYyqIDO0Hdw;DSqx
zkvZXFkvEvF#Kh*X#KRC&x-}dCTBj402QIH1fW8~`#Ar;6Ca2LnF<Lr}7O|uC1f@0h
cKSo0(PsS<gihqIK5e83JKbLh*2~7+P0L|?E@c;k-

literal 0
HcmV?d00001

diff --git a/img/clothes/neck/collarleashfetish/full_gray.png b/img/clothes/neck/collarleashfetish/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..693596c6b6f2cbf1b1455bc6e24d81c1cce789cc
GIT binary patch
literal 3234
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?dGCf@!Ln`9l-Z<zbkRZ|$
zSZiM!Rcp`eyduMRN5KB-Tdd(F=l<M!^0?Wag+oBWq2YjK<MHB7RyBtP21X_pIUa_7
zFoQ!z#DIZsnw}9*kVC+LVGo#AC<r*fU=gwF1X%9@h7W8IGaMP2A0)g~5(b*bz{q?+
z8cZ{>v+^`FFYWdL8_2_uKWgx3P%w_B3KBC&-4E%Cy1KgG#)od-e!t(&?qBTN)2F-F
z)mL2KSHtw5>&L(EYIe#G<Xg|bsBP~5%KSij$^&nO53Wr6{_p3o`;^JsARqVSIDbR`
z|DXH!?b}!W>&urf|5i8j-)H&3dw^g6)^z^|_CU3^-RC(Z80KI6%_jev{eZc~!RZbU
zx>;)e*9+D>xh%ynQRyfoPj@#kZphfF3N9@K8JQJ=mPmlhf&@VW1~J|3V77u%0)tDJ
zNHeHF;m~1XJFw{KG%(wRg{Q$|ViKs>VQ6$cz!0(Jju4pL(ZDF68N>rBY7{mA-O)WQ
z8q5{|nyTd5<p?f0#2A?qE*5!%*-A`o4of@?A*Bz{I-RIIPLQz<E(aJoL^RpJrBwvb
zI@i;>V0H)4)KO22#>8lH8qE`<rPF8;J6carSYsd1Pul3oIE~FX5!m-&@O1TaS?83{
F1OUEi_+tP7

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotard/full.png b/img/clothes/under_lower/leotard/frayed_gray.png
similarity index 100%
rename from img/clothes/under_lower/leotard/full.png
rename to img/clothes/under_lower/leotard/frayed_gray.png
diff --git a/img/clothes/under_lower/leotard/full_gray.png b/img/clothes/under_lower/leotard/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..d67eb5c3a0c628be33f64ca1852649f4b88c0e7b
GIT binary patch
literal 314
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwWtrz$e5N#I-QDwY7C|aq;o-
zvA4JX|Np<6#s@Eu@{%CGU<QY0H_||yByV>Yh7ML)4<P55r;B4q#jUs3FLJgx@VH*g
zOpNm2&O9h~sa|_^Ge`7+ya|@<f9f9Ab@VX;RpSN+W}nsn{Wf1d!Oi8_#Mhm3c7xb)
zp93pbTKubX_`Z+fbwiYRNJ?<Sv0BD!jFof5uT+VjJ^PJy2mgx5&BhM5_c45DtgLG-
zW6QWL{=hQ9gk6H^3rod6H}}i`Gl07Bfdl7j7^Z1Q%j$LW2!qsly85}Sb4q9e03+R9
AqyPW_

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotard/full_orig.png b/img/clothes/under_lower/leotard/full_orig.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ffa28fc471df038cc02e56b0e738b822a3afdf6
GIT binary patch
literal 533
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5L<4+6T!FN?g}JS*
zt&59`kB^VNz5W0H|J^h`cmX9COM?7@862M7NCR<_yxm>c64Q3n0y&%o9+AZi419+{
znDKc2iWHzAdx@v7EBjM6ITlmxJ@IMVfkL-ET^vIyZoR#Ju(#Pkgw-)fq17`HNSw46
z-5fD(E8~oBS*umf{r$qvv5gm~95-m#pY#9e|F54JE9-j<pBt`EKXY6B%HNs;;$P0c
zn`M8^B2PZx`)9_||CR}{+}CDYWIR-7x8R*U`<cfv8`hNv7By^`&%fgLddBSd>dJ;S
z5ccOkT)O-dfJT=7w@v8g7XY*Vn(uP`zqr&MXdEMM*Dy4kuVk2}9WASScjqIZGSw2-
zh?11Vl2ohYqEsNoU}RuqsB2)RYitl=U}9wgM5fvX237_JRothhp=ij>PsvQH#I1ol
RtVj#w5KmV>mvv4FO#nuaqDlY&

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotard/penis_gray.png b/img/clothes/under_lower/leotard/penis_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..84a8aa4703a42c6da42c18c4f8d74f23a9122bf9
GIT binary patch
literal 514
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83890C>!-L-wcLOPwbVpxD28NCO+<y{TfqaEz
zk04(LhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yLU@8gn3ua&_n|#&+
z#7pvacVYP7-hXC4kjGiz5n0T@z;^_M8K-LVNdpDhOFVsD*`Kn>v6yP_iBH=O6guqb
z;uunK>+O|5-UbH&=Y#C_30&+aTosJIO`2`EA@@=aBTy0fAaw8h5~jba&%I<gW0iK!
zF7|Hi<+sPzT)xkKV-91^IR>+IhS|pCn-0>MplNS*n%S;>_7{*3RZCnWN>UO_QmvAU
zQh^kMk%5t+u7R1Zu|bG|iIoWunQ9vtSQ!{pai5xoq9HdwB{QuOw+8O8A}yc>36KrJ
r`DrEPiAAXl1&Nt?C3<<OB?=~bhI(dy{WyV<#lYa{>gTe~DWM4f=@oM7

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotard/tattered_gray.png b/img/clothes/under_lower/leotard/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea53a3d8726620d73608a8f0714aa667bcf4f324
GIT binary patch
literal 533
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5L<4+6T!FN?g}JS*
zt&59`kB^VNz5W0H|J^h`cmX9COM?7@862M7NCR<_yxm>c64Q3n0y&%o9+AZi419+{
znDKc2iWHzAdx@v7EBjM6ITlkLCF{>3K%v{7E{-7;x87bq*xT$N!s-~L(CV28Bu?6k
zZjP9?m2t+mtko*#{(j--*v1P~jvF-W&-wrK|JToqmGwP_&kfh7pSdl5<!{Xa@h|7!
z&9c8{ktZMU{WD|ff6Ihe?rSqHG9Ie4Tky`F{mkQ-4eQDSiyAh}=U?%AJ!5u!b!EdE
z2>bINE?xc!KqE{4+a`4L3xHXF&3C!}UtDSrG>#FsYZw~NS29e~j+WKEyYmrHnQDn^
zL`h0wNvc(HQ7VvPFfuSQ)HN{EH8uz_FtIWLB2#Sx11kfAD(+L$P&DM`r(~v8;?}?&
RR-^@Th^MQc%Q~loCIBlMp?3fP

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotard/torn_gray.png b/img/clothes/under_lower/leotard/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea53a3d8726620d73608a8f0714aa667bcf4f324
GIT binary patch
literal 533
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5L<4+6T!FN?g}JS*
zt&59`kB^VNz5W0H|J^h`cmX9COM?7@862M7NCR<_yxm>c64Q3n0y&%o9+AZi419+{
znDKc2iWHzAdx@v7EBjM6ITlkLCF{>3K%v{7E{-7;x87bq*xT$N!s-~L(CV28Bu?6k
zZjP9?m2t+mtko*#{(j--*v1P~jvF-W&-wrK|JToqmGwP_&kfh7pSdl5<!{Xa@h|7!
z&9c8{ktZMU{WD|ff6Ihe?rSqHG9Ie4Tky`F{mkQ-4eQDSiyAh}=U?%AJ!5u!b!EdE
z2>bINE?xc!KqE{4+a`4L3xHXF&3C!}UtDSrG>#FsYZw~NS29e~j+WKEyYmrHnQDn^
zL`h0wNvc(HQ7VvPFfuSQ)HN{EH8uz_FtIWLB2#Sx11kfAD(+L$P&DM`r(~v8;?}?&
RR-^@Th^MQc%Q~loCIBlMp?3fP

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotardskimpy/frayed.png b/img/clothes/under_lower/leotardskimpy/frayed.png
index ee7acb55260ccc194ca264ceb811d40de6805be7..f95c07a932ec3df2bbd366233aecfe331782bc29 100644
GIT binary patch
literal 735
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fYJY5_^DsH{KyOFEeK!o*z
zMpN_s=i$F<`TTa3a80@7ap1d6x?ofZ$KDC$%3DN$`bG$-lh$$6$<|Ci|2)4=SmFPk
zLm8Y54$KD*m;dwr`t#3Dx!&_@-{1FTQuzOAJtG4{(JURu9QVg61?5EyPvm(S7zBEX
z=Ow(_-tga6_|Lb!o9!pm|GW+iIVlDu9~SS&f6M+sHJUJ_%wu`;$MN6OcxDEM42Ban
zoHu?p|2b_h#lUcZVM3+QhR^Ijr`MYR_1;u(y!T&`?*vF{WPt_)JtGV2gd4s`e}O#i
M>FVdQ&MBb@0Qlf%9RL6T

literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

diff --git a/img/clothes/under_lower/leotardskimpy/frayed_gray.png b/img/clothes/under_lower/leotardskimpy/frayed_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee7acb55260ccc194ca264ceb811d40de6805be7
GIT binary patch
literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotardskimpy/full.png b/img/clothes/under_lower/leotardskimpy/full.png
index ee7acb55260ccc194ca264ceb811d40de6805be7..f95c07a932ec3df2bbd366233aecfe331782bc29 100644
GIT binary patch
literal 735
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fYJY5_^DsH{KyOFEeK!o*z
zMpN_s=i$F<`TTa3a80@7ap1d6x?ofZ$KDC$%3DN$`bG$-lh$$6$<|Ci|2)4=SmFPk
zLm8Y54$KD*m;dwr`t#3Dx!&_@-{1FTQuzOAJtG4{(JURu9QVg61?5EyPvm(S7zBEX
z=Ow(_-tga6_|Lb!o9!pm|GW+iIVlDu9~SS&f6M+sHJUJ_%wu`;$MN6OcxDEM42Ban
zoHu?p|2b_h#lUcZVM3+QhR^Ijr`MYR_1;u(y!T&`?*vF{WPt_)JtGV2gd4s`e}O#i
M>FVdQ&MBb@0Qlf%9RL6T

literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

diff --git a/img/clothes/under_lower/leotardskimpy/full_gray.png b/img/clothes/under_lower/leotardskimpy/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee7acb55260ccc194ca264ceb811d40de6805be7
GIT binary patch
literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotardskimpy/penis.png b/img/clothes/under_lower/leotardskimpy/penis.png
index 84a8aa4703a42c6da42c18c4f8d74f23a9122bf9..ac9ada5db463ef74ae7db5210931410b0368abbe 100644
GIT binary patch
literal 637
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!dlo-U3d6}R5r*vNZ8frsS)
zzv~S{ZiC=ut;by5JWj+W@2pLE=?c;|0)f2YB+E&foCW_sTybGw_+Q+S;2*yA-{x;|
ypT9kO@b4f$1A_(wLjy2ypwtKqBA}N)uyNm?#JSA#z5OOo0C>9kxvX<aXaWG&Gcbez

literal 514
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83890C>!-L-wcLOPwbVpxD28NCO+<y{TfqaEz
zk04(LhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yLU@8gn3ua&_n|#&+
z#7pvacVYP7-hXC4kjGiz5n0T@z;^_M8K-LVNdpDhOFVsD*`Kn>v6yP_iBH=O6guqb
z;uunK>+O|5-UbH&=Y#C_30&+aTosJIO`2`EA@@=aBTy0fAaw8h5~jba&%I<gW0iK!
zF7|Hi<+sPzT)xkKV-91^IR>+IhS|pCn-0>MplNS*n%S;>_7{*3RZCnWN>UO_QmvAU
zQh^kMk%5t+u7R1Zu|bG|iIoWunQ9vtSQ!{pai5xoq9HdwB{QuOw+8O8A}yc>36KrJ
r`DrEPiAAXl1&Nt?C3<<OB?=~bhI(dy{WyV<#lYa{>gTe~DWM4f=@oM7

diff --git a/img/clothes/under_lower/leotardskimpy/penis_gray.png b/img/clothes/under_lower/leotardskimpy/penis_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..84a8aa4703a42c6da42c18c4f8d74f23a9122bf9
GIT binary patch
literal 514
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83890C>!-L-wcLOPwbVpxD28NCO+<y{TfqaEz
zk04(LhAK4%hK3dfhF?ITh8GMBr3MTPuM!v-tY$DUh!@P+6=(yLU@8gn3ua&_n|#&+
z#7pvacVYP7-hXC4kjGiz5n0T@z;^_M8K-LVNdpDhOFVsD*`Kn>v6yP_iBH=O6guqb
z;uunK>+O|5-UbH&=Y#C_30&+aTosJIO`2`EA@@=aBTy0fAaw8h5~jba&%I<gW0iK!
zF7|Hi<+sPzT)xkKV-91^IR>+IhS|pCn-0>MplNS*n%S;>_7{*3RZCnWN>UO_QmvAU
zQh^kMk%5t+u7R1Zu|bG|iIoWunQ9vtSQ!{pai5xoq9HdwB{QuOw+8O8A}yc>36KrJ
r`DrEPiAAXl1&Nt?C3<<OB?=~bhI(dy{WyV<#lYa{>gTe~DWM4f=@oM7

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotardskimpy/tattered.png b/img/clothes/under_lower/leotardskimpy/tattered.png
index ee7acb55260ccc194ca264ceb811d40de6805be7..f95c07a932ec3df2bbd366233aecfe331782bc29 100644
GIT binary patch
literal 735
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fYJY5_^DsH{KyOFEeK!o*z
zMpN_s=i$F<`TTa3a80@7ap1d6x?ofZ$KDC$%3DN$`bG$-lh$$6$<|Ci|2)4=SmFPk
zLm8Y54$KD*m;dwr`t#3Dx!&_@-{1FTQuzOAJtG4{(JURu9QVg61?5EyPvm(S7zBEX
z=Ow(_-tga6_|Lb!o9!pm|GW+iIVlDu9~SS&f6M+sHJUJ_%wu`;$MN6OcxDEM42Ban
zoHu?p|2b_h#lUcZVM3+QhR^Ijr`MYR_1;u(y!T&`?*vF{WPt_)JtGV2gd4s`e}O#i
M>FVdQ&MBb@0Qlf%9RL6T

literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

diff --git a/img/clothes/under_lower/leotardskimpy/tattered_gray.png b/img/clothes/under_lower/leotardskimpy/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee7acb55260ccc194ca264ceb811d40de6805be7
GIT binary patch
literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/leotardskimpy/torn.png b/img/clothes/under_lower/leotardskimpy/torn.png
index ee7acb55260ccc194ca264ceb811d40de6805be7..f95c07a932ec3df2bbd366233aecfe331782bc29 100644
GIT binary patch
literal 735
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fYJY5_^DsH{KyOFEeK!o*z
zMpN_s=i$F<`TTa3a80@7ap1d6x?ofZ$KDC$%3DN$`bG$-lh$$6$<|Ci|2)4=SmFPk
zLm8Y54$KD*m;dwr`t#3Dx!&_@-{1FTQuzOAJtG4{(JURu9QVg61?5EyPvm(S7zBEX
z=Ow(_-tga6_|Lb!o9!pm|GW+iIVlDu9~SS&f6M+sHJUJ_%wu`;$MN6OcxDEM42Ban
zoHu?p|2b_h#lUcZVM3+QhR^Ijr`MYR_1;u(y!T&`?*vF{WPt_)JtGV2gd4s`e}O#i
M>FVdQ&MBb@0Qlf%9RL6T

literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

diff --git a/img/clothes/under_lower/leotardskimpy/torn_gray.png b/img/clothes/under_lower/leotardskimpy/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee7acb55260ccc194ca264ceb811d40de6805be7
GIT binary patch
literal 489
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XB4ude`@%$Aj
zKtc8rPhVH|r)+X8rrLYr)3yVJwtBiahE&{od*vc0lc5Of#oU8pmkxcqKf6sMqQT&V
z^>gL@#hi-QK~BaA4&1M<nR(+p`;)(0-<96cjtKbvnX$B<ze2xa?pf9)e`_4>-k*OV
z(qQX+{uRHkSGL~1QfIf|UA@?ux6heh{fji%2@<b9_y#1pUySEHP}B~mT_A}M(f)}H
z%7RmEt%0G(pjzS@QIe8al4_M)lnSI6j0}tnbq&mPjSWH!Osq_R$W+_Fz{<d&iu=?w
d6b-rgDVb@NxHWKx6={Ji^mO%eS?83{1OSG8j{X1u

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/acc.png b/img/clothes/under_lower/straponhorse/acc.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddd542364d6251927bf454705f25c058e5337d93
GIT binary patch
literal 3531
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PW0u{A*x;TbZ
z#J#;6m?si0!V=J4+7Q9<I$bfR#ij5`O@xze^6t}DgVp0*<j(JXf8}+cqt2)6lj}JI
z6dW2D8Z8_5Kl6KYfCbDwFq!Fr5JcROku|}f#9a-jhLMS@!5U1nu(66X9K0Yq6DY>Q
zp~3JDObbYe1Te5Um!|;51QZr9>|h3)mJr~;D8X}gA}7ee2BrsmqXv%#g~Mp77|kF<
zx~zzK!dLV2)6@6$;eY@B{=RZ%?f-v&E6=Tu-|siKSg<TxXobLsKjB9{6nOubu-{{e
z9fO|G6jRPQ3J-qTGhU6h(_|3e$$}=R#Sp%e*^Xh|q$#$XHG3MK|9|Ye_wi(=g00>K
z-`EfK%iGVZXM6Dc{QQ3<FS4c|-p8;1;Aj1hj>YU>6y=}R{Wp+jcyIoNk7b?KgP;4e
zisn{pGtAv7lUMrX@-KaP5&irxZ*OmZ9{=y<^56aU-WMq9D>x{q6@1xK^)ERvrfLFH
z!Nngn3^67a*}^{<7|;J_SE%B)XD;|^{o&XCoAQ4JAHKdWUppb@?(u&ta*+o<|3C3^
zUcFg8Q^CHED}`$q=A3$cmNSIA;@|4WE93nbSM<Nw#@b)^{Qs}mceQ_Wqbo!indU1N
zy#HMD{<ZyMpR{@U3mE3)%giiz&s_WdwQ{>b3qzwh=bhg+_kaH~*L^zs6|i>s)$uO+
z!;6D<zkbzT-ZP7#QLS<D^WQIC`=)O^{ga97z|UhBIo<hxT)e*cw3J)Jfp#t#+xzbE
z|1YHOiQL=36d-@`wph*I1=Sz!KYOv8BPQ^`=lY{pK3QusRDM3;BF`Y0=FAboRq;<d
zd1bU0<BIMl`&;k*vi`RCz4fnO-0l127ko*I$aZ>g?fDneV;8^6*53VWU%2<5{Su~t
zS>M<4ui|gG#IV-&fh^O!|K$&UUYiYc?(CIz&s*33_j^BGH|}5F|LOJre|>%ZSwH{p
z{vUr|zUSKiz1GhCXb6)uP)qL|``1&r4y2#FZ*iUdKyN^t+XF^coB#Y0Sr;dYG%PY$
z;{>W|S%R3j9K3GHfa}r#l?4nUt%;&w&IF+VhM-H&AhoCxBkKYUp4AY}lm?~=lg!$|
zm9Yq?27_y2L@SuHghixb$`(s-b-cjCfl-6&uojr3pt^uz$&#~*;9A`kXk(y67=)wA
z$f}^4%Ll681vG#*b{*Ql1?G4F4c5#o2DcL&CIZ7+q%9P}@p54F@SN=oc6}Gn#!;_;
sTUMj7GMd1E31Kv^4F3|Wv7X^d&O`xzSGQnb=ZwMA)z4*}Q$iC10JLSl>Hq)$

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/acc_gray.png b/img/clothes/under_lower/straponhorse/acc_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddd542364d6251927bf454705f25c058e5337d93
GIT binary patch
literal 3531
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PW0u{A*x;TbZ
z#J#;6m?si0!V=J4+7Q9<I$bfR#ij5`O@xze^6t}DgVp0*<j(JXf8}+cqt2)6lj}JI
z6dW2D8Z8_5Kl6KYfCbDwFq!Fr5JcROku|}f#9a-jhLMS@!5U1nu(66X9K0Yq6DY>Q
zp~3JDObbYe1Te5Um!|;51QZr9>|h3)mJr~;D8X}gA}7ee2BrsmqXv%#g~Mp77|kF<
zx~zzK!dLV2)6@6$;eY@B{=RZ%?f-v&E6=Tu-|siKSg<TxXobLsKjB9{6nOubu-{{e
z9fO|G6jRPQ3J-qTGhU6h(_|3e$$}=R#Sp%e*^Xh|q$#$XHG3MK|9|Ye_wi(=g00>K
z-`EfK%iGVZXM6Dc{QQ3<FS4c|-p8;1;Aj1hj>YU>6y=}R{Wp+jcyIoNk7b?KgP;4e
zisn{pGtAv7lUMrX@-KaP5&irxZ*OmZ9{=y<^56aU-WMq9D>x{q6@1xK^)ERvrfLFH
z!Nngn3^67a*}^{<7|;J_SE%B)XD;|^{o&XCoAQ4JAHKdWUppb@?(u&ta*+o<|3C3^
zUcFg8Q^CHED}`$q=A3$cmNSIA;@|4WE93nbSM<Nw#@b)^{Qs}mceQ_Wqbo!indU1N
zy#HMD{<ZyMpR{@U3mE3)%giiz&s_WdwQ{>b3qzwh=bhg+_kaH~*L^zs6|i>s)$uO+
z!;6D<zkbzT-ZP7#QLS<D^WQIC`=)O^{ga97z|UhBIo<hxT)e*cw3J)Jfp#t#+xzbE
z|1YHOiQL=36d-@`wph*I1=Sz!KYOv8BPQ^`=lY{pK3QusRDM3;BF`Y0=FAboRq;<d
zd1bU0<BIMl`&;k*vi`RCz4fnO-0l127ko*I$aZ>g?fDneV;8^6*53VWU%2<5{Su~t
zS>M<4ui|gG#IV-&fh^O!|K$&UUYiYc?(CIz&s*33_j^BGH|}5F|LOJre|>%ZSwH{p
z{vUr|zUSKiz1GhCXb6)uP)qL|``1&r4y2#FZ*iUdKyN^t+XF^coB#Y0Sr;dYG%PY$
z;{>W|S%R3j9K3GHfa}r#l?4nUt%;&w&IF+VhM-H&AhoCxBkKYUp4AY}lm?~=lg!$|
zm9Yq?27_y2L@SuHghixb$`(s-b-cjCfl-6&uojr3pt^uz$&#~*;9A`kXk(y67=)wA
z$f}^4%Ll681vG#*b{*Ql1?G4F4c5#o2DcL&CIZ7+q%9P}@p54F@SN=oc6}Gn#!;_;
sTUMj7GMd1E31Kv^4F3|Wv7X^d&O`xzSGQnb=ZwMA)z4*}Q$iC10JLSl>Hq)$

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/frayed.png b/img/clothes/under_lower/straponhorse/frayed.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad64e63b137f7a6ce55599b6c82cb2c20ee91760
GIT binary patch
literal 861
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-l|5Y?Ln`LHy}L1!*^r^_
zBD4NXUZVze&zYi|T(+H*@=I=2DB97Hd$9I>qf~g-zWoC1_soF0hY?VC{`gDP&)Ts2
z>=kl<oo6sM=>2uRAhS=gfe*p^b^GPh^P7LoJMj0V{2?BO5+M1lss8@9)4#V#GFTYE
z6yD(Yn{D;@`_=Eva_;{H(ij$a{}(WG+8@);h-BEk%lDsuU9(UAgT=3Q17?O;An9L!
zVQD>wF$0L4HUA&bf)_Aro-N;B$xy?>avZMUcJ(jm^sj##j$gEIkz{yr$)4rx!{0yH
zt-kOlvN7xelH1u19JeosftkKwul?T-U)YZ?huI*N*uQ-5-u-`Np4Zr}e$V@7{y)Vt
z3=Y%(DdxyEL?353Pzbji;!`mBL$c}ToaHD%FpSaw9<R)MEzR@r>0SPp7c4=lJYD@<
K);T3KF#rJaZouUL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/frayed_gray.png b/img/clothes/under_lower/straponhorse/frayed_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..47733e61da3796da76aa48e4fb4fef7f0c13bd79
GIT binary patch
literal 669
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$Z_DPZ!6Kid%2*?DswFAjA6L
zdB-HZDGR3X9Awkj9bmwzyn#81xkW;;<fX9VL@W2i=%x?u0gvu~Hx+kTwdeBFyEpwn
zM$!Qsh%dQn->~{xzxmvg3jeFpmN8^7EDirZQB0wpmqFw4ieIn(XYrlbZ@|l7(ol78
z{h!+^#l?>Qq!<=3ifr&L`uFbZT5X0;*BKbN9R!bCnlV4gXJnYeIAvqb-+%ejQzkz-
z_b(o-c*@QHU+*(S7d!kr2Mn|Xt<_Q9-|n9Oz2CWe+M2nnC*qlb#&^E|?>3Kd!hT~0
z2j&@Fwcr2R72Ns%wykgv`yZ2&w`wNrX9K!T_=lK<&CR`e^55%MC&p}fa!{1vXEs9v
zn}OhKy`2(a-y?tj`Cl3He|r7fKc);CYmVG9&pw%IcaL$KSJC|U?<JhUuK81b`r7;N
zer@~B5C53+B#;?obV$gn$cElM-jjiBpHjvdTi37q_V3;z-C3H7_1p{(cpmJ(DSzi<
ysacOc`+Mnn_IH|pf1kf(&-<(rWdA?_;SX$UovM}pF!hOntoL;Fb6Mw<&;$VfPRjcL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/full.png b/img/clothes/under_lower/straponhorse/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad64e63b137f7a6ce55599b6c82cb2c20ee91760
GIT binary patch
literal 861
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-l|5Y?Ln`LHy}L1!*^r^_
zBD4NXUZVze&zYi|T(+H*@=I=2DB97Hd$9I>qf~g-zWoC1_soF0hY?VC{`gDP&)Ts2
z>=kl<oo6sM=>2uRAhS=gfe*p^b^GPh^P7LoJMj0V{2?BO5+M1lss8@9)4#V#GFTYE
z6yD(Yn{D;@`_=Eva_;{H(ij$a{}(WG+8@);h-BEk%lDsuU9(UAgT=3Q17?O;An9L!
zVQD>wF$0L4HUA&bf)_Aro-N;B$xy?>avZMUcJ(jm^sj##j$gEIkz{yr$)4rx!{0yH
zt-kOlvN7xelH1u19JeosftkKwul?T-U)YZ?huI*N*uQ-5-u-`Np4Zr}e$V@7{y)Vt
z3=Y%(DdxyEL?353Pzbji;!`mBL$c}ToaHD%FpSaw9<R)MEzR@r>0SPp7c4=lJYD@<
K);T3KF#rJaZouUL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/full_gray.png b/img/clothes/under_lower/straponhorse/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..47733e61da3796da76aa48e4fb4fef7f0c13bd79
GIT binary patch
literal 669
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$Z_DPZ!6Kid%2*?DswFAjA6L
zdB-HZDGR3X9Awkj9bmwzyn#81xkW;;<fX9VL@W2i=%x?u0gvu~Hx+kTwdeBFyEpwn
zM$!Qsh%dQn->~{xzxmvg3jeFpmN8^7EDirZQB0wpmqFw4ieIn(XYrlbZ@|l7(ol78
z{h!+^#l?>Qq!<=3ifr&L`uFbZT5X0;*BKbN9R!bCnlV4gXJnYeIAvqb-+%ejQzkz-
z_b(o-c*@QHU+*(S7d!kr2Mn|Xt<_Q9-|n9Oz2CWe+M2nnC*qlb#&^E|?>3Kd!hT~0
z2j&@Fwcr2R72Ns%wykgv`yZ2&w`wNrX9K!T_=lK<&CR`e^55%MC&p}fa!{1vXEs9v
zn}OhKy`2(a-y?tj`Cl3He|r7fKc);CYmVG9&pw%IcaL$KSJC|U?<JhUuK81b`r7;N
zer@~B5C53+B#;?obV$gn$cElM-jjiBpHjvdTi37q_V3;z-C3H7_1p{(cpmJ(DSzi<
ysacOc`+Mnn_IH|pf1kf(&-<(rWdA?_;SX$UovM}pF!hOntoL;Fb6Mw<&;$VfPRjcL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/tattered.png b/img/clothes/under_lower/straponhorse/tattered.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad64e63b137f7a6ce55599b6c82cb2c20ee91760
GIT binary patch
literal 861
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-l|5Y?Ln`LHy}L1!*^r^_
zBD4NXUZVze&zYi|T(+H*@=I=2DB97Hd$9I>qf~g-zWoC1_soF0hY?VC{`gDP&)Ts2
z>=kl<oo6sM=>2uRAhS=gfe*p^b^GPh^P7LoJMj0V{2?BO5+M1lss8@9)4#V#GFTYE
z6yD(Yn{D;@`_=Eva_;{H(ij$a{}(WG+8@);h-BEk%lDsuU9(UAgT=3Q17?O;An9L!
zVQD>wF$0L4HUA&bf)_Aro-N;B$xy?>avZMUcJ(jm^sj##j$gEIkz{yr$)4rx!{0yH
zt-kOlvN7xelH1u19JeosftkKwul?T-U)YZ?huI*N*uQ-5-u-`Np4Zr}e$V@7{y)Vt
z3=Y%(DdxyEL?353Pzbji;!`mBL$c}ToaHD%FpSaw9<R)MEzR@r>0SPp7c4=lJYD@<
K);T3KF#rJaZouUL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/tattered_gray.png b/img/clothes/under_lower/straponhorse/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..47733e61da3796da76aa48e4fb4fef7f0c13bd79
GIT binary patch
literal 669
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$Z_DPZ!6Kid%2*?DswFAjA6L
zdB-HZDGR3X9Awkj9bmwzyn#81xkW;;<fX9VL@W2i=%x?u0gvu~Hx+kTwdeBFyEpwn
zM$!Qsh%dQn->~{xzxmvg3jeFpmN8^7EDirZQB0wpmqFw4ieIn(XYrlbZ@|l7(ol78
z{h!+^#l?>Qq!<=3ifr&L`uFbZT5X0;*BKbN9R!bCnlV4gXJnYeIAvqb-+%ejQzkz-
z_b(o-c*@QHU+*(S7d!kr2Mn|Xt<_Q9-|n9Oz2CWe+M2nnC*qlb#&^E|?>3Kd!hT~0
z2j&@Fwcr2R72Ns%wykgv`yZ2&w`wNrX9K!T_=lK<&CR`e^55%MC&p}fa!{1vXEs9v
zn}OhKy`2(a-y?tj`Cl3He|r7fKc);CYmVG9&pw%IcaL$KSJC|U?<JhUuK81b`r7;N
zer@~B5C53+B#;?obV$gn$cElM-jjiBpHjvdTi37q_V3;z-C3H7_1p{(cpmJ(DSzi<
ysacOc`+Mnn_IH|pf1kf(&-<(rWdA?_;SX$UovM}pF!hOntoL;Fb6Mw<&;$VfPRjcL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/torn.png b/img/clothes/under_lower/straponhorse/torn.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad64e63b137f7a6ce55599b6c82cb2c20ee91760
GIT binary patch
literal 861
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-l|5Y?Ln`LHy}L1!*^r^_
zBD4NXUZVze&zYi|T(+H*@=I=2DB97Hd$9I>qf~g-zWoC1_soF0hY?VC{`gDP&)Ts2
z>=kl<oo6sM=>2uRAhS=gfe*p^b^GPh^P7LoJMj0V{2?BO5+M1lss8@9)4#V#GFTYE
z6yD(Yn{D;@`_=Eva_;{H(ij$a{}(WG+8@);h-BEk%lDsuU9(UAgT=3Q17?O;An9L!
zVQD>wF$0L4HUA&bf)_Aro-N;B$xy?>avZMUcJ(jm^sj##j$gEIkz{yr$)4rx!{0yH
zt-kOlvN7xelH1u19JeosftkKwul?T-U)YZ?huI*N*uQ-5-u-`Np4Zr}e$V@7{y)Vt
z3=Y%(DdxyEL?353Pzbji;!`mBL$c}ToaHD%FpSaw9<R)MEzR@r>0SPp7c4=lJYD@<
K);T3KF#rJaZouUL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponhorse/torn_gray.png b/img/clothes/under_lower/straponhorse/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..47733e61da3796da76aa48e4fb4fef7f0c13bd79
GIT binary patch
literal 669
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$Z_DPZ!6Kid%2*?DswFAjA6L
zdB-HZDGR3X9Awkj9bmwzyn#81xkW;;<fX9VL@W2i=%x?u0gvu~Hx+kTwdeBFyEpwn
zM$!Qsh%dQn->~{xzxmvg3jeFpmN8^7EDirZQB0wpmqFw4ieIn(XYrlbZ@|l7(ol78
z{h!+^#l?>Qq!<=3ifr&L`uFbZT5X0;*BKbN9R!bCnlV4gXJnYeIAvqb-+%ejQzkz-
z_b(o-c*@QHU+*(S7d!kr2Mn|Xt<_Q9-|n9Oz2CWe+M2nnC*qlb#&^E|?>3Kd!hT~0
z2j&@Fwcr2R72Ns%wykgv`yZ2&w`wNrX9K!T_=lK<&CR`e^55%MC&p}fa!{1vXEs9v
zn}OhKy`2(a-y?tj`Cl3He|r7fKc);CYmVG9&pw%IcaL$KSJC|U?<JhUuK81b`r7;N
zer@~B5C53+B#;?obV$gn$cElM-jjiBpHjvdTi37q_V3;z-C3H7_1p{(cpmJ(DSzi<
ysacOc`+Mnn_IH|pf1kf(&-<(rWdA?_;SX$UovM}pF!hOntoL;Fb6Mw<&;$VfPRjcL

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponknotted/full.png b/img/clothes/under_lower/straponknotted/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..4fe4365fe942e37ba6d790d48b3eb7c40185294e
GIT binary patch
literal 3246
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(m}l9Aa^H*b?0PWGBEI@dAc};
zRK&f#<KNfAEphZ=-m$i{BxV<-BxW&(HwO+d9XZy*dZVFZB5%jcg@x@)Ze7n5EeZ7u
z-F5GNvHExa^4+!bKG&7{7rwW({V2`I#KIw<FhSVjtg6@y1~AXUkU@qK%;MmZU^sZm
zRn4IRD8tqutpH{?GBPVf>^cF`=Wu|bfEmnC&`4ll@fM#6HbR0S52S;IgN2o+A>pNx
zFjyn=0bZbv28PB34U7Uhu_<7i6Bu?toFE`#z|gd`+Xt+Xhrt|d6-yHno5O~ZiJTyf
z4U7-iKz24b1RP-Cn5Jh0)@Z<R2jc8e$Bu?9Fe#2EgVAI_Q8KtFZL$0NhvQnm9=q@7
zyi-w7|MmIu_3=A<U*vY!#vk}>zyGnXP}RiyE}0LWS1?LMtny$n6Z!BbpTqReWuAtI
ztm}_kSAYEUXYT*@{^#;hza<-<uD}21&&k{)dCqr!GR^z{Q#OC{h3-FQQOtJNxeqi5
zxhiZ}-0-~KeaFK1GzK2sZ|mRxna;0c&%EJV=e?iqd`@Sk95`zK!}kBmd+WKf8DdmT
zo;;3YXcN(7Ym{ZN`ER{|b>9&NiKtIU_dnVEB)V?x|LfNO%kS@BXZPvLwYgW{@BJ)a
z#gU}SYV-f(t?hid3^~4KGVu>sA6Qg<iWR!i4zyT))#o}N=7fmlum4w`-~BzmzIyrl
zx&JpDI;vRUdEoPVnQejw4BIYRHJ$&;RKTM8Q;hQsP<X%kjfM7W7!8)(FfY$v|L^y|
zr`Nwsk2r1p@9FvJ{rdHPe@@TOOE|&XaZ&WcpYq-R=Rb-2^WXiwRP9>vhU}2G{MG}F
zKo_yI$$#2z4D`#+Jq$5>F4up0^N0Wcr}{t9|L!u_GaEc%IO4%w@$d52_cHewZp?gF
zRl88U;q}$__iYChfx6qT%=`S^h~ZhuPOqY?+>P<S<->MZu;_7C{F{5&jEU`lS(N*S
zopB6(3smkaHQEA&zq43>X*XqP6WjgIX~U5(+5eom#k&vK*Qo)0Y4cAdfq`c)H*-S9
z#w5WT4nQ9=PV%=Ltq2(yM{8|?(I&=dG5}U7BP$vFVKJR0Dxhq+CkEL4VDNPHb6Mw<
I(8Rz10I^a#@c;k-

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponknotted/full_gray.png b/img/clothes/under_lower/straponknotted/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..083a939c3183b8ce2b3e9f3cc86eeef308faf7a4
GIT binary patch
literal 900
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-y**tVLn>~)y|Xv>kb?x<
z1Mw+}6Bsr!%O<gvIjnK^?tP)5IipdiY(WC=oL5tBDA_M?Y58C?*KpsX59+nw<;p+?
zjvU}HX^YRn<c#gNLnqBS|6Km(S+Q={sVaB#wtuT!e%W(UkDKy$wiWgNKG&vlF+BLW
zXGYWWO*eB^saVeS6F>j{d-Y_NSMr<;3<``7@=o2mzqYz@>F4~cbu8CjZ#~KOwV#E7
zVFJU4^f0F8gA2SSJ^olxs2cF^>F>bf^%gRdR1QBh@HCo#{`1X>hF|W$Q1@Wi(SB)V
z|MACKo@KjZU)Mg5pZ6Z<kgcyv{w?@-)m{i}Sclhh``Kr+s_V|ye>b!KU$o{kJItOA
zuXOvFK3Vh4@BfV5$G)Oog@NI~<PHBnpEvo=blPjd&p+>rc7D0t46~~~z3j2|{?nzG
zUw(P?^J>=A_dUO_&OXKfGfi5%aarB|c<Xmxt32<`<K9<x$LQYH#|&Waj*R4S;Bp14
X_>b?~7fC%&0{Pg})z4*}Q$iB}c)ZP&

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponknotted/full_gray3.png b/img/clothes/under_lower/straponknotted/full_gray3.png
new file mode 100644
index 0000000000000000000000000000000000000000..83b09a92a6eb8aea2e7c495e226f1aa13097343f
GIT binary patch
literal 1843
zcmd^9i8tE`5dH-fSLmTMT1P9Jl2XOG)?IOgQk1S+RYlX*m36jk5Zkz_(V$z_QAE*F
zXB`oAsXB^CJt1+equ7e-5}E|vwEsqD-n^MNZ{EE5X5M^h&Q7)v2?YrN03awkq$>aj
z2|^GcCMs}mh$F!OAUt)~%_Gt^AVwt|8-~W*2~vrS3lCBWip8J-AePC_^L{j~cG&u>
z=NpYASg{5nxOe?pp1FK(`}5~BJ1J~#lbE=>9Bj4dl1dHkV0KN*r`-KfCBeNh)1i8t
zzIl`zVR~y2YdTkp_4Z$1+ixyGkMDiynJB9erI;DFPVXGtx@@))un>*ZT11<v7VlDg
zr?Xm3)+4_<aW)uBJuA~O&=wYpyE3<MI1sTHfeO-&=({qa79YBBpECcXt;pux<K@Xe
zh8Rp!Js!-@gq$#TzJ+qA%Rakd2C`1FX(`+$?GOLsvbvbLiefK6JR?t9;aF0r!Ru5d
ze@1Uf4w+vz3+tGr)mhnhwnNhwuXga=5%%-Pz^RV3bv0ENvQV>uxZ|xRj4!7oN!{M_
zjmu-5?)k}N>bOo~l8T80d%-6TF6|60=_B;>eO47({1zb+nI__zlCP&u^BhtBP#n3#
zn8{B$KXyb{$t%Eb840O~=r26$1rlR>U!iVO?RmsZuCT`lfthWznWVW($f(`U)a*3W
zWn%Jjl&dVw!oWnaz;kfChuomeiyJvq*|W)6ATx-rmIfIQROO*Cct|72DMweIXXqP}
zkw<_!NLr|!G^V+QCjL~Ks{GhON-rq4yt<<Hse3_vTGf-bLcMAuN^5)Dy;zRisiO*V
zN=Nj(G;`}yFwOr~+0-=aNipZ!pT<~aOx#_YCf{z^FultTQHj4VrKlg@TUj=&6L)6+
znd4<$bYaNYMKw*&_B-5k_g`75&BNZWLRp=GjG5W088`o`v9nn73LArFt4p=f2j!xT
z`~t~ehSHSKDpyl1re#1Pkw)*ZL_4D;=|-PXEcwv5oy=b-!U?g#($a$2Dbs;{qPHto
zJ#_ir65VnaM|1$sIBs}{`a2h}nJ!<1A{#bu=EnsFSmBS?AdT<QwHRwLihB{;cm-|k
zRxODeG85%^Wf${tuNpDVRN$yl9a#Gz`<2L)wm~#->L?90&dW+q+|b#wd2wC$k$U!v
zF}mEz(=}rdF#Z_2*2h+<Grc$8YxIc~YMUR$<H;Z~tupYr=Q*==sN?DSxf!0HoG829
zb|0c@(oWdYcS2Hh!Dq&4bc0;?0R)^m(X@4SOIFFlGVj6a4OP{_>}!%$CuBYR5yL4d
ze?!l;IJ_;cWK7fRchU@CO&ILdB)N`yz0c!jekr0l<+Y8iT%lszy84Gz{mz%JyfCN>
zg<WCC>LY;^OO2#qP@-+<WaftwH-!m8fP&%e`JU`A58^fw`^=AfuI&c$9+vq>HPs^+
z+ghRV|B;i5=nTQHi(YrIMFL;HX$kciNsti_xAXiB0M4s^Gf*tqJX(+hN1`09!OK$O
z5|RjTg8Z0(FIXs~rJH~Urt2f{7P2C==C{@ttmFsPlHsZ9gg@oPDuvriq>b8vKJ3V6
zKX|{>`n#^>auGqVA4d{l+y;@+pB>*DqnNKueZ%tMD0)<3u<%lGdV;qQ5L=||u&FWB
z&_P-<%rgHJ#zJRX90*nm=>1o;5<tRz#(*zml?4keDMJ9jSv43yxI1zEatCm8yRd<e
z933uxZ>UQ^*fb!VHPE%!8RN@%pFlG2@7gN^33wfd(U<D!dKUkZgyTx}n=1f-g>biG
z?m*`!{(H_x-0v(<;`c(OK5^Qh&)lKB!fwuP*Om!?!}9wS3P3eWTo#Ta;%Gn4$plE_
Zw<QxZ()8N2Fy-HHqpY2fwHL1?{}1tPkC6ZX

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/frayed.png b/img/clothes/under_lower/straponlower/frayed.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/frayed_gray.png b/img/clothes/under_lower/straponlower/frayed_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/full.png b/img/clothes/under_lower/straponlower/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/full_gray.png b/img/clothes/under_lower/straponlower/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/tattered.png b/img/clothes/under_lower/straponlower/tattered.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/tattered_gray.png b/img/clothes/under_lower/straponlower/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/torn.png b/img/clothes/under_lower/straponlower/torn.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponlower/torn_gray.png b/img/clothes/under_lower/straponlower/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/frayed.png b/img/clothes/under_lower/straponstudded/frayed.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/frayed_gray.png b/img/clothes/under_lower/straponstudded/frayed_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/full.png b/img/clothes/under_lower/straponstudded/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/full_gray.png b/img/clothes/under_lower/straponstudded/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/tattered.png b/img/clothes/under_lower/straponstudded/tattered.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/tattered_gray.png b/img/clothes/under_lower/straponstudded/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/torn.png b/img/clothes/under_lower/straponstudded/torn.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5c28d9a438aa0a4018b85e401baa926ff4d099
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-MLb;`Ln>~)y=Cjg94Ny2
zU~+<JaK>Vl8#iu6b>1$Je3YcJd(syrC#g>Rh=>)b$Bs2ha42(KocX;rHHbw{rs#d8
zJ|obukpUJ&o)=`8@-XrJ3a?2w&y`Jj^5og6dWVC*`WP5aZGOrTWwi3^@6bs)V%>4#
zb?i4{^uo>mzx?C(?;-<316xDVnmm@Rmv65;%y<D9T2c)Ed}`IVuiWjh;P21)>EAzJ
zuP*<S!NB0a>`*w{;q9ZphWj(c8vf7zf6Vv7>v~=Wh5)w9aktfXw4J>BjQ{D=|GUfo
zn}LNT@)@G??#^9sR{qr4|NgU?O@L+`pZRZ>*~MDFZ_}Iq>d&9gTQ*tc@$>B2_9B!1
zKmO=A>B)zuz92_2++!#?cPS-aH=kkiuixsE?WauoAN5zv11wi^GsR+++Tp;bDh~e~
gnMX$aLVS7Q1+#nB?(9<{tZg6xPgg&ebxsLQ062E2Z2$lO

literal 0
HcmV?d00001

diff --git a/img/clothes/under_lower/straponstudded/torn_gray.png b/img/clothes/under_lower/straponstudded/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..65cd7482f969ae37adae4dc06274199eded3a040
GIT binary patch
literal 816
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(t!fsJzX3_DsH{KWti0xAi{dV
zeA3>CT~qffb88nGKl0PL+c|ZakP&mUVx#ArazAU=2ZvSv-^*tK>K`HCd0robLi@Jd
z?;RbbvC2w|-dF!;7FsRC$nfOzLk_*7;MJ>am6C36yKVhP_Ce{+nw)>9H=VE-V_?|8
zFyUCTvIWoK2L%i|3=9pd4fe%*PVRlBE3l*P-~6YwGVb|*A{ZDBFgff}E10oNvu?8v
z!+-Pt%Y83g{}0rzz`lL&>iZA;^4`s|e{%YN`Tc*U_1p{$6MFI)^xoZ^z2F&t<>&vG
zpE3Z&5*QzJ`6kSJzWe^{Wt|-z>t37GdrbPjYu)=#_P&#!^|LYn?cWnC+|ltjo7rL?
zYr*Gso1gYzH#YEiX;y2dmJ2ETPhcD&@d@^(#aGTROK-nf%rxg1i0|p@=d#Wzp$Pzj
C1e0(8

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/0_gray.png b/img/clothes/under_upper/leotard/0_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd37c8c513f1c8bf7a1184502518a0150e367932
GIT binary patch
literal 693
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$aLd-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5n3BBRT^Rni_n+Ah
z<Z%{wL>4nJ@ErkR#;MwT(m+A>5>H=O_NQ!eET$%g;n_|=>svfs978H@y}jnhb;v+~
z^}@;>ItPU-q{J<Y#O1uI8h5R55_A+XnN*oC?6GOagb6<dfyU4n$VVPatx30=9Q&Gy
zVV@WKiIvl$l$4S>7MAM%_hM=|vg@B@cIS*|w>76<yZRw}`Dv?n{jV*~p8r0Ff30?|
zJ4k^agOx+v_ucnz-TVBw>YBL%qeIeNH3nIRxXCnjIa$UltkkacmJ^vfXV(^>e$^7!
zh?11Vl2ohYqEsNoU}RuqsB2)RYitl=U}9wgM5fvX237_JRothhp=ij>PsvQH#I1ol
ztVj!}K>}n$aDG}zd16s2LqTF@UWr~_YKel0o}r%EUq4P@`eI=4boFyt=akR{08|o;
A?f?J)

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/1_gray.png b/img/clothes/under_upper/leotard/1_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd37c8c513f1c8bf7a1184502518a0150e367932
GIT binary patch
literal 693
zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388}#gRQ^o1H$aLd-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5n3BBRT^Rni_n+Ah
z<Z%{wL>4nJ@ErkR#;MwT(m+A>5>H=O_NQ!eET$%g;n_|=>svfs978H@y}jnhb;v+~
z^}@;>ItPU-q{J<Y#O1uI8h5R55_A+XnN*oC?6GOagb6<dfyU4n$VVPatx30=9Q&Gy
zVV@WKiIvl$l$4S>7MAM%_hM=|vg@B@cIS*|w>76<yZRw}`Dv?n{jV*~p8r0Ff30?|
zJ4k^agOx+v_ucnz-TVBw>YBL%qeIeNH3nIRxXCnjIa$UltkkacmJ^vfXV(^>e$^7!
zh?11Vl2ohYqEsNoU}RuqsB2)RYitl=U}9wgM5fvX237_JRothhp=ij>PsvQH#I1ol
ztVj!}K>}n$aDG}zd16s2LqTF@UWr~_YKel0o}r%EUq4P@`eI=4boFyt=akR{08|o;
A?f?J)

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/2_gray.png b/img/clothes/under_upper/leotard/2_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..fea889563b4b14026bde24b8605b49f2959d3a95
GIT binary patch
literal 493
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5gaUj*T!FNUi;JzT
zt&fk7xrO=v|NjG5FZ%`*Wh@Eu3ubV5b|VeMN%D4gVf~T+@;H#gS>O>_%)r2R1cVu<
zYV%101=&kHeO=j~vdOWSniz&>I{}3zdAc};RNQ)daid^^0S}Ag)(2wySfdvFpLKvy
zQu46Ig}kKnf0p5lK$Td*pCr}Q)ra3OtYr==y`v?V@T6hR^E%7lA_<QgY#thaVgJQ!
z!hhm*XoDm3u3mnuCZGw{6fhdz6%zDaH2E`7MzzE>q9i4;B-JXpC>2OC7#SED>Kd5o
z8XJTdm{^$rk*T(Uft7(l75AxWC>nC}Q!>*kackfXE7AgLkO0{boS#-wo>-L1P>`6J
fSE84fTB2a0XQ*fP*N+nzFANNxu6{1-oD!M<U2T9^

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/3_gray.png b/img/clothes/under_upper/leotard/3_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..63e8366e8b0171def8691b59dc49d9fc9c1c9379
GIT binary patch
literal 521
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5gaUj*T!FNYkB_;9
zxvj0Oi;K(u|NrYGCyM|@8B2ovf*Bm1-ADs*lDyqrSbyZdJPzb=7I;J!GcfQS0b$0e
z+I-SLLG}_)Usv|0Y;r87CWhhJPC%h`o-U3d6}R4AJ;=$TD8S+nY`_})Ld5L<48OlR
zcfMOZGYswcwK-D|WF%JbW3uJ_ol8G4c`>h<v-!P5B-ab^g!%TzC)-p9Is`H<Weh8t
zcfYQolPQa91^<TQbG_^uzp+kXKe4NP!e*@n$qg#;(yS)j0c&d+v6_x5c!1xoR8zIo
z;h`rmgcwvyTq8<S5=&C8l8aJ-6oZk0k)f`EnXa)xh=GZf2@siT8yHv_7*uhenuekw
zH$NpatrE8e?yw>)pauz$4Z-<oCFO}lsSE{)nRz98d8s7|CVGZ?W`F%SfpNyb;OXk;
Jvd$@?2>_G2iSqye

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/4_gray.png b/img/clothes/under_upper/leotard/4_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cdfa1968a31ca485b1137ef8ced7d715b0e8e29
GIT binary patch
literal 568
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5qyv0HT!Hle|NsB}
z`{&`|0c5+lxR_g*+uGU!1=~B8`v8SlOM?7@8F=*h7=tvHo&gFlCV9KNF#c!Ky$9rQ
z7I;J!GcfQS0b$0e+I-SLLG}_)Usv|0Y;r87CWhhJPC%gxo-U3d6}R4AJIH&;K)@w%
z`vb8IMcoTc(FNSM?K+u7T{8IU-Zwnha@d_I3gkab&|ok1k}>lm!$Zd4h7Z5}`DZNt
z{yS1WxZy9`nUB92erX3Md}nyc_`2>tpMZj>g2jV9^;^nU?~3D?z$qYWkbQUmRE9=|
zpN!9&7RT>Ds_O8hKcLD%H`$i$9Jhe{hIRAf4=|}PyRa|GmB+LhQ>5Yn^M~o_cP-g2
zRstneOI#yLQW8s2t&)pUffR$0fsvuEftjwcL5P8gl?f1;Y8x0>85mS?pPGiEAvZrI
zGp!Q02JWyTEuaPokPX54X(i=}MX3x0iJ5sNdU>fO3MP7ndS-w9IDt{jz~JfX=d#Wz
Gp$PzkvY;~n

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/5_gray.png b/img/clothes/under_upper/leotard/5_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..730d0d86edd6a0d798b4b5f439a4b7abc70274e4
GIT binary patch
literal 579
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5qyv0HT!Hle|NsB}
z`v+urczC$DxR_g*+uGU!1!IcUSb(CeB|(0{3_SXbe6IXUCIJN)lf2zs82>Zr-UD(t
z3p^r=85sDEfH31!Z9ZwBAbW|YuPgggHaQkk6T|RqC!o-6PZ!6Kid%251@ay;kZ8Ra
zwW2lhz#*M0PP%`-Wkv=#oTz<asdymzz1^msYe3~#z=M9bDu*Z=hl&Ft3N?RUG8TXN
zSMxfVtKeRP<vx3d{YI>Q{1fCpSpJ`Bur6>R<8gKlzKG}Fzh#By-fw1dVRB(VBlX?t
ze;^YJQw#f<Ra+mt`yCkr6mMaF!}{9vTlACu2QL{vF=ws2U0~bteK~_WpNF*_7FS>h
zeP}jcZ(FGO)PTDRD5qND8c~vxSdwa$T$Bo=7>o>z40R36bd3!{3{0#{fXGzaz`)AD
zpo;s{G!zZF`6-!cmAEx<hZSi7HAsML2+mI{DNig)Whh9@%q!8$OD$0_(KFOD`|HOE
QjBN%6Pgg&ebxsLQ0R9H2>Hq)$

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/frayed_gray.png b/img/clothes/under_upper/leotard/frayed_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..b999148b9f21e797f9074207a0a25e27e98fcd9f
GIT binary patch
literal 596
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5gaUj*T!FN?g}JS*
zt&59`kB`s)|Nps5{iA`Rj3q&S!3+-1Zlr-YN#5=*tUvN!9tUzb3p^r=85sBugD~Uq
z{1qucLG}_)Usv|0Y;r87rfvbzSAcqCJzX3_DsH{Kd64&z0RxNU_6cGc2X%M+pQYf)
z$mMXWJ$=cZ?@tu$4@m&EV}Li0DrBO+e`YMTmk$6^we{zU9PgfIKl1nSoBd)T!msM=
z7QE}XyuNE*h7(Zu%3s6%+ul59e)Z47?(Z}82!zJc|LG2!7rX;Xfpj2Iwhz?zKbJni
zzd#OTKGYf@RZuGw`@ZJW{|@F3_AB}a7_UHd-e(T0VTc4d<~(EeJ^x~cOc47$qp@AX
zn)&=IeqUGJ@~&EA7t3joHJ}K>3+g|!aQ<Ay7{_!#1*lH7#5JNMC9x#cD!C{XNHG{0
z7#ZpsnCTiDgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0=dM~)z4*}Q$iB}
DCd0zk

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/full_gray.png b/img/clothes/under_upper/leotard/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..b999148b9f21e797f9074207a0a25e27e98fcd9f
GIT binary patch
literal 596
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5gaUj*T!FN?g}JS*
zt&59`kB`s)|Nps5{iA`Rj3q&S!3+-1Zlr-YN#5=*tUvN!9tUzb3p^r=85sBugD~Uq
z{1qucLG}_)Usv|0Y;r87rfvbzSAcqCJzX3_DsH{Kd64&z0RxNU_6cGc2X%M+pQYf)
z$mMXWJ$=cZ?@tu$4@m&EV}Li0DrBO+e`YMTmk$6^we{zU9PgfIKl1nSoBd)T!msM=
z7QE}XyuNE*h7(Zu%3s6%+ul59e)Z47?(Z}82!zJc|LG2!7rX;Xfpj2Iwhz?zKbJni
zzd#OTKGYf@RZuGw`@ZJW{|@F3_AB}a7_UHd-e(T0VTc4d<~(EeJ^x~cOc47$qp@AX
zn)&=IeqUGJ@~&EA7t3joHJ}K>3+g|!aQ<Ay7{_!#1*lH7#5JNMC9x#cD!C{XNHG{0
z7#ZpsnCTiDgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0=dM~)z4*}Q$iB}
DCd0zk

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/left_cover_gray.png b/img/clothes/under_upper/leotard/left_cover_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d4ce8f30b0602ac01de8671e1012daec270a94f
GIT binary patch
literal 387
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838JL)X)Q*2@Uw{-#x}&cn1H;CC?mvmFK)yn<
zN02WALzNl>LqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bX-A@C5jTxB_W&3v(A2
zm;e9&XR3<{0r`w2L4Lsu4$p3+fjCLt?k>!NJU*X*9QG1VUsv|0Y;r87rfvbzSAat4
zo-U3d6}R4=+sNBsAi#3ae~!TAmX(K8EtWC=D&+p+DX8BfclJs7Ee@bs7>L_8oj>Db
zt^8HyZ8LAnudX>T_xAT}5&n*1HU3R@{4iBW^n>?u3z*ouw=bId3Mi^t;u=wsl30>z
zm0Xkxq!^40j0|-R%yf+nLJUl-On}H#+rYrez@Uoz)HD<gx%nxXX_dG&aEBFXf$a5k
L^>bP0l+XkKr)p<&

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/left_gray.png b/img/clothes/under_upper/leotard/left_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..061405d56dee990b2a4fc53769880878a5c981e3
GIT binary patch
literal 488
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi;s`b|NsBz8dfa;3Ne-h`2{mLJiCzw;v{*yyRh_U+zbSAI14-?iy0XBj({-ZRBb+K
zpdfpRr>`sfQ#LskQ&YEq=qo^>37#&FAr-gYo-<@TV8C-=LjXr>kVbvp;tl8BRhho=
z099ZCAKGg7%;&%I*Ycy|-Sh0P{>`~9cja%*f_LB9OYP-X{Ql_x60Nff`2M+Zm;LUy
zV6Gh&b1;Se*DkxnVawxN3v!!kiEBhjN@7W>RdP`(kYX@0Ff!CNFw-?Q2r)3RG65n}
zZ36=<1A{8=Q`1m1<mRVjrd8tBz#Uek1=Jt`vLQG>t)x7$D3zfgF*C13FE6!3!9>qc
W&+M-sCooDF7(8A5T-G@yGywp)FNMwk

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/right_cover_gray.png b/img/clothes/under_upper/leotard/right_cover_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..455f8c73d9f4ba651557c23f32969ff57bc90242
GIT binary patch
literal 496
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi><Bg|NsBJ>Q*@cg&0eM{DK)Ap4~_Tagw~<U0C`vZUzE5oCO|{#S9F5M?jcysy3fA
zP>{XE)7O>#DVrRNsi|8)^cA4c3{MxwkcwMx&p8SnP+&M<pp(GJ{p0(##KigcdXG3*
zvjLT00rh6rckP<b|K#sozAJxg7QCC^SX*o_zv6d#!o54^*<aP!1$_V92vh);e9l}7
zl1tu~_YTOE$6_3YP{VpT?pJ(~ZO6KWfO4uOt`Q|Ei6yC4$wjF^iowXh$WYh7OxM^T
z#K6SL1c*$v4GgRd463+KO+(R;o1c=IR*72!cUX}YP=f@>hT#0PlJdl&REC1Y%)Ao4
dywnl}6Foycv%h|vz^Gwh@O1TaS?83{1OTBsh`Rs)

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/right_gray.png b/img/clothes/under_upper/leotard/right_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..f027ac39cbe2e959209f61c949c96234d7ca07ed
GIT binary patch
literal 495
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5_yc@GT!FN?g}IB1
zi><Bg|NsBJ>Q*@cg&0eM{DK)Ap4~_Tagw~<U0C`vZUzE5oCO|{#S9F5M?jcysy3fA
zP>{XE)7O>#DVrRNsoDKVt~{X7bWaz@kcwMxF9q@*P!M2s)S1Jo^Wc8;>V=-0<<Cg$
zc-p!Zs0a)AXHx2*E3d#eBe!8SbDH#mx_T*t;|w49dzfGSu5_ri=U?&uIpf#AHV^jJ
z^Ar>xI3uw@b^+gtSbHo+VG){dTkXtqP}<CLDNs_i#5JNMC9x#cD!C{XNHG{07#Zps
znCTiDgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0&0)|*$|wcR#Ki=l*&+$
hn3-3imzP?iV4`QJXZF{R6BsiL44$rjF6*2Ung9~0e-Qux

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/tattered_gray.png b/img/clothes/under_upper/leotard/tattered_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..28a55dddf8073e14f65a04fd2e5a1f7a92adf74b
GIT binary patch
literal 596
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5gaUj*T!FN?g}JS*
zt&59`kB`s)|Nps5{iA`Rj3q&S!3+-1Zlr-YN#5=*tUvN!9tUzb3p^r=85sBugD~Uq
z{1qucLG}_)Usv|0Y;r87X7?kx@_>3|JzX3_DsH{Kd64&z0RxNU_6cGc2X%M+pQYf)
z$mMXWJ$=cZ?@tu$4@m&EV}Li0DrBO+e`YMTmk$6^we{zU9PgfIKl1nSoBd)T!msM=
z7QE}XyuNE*h7(Zu%3s6%+ul59e)Z47?(Z}82!zJc|LG2!7rX;Xfpj2Iwhz?zKbJni
zzd#OTKGYf@RZuGw`@ZJW{|@F3_AB}a7_UHd-e(T0VTc4d<~(EeJ^x~cOc47$qp@AX
zn)&=IeqUGJ@~&EA7t3joHJ}K>3+g|!aQ<Ay7{_!#1*lH7#5JNMC9x#cD!C{XNHG{0
z7#ZpsnCTiDgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0=dM~)z4*}Q$iB}
D2y?>1

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/leotard/torn_gray.png b/img/clothes/under_upper/leotard/torn_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..28a55dddf8073e14f65a04fd2e5a1f7a92adf74b
GIT binary patch
literal 596
zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwY^H-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5gaUj*T!FN?g}JS*
zt&59`kB`s)|Nps5{iA`Rj3q&S!3+-1Zlr-YN#5=*tUvN!9tUzb3p^r=85sBugD~Uq
z{1qucLG}_)Usv|0Y;r87X7?kx@_>3|JzX3_DsH{Kd64&z0RxNU_6cGc2X%M+pQYf)
z$mMXWJ$=cZ?@tu$4@m&EV}Li0DrBO+e`YMTmk$6^we{zU9PgfIKl1nSoBd)T!msM=
z7QE}XyuNE*h7(Zu%3s6%+ul59e)Z47?(Z}82!zJc|LG2!7rX;Xfpj2Iwhz?zKbJni
zzd#OTKGYf@RZuGw`@ZJW{|@F3_AB}a7_UHd-e(T0VTc4d<~(EeJ^x~cOc47$qp@AX
zn)&=IeqUGJ@~&EA7t3joHJ}K>3+g|!aQ<Ay7{_!#1*lH7#5JNMC9x#cD!C{XNHG{0
z7#ZpsnCTiDgcz7unE;Wgwt<0_fk74bsc9%0a`RI%(<*Um;0`O&0=dM~)z4*}Q$iB}
D2y?>1

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/shibari/full.png b/img/clothes/under_upper/shibari/full.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cf632406fc2e189a5956a60bea6572c3777251e
GIT binary patch
literal 915
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-BRpLkLn`LHy=$0v$brH2
zpe?8SvQxF5t=%eO*$NGR(^OU|OnFut=An}e)H77Tn_HDVr-5j1J^MHB{{m?Y3%vgy
z_+d3yuip0F-+IRX{xGpa3=Y%(DV_n7DQ}e>oEeUnuCA_TU~FoaV`t!)#e0k4z{fLX
zd%oFJGgv=kV2I^o5ZLlHiJzI__{TN><ZELe@X9bOIL*j#h=;+z`+tD~AHxBizs@uI
ze=LOA3$Y!OEMU04{$-4O^m?Y!kNj`$=lrkZ;ov*M$WXw*Aojg&-?tj^rUP|%ezUEw
zw_sprcu@ot-kkqu{h#>_*Du(&NHV;*WdA|C<e_sr)cuSPooB$j0`U+AnRt9#+}WLF
zsxRJzE?mdddVXO&hcUy2rS%V<oo~qdyCVPXPc{a-eyAahN3YHQzvrvfq4vKp`!>vw
zZAs^4|6uurKaq`L*B5@Bx;DLv7cl7u*|q}9phiLrhLA%g)lko!63IRJmm<&KTD0!^
RXOO9$u6{1-oD!NC7yxKV+GhX&

literal 0
HcmV?d00001

diff --git a/img/clothes/under_upper/shibari/full_gray.png b/img/clothes/under_upper/shibari/full_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..c76bbcdc70b45ca36350128a6461fd388743cc30
GIT binary patch
literal 914
zcmeAS@N?(olHy`uVBq!ia0y~yU;;83893O0)X@p&(is?-BRyRlLn`LHy=$0v$brH2
z;NH3C5B%kK(uz^p7$MAbBj0Tims94w^wuLrAWcIA99XD(x+r$q(_b&{H$J{(-y+HI
z;*!0A-t^O7w;$jAU;n}Xm-2^r7)oBsM}TD@@+~>FEEyaR_Pi_2=T~s}aN#ingX3mL
zX$Fh=H~Y5FOXq)ZK!#z#X-0;oZ*gxD86McoyZS#qUc7>to#90hLxTY`!<kF=b2^wA
z47~pfJX5X%+6Xll*$yQ3oC9yOt+pS(x7s205A$*J+xz92n}iD)7-Se4t}b4fZ+pL0
zp+Kg8-@(`Neg_yCc7cT7NdMRVul~UF3x6UT!>%v<e>h@)Tv%AoVa#x0X}!Y_fn`u8
zL;#bt*swReI4_pdsycMVYKMo#FQCD&<G1mGYWr8WtM)NAoL>wzBw_3K=l1XS_I-G0
z0kdyS8vDb@!;Ce2f1PJAHt79jUj2R{x11GB`bQLh3oK+I;R_*$NUEWtGml9;=2q?r
Utu=T!(-35=r>mdKI;Vst0EYe68~^|S

literal 0
HcmV?d00001

diff --git a/img/misc/icon/adultshop.gif b/img/misc/icon/adultshop.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3241e51884bc5c5fb50fbeb6d6e198bf9668f6c7
GIT binary patch
literal 2444
zcmd_rZA=?=90%~b_UOYk$R3DsG$J5u!x=K?FrdSU$SN_LbC88B8B52yuA>ZD&?zcG
z1tvmEw~|rXPUsUbN=uKHJ{L+`+5!X01cA;0%O+#Y4lFn(QD@6$>|RY?h>6~d|BK5d
z_s=Ka-|tIG+mnz;4hO=41;GD&wiyaO48)*LPJMDHlm#RKnnSx;5Atq$_@6I(y-Q`+
zm+Nn@eCR(S9}xDXW~8Si?@!$kw;c^We3h0<rc(BjskH2zU@AE`mz=acZfE??_;?`l
z7YH8$5P-<vBT`ON$OV*R5oc%xCn6|?RNC>l?7Z9vQrez~TyhTOH1MMT2mX5jkoSE-
zn$+|mEfJi_+EVltHHt_o%1JyJtuH^7W6gle&M^93uE}#QOEN?*c|p{(FS)kve_nQw
znY^(zCgbR(&{O9UMoMYhC_nZke>*WSR~0?u9^ZZZusOtm9DqL!3i@CZ9XJA`Q5ZCx
zMJNZW32+4}2*W%VTMYsr1c5LCjj82TU91+#VW^>r*N$#EB8TvJVU1YB!(ycxozQ6P
zfWbzURjnn;drSxdYMQJr<`sf|q-M-*`Cdw@6ZN#U4h&wKoYEUS{d1~ze&(#Gb?N>I
zTJ}O(XlyZ26<e91*uX2jIGuWIBj~4nvSWbJ+!`3sSBR>7L~H^KR|H`gtXTG6M5tOG
zpDmQZkff2TLNn<yACcgKNX^A!xoQnbW-ypwut8~Qw-cQ`Vx-e-aWSqCbUpYB3b4D&
zZF5W-MnwaISFcUz^rQWEl`83Nflz*LN%{44@6C{RkS|%gJ}xX_v3H%NN3CS<NkF*3
z5ZzrT^M&Z?M<J@9#{B~!dIW^?0TCbP!J#pznp!TqUJ64Z38&4+BlYpr!E#W=!D2b8
zc9K-5Gr*u2=~8wR9ZsQ9V8e6`GKO#(C*Eip8+Tjnle*TH{sEtlMtkS72Wh)BQ&->e
z^F72y&!0V8%1M5kpOExwQ*2hsE9+P9GrtZA@TsKkSWBO<KY5yA0Zz<8d_2u7JTg$}
z=TWLi&04J<7It9FZ8oCa0UC_fesdSYg;P85BZASffu^AeEhLlQ7`J5d>ov3T)*Hw)
zPwlN1Sryik-GrD~XJ>I$LVn@myX>-}r;xW+FZ9!YS}1+XL!tM!-T$F(bMSBBN6S}F
z<o$mTrO(g!h}h4(Zrkv;HuYnRXyM;nL;-^a3j+pCCJ3A}InIRXY_k%(?H~*dgO<yk
zX2u{+ZO6;L8yoL$a!qPSq`iIaF8`$65qkQNTRinbwaB6<899HeHw!LCJ(tfFPpyAr
zZ`juOl8>TMtFE)PuY5vfVCDOrxO`vZ%V05wr({;Gw3!fAfapdH7RxiMNix0O2usX7
ztJ0j=(+es(>=vu7-6_=dn#KpO4oQi1qFzXWxTm{^wK@;NnO8Z!S(Hl}>|bm$NSMQ&
Xp&<6n<wg7f^S-bbl7ICD>9s!qR>=Md

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/ballgagicon.png b/img/misc/icon/clothes/ballgagicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f096528bdacc41b3ed21a8339c1a5432c83a1d5
GIT binary patch
literal 622
zcmV-!0+IcRP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80006tNkl<ZSi|jC
zF=*RB6n$3&=~nO>XUG&ohZL-#U1BYchJq_FnG7)$5<*KTWGfVWgCLt1Zwd%v=;97>
z0vY1To;*1;g%EEhR9#)XIn#CNiL-qt$x@6n<W06E>%aH^`~SWOr4&hF7)I>>zQB_4
zOhB9G=1Qf)0H9WH;oJU4|M%+g$;`bMSKmou0;%<P3;+&yw*dgJUZw#6w&R9AxL}r8
z6hcqe16(~<&eg}or!Q4Dot4lM@H+F9i*=tDUcZNQCX0euVq!UnY!EfhuGzuS=NTd#
zdcKG)Jw<{BkxVTBq%&D~{hsd$O%~ki_htgyj*I4xO8}S%uEMnGL_+CIR_=l7@yP^h
z+i_t#F7$j6!$Fs9=_wK=cn~2jjuX;k=>g!YjjA{*2_BedK@-)Bsd=oRk=sxVe)M&Z
zEPW0v3Zt=y+n?v^Iq+EO{~89fgzrrNzfZ4F_&?A_V-KB92O96;#@Ti3<)Yng`=2){
zWdLAJ-D3ej*~A)v^2#b|^%jPM?qW({g<P{87sEl9NIjsMU{S!;hheR3s!b?%!=hlx
zx_}R$Bw5%H3^#WhinE)aT1iwkBVJqjLPEqADwriE^MH7K%JA#{fgSE{<Bkx#U0DSH
zoId<f2ECz_NC^ayP%Rm@<NC+;Xzcl$lZwCwfQCRoQyrVRTn?|_d<gY{cxu+_tr<g3
z>>8Ako1hW|ZMdqec>Nyqd=b{pdw;mZ_CQ=DdB*dr+0qI81GHw`TbSqtzW@LL07*qo
IM6N<$f)h*}BLDyZ

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/categories/genitals.png b/img/misc/icon/clothes/categories/genitals.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9b9f363820a53769d26992a9a9434add2da09e5
GIT binary patch
literal 147
zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;Aq^FBxh(&L5f&^;`<Nt*XIcInL
z`0=Ep>}b7-!xTHGb%)XvJlDB~HJo+WbZGJ`wnvvdwk4Vv3fyJr;&nFb&}vKc)(Ytr
uNP5Dtt1GAUNmcubHST;1qPQH`87?k*F4-k0$Op89!PC{xWt~$(69WMI3NeEK

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/categories/strapon.png b/img/misc/icon/clothes/categories/strapon.png
new file mode 100644
index 0000000000000000000000000000000000000000..cce7f0e226648fb47e683d195b9f927de9c11a80
GIT binary patch
literal 225
zcmV<703QE|P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80001{Nkl<ZScUCU
zNeTcl2<!hp?VJV%aci{8fH{>`lT<TCqtUn#L`1(5Cx$I1EWr{(R`V=r$_#JHkd>I=
zXM}XBUYdYb7bQ*`un4^DKx>FjK@;PmN5cpQk(-dhSSD=!?!D9AG=zjD;#pF7yhyV(
zp)v!J-Ij<;1krHu`gGDcK_my|>+nokhL@X=R^`>F){-@V*1AN<ua@N^BDh`rD|}4+
bdOWLD76)s$YnlK6002ovPDHLkV1fVu`UqPX

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/chastitybelt.png b/img/misc/icon/clothes/chastitybelt.png
new file mode 100644
index 0000000000000000000000000000000000000000..9daabbb26912f27983892af04e28ccd7fb3f8fcd
GIT binary patch
literal 216
zcmV;}04M*6P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0001<Nkl<ZNQv##
z!3}^Q3<c00F>xe@bc!-2o=h6kmS0fgp+6yBfY&NQl*wc=tEp7_+v8vGvF%+Oa-lT`
zofm?UP0`}q?;OPu)O^hnwz{8%<-RT)!BKPwYt_xb-hMDFac*o5>i~sdt7~rDD;4!=
zbqm8<l`AleYL(8w;co8><-tMV;T0JvAPO&m_sHMnf+Xl(iBID2J)FsWof8(2!t42H
Stlt0t002ovPDHLkV1fYs16sNO

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/chastitycage.png b/img/misc/icon/clothes/chastitycage.png
new file mode 100644
index 0000000000000000000000000000000000000000..32f8acdc11d1ce3511d4b08105ddc48a33c8f8f5
GIT binary patch
literal 504
zcmV<U0SEqxP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0005MNkl<ZNXO-t
z&5?sJ4230zZd`(|v|!qR4pM{Lu<K9<aXs3@ju_d<UXrk<=oBEMPwz?o0r<ASyAnC)
zSbi_d0ssKsdjJ4f*A;IEYoG<yp$ot}paPSKF&=qSN^HSDR=jN+TMD&03y$w9?DbDW
zT6hTI*Jeb-Pn2qvmcq6uW@Z3@ec#7cTMAo{rLa|}!8zyga5?9=l+v~FFSw}FVC@qA
zHL2cv2q9Dnu7FZXOhna$>-W>hTB$DQ3@Ig+<hpnAt_>m@&dAh4ODSkAeknl1rH`UC
z=X@-$UPwWe;!+Cgors8lh$@9L9Qs+TZ&mgLRA3pT$K!E8V~i+05_kyV)KAOS5%i>3
zSKbaqZ?hk%9QAp!5?RpJUMpJYD9>rQu0V;X8X`;OD3A9ZW_gg_jzZR;rE=Rgwp!71
zWxBfdTIegb4sReSrEbM{LG|!Xuh<)7#7~t<uGu-q?G2&_wWeS1cvsYV?_ph6oV9h#
z%=^9{&n<Mc&PN64L*+Ow+XKC~B(6ZUbJotKPr2Fp*t;+FdMYZHWjWoytP24E07{SL
u&mn}<&h*X@U0zPkIetE$74$!V-y1)p8-a2$z;Sy30000<MNUMnLSTa9rRYxp

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/horsestraponicon.png b/img/misc/icon/clothes/horsestraponicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..663ddef394923738935aee56e5ab97719af5dfaf
GIT binary patch
literal 327
zcmV-N0l5B&P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80003ENkl<ZScUD@
z!3~2j3;;lW`66WiJ{ckV<j0c{SOsMP)?g_l_vOl@Ho=erk65z$sN!7g(9$$DYP>1N
zwu4s##<l~@TLJ0DDT01~3CS&#iUngK82jBUI{%ZWAV*F@H<mV7`T=N0=gW;P7z;~3
z96H@!5E?)VDS|-2V+abs)F4EF<}o^p5CLP`!O{;9jD>ZYv+c#lP=gRhKsTp=+^i%-
zE=9mP&70HXr__mHEJWv32(kUq`OVEv7jh5;AR?E$9i^8Ki*hGOe|9N?CRcxNoNPxp
z2-h7BaS0$nutQvDC_<{G2GGTHJhua|fHamPfMN*gzdw7+O8`=c_U-5Kcg~7<4WI^%
Z53tfAyI^xmwEzGB07*qoM6N<$f&c-Uf}8*V

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/muzzleicon.png b/img/misc/icon/clothes/muzzleicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..5268ec20003c9f7791ad66c409c0d170933325df
GIT binary patch
literal 473
zcmV;~0Ve*5P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0004?Nkl<ZNQv#1
zF>=Eo5Jf+k%;+L6I1ERK@1R2NRFX<AbO-4Ox`?Z|&_!I4LRo@fS0Ke{GWj!j0KvZ9
z)d~ar>#s{4*yEmI@8tlPgHYcEt$6bu<)U^$KMx+PbpY^oxhxN>YL8=*Gut)@y0Y|m
zWK$+M5Vu6hJ07fcUrsnxRb*(76w)XY8?W)ixoydTaO@akB@T#Av+p=`Kx+*ExZm$P
zx!b&46pp}8f){~(^bx!y<=G0Cj3gTmz&SgcU~#e5+CMu87r`P_fS1^arE;6Zh!}YI
zY&B*Ik_T(8rAT6J*1-l`0ny1dSc{L_EyG(I2%&XdvkRN1N#>FxbL_fOu!mEmec!W-
zrfEvxKS}j!PpG=Cy%Us$d7c3P*XtDkRD4#e0A6xFvlZO;J&Z9poldJP7-M`tNi`M1
zVC~VrMF2>kz>;#x4tMoY1RuMOJ{_rvlHNB-x^t;>+v0s30W8I%wWciiu_URwOTfSq
zxrz?}s`_v~UPFb%iPj#y?8S1x_h)5{!8A=<VD&68>wpCHKfffd_&o0usU*P2qV9W#
P00000NkvXXu0mjfb92yp

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/shibari.png b/img/misc/icon/clothes/shibari.png
new file mode 100644
index 0000000000000000000000000000000000000000..db3dea6b847e2fcf988958944b712db9038041eb
GIT binary patch
literal 646
zcmV;10(t$3P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0006_Nkl<ZNXPA#
zv5wk65QhKVH3lIInpoGQxyDi&YByI{JjE5)(x>DJ{0_VT*W?i*8VVX3%A~pC8kEW>
z%NLtnZwfPei!q$ISZTsE>{<)o{NsOS0j_b4YqS)s?H?Tbfu{BMUq9GC0gwGaPq+dA
z%t~<<?z9E{`ss@fd4b52xPR$_5`Z7*COB&gIvr+Mqz+cfMJTES;-rraQ)ntZZ?n{q
zC(U}1z7><y+wZ>>@P;WYQU`I;$8?w>@+4Nu#fB-&2l+t)1b5nU@vIaW?UfRA!j;*>
zD*0b29{YhN=!93wHcVBJ{WDSy;6V9@6x;7<KFG01ovL-xY9A+kgrWcd#7Q3j%zjo1
zV=(8GOX=O&ZnPEJZ9_n$`|s>k0sy)F{-t~1YUijIMFF5N4qc=UV5uZ1tyjuL1c^`-
zSSc6tVP+DFJZUOY?`2W%#ap+;Q^E06aNN2j9$$O70mltEwoGHKIez}`Ldq(aXDuM5
zM&wB>^A4n}&a5@Zx7@*6^Tz2VY^65rSqm)l4nk4jVUR;gja}KnmT7ERwSE}nxa;lk
z_}ar=Z--^x!Dp__xpO0v*PGuq#B`WprCh{G-?-E6U3*Z_XXMEvZ=3|vL4r?**-;YY
z%#jvm64}#<fb{Gf^guC9o_Ymn?$S`8qySXLssWpfbQVn4SbhAF@(oiMX<>l%c<&l)
zycW%2t8Hvm1Pw)TP~J;Q`|h<k_5(fA!pz!PDKOIFNWC4GLQmeu_E;pPw)&5NF8U)d
gZYX^l(El_30Qezx9z84e&j0`b07*qoM6N<$f{jfsVgLXD

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/strap-on.png b/img/misc/icon/clothes/strap-on.png
new file mode 100644
index 0000000000000000000000000000000000000000..028bc8a986092a16c254e5c310676ef8734313cb
GIT binary patch
literal 300
zcmV+{0n`48P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0002<Nkl<ZNQv#1
z!41P83`KKA;=l%6Izngau_G`88$?|oYjmkd?g`0pU4so&Y86YqMBw-RjR?zf#u<Mf
z*?IU0Xm%cOPK8ULE+Nt;Z84Jwy12*EE_ikxQiza3G~3y<p6fV;2+!O7kQxDIFoy5z
z2K%}-2~ay!>$<=>0XXr9n!r-$+4(oyKP5gF&0q@0KuG{Sh*f}eIbblhnX|XKL#kXV
zhM^d)vXSeeHZu<14d#m1;O3tMy%<WN$K`rR4$O^34KK-kqlr&1=b*a#nz+(ECv+Md
yg9}_*Kje{M0aFp(aLM9nU<>H$kH{hO9T_jBqVI@svS-2o0000<MNUMnLSTZaf_@MH

literal 0
HcmV?d00001

diff --git a/img/misc/icon/clothes/traits/strap-on.png b/img/misc/icon/clothes/traits/strap-on.png
new file mode 100644
index 0000000000000000000000000000000000000000..12acbdc8fb61116fd9d25b6f8233fc20a67f28bf
GIT binary patch
literal 294
zcmV+>0oneEP)<h;3K|Lk000e1NJLTq000yK000yS1^@s6jfou%00001b5ch_0Itp)
z=>Px#;7LS5R5(xFl(7<oAPhvIq|p-o|LbV6vE(M1S!OQ=y}O}0J0(0{mS_x%ueg{O
z{uJ1I?}#eK_}1muEdzEOhcfql{~gG%^E?$;O7VfU)}B%d+qMO?0f5}!!MIN8@_@4t
zc+U9(mNwbUt5cvXusRpc%<P^ahSOq81|kYEV{7|CwAQ*D&<GR{U@Un`0pL6)HX@E~
z0J#NNVI=Im1+t8LDAtnOyR(xz1@arPS*#c&5#X}J%-y-C>{)zjxeN$PJw=|uC%aih
sV+v;TH2d*-d2{XMZ{vLdyy0p61zPa(4dH0*;Q#;t07*qoM6N<$f=ds6+5i9m

literal 0
HcmV?d00001

diff --git a/img/misc/icon/lockpick.png b/img/misc/icon/lockpick.png
new file mode 100644
index 0000000000000000000000000000000000000000..11ecb33286d6610db6e539b9c0f236799705c82b
GIT binary patch
literal 165
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3*`6+rAs(H{2@<Rp2U_0E`+uY(
z@a`q?@9+M)Z{wIQVYO`M(i4wP%+NXQxpB$_nWJKpmHkY+3s3U;%kxLb^q)Cmn)UI+
z28q3QS|#09{aA5yu~>f;k9kL9V<Y2i)+1f~vhs&{niIW_xF0;h!Vq%Bc)qanr39e0
O44$rjF6*2Univ3J_C1#X

literal 0
HcmV?d00001

diff --git a/img/misc/icon/playground2.png b/img/misc/icon/playground2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebb0084c45793d0726fbda5e7db156bae39a84e9
GIT binary patch
literal 277
zcmV+w0qXvVP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0002oNkl<ZNXPA$
zy%K{U497!`#mTpE>~r<3qvgRm@-|G4I4GRg3l#Z?9n6HB$1jP06C&UVmzV?qFw?>c
z?dNU-?`D~}!bj{qc|V#G&FkaW2p8E6j+#{(tkS&TBd`Yi|5Gi-fm|0=t{ixCaOiuM
zI)ORR8Un+VgKMTZSzHv<?Uh7b{5$2sF&1eo#ZAQ(ipo7x&ZTAm&p?k53SgB6F%C&^
zj5Pxa8iG6MxA;O%U{1w~DLu8R$kwHiy*vGCDze7GIq%$eF5VG_x^TB2C-$MuObhgL
b#|B;jkz!kEqU|8!00000NkvXXu0mjfUO9G3

literal 0
HcmV?d00001

diff --git a/img/misc/icon/sex toys/analbeads.png b/img/misc/icon/sex toys/analbeads.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b11f7f8aac296370684d370376c4b26c32e9713
GIT binary patch
literal 359
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGjKx9jP7LeL$-D$|SkfJR9T^xl
z_H+M9WCim11AIbUH5piZ7&!76xaTlP0LAPCcfJNvtR+Ey!T*7P;rBMaV4whJfk$L9
z0|Vb-5N14{zaj-Fc)`=fF~q_@cOs+MAp;KQm)m~NkDL^+;KrWihg&{HZsp&!b=oS$
z8EL0KOe{WOD=WM4yR^}d%BtBvUZ&ej(Jh<tFZXq&+!U!-{>x0J?$iIAR3^--wTXF$
zugRi-I}Jvy3r~9;Fe&!@${C^d&0+H+hPIPTx0snLI(j>}Z#-FdBeL`(&$mKp;b$+l
zy?5RDUgnhJjJ^45HLo3zKDy8L9=9v^Il01U4iTGGN{0FYr@o67#3`H?3E*~pwkY&K
xWn%~T3+BF%j|^sa8+^al>pcA?Z}7F&UTq5d{q2QTQ9!>jc)I$ztaD0e0sv4EiJ1TZ

literal 0
HcmV?d00001

diff --git a/img/misc/icon/sex toys/bulletvibe.png b/img/misc/icon/sex toys/bulletvibe.png
new file mode 100644
index 0000000000000000000000000000000000000000..bff1b78c56bacab75993ee4e1a995f557179f521
GIT binary patch
literal 388
zcmV-~0ek+5P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I0003?Nkl<ZNQv#1
z!D@p*5QhJT9wg7<MG%kOXUH{gpitODAkWdG;6VtqZ_umHupUDom%c@*<hDJuv(Zsp
z<8E^({vbNTvfs?OGYTwPwCG<e3sX&ZdcGUf=9{Yr8}#+#ZE%fuWnrp6U%t%6v-Fkq
zif<|t*;ybH*{gsL_=-Cs5s%sgr$D`dZxIim9f&Qc9(cXEjM`%Xv;&ceM7>qI-m1Y?
zeB_R%3OcZ+3asF^vM|;8b7A&qssOntAeGcl@4|FQ4}4Z9M2I`~EuzCo0k1a~G*y5|
z#HgVRyaWC%m6o`k?DAOtNiX*@COEULq7v^9JLIA;e#-o;PAHG1@q5XHprrj_2jHjd
zk%-OfYFE!0%%NOEP-pO5s1w))IvdPqIv=YxDBw6UIcO>ra4a?dl98tLzVqP%uG4BN
i)EUeJ0Pgt5GFRU}D9*HLIu_*s0000<MNUMnLSTZ4d9bDc

literal 0
HcmV?d00001

diff --git a/img/misc/icon/sex toys/buttplug.png b/img/misc/icon/sex toys/buttplug.png
new file mode 100644
index 0000000000000000000000000000000000000000..abc9537ca4308197af707bc2a04d307bc06a5f6d
GIT binary patch
literal 207
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJX`U{QArY-_ryk@zpupievqjUY
zBYgU&CuXvJ^E^0K-dgf&=Lg~Q@1L@_XiWY&(M_e-!|B1?$Pfm-i!+aM$7pc2RyQ_H
z3iuJL9hblo-uPI^xbd;>ng_?DJs5Y_ZI)~})A*k`Av!_T>47q*#vQL0I#W8jCA187
zu?iHN(Eag=y`nQ$N$lUY|8j9<+cz@Bc5h$U?4wp}#xJy0>)i5*%i@79WbkzLb6Mw<
G&;$TOn^0u{

literal 0
HcmV?d00001

diff --git a/img/misc/icon/sex toys/dildo.png b/img/misc/icon/sex toys/dildo.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a4ff9c4db2aa0b4dd886aebf23d330968b55170
GIT binary patch
literal 201
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJK2I0Nkcif|*EaGVFyLTuX#1p)
z7kP@i(jrK4uMYcCjte%IuGb%Q6?j;nXY6w3a?rle+|{>Mwebi>y9-=mI<Q2!t>Y}i
zhS1jnGcGnBm=mq(XpyqdhFj1@z>!7J<qpHe_jd#}pUc(NmR$L<^80JIMOUZCggs{r
zj{4Vj;Q5T3Pdj$78fHEfT($NNWA4-V=Zp(&(svf??R*M!8H1;*pUXO@geC?C0KB?S
AMF0Q*

literal 0
HcmV?d00001

diff --git a/img/misc/icon/sex toys/dildo_small.png b/img/misc/icon/sex toys/dildo_small.png
new file mode 100644
index 0000000000000000000000000000000000000000..7406253c9c791bf5db4029f0cba1c3e25692be55
GIT binary patch
literal 180
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJN>3NZkcif|R}Hxi81OJV*q-7)
z`O5#PbL|{!R+kKGk*v}Q4x9VfVh$9}X=e#oJ?W$J=Dstt?oMFH%1iBFIq+9T(1BOA
zLGaFk=NZlgKUZ&26ibP*=@xX8_?XS||G+K3?{|OZ+24Kp*xJeHT*E?%^oEog#+1i>
dpUu>xp59oOZ+>Pc&=Cxtu6{1-oD!NC7yx2$MA`rV

literal 0
HcmV?d00001

diff --git a/img/misc/normal/sex_shop_dawn.png b/img/misc/normal/sex_shop_dawn.png
new file mode 100644
index 0000000000000000000000000000000000000000..c406d74674fcd3f2142a7b27ceb770dcedb74196
GIT binary patch
literal 2189
zcmV;82y*v{P)<h;3K|Lk000e1NJLTq002M$002M;0ssI2B@5<>00001b5ch_0Itp)
z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9
za%BK;VQFr3E^cLXAT%y9E;JKBXv6>j2mVP!K~!i%?b?4#Rp%YYah8@@2LhdoS(?;M
zw4fqaxc4GlxcABrK~#o-P%JtzRD)W*;85ERG;^&LwNka4Eudm;)&9}=hiS4u>e?+!
zx2|cj&33b;wJNq2$`m&QwUyqz@A;6kv)y89vc#RlZ(e`gJoh>0e81$}=RD_mh#1=V
zEnB-&!0l%L0=8^<+}7-0z}6x^p3TofOH(}-I}`9^Ngi4nS7W``g*E=E*z?l>4wq!1
zy~2yV>ub<5*N2zNyy#fq!LALpsLPp(^`2Bbv35BYIv+r_I|=p0v+(A+Y8+UQjhfta
zG#6xI*W6q*Eu4$BUI*4>Oh)Z&FIoyi>|emPdD+-GHwQ=eK85PkNg>lGV*6tO1kxO6
znCV7y(`p<jO2?7nY;13;2`S9P^ABc21?+ruCDx@ov3X`Hwgn!>VrM*-ri46I^B@kE
zdC|5Y2M=Yru&F2y+vobRzOo1b|5U8=q+*e0I<^(~VE+PsHYXP?v+}TI<0@1+C!;zg
z0Z%jr@XN|V1UzZjvtb2VEBt7yoQ>ximgAXxFWSrUaG*G3_l7#G@?~OeW;!;ntVWf4
z3KqGOu{hg}L&bU6R}xZ^It?333$eK*2aOd)cx0v<0bd4|cwP9#ynNWdfV|{*xbGc<
zyv!uHV!mxEPMw1E*ip!hjzF<95#G2+q(w!*mox#cn8=X02&g^BF%{Fs#=<!|5}pUf
zV_Iw!9MKWTN*s@*m<UXZi$;cX64LLz2i`HGkUQb~NR5qzd(1u16=&QR3;P$)K0ggF
zRAgayO)=Kyq@%%~0u5ODLGP$8$DaHwG|w-@ngs>Ww~IW<IK04zqa`!ZymTS970f{M
z{8@OmX%#eVESr%C4cyDz3D97zVOj&U25Sw|JLcu$=>jjFS+^1$Wq#PdfI}s-&{3X-
zW1CiBmEVVk%v3BX@S-~9hp0%Ij2&}4*fOUOfucOrI49#r$?@nY&BEaluI+ttMHP1C
zXXEE{a<S{N)zCw;%9#KS+>2a^2>2Y(F#Teg4+rMBp<#M!VGj1>`>^}*I_RNk{{oJb
z%tS|}A3JNyQR~k@eNHNB3bIh0!l*jA(m55)`98e3q!=s9X5r!Fi70m_;83X-`^rN$
z)jou+`5ru1S%KDdk3gwtm~MV_4fI)$%cmP_p-0=k3J<n7F2k02KI|yWz}Ch(w3qu~
z{{md&;^2shfNSFSkPtf>YWGeUhm@GRkr5k(oKcbRkBx@DP5SN_Oo@ra^q2@_j1BSs
z;C^_&Ga4yTcR@pTc5D<hOl#nFN8b%k^eAZHcEsET4b~c19dVJc4x{R0{{p61LN|<l
zxEeq;xzz+q5BcG)|2JX(0$Pn|F+x9R4Xk>=sYO32O}WMy@y_X9y!Ph{c=Oa}c)K%1
z?I+KChWF0);N$K-ob9=cGu?go_`*eec)kaJ>O70LPM*SWd)McNZghQq8RvUKx(sSp
z4hs7h@HZol8=+xTQwB{d^b)Ao4o!x2*t?$&;QoYtru&@#mRK2LZIPSzKiz!^`YhHy
za(QqF%0XfO0(y-2oe@f1QwBY@G_lj<LJv3{_V$?pjFgJCMa;Z!(*M-C3%L0i`UZ!f
z92E91;G7XBjL>VIUbnUEp-HtScA8x1us1sUpfYqjz26<u*?S#lFAkvV(pB^h+`z@b
zA^d&d273FyK+iv}Lbr`lfBmgLqUZ88!yx*u4nen#Qddvqps;@d*Nu4H2)%A=*<*P5
z$#_}ObXrq79d`1QewcTK=_k`)M#Iuq@n2t|F6(8~uYMKbw@TmO4XCGD!uzOT<)E;C
z0jG`ltr6i<2@RuKkou2d^g=((%&;uJ4W;AvqAI=>HIoiNB~>K1VZI}zKJ5@HUHf58
z?(+2@^f^3rU8U>dKcO5H_AlTIBYtCqUfA{0s23N#?CXV7FFiW!uRZ<HNgLur^f}y*
zUHhRV!qc+eYy&rf7%6o*cj*e0gTnp=oH0TL3@-p03$a=d*Yb&8;q@A+!#?O9fKJ+w
zxF6;<Ox7euN-I!y1Zw#*7=+mY=Bc2TPy4PyIVkL3fQHdGjL=KE7E82frA-Pglxwk8
zhkev@1v<5UrskDkW`L1W*XO#VHt6$EFbI7%Pi6Kjot=eqmj<C66!tIRLnD4|gtmjU
zC81?;ZB>XC&2`xOy+P;#H4|E4y_noQb*W5gg+2$3P@k{qS(J}6y;q<d6!tGbw~!uW
zTB6cYp(YVpzI)!-IMU{Y4m;N$g!N+e*~g%ZeUsFeC%3`cVlBYhE-FBiMdhHde*v9F
z=tr#OK`qm2xm=s4+Q8E$k`DXidJy3kYpVMdtS#Yv>Kq}~7WMfm7=*Q5tbdLVdIq5!
z6!tIRnh}~#YdKcS;@Y0j=7JWuwV9{GE`1q<c@0=EQ|EdCUz57gZf#K?34f4T&nfR-
zxB}&%uzvxXPOAVdi)(vA+eGcgR*yEcwW+GZ2EPhICk?-h5@OB_wbVM=VRnF-x9R5R
zly}beLpdnyU%;RduNk53iQ#P`W4lh<Z2HFnZEowZYr!B!O5NI0pYal`EoR0hwQFD)
zDRuSy{YU*!4hs7haLR~?Ta54@oHdn^sE?KP+m@q$fwe`f{ZG8thvD3fuzvyi$E_2`
z_uUfnKfeBlj=ys78?qi{{{qx>@(;&uiFvNu?oI)>+noY#H=7sm%E5mDRH93%(M~T*
P00000NkvXXu0mjf=+G`{

literal 0
HcmV?d00001

diff --git a/img/misc/normal/sex_shop_day.png b/img/misc/normal/sex_shop_day.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0d6b595a75f1803e4cd22722b16ae3dddee5bd0
GIT binary patch
literal 2166
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

literal 0
HcmV?d00001

diff --git a/img/misc/normal/sex_shop_day_open.gif b/img/misc/normal/sex_shop_day_open.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ac53dfec00b2bd975c3f72a5f1015d59f7cc4885
GIT binary patch
literal 9194
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
S@W&MXn8F`Z_@A1B`o91Q&5G0j

literal 0
HcmV?d00001

diff --git a/img/misc/normal/sex_shop_dusk.gif b/img/misc/normal/sex_shop_dusk.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d3d1eb8093f45fbc65728c81c827ff7f28f93a6
GIT binary patch
literal 9161
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
J|G8?Q_7C=HAWi@P

literal 0
HcmV?d00001

diff --git a/img/misc/normal/sex_shop_night.gif b/img/misc/normal/sex_shop_night.gif
new file mode 100644
index 0000000000000000000000000000000000000000..88cd72e5c2455ba7739d43b146df289b1249b44b
GIT binary patch
literal 9057
zcmeI1S5y;Bo5vF%goI8|kY+;f1f&-Uogkf1q)9+}3n)lY-cW)xk*X96y_e9jfCQu|
zAe|r`6p=1fL1lTrv*+9Ia`)_Be0z>_F&A?+GiT;JzyI&iL+dIkVNn1S;27}t-~=;V
zf-v%cnYp1bHd<zGZXQ0`i+uDPd@wd%W)5LC9wAP+7#E)~P(d8QCn6#u$uA-&Ag01E
zp(Y@GRrHF6;1!g(oPn6aHAyvX8D#?*H8VYx%N#m<93~2K-iA^d7W{?=S2T=NG%-j`
zI|a10>NR_1Lt8mLD}IcFs;P&Hk(+{1u&7z6sEw<-xwo3Ro1&++p^lZNfj!F9(a6HV
z!O~5`!c)V_*#P5*wsl9_-^5sXTRFJd+IwAhylG+UZRZ^B;1S^;crOI^Sm0{5q;840
z?n`mqGNewqyiv2PahsYgLB+FQQva=(-jt9oS;AmK(s)|ls9VOYN70NdZ#k`EJ)v$J
zZGF8-$2Qi+x7yI9$<U?E$fe!PyVcxn8f80i%keGRWl9%2Y;d#3!h6WVd(y&Z+RSgs
z#EU=(%}ouTE)6BS;FFV+v$M0?+uQ5w>(?vV_iEk@c9tiXj_lWx+WY$7eB60Gx<Mk5
z<~v9FMyJll?Ck6^X>8{`d97#i+raek@XW8VneM4CgC9Q)%x#P=e0jHU*fYC7wX{03
z{B?eHYi@0OeDUkR%Kq5rgW2`Nj~hQefBwAub$5CDaQpD*rypnAr)Qt{PLGa`c8`7?
z{5(7P`7>MEI#=4RNX=vH>h&iUc1=buJ!alR=H8Q*KA#<fw;z^$ODQ?ZC|@mmy;0Hj
zt-Ae7dDmVo>1T7-0g?1|_h@PVZ0G1#yQ1Twlu46`<6D&bfRV?fmCvGOz|PHx!{F2(
zA!%F5C0h?G_tQ#`GAe#&Rh~Sqd^NoKdVJ>}kL%xkLY&bW>tHOjG)#45B$1TB^ZlML
zp?$ILu0~jQPZw``cdV~3Rt+gBD<>-_2SEIwqG1J`0T938T7j<E+pag^cRX)<z+J=K
zJ>4W-{C(kiXkEB3*4s4@ApZB^|NdtHnlk`54VOMKj}%P<6SeOn=6Bs^;xl-nUsuo_
z=`G_m+gDfE`w*^`z=f_a>VGI`NObzP0tP`v?EJ`hpjHYT=~QJiQrH_0Q@V9jm5rce
z<bes=5RuMrA4y0#c?_Et#6T}xabvAk+IN4KDRHCcr*y;W;1iYb-*iwH;n)JbbV=V6
z+4b=X>juB>;lt7egqEXu)?%05NH*bmRbOc1`p^>z9Xwovf+nR%%6q);$FdFqD)N_`
zK+aOb!kb7C+tt^IZ_exwuBpZ{U#D_?pC#h4x_PM)GIB*f_iE~%*U~J(e>Q76P>6xc
z%S3qR?ycy!jhq`1?YN~-cL<Al$=QJNzVh)<w<RmjPnjQk^n=!_53l~x3EJSTw;<1R
z>tS}6vr#+|U)pv%C~4pT9v~eHU>?ZCv%3hSq#H(2(zBRishDr}0VwIHnK}r(G9mC7
zh-20g0m6@SilUWQM8v?X%ABJ)gUO5c5y@m!Jk^sdIE8{tNInI$D#L<7DUJyAmXiJf
zqnDK}b^!TE$5TMnn-0dzB_!m=j2d*NJ~JwbKq%9VHPMk7LZ+UdBW$RP1s)59gi>Uw
z$Gre%*Jfu6<semC(wQ{vt;aEF0m5Ubkp$?OvC>3Jm!-&D<LEVf8wP{*tjCR;SU<HC
zX1FgX+F8IMt4u0PwLL?YKYd)0;>nb2J}d%ye!{d~CX|r?v-4g>P8eE1sK+46YfRqe
z9@Tl*EmbygV<uZa7CosYbiy$PmKWq_(t5n`Rn+f(Pi{8Av{if|6OQ4U%`?H3W6*^h
zrW!^SM88uah!y{df)<$tPk=HF<N+w+XwGjZCk{?Q*F#fCbwM*^F@YYlCItl0KEaWw
zxbC8&ps)^N7Z_z2kOH$7k0h};tKxeYarOu*RW0O19jD>pr4ThX--8i-q3VNC^<2(I
zYOQO;gK>=Y;1w?1>u<WoAIkgX7^vCtG`wMJ*f_*}E}3B7coaoH-$NT`$ZWFWs6L<P
z@rd5sorN=r<Aq1F+`(iU?_W(*rLk(k)9$5h!8887YR7zcSMJ5lXP(lBEIy#~!(Wc*
zLx9tZzTh(4atIRf{M?Q6kziu@E(u)MyM3}z_krPfvtf!MT<B>C!^^eeE1}Bk6%E^A
zTWzNiD*Kl=hhFXQ0CqwJGB@kM=`S4a%we!%1^OFJy-ZrrwbIL-Cx|@8@cks@=-sVq
zm#F^3Y5(V1$Mezt`0t+*pZ*vvy?XS*B)D-O^>fwz6$6>^uYkBNcgOmS0-~T#XkYYq
zD=-aeU@7_*Qw*GfIZlIanc+?zCAU6J%l9Q9V{Y7%;3io0w3{)Cr3wI&a3awSP(^cK
zsK94xG@8t5!!g1b1nuP|P4;&wu}_HzKGoxR6YX7rn$Be^$F$dz)wLiAIOU~}!_>$e
z=_D5)Em#f?bqY#}#1$4?Sjp?2{Zx|3{hgPiKSURqkecM}!zVbOg(7zc;Qsm^eUu}g
zUT7m2L~ZkwClw#V%eq9PXVb~@HV)0lz67;4jbgE1q&NWX+#?*IHY5We9|QtZ)xG%{
zd9Fu)GOAB|Jn%`df4JWyHZY^ukR-ya|Av8Rp8W9?ZE4O@{UqiA<6VFYYe61J0vAc^
zu%;;|mp$lXWdSu`bfKluprM}M&Wf&dmN6k3!en98AClZ?ORf)khgs0hZmueHT|esy
zcyuN6i;n>Bg%|fXOiP3@FAW+xCpD19Sf~qommCQYD|L5?&Yid>R~ru!Kfl-_acxAx
zCDiTMtxQl8J%q`ClCX}?$K!;x1>S)YY*`CA<~;P&IYv|EiA5Cjb{F`_83oCCLJ}_^
zhQIWw!-Gk5Zm4L?2w=j;ag5dxPr(`nef1?2PsxQW2gY)M3*|xO>ZTPyjs)FO&7ca5
zT(sp2yk&KuW#;=+FPmsDytXb;5Dp+2l1H<PoAGJP4}`6xMJ<z@<#JtxwOG=IEowWB
zsb#X>^4tHo|Hc_kjHWlhPH~KN@gnM6Y&I`(gva&<BkI$ueH^87rw7kU_F*6G-kCeH
zNPLcwhz&E;;vjmNm2phb*<`N6o}mm5ET!>HUE%`5kppULlN7Jp9{bY+W|{D2t#5yI
z2IS}1%Zj(W5DAgoE)a|U8Ymxy27bU*?4=W3d12LBmqq3lsmpCM3QS!oU?uVMla{Gr
zgJYZFD@->a11(gCavk^fbEAG8vC*G_wD4dq&_TssNBcFRZ&we*SljeU@kYN{7>m4-
zN5Nfbc=3fQ6iBp8gI?}gK%@iM88hh@6sTHPtY7NPLnH$vW9yPUeO$OKG<r#|9UjJC
zQh_tdMy<S@n(ADIn0zNwu2J#{SDJ!^6tTT68+(tv+2ZxZ6}R3ugfcvCGyIHfaT;*F
zdMm?!3MglhJ?O_{AJ3;>l~;9BNb^^Wl1knUwipDR$I!;TOXLX#acAadoVU54+@jhK
zEk^*Zw+Y<zU)92cM$4-XiV0u9fYy@<VzL~dgw6r^kmKH6$6D~F6L@{D#;5906Y++T
zw}S%5)ZH5H+Iw5dPK-m;@=no>rAAv`4Zx4&q2}g>6p(ND47D~*OKY#1pTFJd?AY(4
zmKW9AKIx}(%fSlF>!_WunbY|od`tWB;7&v$=K`R%<qg<)_a0bv5oFTZ$;f~ssN7wo
z>pkug^4pD@$z5h=yK`Re|62(02M_+>!5=*MH^Bpikr>*w(uK|wiT}cb8Rz%^V?3Bj
zuqxBMP-#ODvu94U8F0Q>rH>GE{0439W@HS>BhYzb)fcCwBA7CqK*AnCS~n*__VGO4
zGsQIxri7FjLG66#^)*f14qU8kBZ1yGvWs+Y8OD4!zOqp<@-csH&;}()xDOR8->8w~
z!R2yk1`ajj8jb+ogwLwp=@w@wF|$7?09t{2F2<!Mxf!lpo+9@seB@1r#LRJlkMFB{
z)Oub~N^muA(L={Dv+AQXnG<j^eBxNh&CMd_Bpg9ZSObzz13JMUw`+&x1wC$!`NHv|
z@3~GIIK4_^PcpmTD0nYDU$s;CTIf4WO+Bo-=myvs-D~2pBV>t2HwLmaGbBhu&5#5U
z12d@avt`!j<AMrJc_0yeL`q%?L7Y8A#m#mkI~?x@DGHVH;^@f9>nKrt<$0FiAA2je
z7+$J0Qf?gla_A|x@H0=1R(65uSJA-=H?g;h1d${x-Rw_6QTc=f|Lt3>g-p@x=H<q&
z)J*x*rovk2MN<wG2Fy}irXy_&eGoWa2mqDqqeW@cml=wKlC&&hm7|_DeiD?n<Wp!1
zO?Xhkdx3MVR6ZX7de*re%CiUn;}dl9S(?h!6up?z40?)>8p_K;yf8rJiHg{QqFQ@L
zs}|8~y1x-oazG%BTj!&p82XDuCKo}eFf(7}3l-dIAcgm)vHbjzr8b18bT^Ul=z+bO
zfW8e!h2bf-pK`=3Z3=9!6S<N1C^yk}(`7+4u`kT2KGV14=uv&f<1_7RO4v#r3CZkO
z*{s7{dASYPGbckf`*SA9J!b;MjN0%dMROaQAAO$P{K=!|9Xge`_)3G72#ObV7LvEN
zI7mf!cSXw|XtGRd{A9jVrXNnrzo{SN>)g;<{fhT6hs|!UhxD2S<qsM61{}Sd0_|q{
zbF771o$BVd){fWieD|Iv1w_G^#|^)R1!g>pF@og?-+-BWg2bHm%gN%>5e`C2H+%eo
z1_y}6`n_155HbLMQ99m;3&g6Y(LLAZkjQMK!hU+k{?PCVP<08yR%nt`OjQnhLR_Aa
zp6+f+)aIAu)ZqWHs)T(dld86R(^NZ@)uN_;<Lv;7>^VJhi!B*m7geA3G-fM-`kudV
zClj?CIHk=ud4u;N(4DRqJCtAF0NmYtM_HQoA)<#n&mnYzfzCE00)Q`382oBX>D0G4
zaplAh?5IMH3~LeNEKwU=H;U%CLxeTa>eG8OW^qi^SR5|;I8n-fKbh)akmn3B+H~g3
zWi3KB*ZZPk+*D4dKUg&rOMh*+N^wq4O3F93Z29=Y@);Hx&hfwj?3a5wyJp<d&_B41
zt2~|Cy?W=>4EH%6gwJm_x3n)j@DJQMUD(@hX$2bN+`&|T5a5p?_+tqE#Srvzx%`_O
zf<#^e;k8o6cPDxOI|N`$a{9R({f4~<8K<G?3|NWjU_#6;-v_G>FB2Mxmv=YW)M*Te
z6s(PS&=n+%&dZdU>i|x3remWCD=;NIbjqj23U?U~r!YS|eJjNKoyFQRfI<rGxG{Mr
z(Jm#D&eubWt#?fa*{s3#QZerrMIWkFCm<o9)!8qwu$uu_mxSeaVSB@_D_b#g(Z>+J
zIjh*J{!=5|D7W8CJYAWxYCHK~>i&(Yf7X2m?aRCKLi&u2+boZFpCFijT+!LXr^@N`
z@C%^P*PPSnay}IaX@t_61xIBZYyd<T%G#b|1O!Ijp~=eRZei^u*3$F3pVv?8XwQ-}
zIv#bg2u@I)?_}?BTHK0NQWUwkPt_}{A%i6jILYp3k33lwsR$hm@k-B~rz%x+&^sF<
zRtGXp<r|un-OhAtYDl!m>XZyd40@F;=a-iW${R^1n4N0@2XS5Ls7oCY9E;C^0wk2D
zsVO(t!9|FJhgK+XByP{S;6j^+uENKT<dXU)IG+S#z2Wpnv!9A?WC+S#&w<|fzMKyu
z2(soOEy!vgD7hB#dd2Ldr}D+6>fg(OS=V**htkV*b-YwF-;LXOjF-QUuE6-Oe^A%{
zrwbrLwAdYzK54Q+2k*yD6pz|_u%sc!O8?UZV7^W&c39SM=55e!CQR9_1=Ze@ST_TD
zLrE-?Ro%!cFjJ+C^EOuGS}3|P1J-OizMSl-A8lRvbr^FNatJY@aTP9N@A!y##FBxO
z@RG>;7+yCCs3BDQd`8<9%*(g5&29;WalTrhZb^Ay1PzI`$b23n0n7H_K6$xDt#DAl
zHq0d|`?TE7!r)v0h)D$Vl{r9gEmZSzfRJuZ=w1$6+t<uB5i+O4aRfy>B*UMqNQ$TN
zD!HwuWMI-+0x`-kVRdMXx^S*|3IlDrUbfAJ-?Dx;(KbSQ#On|fio{Z4zIR@l$KAj8
z4J#Hy4&tMB+cZ>NP)yozyg{2Qq?*6-ZN4D=LQoXU@9rzaMr&|t9F+^-_myc?y*_PS
z_-0blCo|#f{+e6$kM6O#evnp-dJBDL5X>SkvOU(_hozy+qNH)8E(l^yMBa*CNm(_m
zn+Etv3jFno{fp8{%~0{{ThG8?Wq{(zNJ_FSAkfEP*7wDmkv8t2t-n)0!=*l^XP5bn
z*7YoMUh3*TFOk>+8i#)j$~$^O@6!=$J99GG>ef|tXK=&u3olz6Lo<CG>Kp-P$fTjB
zdS3}2?Agod*H@bx6S;kP$Cv(L2sV&ge&MGxi;_ppy$`l<=Lj$_sPJNBa67m%e0D3j
y<;6mqZ|IE5+`-UM+p)tY{!jA%(-`>E82JCy82FR?|0MrE$^TFC|36FqD*pii-tdtC

literal 0
HcmV?d00001

diff --git a/img/sex/close/doggy/straponclose.png b/img/sex/close/doggy/straponclose.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e1400267534cf524cbb5ee3f54b4e6ac0b7f1d4
GIT binary patch
literal 1175
zcmYL|e=yr;9LJv!U2)hoBb!l0RZnenw;8&MU!lR6G4ynj-tLtCAZo;qkhDUz)f=v8
zYmxfZl$al7G%CJ2Q`Kulx018=+h~LoBO!<+lI)x0k3D}p_uS|1c|Py=>+^oDeit2X
zWnpgt0I(vQ2>l)a6dgGS?%jjzn54T90O%A#Xi$9KKdW$8?x*1&m#xPfU$jc=3CgCL
z1%1YejXimq>TbrvV9U&G+q|D9R=Spm(3{rrQ;y8Ers+;GJYBJ<_|PfRe>=clRwUh>
z{c-H#`Ceh-OS@gATtd95`x*t(s@>YBd|X6YZLxH0s{oF0A7SBWTD&R}fCH$Hl9gwf
z$HaUVPS>Py10d~YeX9pCL?+?0XtvlRC=l2j<;VKDZ{yqUWghe0of72gZt_+g0C!_E
zJO*ceaAN|bqD*|}g#vUm*(aM{R5N*4H!jF@aS<uyY+ex$M^zMshJJItApw^3!xHOZ
zB8Rpzk2JW7HC*!c%0E+xca&9995x6o0`-tw;p7t&yQG*B?;tK7KxhE=jr2L(QfIWA
zMr(1rL0HaJE5~_!I0uK*YMfnMij}JZ4ek}Mfnxpp&OiVnsP12*pf8%&@~aa2jx5uE
zQAuiWib;Z$Ep^s36bC?skb+|Qo>75Vs!<zgM1=_72yAml!ZmWPuCAJIUVCj_!iV<L
z%mFw^PhU#j8s4_{h2Azk!_^L94l`%Q5pMRo2)9a*@&v0GN_${BsYxEy%Vrs5gL`8B
z>r7V{(S`nY8_;?{56SyZBZkZ=FTe8QZ)7e#g<1DawRr_>YMZ<1jSXU#Ku07hxQz$B
zXJ`YQIU()Zc4iSW&aTHq69CLf7bn{pA=H<sIxW2Bc4+`MAC6ygRR=uD-J5>F*(bKt
zh;~A|4}cRua#VD?t}vz->bK78pcUB35-IAH_2;ws*fPDb6r-_xf}-1Z!1OJw>Euw;
zZHot9rz&C4Tj_rZ8pP0OE!^P_kzi4%(%Wi+N=Wyc!G?sdYceOj!jMyUOcJhi&YO6O
zXaM0ZXN?K%0r)Z^D=x4oo0N}_$|ef>?F^ZVR2nFgtoIY4*{}*6>Q=6$Ly~$<pFTnr
z@-s}{FU&0~$}!|KS;1zf&VDY#YbPWbbF3CFgz?ZPPYFFWQaH76t{kt4V;kRfHel`C
zc=44&XL7H>(vasv#<{d}sBsjN-W|64&L;f9ZpE~&eK*+&c`I_;km7`+L;RfTXLZqk
zE{K`3(Z%#y&7*LS9ZxL;4IWpayT!-mC!p&pBKZySrEq^C?df6M+iFJUGDE#qT1EK-
z!>)hq*V7v9tH=R-INK&Qf`XMpa}VVbKCML`g5M6&+a#)UD-5qy2;fy--fIXZCz-zc
zG@4xMC~d1D+v(uW28z^XZIA!P^LdW!|B=(fPIjoaR<A>W?!P8&e$q6d<1om6cI#dS
sK|&)^&w8}QGUGHNF;lP5upSm@O-CQaUk>I@{iH7t@X?{2!KBOo0r)dpPyhe`

literal 0
HcmV?d00001

diff --git a/img/sex/close/doggy/straponclosedoggy.png b/img/sex/close/doggy/straponclosedoggy.png
new file mode 100644
index 0000000000000000000000000000000000000000..f58e2b61cdb51ecced4dcf420aee1896b885f7d2
GIT binary patch
literal 1188
zcmYL|e^gUt7{}iY`~ilzP#1PMcyNNCpd2%U<u(Fxh#3xsNEZG`A(ntbf-t#LOE5WV
z49+UhOBoFqZYsf=AR9<d4Mxb6+SrEZx+;p|Xl!ik_TF_mzJJ{F-sgSK`+lF#{oIpD
zTQ>T5FYyKd_$097H~^3YaL$@L8$SKg>XZO@@)F`=Qi^oX43P)*?=LKyP*)VUv$Gdz
zY@Usk5zU<X#Lo=0uX2B^dd#Wcy=hzY(Xud(K0ZgV@J4peIu?rtB7RlM2If9w+b;c9
zf`1I!Pnxr?nAUHlI_(xLqY7V70u7bRo09w}mkl|-^T!Xhr$>`qaB=mW3^D*-b${NL
z-&4f8D>_&aY*K7*ddc-fU`00i>2d%XszNd0>C{fI)N3{VnkbtE>sO{CUI2ud_r+sZ
z8~M#d3E|KHNaAkUH?EM~@i!y*j4y>UVY3f*VY!_%5kW!YR^J+HNuTAp8I|2tS|{Ks
zJwg!xb)3Z?dEBJyS3VJxbzJy8<eSq|hcQ%Ui%yAx5kyZ{lYqc;P56;~Q)_|h7A_u=
z&tc>uu8EP7Ts<0y+ZRwMN~d+~eqi<)?A-NqCod32Pqb$2A!m(_QE7MGon*XAswl?d
zKN*lVcrc!z+g!u+kR#`%vC|u7_)d%LxUxi!tkAhrAwI5qM5^Enk4H6*tKIW$4G3cj
ziLlr1Y<vSAJ@nxJL=xkWk%VFN6uY{zkX)bafE<*w2{JT+rO2u|6-FN!R=!=qL|kJQ
z*eQ#ws&XE1gari|_e!QglK1NXu)ziYVsefj<$xT?f{^sbV*_5OMTNITx@84bc#hn0
zu=Lr~iAq%(E^haBIpkTmPK`40b+$wRmXbDW5~}mcGXwG-4_TLbb@0%U#A?QsvB<Vq
zHgDeLGhEvc;}yibCCjWGo7FYErvmjfv(%-HE9iJ8Q?JEtwXbo9{Kp;gThZkFQ_1uZ
zvE0;Jz4~G|)3CqAX#g!}qmL@}Augj>(b+sI>-+B$#v#7Pb_L8j3wxw~04^L-eRrSy
z`BlvW@~Tl2iEyZYG}i~JvUei1t}{w1O6_@Ts<lm_V&MFZOX0Ew)w?wW`7az}`rzF~
znRO}lK?6B}7f1-q40SWQRv;}sQ$&^ue+V(29-a}lXm^azTzk;Tk{C1A4{@|Op{QrU
z4Q}VxX<BCA473ZyIcx$^g@iBG%=lhBhIVQ5j|!*zAN8RyZKmA~uy@cNLYP@z?y%yu
z?Q1o!ol~uH%`1XNqj-V~-kx$h_{8)44HC<TlN%@^rN=UEuh-3$yHItri~8bk;_|J;
zHtqMIO}~FI*&f`;K0K=zQ!Or<b7NrBJ0gT+BsxK~#Lt!P$KqeR-uqMa3U2o=)O}6-
z!}0tsy5MK&myu;ijC-T$G4zX7KitzzfAmmdT5F{0xBo>S7aDdb))PPrr(y7<&{JRF
z_S&@FT~U{6<E;zA|EPgIIp1`<XJ#*oJP=-jyoBj+9YKZ|0ttqQspktBx_bk}dqVt{
KIO%&kkNpcrX=_RV

literal 0
HcmV?d00001

diff --git a/img/sex/close/doggy/straponcloseknot.png b/img/sex/close/doggy/straponcloseknot.png
new file mode 100644
index 0000000000000000000000000000000000000000..f58e2b61cdb51ecced4dcf420aee1896b885f7d2
GIT binary patch
literal 1188
zcmYL|e^gUt7{}iY`~ilzP#1PMcyNNCpd2%U<u(Fxh#3xsNEZG`A(ntbf-t#LOE5WV
z49+UhOBoFqZYsf=AR9<d4Mxb6+SrEZx+;p|Xl!ik_TF_mzJJ{F-sgSK`+lF#{oIpD
zTQ>T5FYyKd_$097H~^3YaL$@L8$SKg>XZO@@)F`=Qi^oX43P)*?=LKyP*)VUv$Gdz
zY@Usk5zU<X#Lo=0uX2B^dd#Wcy=hzY(Xud(K0ZgV@J4peIu?rtB7RlM2If9w+b;c9
zf`1I!Pnxr?nAUHlI_(xLqY7V70u7bRo09w}mkl|-^T!Xhr$>`qaB=mW3^D*-b${NL
z-&4f8D>_&aY*K7*ddc-fU`00i>2d%XszNd0>C{fI)N3{VnkbtE>sO{CUI2ud_r+sZ
z8~M#d3E|KHNaAkUH?EM~@i!y*j4y>UVY3f*VY!_%5kW!YR^J+HNuTAp8I|2tS|{Ks
zJwg!xb)3Z?dEBJyS3VJxbzJy8<eSq|hcQ%Ui%yAx5kyZ{lYqc;P56;~Q)_|h7A_u=
z&tc>uu8EP7Ts<0y+ZRwMN~d+~eqi<)?A-NqCod32Pqb$2A!m(_QE7MGon*XAswl?d
zKN*lVcrc!z+g!u+kR#`%vC|u7_)d%LxUxi!tkAhrAwI5qM5^Enk4H6*tKIW$4G3cj
ziLlr1Y<vSAJ@nxJL=xkWk%VFN6uY{zkX)bafE<*w2{JT+rO2u|6-FN!R=!=qL|kJQ
z*eQ#ws&XE1gari|_e!QglK1NXu)ziYVsefj<$xT?f{^sbV*_5OMTNITx@84bc#hn0
zu=Lr~iAq%(E^haBIpkTmPK`40b+$wRmXbDW5~}mcGXwG-4_TLbb@0%U#A?QsvB<Vq
zHgDeLGhEvc;}yibCCjWGo7FYErvmjfv(%-HE9iJ8Q?JEtwXbo9{Kp;gThZkFQ_1uZ
zvE0;Jz4~G|)3CqAX#g!}qmL@}Augj>(b+sI>-+B$#v#7Pb_L8j3wxw~04^L-eRrSy
z`BlvW@~Tl2iEyZYG}i~JvUei1t}{w1O6_@Ts<lm_V&MFZOX0Ew)w?wW`7az}`rzF~
znRO}lK?6B}7f1-q40SWQRv;}sQ$&^ue+V(29-a}lXm^azTzk;Tk{C1A4{@|Op{QrU
z4Q}VxX<BCA473ZyIcx$^g@iBG%=lhBhIVQ5j|!*zAN8RyZKmA~uy@cNLYP@z?y%yu
z?Q1o!ol~uH%`1XNqj-V~-kx$h_{8)44HC<TlN%@^rN=UEuh-3$yHItri~8bk;_|J;
zHtqMIO}~FI*&f`;K0K=zQ!Or<b7NrBJ0gT+BsxK~#Lt!P$KqeR-uqMa3U2o=)O}6-
z!}0tsy5MK&myu;ijC-T$G4zX7KitzzfAmmdT5F{0xBo>S7aDdb))PPrr(y7<&{JRF
z_S&@FT~U{6<E;zA|EPgIIp1`<XJ#*oJP=-jyoBj+9YKZ|0ttqQspktBx_bk}dqVt{
KIO%&kkNpcrX=_RV

literal 0
HcmV?d00001

diff --git a/img/sex/close/missionary/straponclose.png b/img/sex/close/missionary/straponclose.png
new file mode 100644
index 0000000000000000000000000000000000000000..56bfcd162ad765ca1b03cc507c01bf6904b6f2ee
GIT binary patch
literal 2328
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
aCv0ufqk^`tQkEVbz}_9oY6(a#0{;V1G((F3

literal 0
HcmV?d00001

diff --git a/img/sex/close/missionary/straponcloseknot.png b/img/sex/close/missionary/straponcloseknot.png
new file mode 100644
index 0000000000000000000000000000000000000000..2121cbb72c9189c2f706698c51639d3092131103
GIT binary patch
literal 2289
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

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyactive_strapon_anklefootjob.png b/img/sex/doggy/active/strapon/doggyactive_strapon_anklefootjob.png
new file mode 100644
index 0000000000000000000000000000000000000000..d66a056ded1f4224ced3dc2fcb6331ed34d03a44
GIT binary patch
literal 519
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0VP&1H&!`
zhD{6%pBNba|Np-&|L_r@C}T;GUoeBivm0q3PLj8~3+s>km&bt|_7YEDSN5lDax5m?
z^R&wCfI?3_T^vIyZoR$Y$a%m(z~$oB4Pw`vbg%4RCd6cW<$%bidy3cXTPA1$RZ<Q7
zm^rW1ul)7=8~ywj&VRe!^m29eyBoYO)PH|u{PmDM;P+?FdkuA4<mDI4f4kpW&D!BU
z^M!uC3--IfBGdof{QHBUmK4W4c+42@Ep}6a@yIHmHq{c>h?11Vl2ohYqEsNoU}Ruq
zsB2)RYitl=U}9wgM5fvX237_JRothhp=ij>PsvQH#I1oltOy)Xp00i_>zopr0FC8?
Ai2wiq

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyactive_strapon_ankles.png b/img/sex/doggy/active/strapon/doggyactive_strapon_ankles.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bd853bae89d73dfdd4725bf1765f5d5d66025e9
GIT binary patch
literal 547
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0VP&1H*B!
z(oGBu|Ns9_oAF{TP?WJG$S;_|;n|He5GTpo-G%i>{!5@j2KEw9Usv|0Y;r6n-1D@`
z?SRsZo-U3d6}R5ra^yYiAi&}n9Kq#&P~?pKWM8G1$HN3)1a7f<`tUUqP&1W5L;b9a
z_wSr%e{uY;v3q^Kz5D`s`2*V@_{l5&-8P^9LO;Jk{DSwK7yNx|8-Ha&WQF-Jlr#KV
zx>Nq|(Z4kfb$9ybEByWC|KgLpLwtQPP)WS}0f>>$@3*{M|L!^S7e)e(ZiugB><Um8
z43z!v3{<LG;u=wsl30>zm0Xkxq!^40j0|-R%yf+nLJUl-On}H#+rYrez@Uoz)HD<g
bx%nxXX_dG&aEBFXfgI!M>gTe~DWM4fq0NtM

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyactive_strapon_knees.png b/img/sex/doggy/active/strapon/doggyactive_strapon_knees.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2dcf4e363f221ee092aabae2f847021baa85462
GIT binary patch
literal 622
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2q5(c3u0VP&1H*9!
zhW`u<o4^|W|NlQrxkM5u!B`UH7tG-B>_!@hljQC0!j_n}qZY_vFY)wsWq-;h$6~@g
zPpjMxDDCO#;uunK>+Ma(-opk0E*Ap~Sc5INmIeF^S+{OgaKA%+=zjNvw5d~{s$2&-
zl&YZB@QHk^L*49naf#r67g?Xo-^-Bv?}Yu%hCi3Z9{iu0eD=2Qzd+U}+kaLzZj6)a
zN%$xE{P^eRte<MQCy4*3X0fi@Yg>Qp=f^*ljW+k0p0Lj2eJ4KQ=f5A>wx6$Oe0u%!
zGgIk4))U-!_!sVsW;uS|`(MxJ%|Jo<N%@SMnEJa<)G?mi*VOlyamiW#=jXX=9QLt#
zaKA~;D1F&KJK(pt#yord3D2V&b`a&|n&t6qmNDF26`xiB)vK1cMwFx^mZVxG7o`Fz
z1|tI_LtO(iU1Ng~0~0F~ATrf9Ft9Q(sNy~~4Mjt4eoAIqC2kGeVMSUX7kRq+xvX<a
GXaWEdEwrZq

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyactive_strapon_thighs.png b/img/sex/doggy/active/strapon/doggyactive_strapon_thighs.png
new file mode 100644
index 0000000000000000000000000000000000000000..544fbc9fde1ffdeb2e8f5520041aa80cd54611e8
GIT binary patch
literal 791
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228911Ml+^DpVnB)|-O<;Pfnj4m_n$;oAYUQb
zBgmJ5p-PQ`p`nF=;TKS-;RORjsR0ASs{{rHs~HRo;stYd1=;{5`~rMJT!C~k1H)bh
zhM5cu#~Bzdf%Uv&V3^0iu#bV^8w0~Lpy><@vl$o`F)%D;VA#ySu!@1<G6Tad28L<|
zhHwUk1q=);85n?u|NsA=JKf+h&_u?PAirP+hi5m^K%69RcNfVwd0RVx9QG1VUsv|0
zY;r6n-1D@`?SRrdJzX3_DsH{KkSo?0Aklj9mC#FW&d>5IH|Z!Z`2F~9HOq4wS4N=L
zK>!3|cAnUKu$on*;69MJ;TO7e`;70&`@<a?AAl%@g2uaf`{VPke|;$MuI9scE)9V{
zb#K0NvFH`pn4PWqU9#%+wzp!n^Q$KVr5@}95+9;dXWF$T%A9|G`e{|J_~nx5GsW*}
z?`bb+_zffu)W2IFwClcn|2prNKj+*pdjBbok@e1ZAhE4`LeM)^m^z0(j-BQe>l>Kf
zRRak+g;UL5hQ~p22Tv|oVGXoVwZt`|BqgyV)hf9t6-Y4{85kMr8kp%C8-y5`SeXEk
oskVWEm4QJO_o-<p8glbfGSez?Yv2wm(gOL()78&qol`;+0H;^Me*gdg

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyactive_strapon_totheside.png b/img/sex/doggy/active/strapon/doggyactive_strapon_totheside.png
new file mode 100644
index 0000000000000000000000000000000000000000..63ad693549532d136467e8c75a6ca46055b3ffaf
GIT binary patch
literal 652
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0VP&1H&c;
zhT{wj|AFZL|7|A~>VTq*B|(0{3=Yq3q=7g|-tI1}Kk{D!RWY!ac>21sKV_3+G2x!4
zRc;5A&hm6|45_&F_EvN*v!j6P!KD{O+71Oo{F@>4U((TU$vUM1e{b#mPo6UZwUZ9^
zot=5~Gt;ZTziJrgH*g9+s$~3HSG%vl^7*}W3iHGR-d}&tJ)`*k_q6#gFsbx=@!P8z
zZbKD*zFEI{`hto$hrRLh^&hN*Xj#uc<0{n9@~?Xus`lH}*B*FT-=b09BKUwYLe60I
zbJi=rzy5s9toENv<iBQVbpv}s<$*|B{RQ{dpO2SE$S?b&pJWFXy^o~pSsv7BEABUx
z)ieBNXOwIB$_O=-iS$4K>3Gopm*K&RM#)!`1a1PkswJ)wB`Jv|saDBFsX&Us$iT=@
z*T78I*dWBf#L5JSOtlRRtPBjQxKB+((U6;;l9^VCTLX7kkrv2CPgg&ebxsLQ09=03
AX#fBK

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyactive_strapon_waist.png b/img/sex/doggy/active/strapon/doggyactive_strapon_waist.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e4d42713ee5bbd6cb4b8d8a8788cd4cf26799fb
GIT binary patch
literal 6444
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

literal 0
HcmV?d00001

diff --git a/img/sex/doggy/active/strapon/doggyidle_strapon_anklefootjob.png b/img/sex/doggy/active/strapon/doggyidle_strapon_anklefootjob.png
new file mode 100644
index 0000000000000000000000000000000000000000..d66a056ded1f4224ced3dc2fcb6331ed34d03a44
GIT binary patch
literal 519
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0VP&1H&!`
zhD{6%pBNba|Np-&|L_r@C}T;GUoeBivm0q3PLj8~3+s>km&bt|_7YEDSN5lDax5m?
z^R&wCfI?3_T^vIyZoR$Y$a%m(z~$oB4Pw`vbg%4RCd6cW<$%bidy3cXTPA1$RZ<Q7
zm^rW1ul)7=8~ywj&VRe!^m29eyBoYO)PH|u{PmDM;P+?FdkuA4<mDI4f4kpW&D!BU
z^M!uC3--IfBGdof{QHBUmK4W4c+42@Ep}6a@yIHmHq{c>h?11Vl2ohYqEsNoU}Ruq
zsB2)RYitl=U}9wgM5fvX237_JRothhp=ij>PsvQH#I1oltOy)Xp00i_>zopr0FC8?
Ai2wiq

literal 0
HcmV?d00001

diff --git a/img/sex/missionary/active/strapon/ankle.png b/img/sex/missionary/active/strapon/ankle.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a485087bfa381ce61c6c0876a4eb45b26dc85fd
GIT binary patch
literal 734
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0Xnpfnfmy
z!#M_qrwk1L|Nr-RHzN}$%2*QQ7tG-B>_!@hljQC0!ulis<#8Z~y~NYkmHjE39E*vL
zwZfrLp!6P37srr_TW{|)W*&ABa0%S{K<r9WbiseqqZ8jSF*WYr@ZQv*xcsyv=aa`k
z14se?&OY}3b&73u|APDf7+>4#J2szvX)LwIuBq<#Z?@y2|7*Ota{T6BO!zAJ<@SB^
zitvi#`{$*Xu<9Yic3AC+i$vB{-g;be>HO}?^;>t_FKA+1Asr)nh%L8f&ksh{Ph4yZ
z<QjfU#YoBP*Euxq0m`y3*w^}p?aF>ewuGMyN6tH)mS_3QRLRO5z<=O*>XA!7Dn2rE
zJrU(;U_8ODu&3!W(^pOj2IdL-xwO_l*yB*k#FlV^VafZXZ^!sG0?cp7+AlcpUC8VH
z(KWsD0SodrSOYCNuPS2Sxfa2H{Le;nPmB3+xQ6G_N8f#JxeK)C3U3)uxZp_rq)i~5
zyAHksx|x*F#8CSnzmB1^d8y@0#pe@&lBy-H5hW>!C8<`)MX5lF!N|bKP}jgr*VrJ$
uz{JV~h|IJN46F<cydPiSM$wR)pOTqYiCcr!zKrc4>pfllT-G@yGywqE8tXCu

literal 0
HcmV?d00001

diff --git a/img/sex/missionary/active/strapon/ankledown.png b/img/sex/missionary/active/strapon/ankledown.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0c9a21482906f4d12bbc0e0464fff8c0ff86232
GIT binary patch
literal 584
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0Xnpfnfmy
z!#M_qrwk1L|Nr-RHzN}$%2*QQ7tG-B>_!@hljQC0!ulis<#8Z~y~NYkmHjE39E*vL
zwZfrLptPE&i(^Q|t+zK1@*Xk}aXGlffjd)Ccgg=*8-yLXe=nUo(c=B)hXNBH19ejq
zG;Fl9zxsLR*FQf$vpPRBe*N;Z{o&`zf(B`JU;ehApRX@re82MV?gx9`ecie4>P4IR
z5$EUI#~Y;W`}}KqvHF^}3w7WBG&Gbrg2=fWxZXYBH961E;UQiEBrE1SH*wzm%*=F&
z6-0h3KJnSU<>xu5>i@et&i(w-t-xBx@R5l~A4$C97H0Ge%qlm!4b-7p;u=wsl30>z
zm0Xkxq!^40j0|-R%yf+nLJUl-On}Ht+rYrez`*<Q1#T1#x%nxXX_dG&SnbQ$4sw&H
LtDnm{r-UW|s{f~b

literal 0
HcmV?d00001

diff --git a/img/sex/missionary/active/strapon/waist.png b/img/sex/missionary/active/strapon/waist.png
new file mode 100644
index 0000000000000000000000000000000000000000..911f621210a3cc43bae8676085ed38983559dbb4
GIT binary patch
literal 498
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUdlW;1lASSghN|%Dse*cPSg+
zRSv<oT*6ngBUgdcmIV0)GdMiEkp^V<dAc};RNQ)do00dBfe6cm$RA=G0=TyZ{0~cT
zJ|g(embqMK`nm}Pu|R#~gAeKF<~^!l<yo-zz`cu14<W1+Zl9me&x;!{u<9HTeDG8I
z!DnkGoB#Ki_I~7&Xkhxt7&o1XZGpoH?b-jm?En8_Vhe~#$je@P4y3t`Vg8$`zr}?5
z!VfU;JP@vndMpYw=9*o)Z{{8*whM6y_kV8o28uQOV)`y<vfDI{kvT*EgKZN?9Z>8Z
zqaGvM1EB}q3*vz`K8j~Lx8<020t1_XZPPPzzXOkecEvr|+47`sK>^UXfcOK}2UHI*
z#4shX9s;_}p|<hlJ*Q{tdX8s-PT6yy?%!OI8g>_m(dXkuCfD<Kf{gph{6ni3=)hOp
eL<Zae`%32Di&zWv?k}zcY4LRRb6Mw<&;$Uwg_)KB

literal 0
HcmV?d00001

diff --git a/img/sex/missionary/active/strapon/waistdown.png b/img/sex/missionary/active/strapon/waistdown.png
new file mode 100644
index 0000000000000000000000000000000000000000..9219126b740e63b9c9eac4c6bd09f16ca3402bcb
GIT binary patch
literal 720
zcmeAS@N?(olHy`uVBq!ia0y~yU;#228CaNs)O~JAaUjK#?&#~tz_78O`%fY(kgt&J
z5#-CjP^HGe(9pub@Czu^@PdJ%)PRBERRRNp)eHs(@q#(K0&Rd2LIFM@u0Xnpfnfmy
z!#M_qrwk1L|Nr-RHzN}$%2*QQ7tG-B>_!@hljQC0!ulis<#8Z~y~NYkmHjE39E*vL
zwZfrLp!7OV7srr_TW{|K79L^{ak&_Az)ANA(?3&Drwbcyzq4ff=4W@$!TO;EP&dWk
z!TE}sne%x(#B<KKGp~C%-&-l6dY^(q>;~I-fr6OV&%IwT`kWVMS;D>TIX6=r>-w+H
ze+pMKoc_$p__FEk&!z_Lhd+Dl8Xp2#B?rINI36h6$1S(~=S3**IR`6P<0aPHKpo!&
zjrL1T(7Q2DpQA&5AxJk^kHfFoCxBWVc7beu@UJ-K%m2W`a0_-Tl(m5Dh8QuwUva1M
z7NFZOjXCh0W2q2A<#)kTwR|^$R)M@G&a$WP!f)2r2ZC{MkvsaDYWL4a!1*$=_LGdP
zU?vk8unqs8itkTYcQW|lS`DBU)e_f;l9a@fRIB8oR3OD*WME{dYhb2pY!G5#Vr2qE
pX4(b@Rt5&%k1ueeXvob^$xN%nt-)$v#&(dSJYD@<);T3K0RZ+Z<Fx<)

literal 0
HcmV?d00001

diff --git a/img/sex/strapon/xray_anal_interior.png b/img/sex/strapon/xray_anal_interior.png
new file mode 100644
index 0000000000000000000000000000000000000000..9123ed24031d588b94384bae0535fcae83b6de17
GIT binary patch
literal 16434
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
WG9#h;F@iq}=P#ajYmWZ`^nU@Y;jric

literal 0
HcmV?d00001

diff --git a/img/sex/strapon/xray_anal_straponRed.png b/img/sex/strapon/xray_anal_straponRed.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fe509e4859617a6cf1d8d5af229f0420c0ff198
GIT binary patch
literal 10854
zcmeHNX;_nIx_*<e2o$hd!6_nfbfj2OTdSZ*5^GzrRYC<sMF}0JrD!o!fgq4g?cmH*
zq1BESg<z#dK$aG1lqFvnTNf-w4U2-|ONAIhB*83%tlxRRsIxfIp6fd2{5a?Ij~8Af
z@AE$QeLw5VpW<Ry`+C3V4FK?66Z6J;04Bj7LGC0E`0oeHrq}==gEeogOvp_ck+*#l
zF3NVlAqB6!HdPTb^Ch>iKU_-P5Jrf7&FU4i$|E&!>&$QL^#bh$RWN9c{DJghEAL>R
z99#_%TM7Yz=r(CGnZ}#whsYE~;ebx!`*WXp^mTLwSmgDyXTi@&+=+f*%c282`4bs@
za+gSu>i0`V`95wl!1>h4a^f$!kqIO-o}4`4sezLsL1r7d$^92FAu9lH*~E}NwzFVz
zCQ$5MndS5I0F!AF0@ytv{!cEw1savO?;8sEC4_k-aQ~OEoqQe|<@tEr44)8-CztjF
zKmHQ7<V-#^8u;8-$xkjj;i-P$80pE$PlGJ^n24E<B6jm1gxHv-ZfxURPf4Q}JW7F0
z8y)z=?<YL;vKOT7Zn1h1e$fK_E)3p-DHEE>cb@@r>xA7nkP1J7C(uq`&00AD0W*IG
zVL$c9zK$u-H%Tb`>iC=^)Y%h}KlXekNELi@V=C_4?bQ%u_NCY96H&&edq;xNH7{}B
z!mSrgfqHrO;>ZWM&(FAyBp8Oy-B%82_u};SzYH&yAKmEs>a%?P7a%fEKvXXKe(5*$
z8Ap#UAOs!IectKEH~S<QEIk6wyzJqlI`kb=yb^I(tD{TySDe6YIx`5=1=!Lry`N?8
z?r-Ddsb`np24}sixDB)=0(jXKQFnt}q|AX4bKzMSOSZXJ1$~+r=?SX#4x{tqI)o$;
zA@wu6+?r4=<NIjY`@ZoW2DHRD$8q;6OBPVvzw=W+4)ny)<T~yUWJq!B<gIsI48=$=
zV(O{38`GW^BkrzvLwQr%#*rF~_{5Bn0nYEqIUj+4dOQZVv=9H_Q~dHTdnZIpug>%X
z3GQ9Urt%WHC)imQtUZW-7A8s0r#}Dagi%lau*bG(odjN0xitb3p$3wUhKsGwL&heI
z>7uFi{PFX%SQkCLDhf74jQW3-TUm`1VB)hX-pzN;&Vyf8<PtC+-az4vXQuGc&uG1=
zYj<_|UOBh&Xsw_<WAt~klu<tLFoVd@ikxDmv%jIVtlAU=os6VIJsU2qEqazf$1CuI
zIuattGLNlIoOz<Qqx+BO<`?TXb)eVH&O_p_O+Q#i{oc>OqizL^y6ZuUqvt+D=ZeF`
z^nI@^iI?-%24$(Om3KWDQ`U<cXzgiBxKXGr%KF#tK+VOdBaKi_d;`QYlKG?Y*t2M$
zdsp~g>Rg*mdNt$5*Barjpn^3qmg~eYL6?1`K&Kl@-pn}buZ!#UfCOBh3T4sqifr4z
zu?c@k2`gSYJ$~{3Nsut8ppD19mrmZn+1}%}o`Vh0xtmiIQmS*KM)Ff*Jg1o{CG6Yz
z-U!SbiY1V@l-==vc^2BfZnr$X;_l0hj!7ro^gulh+wU!?urCL3*O=zcZzx$lI|T4+
zbud?tmK@*wbj;u}@DaIq>EvK=CWG9o=u7>aarcuW3{SA#GE%m@yYN4I0}^QTeIuwK
zXs!M)&Bb~RpoJsy_{-KC;b+;<M9W;5HFxaXjtAA#PSo>hy|gS){vH3reawApI3EYD
z=fK-2Mft-ULz+Hmq(i;+K)vO5tP6jZN|sKJ2|C~hI+sq)7|mF8b)ok4_BwbQdk#HV
zvr1Gy2BT)Q1V(b*g~~Vo%{VMB9z+Nnf!FKtm9N-$uH}cVF_vsl{#R66xs5#(&`p65
zrQj-E64Cgq1ag~3&LBg$`)KFdL~V1B^FCn+yp6suI{U1@{BOOX(8LZ{L0ayg4#3g=
z=OUw+&Og`oDtq?Q$){H<9%zJ?3`pU<JB#hw{v<<km&H&--EcgPJ8QIv>)fq2)S;Z@
zzvfdGwN7eTP~6?qlgy#7vv7(AR@X#=8=C6ur%vZd&hz|v1FOnO2Z`yNC{TY1Q`*dz
zZeCs22d=yofxWo|NesdZfX3<vjMnX?lDEk<b+SATmXBA^6h_UzRjo_z1z<)9G5Et5
zVhnu*-V!kh96TH^d$+s<&E=1J;+eO{6byz;UCa4j&^9xKrWs%;7^*jq-5C2c_|pSN
z37G|xvdZ5jcQ8Fc_qZQ;EjD)DYW{Z4fcxJ<B0=1=Ej=ty-jk$p+dxcbmv-+4<t(TK
z{P?G#Ox+^!lsueugZ~!)H6$2p9EbupB9|=*hDGXN;3TdBmaNRJ=p(N-dR3URH%ke;
zepr-T$Nvi}P;Va-Lcrxhn&*q|x9m9}^`H*W1_nE`UO00<B86<{lR#oyHv5rRslS6%
zq({U5{O<y-_W4o5PbDX_W(RsdZayk+)8;>{+ybek27{MUoX35?uPXQbKBcWSS#X`1
zxY}90x6$f1z0=-FNha3_)Y=tT=*fm_!5}i<ZY=xfux8ASb4YH;-^Dyu!T@9ioVhRa
zl$5ScLO-XKV18guTkExq(UE9MSN}SdsF#atu+iFGSR&|6^QkZ`mY1rqIaxUuNFc39
z(EraOR9thb3Yp#%1v`*m5B?Pjm;??@JtHp9LhF6Mhm}f)H?sbdqKaz8r3+jwkeX77
z;eDBXDuS)a)aj2DX<_gN2OUUk+sqC+umsWe>gD0~2V+X?&H!SQ3r$i3mggpL+I2vp
z_3EKM&Z(03iE8%`tT`EAZ4pmHhat1c0X|E)(VQ`eByY4$;~$Z3cg|x+o!q&ZF^KJd
z*M7bzEW{6-h!)FRMTFboTXrzSu+rDL52DZA*+j14mSHeS!J=HhyUFBgP+<znJW0#r
ze<^-H2*_qDtcQtR1skZe3g4!kK^9#=H|I^VvY`Zd8;w14ygSfBeeVUTc3XQP9wbbb
zE(7HF^z<Ip!5G>>utcoN35d}MRG4Wf+F^lduT)mUd|Z3@KJK@Cel&*nfnzfXJp!21
z8mxrhwwAN{u5e*cz3gh#60JF}%g>3gU|y$&faK1pb4+MK8?_WM&v!VNDH_b<BmGep
zl)b-9j+}Guak4-vKCw0Q__JWWb|vTWU3??apbWNNbpKb>mJT)j9BNA^NoS(k{yy*^
zptf-#x`f);L)0_>_+Wl<H&u#hZsuDJ2nj?9lhG$xJJ7o#@R&OJJHn!9Vl6c+t|QGv
zdLwV8?z_)0D2gPv^^|H$wQ*#BQ#$)IZ0cLE*f*?BN1=tgtdBUlO;*QlNt*6qUn@(G
z*d|3cbJHCLoc_0A5lpKK(LPCSqe`fO``4n3g+9Iif?dXq><O?N|2QO`^3mk7pOHb&
zDYH=pQ(#W4Nc^NdTJS>5!bLLCN2Js|w=LZD<t5T#&jZH2{TZ_{*iqC?!pDRpb)Q$Z
z%=%j_^wY0!4crn#p`F*=w)Zy}Z7QC$e?XM48|0dw&&$DXSyi|QzJOhjG=+LM8uIhq
zv>5+LS+JR(iJM4+HMe@<A~lICDm9&amY`RNio%d|(jaV5bG04FNmUraJpcW-Ua-X)
zZE|eqe2|Zg^vMiSBZ68c=@l>2Uj=2lirLtjGolsBsI3kL;<#@i&kDoh%A3T|Y)7t(
z#DG9Nyl$^2M=RE{dOcgz&u2PHVa2Z5NuxLjT-Ak>OoK~~9q4;Z|6A63mhv7<T_c3;
zZGG9SFhp*+20P4_ok)q`PJa|w1dR)pPRamt+csO&mRJ^M^lcfGZ7tK6)-J^05c2jv
z8}I(r_^+`4KNH;a=VSaARmOMu{#i%`a~Mjuc?-#11^u;x?vNlik(77G_6~w9otzdi
zS;<`*(#&WrL5CgD4$|+t7ItAjsRZm(@5CHb$}HPk8nKMcoaRq@MufiKV|E*=L_R*S
zQ_A}4FgB+%c>&fc7KtdWoK4icw2fv1QuvqthcZ{sUO+CMnL1@l_P$p#BwuTiuCWz$
z-c{7FVtsOlYOt04L!->PjXnP7cXPE%@G)?s^xzS6_{Yz&DuvusZK)X^2OHs3pmT!T
zeKrH^OOr(9_8gzOJ`o{O!_5~TuC<4r?B8Y4nOa*-YST6A&8Uk_0$6K@f~l@?M&e0S
z6Xv!hMoe#}Duhm(MDS=`0?j{Omt1zOOA6-TQ>-LUTVdajR%TCf*VQsQn2DD?B~^+h
zj@eVv-!DL|S>h&lr6@U9F7}md!ukxQSxPF*eb=~kx{(@s9izLb|2N$ZSWIZT@$^!>
zE>b2#2E1yU+HN}tR1@myoKsPd#y^5?r?A9kmNC4B+Fi(cX~)29K0btZ?+#UpmKz3<
zdATf@WUH4`zy>&BHB-UZnA6@ZG<1c(gvkG<8Os3Ittia6FXI_^i!-0iWU})d-*SxC
z>$P}w$-7L~;Pro$Ps`)2$?WpIr1c-K#3-YouC<eWgW<xXwUgt~+9|{f-yzhOMTH?<
zUxs3dZOs~dB7I1xpLf0%br9-BW|fFiTDNnhWh5X)#3W^QV`BxOTP^h0Ta|iLlb^4V
zX^xssvHqA%#o#Cw#n}u8VZiryyG2^Nw|eKI9Ik}!F!QNiVdy5ZQdA->)j5LM?`Vol
zKLxk<j>nLdJp`WV?ix$Y^%a&n@BXbw30if?p9cpoht{9h+Db)C>Vj;ab|$Pp>>yr)
zQ>2Pgw{xcqhabgK(7t3r3UW52b@5pnUitn_ec#wfoMFV@{%A9WbQNeHZKk-c&D5pU
zM0|)ptBP%BX5YWcO&rx)yX+gX3*eHqR>R_g2O|zk4P8~89OsIGK5)W>M5AkxoQLC>
z7wl$hf4|jeecv%u`kq`02Oi@gLAPt8PU0KEVFld0%0ouuF}8yKdOIs1#!_>Cw<@2z
z8odRzpIi9tQpyy32ay`hTF<FoOoww9tEcY1sA_<e3Wr$4MoMMsq)hg5hJ3HS50*dF
zLva=xvBWm%1^e@^DUlxYShuiep=P!2ISmK4X5}pVIm-OvfGa;~*#<rn7JMY0tdx43
z^yift=zXokFcj{gf)14V=c#nEWN2zwMcRvE!!z=BIn?$IBT9y|diRIlI@Oly-mA>S
zIA^|lelp!smlEAdP3ohYlu=OhEG86XibhUMcYK*bz2!(|e87c)7qd9Qa+8?OKOtTg
zGA>*#F-5trcg_IE*kEWzeg?X*SYMh#D{~TyoxZ=9dYaQd)ce6WA9JWJbPff~J(+ft
zt`b!(#LBQ=zCylJXNqn$opY|O3%S~3ebr`zkymoEy(l2YXVBPTkx*fSh{9x}0+I(L
zn(For8;5^HXC&&4fdD>8NUvOHZR}v0`pe3&K@}-=N?wj7i&JgY>nzCf!nqnj8B$eh
z-{7u9lIlgKBiL}4%(lDHk-!k+ysMz@WXW`m)M)*zpk`qM0-3M)O_lva{yADKdV=KY
z>Pv}XTtDz51!Ns+{Z1DcV~JfzrgI5!zvTS%K|vu@nQr8N!1ZMS?~Q+T{r?H;A}ILO
z;R3jVXG`ckbfw><Igg$fPJ12^Qpvf5+k0{}$xG10w!R)uOWpO!rX-@wQgi4KEOhYc
zgeI2G+=^gnMT}u~ds>yCU1rO!VuT|O^M&EV!`HY|nwndhC|9sMhE-1KOhnx;G;Pac
z$57~8&d_x@oTYorLpPJdGb;^n*)vP&mI8IY)}K5RaK?fhR%3hve4Np3H}7PGG%-Mx
zb660*s1&WjtL%T-c*iHNk-lJt7YCg0+~Wy8FWyD0gRd&5JtzAExPztGIv>DoRC6!V
z*Hfqs<W(WoG@rFFzrYf=(!>lX)-|l|(ZN-~(L90v%VDA3$SEC8y2ixVwblwNOt0Dn
zb+!I_?pSIN_hSIOXW@SfU@yiRE;F0V>5gM5A)iZSf{-Qyo_F}|I1O8dTS#C{%rbtD
z`+ACubiflPniK(hdk%bR+B$-cXjYkhXk83PgZpV%U=L%iSEwuIJEt^e?7_o#TIrUx
zruaR1NUW(^DZ(g8?DcF|WLZa(AaT@u4kTe9LT)?9SzG6SRi&2t%PlNG?w~1?eJb1+
zWcL$zb1F_qG;oSi6TT<mYj7!LNi&?WYR7bArjs`J^5Ht?9i04OSm*Fpy+PZ9n<g7~
zZ2aqfVZmu@<%(8@(AuT%;|i)Nm15XlHD9aN?6V7^se|x>$F=Ou)YCnMg9f9jP-~9@
z#UGUGYus-Uk1mH8Oj#eR$cDQSBe+L^({xXophOPW8c8;m&3eN@j58%+AMs&@F~JV!
zjI)ENXO9h89n^gLdR;sv-jPt&Ul;FyFA<0|QINoJ9=;)0c9~W>rDY+IgYk7{N==AN
zvr50mYFNc`;<YBu(hY0PJEaf<udvY3Cir}n2Oa{rn$R@RJ9hH7i>n>YZ1xa`aK>8A
z{Z0b2d!C*#Edl$0V4>t^Ih=xMPNg|aP|2A`*Y#9#8tr4Ks)`Ql&zd2ve%MOJ(xm<n
zcl+slL3febG|RHWVL2J)%JgRncJR+hzP=7I*nebd?pCsLaWpR%z|?NKBm6)_TY`2u
z<zh+}0umfu)a2CVNMbZ>ZQ!dduRsvp#KB-Fb=r<d6R2MZ&6)&cGsmXe-4)t(6fQ$q
zd$QS3W~xGnJ4e<^*IYJQiwnw}_8X<JySw#V0%cxtK>e_XbEt!T@1ER8656DoPileh
zfPD_I%SzgBM^=~;>_oo0Ac^_08DdyH`z+^8n)u~BQ<I(%(fPN_M4>9`;D{E{Rbo)+
zN9x?xiw~!mZF`zv*<WWq+73J0Fk~5)p2cK@3{pFQavI-Qu*hL!To9p}GU%5IHd@2a
z#UqL2@HjtkPQT*>Z4GSgY=ny>TKagx-1--eU1w$I<~)je&M+EIMjHlR#$fBla2N}O
z5AQh4(I&`pvHo}jpi7zAIqk6Zx?_^*@^7h~6#Sj^AGXg?9+Y8OI$_;o#gmn%AoIIG
zYF6%+6O!(r{WHPZI3k;<Ht#V99+11jUHs)qWsuuoe$ER@F6>vU;f~@pN;4)FI$=&*
zuLY9U-882zxUcR!+@X|N6^`h~%{*S#FKR9H0hNUtJ_uubW&3KVaV3xpjh>H$?;9_w
zc!9jPwyZnqeoJT2E}Yzqkgss}{CRshnT)!(L?nEHMUc1OTg8_dO8=N+M$MgE7{u*K
zu=85Ov|1cS`&=|(0luQ>u+UHC+n~<UJzj!~9@RcIinX^oQp`q^OJ)ga$E-CjN6Wup
z47j}w8&$dg^qJu8i^5m=UrVyY)fXEc$5uSHlVB+eW>^F!#4(JsEB!mWXbT}Xk5k<c
z51UJAt$>3bjy0PvWH}Nz|FCU(&ukawQ(?3`%IRSt(_(y%kie;n1NYp%>n9sQ>fR|s
zQ)3WmGeUdd61K79xo{M^+;HlpXVAI}wpgVkJy&;|^F!&^5Cl)1?(w)H=+E06k|X85
z2v>YNX5ornk1P5mPw-aZ<saal^hTs-3wZ6`_NMv8907~VzwK~e>AV)7KyoKo7ARUz
zR@o84yHi8FPe4k~{hd-VY@}oJWKx|_6=6BO3&)&!o%^C3uX^;wv^{T<qeIqW&Lr)K
zx#_Wz%9mg4WIl4V#{Obx96Vu!BN+v8FH*knnh%ro*5I;7YN`@gSw2_H560Uu*nTHb
zqtWz&9E?qOz<{l=-}jZs49TUXFuN4wIG~)enh+^`4%h#~c8!0tiYm9MHII{5jO7e1
zoBu8N)KBmi>K6E>mM&JCPT2^ly*(yfKrz-k-p=iykEGx#%CbA*=oaB~7y6rn$14hB
zU7%%~efO&iLLrK4V)h7WOR!3&99M2E1^*1oyTZ;=i46S|*_hFK6HgtK#Xk0qW3+5S
ziC^Zl+I+&9F*=+0GF%4=vxPnW7C{-ImhpTs_UC>PQ_nEOHzz5K1);%knGU5&gd^9%
zQoHLO6;LWDdtd5u^s3YVgQ*{`VY$P}W@|kh%8T&Nz|I$wTSi($(sR+R99OoG{z&95
zo*TE7cbc^26HN-Ja>NTHZ{v>3)uvTWVH!`9<Ti+Wr2@2d^pTyo-vtx;y%+ae_uuVz
z83`<jZftgsm9q2?Z7!TM^To2;SD}v__}3BKCbK+Z(rH7fy#;eQ*<}}sv+E$UQI;z%
z9E$a5DSAEMwzf~ES&dhz@gL`pMr<Q?xqrA^l6YS0UfxSJd7X8uvXpk0rcejDc^>Cs
zW_G@u2cMCRo!WrNX!Po3oy(pCPI=oxAAui+sry+d8Rk^I!RaD5!62}9x5B)r8-$xz
zod0$%ixZ_AS)4(y3&9%$#o`7D`l(k!V7VG3{nQl5+m3aH)=xQepS78l=P1V1zfoAH
y5iE5>%RrngzBw5uJLKodw*5->#AIWhf4cJ1Oz#%vas1Cn*Ss0~M(yjVd;bH$`6!V9

literal 0
HcmV?d00001

diff --git a/img/sex/strapon/xray_vaginal_interior.png b/img/sex/strapon/xray_vaginal_interior.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0be1778a8752edfe9ac13d9181149ca5a403782
GIT binary patch
literal 10329
zcmeHNdstIfw%;LzSP^1hU=;}+?Zeg@Tc5SciCRSK1Fg=e^%1PrN9zbWR4GbM5L>h=
zSnX7+wZTWFEta5CK~PSRQD|)kkkKG0fl_NAK(OQ?=Wx!tYoE}5bLURy{(I+6zt7L_
zd?DF;?X`ZtwSH%<y<_&Q=%C*HdlN!}rcHh66+(L9BT4KPfd8+2;X#3r2r})ZiSrUa
zZaer~&f1AV{yW&-{QbXs?f(0E?byC8N=K%i47@&7*ZY|RXGdP2bFS{K<GpR?U!1U{
z*qSfy)LXi2Hn_{Y(2>s;f9I4URI8cl5;5s8D+)6TBZK1YE9DOo59fh0?CnQuD-z<F
z6UVshBjSv#S{roT%^sA;v^l1ah*j^D*q58{n52(C<>8TQafwC17(RKlq5Mjv;Y5?j
z7Qj&`X)shKn3$95n90JU>R}BDc4d-^3?=yag>)sEKUw%FxV_9#qgx!*wrX5~rn<^@
zjs9ApJD}LSzy))|NWXSYNqEgJFEmO!B~_|0v56RmdTf5PCu%BRB(aKK0ba*jVWgnH
zZ0pjpfbZXsk8mJe%6Zo_VxXE_>{C;E6inX}OFRrDl@NO#)Ly-d>337zUqx1&f)HbG
z-dL|7fx6)ZdUF%8P$N=>yW>Xp?J+UIwP{qIsX3AKU1<pq5#eDKc~@`}qon$~la3`3
zJH>o5uTtd-CJV?`^y@$sk&U>SVLg@7V`7gx%aq39N>8pGvc{6(H(3=ygPc$*hKlL{
zZ|Y?QS=h??XKszm+(ayXefzXq9b-v6HKM_AK0W9!J`<lCC@!I{3n$wi%}t8}=90qL
zD7{EBp(GJB?VOz*UZ5EnOv+z_XUQWj#RVk^F~-JoOUo2S8dH_G>8-U9Jtj8Woz!)A
zNyN9t2}5}p5={DdZ3-f)FAES4QIJ|9X09i?5Ft+SS*F@PkmQp4QU&+8VA2ym^K#{S
zpNTV~S?aoU6<HS0x~vLf)|1!*2qtJyJ){X*Uel*twOdI}*RX-Qs7~XBB;62A>=%CX
zmZbWZ`^EQaw>IU8?L1>SatO^#^EAEny`+x+;dQj{h}bW~KutdEQp5_<9r5=r=EJLv
zuKx3ZD`e)I%y89+ad!f*-6>`XZ}xMft@W_Uil@*7pK%iqdz&cs+7NrOH>m^jG)+|%
zKI|E#Z(gG~VY_<aAL_xa4-sO#*5TLHH(G)Bn~gZ~AuK6OMcOIEYB9Pc1p^R(tC`Ek
zOw_SuN+SOGk{pSj9>71G2M0IQV`?`qJE=K+1Kj?Ze^D5HF?5d&COtNom#3~DgCVXo
z?22Z3{Kr4DQ`|&!aC;C1AXwRjt;{Wb=>lfO8E^#Zb|{H2kdF080-p^?f~IwU?<pjK
zYkr6f*elUA#F81%^M%~IrwrvQ!5V6OP(}VAv(egwF!R}fFuQyUnJ`&+E?kr&98T<J
z<Q_s|e}>F*J-mJj64;>S;-2p$vz9y_Oiogd+%%W1Ck;Lu5(f_0RU`*-`FQ>urRjK5
zsYi4pueBQLD}j@)yavru|I7SiheW-eyc|Xr$QePOfo$~IfNbp76SPFvpL}f0<nR>8
z9DU>@#G02C_g|8##ZkN5lSd0&G5KJmiWI6`Ax{PBo-fc}*`e;$li-ecAt|7BeHB|3
zv(V1+B$x00QDKx`eh`hbyLYR}_K}&gUFECLTP1>{xlc{%Q8?AGbtV$W7q+i3`YWl+
zE`W7JY{pJ$r{SAPFoE=yVdLV*k%)c1!~M3%zm-o$t<miHJt)ITu5KaOdqf=QWD6%Y
z8#qP!`93sLaJ+uFCFMJr7%$edK4#n<<ub+$qe<yr|BdQ?Z1;G?M0pW@=^_1OCv13*
zvRW(>xf%GK@K+n|`dfTJnk?WNJ>+XMOQC(@V@J^MO6gv`oC0QT37SCm>_jL%S^O?$
z@=L$1`I|rg0ZYb6EXD5C!K)D)sZLv?l+SQmJ(JUAjAlc3c&Nxd(%r>c!XFV~bla$w
z@QxjQC|EuHo4N56)or7$vTygJ=}*GSS>#j&w9csl^W?x?p~m(=T~biM)aOwwrI&b}
z@tEX%^@`&woa?J#QHcpu^y_ieO9!dR56duTt}(waT`9%=@gs468cqN0w!0FR4q4U+
zetVXtD)#QWtS~O`5MR8>s(T8uS?b)p*ad&+xC4sK^ITAuXDwF}*|OR<kHb&HksEo|
zsc@Taazxm49<Vl2L1Hf^$E~r(!N;)f^xFc#UYoL~aQu_=|3q}*|Kj)q$(~EnB2uU&
z&7=B7e7!o1j191HrJ}c|GD<BBR~7|v{;Z_QjgA6t=H}hw$sT&jtP4|kts2Y1tj)V!
zdb-KLLbgmmhRZthKhu?W0(FlsaFaPzVt0a~B}bpMFALaCQrz9$;@yPd65|Y<UgCGD
zdYu_!&?5+4CO5amkSQ(*MriW3ZiCYEnH}<nSTh|l?k@V8k*ivvMJRmmW`n{sl!kIc
z&{Z${ehDJ(OfhJ3%T^4_Gu=I@CEq#k5M7Fr96JW|(Q@lyPD>Z9;GM*>7C}@6KY9oF
zqIfQ#SxGQb6lAz^V8TL5jobZ?JK=Y!7~ECKz{F;Jy?8a#v`|kD+A0)AKNXo04TtDs
z(J!{!6vi892;Ff^Y{q*MdkC#l5lr5(xZx11CDeYJa_yT@Q*96xfN1$EFCjViovSol
zK2uCaawaA54<@_Pr7`qz)7<W2G|A35P&1uDL+FliJ~E?qY7$2F(38*2NzqomPD{-P
zZ|*6EoifGUA{Zw;@uwr=u2sp3)dogIdgEKwK=e62wx76{yas*1UPpvdHA8o_87Dl=
z!ynN)4Z(LBdh)ErN`2;)*JSG>k|Fd_>KKQB9G&swB;nBt-mkLT5KJD%R~b28sAy;2
z6|PbroJ7_CE#(1?vX9efT_lMoI(qV1=K_j#`)N^|n=_G@w9iw=T=#;~bKu)|JR?3q
zrQ9Wkk*DHGY=VoUj|GRm_kK!!un<-H0V)&!9w8CQq=6XalWz#xk}`}I&aB0$E>SOs
z^`sM1)pH*OwyheE;<;0Jfy{0o7Q3CLkMUzJIj2(}oI&9}oN8&hqnrujsCC4mAo9s?
z_rK@2B*bTZv%tw=U1$S!&GP3%Ybz43`e$w_IUE_`2szO1JvL^2p=CZWTXeR1J-z_J
z4zAl>&a&Mt<!-6kYKwx5D%K-0Qdi@~gYMnbQC|N$Z@g#QkElM&@Q=}KlCCX}iuCPQ
z4|0TSK<GYm@V3ZNArXEJ(;)f>ftNL4tjJ73&m<mPnS6}8DY@j_LD^$jZ5f7gnv<IX
z<KM6F;l<0!823OVoLu=f#3|xQX0#iBjtD_&HV4e2=BdahCl=Z$Sy+91jt?_ygku^x
z9pCd?`~#IN$QV&iosuqc6-@TRdRT<Ow9gUo=g1MXs4%4(mdi%2xju$^*B1J5wvRQn
zl08i>M8zbu%g4GzkYTYLoShYKeCUM`q-N4Qz%y3K7OiV=K|gBbnt$Oo%YVGvM8Ei=
z*nB<vdtIr2adPr^3ZutpR2g~pdoMe_^N{V6`)!#n4nefs#olvgiO0L{cFxEz9%;>>
zP~^IK{gd6@ueenh;XE<Zn^u0m6UyxQ<9AD%xj82H#C203;}p>El}XHiK+A2bQ<148
zyY1}yWNZwyVamE=hYm-KFs+G@{y(pHTJ+b|sgv04A9qOXF2j{-J3M!rU#R(EB}P?%
zD`t4B70#R@iw$Bp8AmF&OQBXw-`9|t@#&J9lk!a1*T}4rzj?7jTc;<#nfLGIz2;%F
zyZk<^*Ht&?=-uA$LVswpG0B!txmIY}*|#1F6l}$Y8okQ+*D5FywXCUq@`gggJDP?f
zYcx&MYOkrdcvv(4U=Bm`kHZ-_eA*;Nv(~HU-gybCKHxIk6ZhJg{sKEu%#rFTJjskr
z;>E3FNykPPb||mSd^$O`btys=<-sP}A5oIScI<UEI~;p+w2i!+a;0!G^+CQXwg~uV
z2lE*xx|2_;_u~3B5ZJQG?e)No1thl65gLLmo&00i!ZWXXrFp;#FE3|Nt`74b=E0Y+
z?G>Zf?@vg+->RX--|Z#3y_FTJI?)>USQR_+wsU#%9$f#jq@T@YbNNtl*^g8&;c_E_
z$@zgI^~k=LZ4pIQ6fSl<+(ITa5Z#kJbCc!y!sCwV1(KZ8IThKv%@A4B&KUxCNXLe-
z8b|72T;Bs*`6c27ksTdE4z%;{_@h#8qle8tG>;Fsals&`X(w&(sK~e~?6+21t&cC!
zUv#HYeI?>s=wMf8$wqK5n(ETb>=G7e2IKmtAoOp}7H1nJt0lpz9lBjf;-c}e`di1Z
zjwx?<V<{cSv-v0k#*)e%|1)R`<KQDE^;yAen{*Ube`71-Bc{1DyG1V3FrSSB({6uq
zqR6mpVi-w$5f2M3PyD%f;zqMv2M`w69#t4;(P+BdZ%woAj~C^Nk8c!%?-#e^-eSd&
z2gT^QQsi~jG+e(G{M|+TW&zd?CBtvI0|T+0S4R&!f6V8upwpX0S$5fI+6pEKM=_dN
zX7lvI;%yE!)q?zH5;4twC$&v-<nOUF2Y>ROikyn;F9+>swrjRJST%Rpq^~S>n!aB+
z^_9=&HitIcQs&jkn$69$uwNOJVOCbOf;L4{S&i|cxXWN6mrbD6I_m=0EIxTgY?s)3
zT`4pHe>jK-#7cf->l84dSn|NCgCcv=)a*WDk(jVRvWT3ZG7SN(hhx%w#~90c5qE&S
zEuD=4^#KiGA|kL`NE44a2H*+W#F<X!qqa?6D6LQ<YwY=9Rgg6|hjT9*Lw6dL3ruw@
zG)XheYJU$jE+932!$s<2gf_2nbFX3}#KB1p*gwyt9@8<JX7^iClZ|QBETIx%jWaF@
zzFx}}fyRImenvERd%MISe!f%}$vdTp@X<=pcvmGQKa~sWGCxa*v6-r41i2MHgKK<H
z{9^370(YF>Qjn6b7#j^vj|QY=VCSdMH!HSUh*>Gz5}~70N#)<O(Jnyx$0gV7raJ|-
zLd8e{3Ycog<P?z|8$!;K84L<eggYlii{|Tb#wOkjJUo8wPHE8jAj=CBpZC0KA=*lH
zNv&|Go_)T~*$!zY4OKmHFC2xKti`OObRFI4%~)Vh+<-FiqotbOtx$T3<od_*3QQgd
z{Qn;1&m%SK8vaP+1XjkeHB4b~6}}YL+g#GV8-`85ba(48l^L!)AhL+AMVgJr=uS!j
zMtmnR?G-M5b}VSp{f*C(YO3>*0%n*4+3o=i1rmmVo#yU}SH>x^CfeE<Ni3DBsD?c3
zkxqC`-+GD!XuPAMQfpDV9q`q|#^(;8JN2&t(;5$~XHQtu{II(}l&n=8FknJKGO%I>
zum93U$}k3QnEpjY+JM9X#y`1W9o%(lJQ+E0R10{=T!0m4ZMQ(pFcinO4KGoEO4rkF
z$vasjm~jR&gb^1aAFhG4YU%y6p`=ikpg#9>N<i4fx5<H>^Z@uz-@@jnOlLAntyWb0
zs5y}1u!*&`bS`77wY_9a>1)kx#~r0j1~Vpi=M->r?{8oiXjUR7ZBvCYrz1Z`4N@41
z?@!AW1?Nd3u`6N+(HP@D_H%e7nB-9`g4WCNaLbm@Z_$&*=%r7^+F6B><J-MS;1<>)
zg$4}qrn#4m#^3GEV+T1(9~B_mfhZdvV!RTFx+$EDJ}R$jhW)(0k>~=ccVPo$gH24%
zuJHO>uB~zYX72xQ@80!`O<DcO_6@1(v4c0$DJdc+3d!;c6mhl=Wg?w&xY)DMRuLmC
zNtSNA5!i<vUT;D`YvV)LI->;tLsCY%)PneDchxz{GEA#*1uZs>Q1rS_y$UUzZMfXS
zftFUk21TaI_%&uO<O_T%Woa5z<G0n3ACAHqF^(<P5*O_Gd1)NbaK2Ty)j85|zyk5L
zZ>|8-ml@ai`KCB9L)HSaGL)#v1Tq6zq^G;O8IdpzkKGK22o+6jtk9XP$b_`T9G8Vt
zUQ-9op4{_kJ|1*)DHDeC(=_bqVf{=#d7b082&~9l@*7^{qulez8>9y^u32?Yp>7;a
z&e>rt)R~-tL}Y&8#R-QMo9}H?5#G#EYHAuid?SugnU6jFZ@?<Y@~@<8cj~|aLqd!<
z{4GkIn(V`T6pDpmx){S))QP?F73EQ|O0Y@DU^_f!bvki4Q~D&%lvwc^t*pKBt!kVJ
zK_j*fC1#N(+ii}tNqUGmMZO(I!buW2unW@;ItmjHuP|697X;~s@k||f?g)N5P@glf
zF{>=$k&QSKa+qm`iY~Zd7>h$yHMaLq?(qx0WZhjJJm-7<u^SZ~q*7^F@e2Z~)g8+4
zi+>~=s^A7TVr`*>XUpBf=5b0-$Ne~n)3Y?MG8fz2r8r1q$F_|+4HehR-Vn1Z^1%vo
zhmteCMDqkDH!XT;KW{P^H64A|DfjG@Dm<LnRZJ?IzMr!RF9$qC?*hQ&9Gk5g2f#6j
zXe6Ia^V0+C%o^HlD8){!$exY-gF~NOEOL@*t1aSe=$@PiW$@QaWvOjt(Zk%|*d26+
zhBb%1*IB20xzwS-(t1xawQu?=dNmgX14_h$>5`fL<fhgMa-Zf4XB=owEHE{TZkMAP
zen*3rdGq+MF3nM}_T2(8-lEz;dA6glyTLFs8t9}mxP8Bum76Qqy!oJ>d$PhMCGqZN
z_5sR)+3T(<(pG3`bK&REaWBcDO5>Fs+^ZO}ge7ec)W%i8lz0whm2WC~Md0LKP>WCp
zX+y5BN@6F7yo=jT<Mz~;X5-}3`+eHX#{~URS(0T4GG6bqLA99U>D88RX9pGNu~q0B
z{oNMza_h=1wn6E`ju98QPYlVt{x6gU9~?@sJa&WLf%qkQ+BsB1pj`0!8zs$FCo~)8
zZ{Frv<l-K<X>PWIZ<_p*q?J2uyySsp@3}v!*T-;?qV_e#fhFXdnd2Jvw9?`CFJ##N
z6cul%(`3k&cp-tyo-j#xmbc;T9CMFv()~8<mm7o0tN_C=@iUy}EWJqzm6>q+iGlG`
zJ<ro+e$Fk^AC`;RdXO_fgTNNru7w{FL&UiIyl;-<Ir)wScOI_LKIZ4eoX8${E%}7k
zT5XPjoiwo+H|z`k$Bg)RZ>rIt01&k>xkF@bIp4tP@lI*XR$<gYQSTe{Vq1&0UFX?s
z5;NmeWHruQtyvIN%gp9g=g;dt*gDUu|FYs&;&nyT)ElXqo-E9{>gE<{4jS_Gds?z2
z)rk6-TKG}I_eTt~isP!?mjrIDhkI3-#MZ*9Q^hCoDoOliMZbUU3icdYUDL+2Mo+WC
zy5tVu4T4?XeID){i-HK<P~vnZB;S>^hfr4<>rEb5cv72<*FbJAB>`c3FVJ4rFG=x1
zS>Nc}kp~+Eb&sv%eY5T+@wgb*t`RxfckB>eT%t!muY~MTncggs4RKs~1Fvx8hZ=u{
z2m2AS##>UU;e!Oxd0nNJ$N7IvWY)kT0rfMbZMQVb8tMeRe(*++U0egEOZ@3tHqg@M
zANwniy^ZLK&4*mg<4d5(U80mn-@m!^e{m@k5=&lOW}~WCcL3AF+auz2Ry0vC<k@(q
z^4<zW&Jk<=B<QmF=DphT_@~R<@-3qVsmjjTVW~?$T3}*#$J9V4SAzGlnvR4PT=biL
zvZ{v#X`V&kW+{Oy4Gu2I@{emaXdBjyCw)a5-c694QSka1P+q^cO=MueTEs(mQpz(!
z$))~5J%nA&VO@HXrsB4IsgBH`kV#5@#$|$_(ezWv?~}_)QUw=&Gw%Pa=bmV@f#Uey
Y;QQ_#U37<D9Gn(4>!qAYv0KT10d_|oPXGV_

literal 0
HcmV?d00001

diff --git a/img/sex/strapon/xray_vaginal_straponRed.png b/img/sex/strapon/xray_vaginal_straponRed.png
new file mode 100644
index 0000000000000000000000000000000000000000..7098772a6f8f4a8e657289cf9d3f66bb128ffa7e
GIT binary patch
literal 4434
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

literal 0
HcmV?d00001

-- 
GitLab